X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.plant3d%2Fsrc%2Forg%2Fsimantics%2Fplant3d%2Feditor%2FPlant3DEditor.java;h=b4448e670749caef8e30b8685d33422eb922cb55;hb=refs%2Fchanges%2F76%2F4176%2F1;hp=72f2c2066e4329bcac5c306786805ce4146eff01;hpb=1a435d31f6b629ab33bfb94046d594cca831a329;p=simantics%2F3d.git diff --git a/org.simantics.plant3d/src/org/simantics/plant3d/editor/Plant3DEditor.java b/org.simantics.plant3d/src/org/simantics/plant3d/editor/Plant3DEditor.java index 72f2c206..b4448e67 100644 --- a/org.simantics.plant3d/src/org/simantics/plant3d/editor/Plant3DEditor.java +++ b/org.simantics.plant3d/src/org/simantics/plant3d/editor/Plant3DEditor.java @@ -7,6 +7,7 @@ import java.util.List; import java.util.Set; import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; import org.eclipse.jface.action.IMenuListener; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.MenuManager; @@ -303,34 +304,44 @@ public class Plant3DEditor extends ResourceEditorPart { @Override public void run() { + nodeMap.setChangeTracking(false); nodeMap.populate(); + nodeMap.setChangeTracking(true); panel.addListener(new RenderListener() { - - @Override - public void preRender() { - - } - - @Override - public void postRender() { - panel.removeListener(this); - - try { - P3DUtil.finalizeDBLoad2(rootNode); - if (nodeMap.isRangeModified()); - nodeMap.commit("Load sync"); - } catch (Exception e) { - ExceptionUtils.logAndShowError("Failed to load model correctly", e); - } - - List props = new ArrayList<>(); - collectProps(rootNode, props); - fitToWindow(props); - } - }); + + @Override + public void preRender() { + + } + + @Override + public void postRender() { + panel.removeListener(this); + + try { + P3DUtil.finalizeDBLoad2(rootNode); + if (nodeMap.getMapping().isRangeModified()) + nodeMap.commit("Load sync"); + } catch (Exception e) { + ExceptionUtils.logAndShowError("Failed to load model correctly", e); + } + + onEditorInitializationComplete(); + + List props = new ArrayList<>(); + collectProps(rootNode, props); + fitToWindow(props); + } + }); } }); - + + } + + /** + * This can be overridden by clients to perform extra initialization tasks + */ + protected void onEditorInitializationComplete() { } protected IMappingSchema getSchema(ReadGraph graph) throws DatabaseException { @@ -516,7 +527,7 @@ public class Plant3DEditor extends ResourceEditorPart { } } - private class FitToWindow extends Action { + protected class FitToWindow extends Action { private List selected; public FitToWindow(List selected) { super("Fit to Window"); @@ -536,7 +547,7 @@ public class Plant3DEditor extends ResourceEditorPart { } protected void createFocusMenu(IMenuManager m, List selected) { - m.add(new FitToWindow(selected)); + m.add(createFitToWindowAction(selected)); if (!selected.isEmpty()) { List actors = new ArrayList<>(); @@ -548,7 +559,11 @@ public class Plant3DEditor extends ResourceEditorPart { } } } - + + protected IAction createFitToWindowAction(List selected) { + return new FitToWindow(selected); + } + private IContentOutlinePage createOutline() { if (rootNode == null || selectionProvider == null) return null;