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;
private SWTAWTComponent component;
private CSGrootNode rootNode;
- private IMapping<Resource,Object> mapping;
+ private IMapping<Resource, INode> mapping;
- private NodeSelectionProvider2<Resource,Object> selectionProvider;
+ private NodeSelectionProvider2<Resource, INode> selectionProvider;
private vtkCameraAndSelectorAction cameraAction;
private TranslateAction translateAction;
throw new RuntimeException("Scenegraph loading failed.");
populate();
- selectionProvider = new NodeSelectionProvider2<Resource,Object>(this,mapping,nodeMap);
+ selectionProvider = new NodeSelectionProvider2<Resource,INode>(this,mapping,nodeMap);
cameraAction.addSelectionChangedListener(selectionProvider);
- cameraAction.addHoverChangedListener(new HoverHighlighter(panel,nodeMap));
- selectionProvider.addSelectionChangedListener(new SelectionHighlighter(panel,nodeMap));
+ cameraAction.addHoverChangedListener(new HoverHighlighter<Resource>(panel,nodeMap));
+ selectionProvider.addSelectionChangedListener(new SelectionHighlighter<Resource>(panel,nodeMap));
getSite().setSelectionProvider(selectionProvider);
getSite().getPage().addPostSelectionListener(selectionProvider);
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);
-
}
};
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);
+
}
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<IG3DNode> 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<INode> 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);
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<ICSGnode> nodes = new ArrayList<ICSGnode>();
- 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<ICSGnode> nodes = new ArrayList<ICSGnode>();
+ 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() {
//
// // 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<Resource,Object>(rootNode, selectionProvider);
+ IContentOutlinePage outlinePage = new VTKContentOutlinePage<Resource,INode>(rootNode, selectionProvider);
outlinePage.addSelectionChangedListener(new ISelectionChangedListener() {
@Override
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> T getAdapter(Class<T> 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);
}