X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.g3d.csg%2Fsrc%2Forg%2Fsimantics%2Fg3d%2Fcsg%2Feditor%2FCSGEditor2.java;h=9716d200d26e89eeaa356b167698b519c9dbde8e;hb=refs%2Fchanges%2F60%2F3460%2F1;hp=bed448737e623040ddf4ca9809f62e3d3135e3d5;hpb=84132a1d750c45f9161afbd58b78572964e50d26;p=simantics%2F3d.git diff --git a/org.simantics.g3d.csg/src/org/simantics/g3d/csg/editor/CSGEditor2.java b/org.simantics.g3d.csg/src/org/simantics/g3d/csg/editor/CSGEditor2.java index bed44873..9716d200 100644 --- a/org.simantics.g3d.csg/src/org/simantics/g3d/csg/editor/CSGEditor2.java +++ b/org.simantics.g3d.csg/src/org/simantics/g3d/csg/editor/CSGEditor2.java @@ -54,7 +54,6 @@ import org.simantics.g3d.csg.scenegraph2.SchemaBuilder; import org.simantics.g3d.csg.scenegraph2.SphereNode; import org.simantics.g3d.csg.scenegraph2.TorusNode; import org.simantics.g3d.csg.scenegraph2.UnionNode; -import org.simantics.g3d.scenegraph.IG3DNode; import org.simantics.g3d.scenegraph.NodeMap; import org.simantics.g3d.scenegraph.base.INode; import org.simantics.g3d.vtk.action.RemoveAction; @@ -96,9 +95,9 @@ public class CSGEditor2 extends ResourceEditorPart { private SWTAWTComponent component; private CSGrootNode rootNode; - private IMapping mapping; + private IMapping mapping; - private NodeSelectionProvider2 selectionProvider; + private NodeSelectionProvider2 selectionProvider; private vtkCameraAndSelectorAction cameraAction; private TranslateAction translateAction; @@ -174,12 +173,12 @@ public class CSGEditor2 extends ResourceEditorPart { throw new RuntimeException("Scenegraph loading failed."); populate(); - selectionProvider = new NodeSelectionProvider2(this,mapping,nodeMap); + selectionProvider = new NodeSelectionProvider2(this,mapping,nodeMap); cameraAction.addSelectionChangedListener(selectionProvider); - cameraAction.addHoverChangedListener(new HoverHighlighter(panel,nodeMap)); - selectionProvider.addSelectionChangedListener(new SelectionHighlighter(panel,nodeMap)); + cameraAction.addHoverChangedListener(new HoverHighlighter(panel,nodeMap)); + selectionProvider.addSelectionChangedListener(new SelectionHighlighter(panel,nodeMap)); getSite().setSelectionProvider(selectionProvider); getSite().getPage().addPostSelectionListener(selectionProvider); @@ -215,11 +214,11 @@ public class CSGEditor2 extends ResourceEditorPart { translateAction = new TranslateAction(panel,nodeMap); rotateAction = new RotateAction(panel,nodeMap); removeAction = new RemoveAction(nodeMap) { - public void setNode(IG3DNode node) { + @Override + public void setNode(INode node) { super.setNode(node); if (node.getParent() instanceof CSGparentNode) setEnabled(false); - } }; @@ -283,12 +282,12 @@ public class CSGEditor2 extends ResourceEditorPart { ren1.SetBackground(0.9,0.9,0.9); ren1.SetGradientBackground(true); - // vtkActor grid = vtkShape.createGridActor(8,1.0,1|2|4); - vtkActor grid = vtkShape.createGridActor(8,1.0, 2 ); - grid.SetPickable(0); - ren1.AddActor(grid); - panel.addDeletable(grid); - + // vtkActor grid = vtkShape.createGridActor(8,1.0,1|2|4); + vtkActor grid = vtkShape.createGridActor(8,1.0, 2 ); + grid.SetPickable(0); + ren1.AddActor(grid); + panel.addDeletable(grid); + } @@ -296,24 +295,24 @@ public class CSGEditor2 extends ResourceEditorPart { protected Menu contextMenu; protected void hookContextMenu() { - MenuManager menuMgr = new MenuManager("#PopupMenu"); - menuMgr.setRemoveAllWhenShown(true); - menuMgr.addMenuListener(new IMenuListener() { - public void menuAboutToShow(IMenuManager manager) { - final IMenuManager m = manager; - List selected = selectionProvider.getSelectedNodes(); - if (selected.size() == 0) { - m.add(new AddPrimitiveAction2(rootNode, BarrelNode.class)); - m.add(new AddPrimitiveAction2(rootNode, BoxNode.class)); - m.add(new AddPrimitiveAction2(rootNode, ConeNode.class)); - m.add(new AddPrimitiveAction2(rootNode, CylinderNode.class)); - m.add(new AddPrimitiveAction2(rootNode, EllipticCylinderNode.class)); - m.add(new AddPrimitiveAction2(rootNode, RectangularSolidNode.class)); - m.add(new AddPrimitiveAction2(rootNode, RegularPrismNode.class)); - m.add(new AddPrimitiveAction2(rootNode, SphereNode.class)); - m.add(new AddPrimitiveAction2(rootNode, TorusNode.class)); - } else if (selected.size() == 1) { - m.add(translateAction); + MenuManager menuMgr = new MenuManager("#PopupMenu"); + menuMgr.setRemoveAllWhenShown(true); + menuMgr.addMenuListener(new IMenuListener() { + public void menuAboutToShow(IMenuManager manager) { + final IMenuManager m = manager; + List selected = selectionProvider.getSelectedNodes(); + if (selected.size() == 0) { + m.add(new AddPrimitiveAction2(rootNode, BarrelNode.class)); + m.add(new AddPrimitiveAction2(rootNode, BoxNode.class)); + m.add(new AddPrimitiveAction2(rootNode, ConeNode.class)); + m.add(new AddPrimitiveAction2(rootNode, CylinderNode.class)); + m.add(new AddPrimitiveAction2(rootNode, EllipticCylinderNode.class)); + m.add(new AddPrimitiveAction2(rootNode, RectangularSolidNode.class)); + m.add(new AddPrimitiveAction2(rootNode, RegularPrismNode.class)); + m.add(new AddPrimitiveAction2(rootNode, SphereNode.class)); + m.add(new AddPrimitiveAction2(rootNode, TorusNode.class)); + } else if (selected.size() == 1) { + m.add(translateAction); m.add(rotateAction); m.add(removeAction); ICSGnode node = (ICSGnode)selected.get(0); @@ -323,16 +322,16 @@ public class CSGEditor2 extends ResourceEditorPart { if (node instanceof CSGparentNode) { m.add(new SplitBooleanOpAction2(rootNode,(CSGparentNode)node)); } - } else if (selected.size() == 2) { - if (selected.get(0).getParent().equals(rootNode) && selected.get(1).getParent().equals(rootNode)) { - Collection nodes = new ArrayList(); - for (IG3DNode n : selected) - nodes.add((ICSGnode)n); - m.add(new AddBooleanOpAction2(rootNode, DifferenceNode.class, nodes)); - m.add(new AddBooleanOpAction2(rootNode, IntersectionNode.class, nodes)); - m.add(new AddBooleanOpAction2(rootNode, UnionNode.class, nodes)); - } - } + } else if (selected.size() == 2) { + if (selected.get(0).getParent().equals(rootNode) && selected.get(1).getParent().equals(rootNode)) { + Collection nodes = new ArrayList(); + for (INode n : selected) + nodes.add((ICSGnode)n); + m.add(new AddBooleanOpAction2(rootNode, DifferenceNode.class, nodes)); + m.add(new AddBooleanOpAction2(rootNode, IntersectionNode.class, nodes)); + m.add(new AddBooleanOpAction2(rootNode, UnionNode.class, nodes)); + } + } // try { // SimanticsUI.getSession().syncRequest(new ReadRequest() { // @@ -389,17 +388,17 @@ public class CSGEditor2 extends ResourceEditorPart { // // TODO Auto-generated catch block // e.printStackTrace(); // } - - } - }); + + } + }); - contextMenu = menuMgr.createContextMenu(parent); - } + contextMenu = menuMgr.createContextMenu(parent); + } private IContentOutlinePage createOutline() { if (rootNode == null || selectionProvider == null) return null; - IContentOutlinePage outlinePage = new VTKContentOutlinePage(rootNode, selectionProvider); + IContentOutlinePage outlinePage = new VTKContentOutlinePage(rootNode, selectionProvider); outlinePage.addSelectionChangedListener(new ISelectionChangedListener() { @Override @@ -410,28 +409,27 @@ public class CSGEditor2 extends ResourceEditorPart { return outlinePage; } - @SuppressWarnings("rawtypes") @Override - public Object getAdapter(Class adapter) { - if (IPropertyPage.class.equals(adapter)) - return new StandardPropertyPage(getSite(),getPropertyContexts()); - if (IContentOutlinePage.class.equals(adapter)) { - return createOutline(); + public T getAdapter(Class adapter) { + if (adapter.isAssignableFrom(IPropertyPage.class)) + return adapter.cast(new StandardPropertyPage(getSite(),getPropertyContexts())); + if (adapter.isAssignableFrom(IContentOutlinePage.class)) { + return adapter.cast(createOutline()); } - if (NodeMap.class.equals(adapter)) { - return nodeMap; + if (adapter.isAssignableFrom(NodeMap.class)) { + return adapter.cast(nodeMap); } - if (INode.class.equals(adapter)) { - return rootNode; + if (adapter.isAssignableFrom(INode.class)) { + return adapter.cast(rootNode); } - if (IMapping.class.equals(adapter)) { - return mapping; + if (adapter.isAssignableFrom(IMapping.class)) { + return adapter.cast(mapping); } - if (InteractiveVtkPanel.class.equals(adapter)) { - return panel; + if (adapter.isAssignableFrom(InteractiveVtkPanel.class)) { + return adapter.cast(panel); } - if (VtkView.class.equals(adapter)) - return panel; + if (adapter.isAssignableFrom(VtkView.class)) + return adapter.cast(panel); return super.getAdapter(adapter); }