import org.simantics.db.exception.DatabaseException;
import org.simantics.g3d.scenegraph.IG3DNode;
import org.simantics.g3d.scenegraph.NodeMap;
+import org.simantics.g3d.scenegraph.RenderListener;
import org.simantics.g3d.scenegraph.base.INode;
import org.simantics.g3d.vtk.action.RemoveAction;
import org.simantics.g3d.vtk.common.HoverHighlighter;
import org.simantics.plant3d.actions.RemoveAndSplitAction;
import org.simantics.plant3d.actions.RoutePipeAction;
import org.simantics.plant3d.actions.TranslateInlineAction;
+import org.simantics.plant3d.ontology.Plant3D;
import org.simantics.plant3d.scenegraph.EndComponent;
import org.simantics.plant3d.scenegraph.Equipment;
import org.simantics.plant3d.scenegraph.IP3DNode;
@SuppressWarnings({ "rawtypes", "unchecked" })
@Override
public void run(ReadGraph graph) throws DatabaseException {
+ System.out.println("START PLANT3D LOAD");
PipingRules.setEnabled(false);
IMappingSchema<Resource, Object> schema = getSchema(graph);
mapping = Mappings.createWithListening(schema);
rootNode = (P3DRootNode)mapping.map(graph, input);
// update control points.
// TODO : this should be optimized.
+
+
+
try {
- P3DUtil.finalizeDBLoad(rootNode);
-
- } catch (Exception e) {
- throw new DatabaseException(e);
- }
- nodeMap = createNodeMap(getSession(), mapping, panel,rootNode);
+ P3DUtil.finalizeDBLoad(rootNode);
+ nodeMap = createNodeMap(getSession(), mapping, panel,rootNode);
+
+ } catch (Exception e) {
+ throw new DatabaseException(e);
+ }
+
+ System.out.println("END PLANT3D LOAD");
}
});
return new SelectionHighlighter<INode>(panel,nodeMap);
}
+ protected String getLibraryUri() {
+ return Plant3D.URIs.Builtin;
+ }
+
protected void createActions() {
translateAction = new TranslateAction(panel,nodeMap);
translateInlineAction = new TranslateInlineAction(panel, nodeMap);
removeSplitAction = new RemoveAndSplitAction(nodeMap);
routePipeAction = new RoutePipeAction(panel,rootNode);
- addComponentAction = new AddComponentAction(panel, rootNode);
+ addComponentAction = new AddComponentAction(panel, rootNode, getLibraryUri());
}
public void populate() {
@Override
public void run() {
nodeMap.populate();
+ panel.addListener(new RenderListener() {
+
+ @Override
+ public void preRender() {
+
+ }
+
+ @Override
+ public void postRender() {
+ try {
+ P3DUtil.finalizeDBLoad2(rootNode);
+ if (nodeMap.isRangeModified());
+ nodeMap.commit("Load sync");
+ } catch (Exception e) {
+ //throw new DatabaseException(e);
+ }
+ panel.removeListener(this);
+
+ }
+ });
+
}
});
List<IG3DNode> selected = selectionProvider.getSelectedNodes();
try {
if (selected.size() == 0) {
- for (Item eq : P3DUtil.getEquipments()) {
+ for (Item eq : P3DUtil.getEquipments(getLibraryUri())) {
m.add(new AddEquipmentAction(rootNode, eq));
}
} else if (selected.size() == 1) {
if (node instanceof Equipment) {
m.add(translateAction);
m.add(rotateAction);
- for (Item eq : P3DUtil.getNozzles()) {
+ for (Item eq : P3DUtil.getNozzles(getLibraryUri())) {
AddNozzleAction add = new AddNozzleAction(rootNode, eq);
add.setEquipment((Equipment)node);
m.add(add);