]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.ui/src/org/simantics/ui/workbench/e4/E4ResourceEditorBase.java
Fixed all line endings of the repository
[simantics/platform.git] / bundles / org.simantics.ui / src / org / simantics / ui / workbench / e4 / E4ResourceEditorBase.java
index b1ee2ecc6d9643b673e4fd6890f71b29d95ee202..f038fbf593c7813754f967683c055d039723c6c8 100644 (file)
-package org.simantics.ui.workbench.e4;\r
-\r
-import java.util.Map;\r
-\r
-import javax.annotation.PostConstruct;\r
-import javax.annotation.PreDestroy;\r
-import javax.inject.Inject;\r
-\r
-import org.eclipse.e4.core.contexts.IEclipseContext;\r
-import org.eclipse.e4.ui.di.Focus;\r
-import org.eclipse.e4.ui.di.Persist;\r
-import org.eclipse.e4.ui.di.PersistState;\r
-import org.eclipse.e4.ui.model.application.ui.basic.MPart;\r
-import org.eclipse.e4.ui.workbench.modeling.EPartService;\r
-import org.eclipse.e4.ui.workbench.modeling.ESelectionService;\r
-import org.eclipse.swt.widgets.Composite;\r
-import org.simantics.Simantics;\r
-import org.simantics.db.ReadGraph;\r
-import org.simantics.db.Resource;\r
-import org.simantics.db.common.request.ParametrizedRead;\r
-import org.simantics.db.common.request.ReadRequest;\r
-import org.simantics.db.exception.DatabaseException;\r
-import org.simantics.db.layer0.request.PossibleModel;\r
-import org.simantics.db.layer0.variable.RVI;\r
-import org.simantics.db.layer0.variable.Variable;\r
-import org.simantics.db.layer0.variable.Variables;\r
-import org.simantics.db.service.SerialisationSupport;\r
-import org.simantics.ui.workbench.IResourceEditorInput;\r
-\r
-public abstract class E4ResourceEditorBase {\r
-\r
-    @Inject\r
-    private ESelectionService selectionService;\r
-\r
-    @Inject\r
-    private IEclipseContext eclipseContext;\r
-\r
-    private MPart part;\r
-    private boolean disposed;\r
-\r
-    private Resource resource;\r
-    private Variable variable;\r
-    private String rvi;\r
-    private Resource model;\r
-    \r
-    private IResourceEditorInput input;\r
-    private E4ResourceEditorSupport support;\r
-\r
-    @Inject\r
-    public final void init(MPart mPart) throws NumberFormatException, DatabaseException {\r
-        this.part = mPart;\r
-        readTransientState();\r
-        if (resource == null && model == null && rvi == null && variable == null)\r
-            readPersistentState();\r
-\r
-        deriveState();\r
-        initImpl(part);\r
-\r
-        if (!part.getTags().contains(EPartService.REMOVE_ON_HIDE_TAG)) {\r
-            part.getTags().add(EPartService.REMOVE_ON_HIDE_TAG);\r
-        }\r
-    }\r
-\r
-    public void initImpl(MPart part) { }\r
-\r
-    private void deriveState() throws DatabaseException {\r
-        boolean deriveVariable = variable == null && model != null;\r
-        boolean deriveModelAndRVI = variable != null;\r
-        boolean deriveModel = resource != null && model == null;\r
-\r
-        if (deriveModel || deriveModelAndRVI || deriveVariable) {\r
-            Simantics.getSession().syncRequest(new ReadRequest() {\r
-                \r
-                @Override\r
-                public void run(ReadGraph graph) throws DatabaseException {\r
-                    if (deriveVariable) {\r
-                        if (rvi != null) {\r
-                            Variable configuration = Variables.getConfigurationContext(graph, model);\r
-                            RVI rrvi = RVI.fromResourceFormat(graph, rvi);\r
-                            variable = rrvi.resolve(graph, configuration);\r
-                        }\r
-                        // Absolute URI\r
-                        else {\r
-                            variable = Variables.getVariable(graph, model);\r
-                        }\r
-                    }\r
-\r
-                    if (deriveModelAndRVI) {\r
-                        model = Variables.getPossibleModel(graph, variable);\r
-                        rvi = variable.getRVI(graph).toString();\r
-                    }\r
-\r
-                    if (deriveModel) {\r
-                        model = graph.syncRequest(new PossibleModel(resource));\r
-                    }\r
-                }\r
-            });\r
-        }\r
-\r
-        Map<String, Object> transientData = part.getTransientData(); \r
-        transientData.put(E4ResourceEditorConstants.KEY_RESOURCE, resource);\r
-        transientData.put(E4ResourceEditorConstants.KEY_MODEL, model);\r
-        transientData.put(E4ResourceEditorConstants.KEY_VARIABLE, variable);\r
-        transientData.put(E4ResourceEditorConstants.KEY_RVI, rvi);\r
-\r
-        if (resource != null) {\r
-            if (model != null) {\r
-                input = new E4ResourceEditorInput2(resource, model, rvi);\r
-            } else {\r
-                input = new E4ResourceEditorInput(resource);\r
-            }\r
-        }\r
-    }\r
-\r
-    protected void activateValidation() {\r
-        this.support = new E4ResourceEditorSupport(this, getInputValidator());\r
-        this.support.activateValidation();\r
-    }\r
-\r
-    protected void deactivateValidation() {\r
-        if (support != null) {\r
-            support.dispose();\r
-            support = null;\r
-        }\r
-    }\r
-\r
-    /**\r
-     * Override to define your own input resource editor input validator that\r
-     * the view uses by default in {@link #initializeSupport()}.\r
-     */\r
-    protected ParametrizedRead<IResourceEditorInput, Boolean> getInputValidator() {\r
-        return null;\r
-    }\r
-\r
-    private void readTransientState() throws DatabaseException {\r
-        Map<String, Object> transientData = part.getTransientData();\r
-        // Read input resource\r
-        Object inputResource = transientData.get(E4ResourceEditorConstants.KEY_RESOURCE);\r
-        if (inputResource != null && inputResource instanceof Resource)\r
-            resource = (Resource) inputResource;\r
-\r
-        // Read input RVI\r
-        Object inputRVI = transientData.get(E4ResourceEditorConstants.KEY_RVI);\r
-        if (inputRVI != null && inputRVI instanceof String)\r
-            rvi = (String) inputRVI;\r
-\r
-        Object inputModel = transientData.get(E4ResourceEditorConstants.KEY_MODEL);\r
-        if (inputModel != null && inputModel instanceof Resource)\r
-            model = (Resource) inputModel;\r
-\r
-        // Read input variable\r
-        Object inputVariable = transientData.get(E4ResourceEditorConstants.KEY_VARIABLE);\r
-        if (inputVariable != null && inputVariable instanceof Variable)\r
-            variable = (Variable) inputVariable;\r
-    }\r
-\r
-    private void readPersistentState() throws NumberFormatException, DatabaseException {\r
-        Map<String, String> persistState = part.getPersistedState();\r
-        SerialisationSupport support = Simantics.getSession().getService(SerialisationSupport.class);\r
-        String inputResource = persistState.get(E4ResourceEditorConstants.KEY_RESOURCE);\r
-        if (inputResource != null)\r
-            resource = support.getResource(Long.parseLong(inputResource));\r
-\r
-        // Read input RVI\r
-        String inputRVI = persistState.get(E4ResourceEditorConstants.KEY_RVI);\r
-        if (inputRVI != null)\r
-            rvi = inputRVI;\r
-\r
-        String inputModel = persistState.get(E4ResourceEditorConstants.KEY_MODEL);\r
-        if (inputModel != null)\r
-            model = support.getResource(Long.parseLong(inputModel));\r
-    }\r
-\r
-    @PostConstruct\r
-    public void createEditor(Composite parent) {\r
-        createPartControl(parent);\r
-    }\r
-\r
-    public abstract void createPartControl(Composite parent);\r
-\r
-    @PersistState\r
-    public void persistState() {\r
-        System.out.println("persistState");\r
-        Map<String, String> persistedState = part.getPersistedState();\r
-        if (resource != null)\r
-            persistedState.put(E4ResourceEditorConstants.KEY_RESOURCE, Long.toString(resource.getResourceId()));\r
-        if (model != null)\r
-            persistedState.put(E4ResourceEditorConstants.KEY_MODEL, Long.toString(model.getResourceId()));\r
-        if (rvi != null)\r
-            persistedState.put(E4ResourceEditorConstants.KEY_RVI, rvi);\r
-    }\r
-\r
-    @Persist\r
-    public void persist() {\r
-        System.out.println("persist");\r
-    }\r
-\r
-    @PreDestroy\r
-    public void preDestroy() {\r
-        System.out.println("dispose");\r
-        disposed = true;\r
-        dispose();\r
-        deactivateValidation();\r
-    }\r
-\r
-    public abstract void dispose();\r
-\r
-    public boolean isDisposed() {\r
-        return disposed;\r
-    }\r
-\r
-    public abstract void setFocus();\r
-\r
-    @Focus\r
-    public void focus() {\r
-        setFocus();\r
-    }\r
-\r
-    public MPart getPart() {\r
-        return part;\r
-    }\r
-\r
-    public Resource getInputResource() {\r
-        return resource;\r
-    }\r
-\r
-    public Variable getInputVariable() {\r
-        return variable;\r
-    }\r
-\r
-    public String getInputRVI() {\r
-        return rvi;\r
-    }\r
-\r
-    public Resource getInputModelResource() {\r
-        return model;\r
-    }\r
-\r
-    public Resource assertInputModelResource() {\r
-        if (model == null)\r
-            throw new NullPointerException("Input model resource not defined, input resource is " + resource);\r
-        return model;\r
-    }\r
-\r
-    public IResourceEditorInput getResourceInput() {\r
-        return input;\r
-    }\r
-\r
-    public ESelectionService getSelectionService() {\r
-        return selectionService;\r
-    }\r
-\r
-    public IEclipseContext getContext() {\r
-        return eclipseContext;\r
-    }\r
-\r
-}\r
+package org.simantics.ui.workbench.e4;
+
+import java.util.Map;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.ui.di.Focus;
+import org.eclipse.e4.ui.di.Persist;
+import org.eclipse.e4.ui.di.PersistState;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.e4.ui.workbench.modeling.EPartService;
+import org.eclipse.e4.ui.workbench.modeling.ESelectionService;
+import org.eclipse.swt.widgets.Composite;
+import org.simantics.Simantics;
+import org.simantics.db.ReadGraph;
+import org.simantics.db.Resource;
+import org.simantics.db.common.request.ParametrizedRead;
+import org.simantics.db.common.request.ReadRequest;
+import org.simantics.db.exception.DatabaseException;
+import org.simantics.db.layer0.request.PossibleModel;
+import org.simantics.db.layer0.variable.RVI;
+import org.simantics.db.layer0.variable.Variable;
+import org.simantics.db.layer0.variable.Variables;
+import org.simantics.db.service.SerialisationSupport;
+import org.simantics.ui.workbench.IResourceEditorInput;
+
+public abstract class E4ResourceEditorBase {
+
+    @Inject
+    private ESelectionService selectionService;
+
+    @Inject
+    private IEclipseContext eclipseContext;
+
+    private MPart part;
+    private boolean disposed;
+
+    private Resource resource;
+    private Variable variable;
+    private String rvi;
+    private Resource model;
+    
+    private IResourceEditorInput input;
+    private E4ResourceEditorSupport support;
+
+    @Inject
+    public final void init(MPart mPart) throws NumberFormatException, DatabaseException {
+        this.part = mPart;
+        readTransientState();
+        if (resource == null && model == null && rvi == null && variable == null)
+            readPersistentState();
+
+        deriveState();
+        initImpl(part);
+
+        if (!part.getTags().contains(EPartService.REMOVE_ON_HIDE_TAG)) {
+            part.getTags().add(EPartService.REMOVE_ON_HIDE_TAG);
+        }
+    }
+
+    public void initImpl(MPart part) { }
+
+    private void deriveState() throws DatabaseException {
+        boolean deriveVariable = variable == null && model != null;
+        boolean deriveModelAndRVI = variable != null;
+        boolean deriveModel = resource != null && model == null;
+
+        if (deriveModel || deriveModelAndRVI || deriveVariable) {
+            Simantics.getSession().syncRequest(new ReadRequest() {
+                
+                @Override
+                public void run(ReadGraph graph) throws DatabaseException {
+                    if (deriveVariable) {
+                        if (rvi != null) {
+                            Variable configuration = Variables.getConfigurationContext(graph, model);
+                            RVI rrvi = RVI.fromResourceFormat(graph, rvi);
+                            variable = rrvi.resolve(graph, configuration);
+                        }
+                        // Absolute URI
+                        else {
+                            variable = Variables.getVariable(graph, model);
+                        }
+                    }
+
+                    if (deriveModelAndRVI) {
+                        model = Variables.getPossibleModel(graph, variable);
+                        rvi = variable.getRVI(graph).toString();
+                    }
+
+                    if (deriveModel) {
+                        model = graph.syncRequest(new PossibleModel(resource));
+                    }
+                }
+            });
+        }
+
+        Map<String, Object> transientData = part.getTransientData(); 
+        transientData.put(E4ResourceEditorConstants.KEY_RESOURCE, resource);
+        transientData.put(E4ResourceEditorConstants.KEY_MODEL, model);
+        transientData.put(E4ResourceEditorConstants.KEY_VARIABLE, variable);
+        transientData.put(E4ResourceEditorConstants.KEY_RVI, rvi);
+
+        if (resource != null) {
+            if (model != null) {
+                input = new E4ResourceEditorInput2(resource, model, rvi);
+            } else {
+                input = new E4ResourceEditorInput(resource);
+            }
+        }
+    }
+
+    protected void activateValidation() {
+        this.support = new E4ResourceEditorSupport(this, getInputValidator());
+        this.support.activateValidation();
+    }
+
+    protected void deactivateValidation() {
+        if (support != null) {
+            support.dispose();
+            support = null;
+        }
+    }
+
+    /**
+     * Override to define your own input resource editor input validator that
+     * the view uses by default in {@link #initializeSupport()}.
+     */
+    protected ParametrizedRead<IResourceEditorInput, Boolean> getInputValidator() {
+        return null;
+    }
+
+    private void readTransientState() throws DatabaseException {
+        Map<String, Object> transientData = part.getTransientData();
+        // Read input resource
+        Object inputResource = transientData.get(E4ResourceEditorConstants.KEY_RESOURCE);
+        if (inputResource != null && inputResource instanceof Resource)
+            resource = (Resource) inputResource;
+
+        // Read input RVI
+        Object inputRVI = transientData.get(E4ResourceEditorConstants.KEY_RVI);
+        if (inputRVI != null && inputRVI instanceof String)
+            rvi = (String) inputRVI;
+
+        Object inputModel = transientData.get(E4ResourceEditorConstants.KEY_MODEL);
+        if (inputModel != null && inputModel instanceof Resource)
+            model = (Resource) inputModel;
+
+        // Read input variable
+        Object inputVariable = transientData.get(E4ResourceEditorConstants.KEY_VARIABLE);
+        if (inputVariable != null && inputVariable instanceof Variable)
+            variable = (Variable) inputVariable;
+    }
+
+    private void readPersistentState() throws NumberFormatException, DatabaseException {
+        Map<String, String> persistState = part.getPersistedState();
+        SerialisationSupport support = Simantics.getSession().getService(SerialisationSupport.class);
+        String inputResource = persistState.get(E4ResourceEditorConstants.KEY_RESOURCE);
+        if (inputResource != null)
+            resource = support.getResource(Long.parseLong(inputResource));
+
+        // Read input RVI
+        String inputRVI = persistState.get(E4ResourceEditorConstants.KEY_RVI);
+        if (inputRVI != null)
+            rvi = inputRVI;
+
+        String inputModel = persistState.get(E4ResourceEditorConstants.KEY_MODEL);
+        if (inputModel != null)
+            model = support.getResource(Long.parseLong(inputModel));
+    }
+
+    @PostConstruct
+    public void createEditor(Composite parent) {
+        createPartControl(parent);
+    }
+
+    public abstract void createPartControl(Composite parent);
+
+    @PersistState
+    public void persistState() {
+        System.out.println("persistState");
+        Map<String, String> persistedState = part.getPersistedState();
+        if (resource != null)
+            persistedState.put(E4ResourceEditorConstants.KEY_RESOURCE, Long.toString(resource.getResourceId()));
+        if (model != null)
+            persistedState.put(E4ResourceEditorConstants.KEY_MODEL, Long.toString(model.getResourceId()));
+        if (rvi != null)
+            persistedState.put(E4ResourceEditorConstants.KEY_RVI, rvi);
+    }
+
+    @Persist
+    public void persist() {
+        System.out.println("persist");
+    }
+
+    @PreDestroy
+    public void preDestroy() {
+        System.out.println("dispose");
+        disposed = true;
+        dispose();
+        deactivateValidation();
+    }
+
+    public abstract void dispose();
+
+    public boolean isDisposed() {
+        return disposed;
+    }
+
+    public abstract void setFocus();
+
+    @Focus
+    public void focus() {
+        setFocus();
+    }
+
+    public MPart getPart() {
+        return part;
+    }
+
+    public Resource getInputResource() {
+        return resource;
+    }
+
+    public Variable getInputVariable() {
+        return variable;
+    }
+
+    public String getInputRVI() {
+        return rvi;
+    }
+
+    public Resource getInputModelResource() {
+        return model;
+    }
+
+    public Resource assertInputModelResource() {
+        if (model == null)
+            throw new NullPointerException("Input model resource not defined, input resource is " + resource);
+        return model;
+    }
+
+    public IResourceEditorInput getResourceInput() {
+        return input;
+    }
+
+    public ESelectionService getSelectionService() {
+        return selectionService;
+    }
+
+    public IEclipseContext getContext() {
+        return eclipseContext;
+    }
+
+}