]> gerrit.simantics Code Review - simantics/3d.git/blobdiff - org.simantics.g3d.shapeeditor/src/org/simantics/proconf/g3d/shapeeditor/tools/ParameterizationContribution.java
Removing ancient 3d framework
[simantics/3d.git] / org.simantics.g3d.shapeeditor / src / org / simantics / proconf / g3d / shapeeditor / tools / ParameterizationContribution.java
diff --git a/org.simantics.g3d.shapeeditor/src/org/simantics/proconf/g3d/shapeeditor/tools/ParameterizationContribution.java b/org.simantics.g3d.shapeeditor/src/org/simantics/proconf/g3d/shapeeditor/tools/ParameterizationContribution.java
deleted file mode 100644 (file)
index 3ac5801..0000000
+++ /dev/null
@@ -1,690 +0,0 @@
-/*******************************************************************************\r
- * Copyright (c) 2007- VTT Technical Research Centre of Finland.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the terms of the Eclipse Public License v1.0\r
- * which accompanies this distribution, and is available at\r
- * http://www.eclipse.org/legal/epl-v10.html\r
- *\r
- * Contributors:\r
- *     VTT Technical Research Centre of Finland - initial API and implementation\r
- *******************************************************************************/\r
-package org.simantics.proconf.g3d.shapeeditor.tools;\r
-\r
-import java.util.ArrayList;\r
-import java.util.Collection;\r
-import java.util.List;\r
-\r
-import org.eclipse.jface.action.IMenuManager;\r
-import org.eclipse.jface.action.IToolBarManager;\r
-import org.eclipse.jface.dialogs.InputDialog;\r
-import org.eclipse.jface.dialogs.MessageDialog;\r
-import org.eclipse.swt.SWT;\r
-import org.eclipse.swt.events.SelectionAdapter;\r
-import org.eclipse.swt.events.SelectionEvent;\r
-import org.eclipse.swt.graphics.Rectangle;\r
-import org.eclipse.swt.layout.FillLayout;\r
-import org.eclipse.swt.layout.FormAttachment;\r
-import org.eclipse.swt.layout.FormData;\r
-import org.eclipse.swt.layout.FormLayout;\r
-import org.eclipse.swt.layout.GridData;\r
-import org.eclipse.swt.layout.GridLayout;\r
-import org.eclipse.swt.widgets.Button;\r
-import org.eclipse.swt.widgets.Composite;\r
-import org.eclipse.swt.widgets.Event;\r
-import org.eclipse.swt.widgets.Label;\r
-import org.eclipse.swt.widgets.Listener;\r
-import org.eclipse.swt.widgets.Sash;\r
-import org.eclipse.swt.widgets.Tree;\r
-import org.eclipse.ui.forms.IFormColors;\r
-import org.eclipse.ui.forms.events.ExpansionAdapter;\r
-import org.eclipse.ui.forms.events.ExpansionEvent;\r
-import org.eclipse.ui.forms.widgets.FormToolkit;\r
-import org.eclipse.ui.forms.widgets.ScrolledForm;\r
-import org.eclipse.ui.forms.widgets.Section;\r
-import org.simantics.db.Graph;\r
-import org.simantics.db.GraphRequestAdapter;\r
-import org.simantics.db.GraphRequestStatus;\r
-import org.simantics.db.Resource;\r
-import org.simantics.equation.stubs.SecondOrderScalarPolynomial;\r
-import org.simantics.animation.stubs.Animation;\r
-import org.simantics.animation.stubs.Interpolator;\r
-import org.simantics.layer0.utils.EntityFactory;\r
-import org.simantics.layer0.utils.IEntity;\r
-import org.simantics.layer0.utils.ResourceDebugUtils;\r
-import org.simantics.proconf.browsing.GraphExplorer;\r
-import org.simantics.proconf.browsing.GraphExplorerInputFactory;\r
-import org.simantics.proconf.browsing.views.PropertyTable;\r
-import org.simantics.proconf.g3d.actions.ContextAction;\r
-import org.simantics.proconf.g3d.base.EditorContribution;\r
-import org.simantics.proconf.g3d.base.ThreeDimensionalEditorBase;\r
-import org.simantics.proconf.g3d.common.StructuredResourceSelection;\r
-import org.simantics.proconf.g3d.shapeeditor.ShapeEditorResources;\r
-import org.simantics.proconf.g3d.shapeeditor.common.ViewpointGenerator;\r
-import org.simantics.proconf.g3d.shapeeditor.views.ShapeEditorBase;\r
-import org.simantics.proconf.g3d.stubs.G3DModel;\r
-import org.simantics.proconf.g3d.tools.OESelectionListener;\r
-import org.simantics.proconf.g3d.tools.PropertyTree;\r
-import org.simantics.utils.ui.jface.BaseSelectionProvider;\r
-\r
-\r
-public class ParameterizationContribution implements EditorContribution {\r
-\r
-       private ShapeEditorBase parent;\r
-       private List<ContextAction> actions = new ArrayList<ContextAction>();\r
-       private Composite sideComposite;\r
-       private Sash sash;\r
-       \r
-       \r
-       public ParameterizationContribution(ThreeDimensionalEditorBase parent) {\r
-               this.parent = (ShapeEditorBase) parent;\r
-       }\r
-       \r
-       @Override\r
-       public void createControl(final Composite parentComposite) {\r
-               FormLayout flayout = new FormLayout();\r
-               parentComposite.setLayout(flayout);\r
-               sash = new Sash(parentComposite,SWT.VERTICAL);\r
-               \r
-               sideComposite = new Composite(parentComposite,SWT.BORDER);\r
-               FormData data = new FormData();\r
-               data.top = new FormAttachment(0, 0);\r
-               data.left = new FormAttachment(0, 0);\r
-               data.right = new FormAttachment(sash, 0, SWT.LEFT);\r
-               data.bottom = new FormAttachment(100,0);\r
-               this.parent.getRenderingComposite().setLayoutData(data);\r
-               sideComposite.setLayout(new FillLayout(SWT.VERTICAL));\r
-               data = new FormData();\r
-               data.top = new FormAttachment(0, 0);\r
-               data.bottom = new FormAttachment(100,0);\r
-               data.right = new FormAttachment(100,0);\r
-               data.left = new FormAttachment(sash,0,SWT.RIGHT);\r
-               sideComposite.setLayoutData(data);\r
-               \r
-               final int limit = 20, percent = 50;\r
-               final FormData sashData = new FormData();\r
-               sashData.left = new FormAttachment (percent, 0);\r
-               sashData.top = new FormAttachment(0, 0);\r
-               sashData.bottom = new FormAttachment(100,0);\r
-               \r
-               sash.setLayoutData (sashData);\r
-               sash.addListener (SWT.Selection, new Listener () {\r
-                       public void handleEvent (Event e) {\r
-                               Rectangle sashRect = sash.getBounds ();\r
-                               Rectangle shellRect = parentComposite.getClientArea ();\r
-                               int right = shellRect.width - sashRect.width - limit;\r
-                               e.x = Math.max (Math.min (e.x, right), limit);\r
-                               if (e.x != sashRect.x)  {\r
-                                       sashData.left = new FormAttachment (0, e.x);\r
-                                       parentComposite.layout ();\r
-                               }\r
-                       }\r
-               });\r
-               createForm(sideComposite);\r
-               \r
-               hierarchyExplorer.setInput(parent.getSessionContext(),GraphExplorerInputFactory.clone(hierarchyExplorer.getInput())\r
-                   .input(parent.getModelResource())\r
-                   .viewpoint(ViewpointGenerator.createObjectStructureViewpoint())\r
-                   .toInput());\r
-\r
-//        parameterExplorer.setInput(parent.getSessionContext(),GraphExplorerInputFactory.clone(parameterExplorer.getInput())\r
-//                .input(parent.getModelResource())\r
-//                .viewpoint(ViewpointGenerator.createObjectSizingParameterViewpoint(ShapeEditorResources.g3dResource.HasSizingParameter))\r
-//                .toInput());\r
-               parameterTable.setSession(parent.getSession());\r
-               parameterTable.setInput(new StructuredResourceSelection(parent.getModelResource()));\r
-        \r
-       }\r
-       \r
-       @Override\r
-       public void disposeControl() {\r
-               sideComposite.dispose();\r
-               sash.dispose();\r
-               \r
-       }\r
-       \r
-       @Override\r
-       public void dispose() {\r
-\r
-       }\r
-       \r
-       @Override\r
-       public void fillContextMenu(Graph graph, IMenuManager manager,\r
-                       StructuredResourceSelection selection) {\r
-\r
-       }\r
-       \r
-       @Override\r
-       public void fillLocalPullDown(IMenuManager manager) {\r
-\r
-       }\r
-       \r
-       @Override\r
-       public void fillLocalToolBar(IToolBarManager manager) {\r
-\r
-       }\r
-       \r
-       @Override\r
-       public Collection<ContextAction> getActions() {\r
-               return actions;\r
-       }\r
-       \r
-       @Override\r
-       public String getName() {\r
-               return "Parameterization";\r
-       }\r
-       \r
-       @Override\r
-       public void initialize(Graph graph) {\r
-\r
-       }\r
-       \r
-       @Override\r
-       public void run() {\r
-               \r
-       }\r
-       \r
-       private ScrolledForm form;\r
-       private BaseSelectionProvider defaultInputSelectionProvider = new BaseSelectionProvider();\r
-       protected FormToolkit toolkit;\r
-       \r
-\r
-    \r
-    private void createForm(Composite parent) {\r
-       toolkit = new FormToolkit(parent.getDisplay());\r
-               form = getToolkit().createScrolledForm(parent);\r
-\r
-               GridLayout layout = new GridLayout(2, false);\r
-               form.getBody().setLayout(layout);\r
-               form.getBody().setLayoutData(\r
-                               new GridData(GridData.FILL, GridData.FILL, true, true));\r
-\r
-               // By default make this ViewPart use a default ISelectionProvider\r
-               // that will offer the viewparts input resource as its selection.\r
-               // The Resource is wrapped into a ResourceSelection object.\r
-               // Any widgets created in createWidgets may override the default\r
-               // selection provider.\r
-               //getEditorSite().setSelectionProvider(defaultInputSelectionProvider);\r
-\r
-               beforeCreateWidgets();\r
-               createWidgets();\r
-\r
-               //reload();\r
-\r
-               form.setText(getFormText());\r
-\r
-               // Finally Set the default selection which will have an effect only\r
-               // if nothing in createWidgets has overridden the default selection\r
-               // provider.\r
-//             ISelection s = ISelectionUtils\r
-//                             .createSelection(new StructuredResourceSelection(\r
-//                                             getInputResource()));\r
-//             defaultInputSelectionProvider.setSelection(s);\r
-    }\r
-    \r
-       \r
-       public ScrolledForm getActiveForm() {\r
-               return form;\r
-       }\r
-\r
-       protected Composite getBody() {\r
-               return form.getBody();\r
-       }\r
-       \r
-       public Composite newGridSection(int formColumns, int childColumns,\r
-                       boolean equalWidth, boolean grabVertical, String text,\r
-                       String description) {\r
-               return newGridSection(getBody(), formColumns, childColumns, equalWidth,\r
-                               grabVertical, text, description);\r
-       }\r
-\r
-       public Composite newGridSection(Composite parent, int formColumns,\r
-                       int childColumns, boolean equalWidth, boolean grabVertical,\r
-                       String text, String description) {\r
-               FormToolkit toolkit = getToolkit();\r
-\r
-               Section section = toolkit.createSection(parent, Section.DESCRIPTION\r
-                               | Section.TWISTIE | Section.TITLE_BAR | Section.EXPANDED);\r
-               section.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true,\r
-                               grabVertical, formColumns, 1));\r
-               section.addExpansionListener(new ExpansionAdapter() {\r
-                       public void expansionStateChanged(ExpansionEvent e) {\r
-                               //System.out.println("SinglePageTypeEditor: expansionStateChanged " + e);\r
-                               //reflow(true);\r
-                       }\r
-               });\r
-               section.setText(text);\r
-               section.setDescription(description);\r
-               Composite sectionClient = toolkit.createComposite(section);\r
-               sectionClient.setLayout(new GridLayout(childColumns, equalWidth));\r
-               sectionClient.setLayoutData(new GridData());\r
-               section.setClient(sectionClient);\r
-               return sectionClient;\r
-       }\r
-       \r
-       public FormToolkit getToolkit() {\r
-               return toolkit;\r
-       }\r
-       \r
-       public void reflow(boolean flushCache) {\r
-               //System.out.println("FormTypeEditorBase.reflow(" + flushCache + ")");\r
-               getActiveForm().reflow(flushCache);\r
-       }\r
-       \r
-       protected void beforeCreateWidgets() {\r
-       }\r
-       \r
-//     private TrackedText modelName = null;\r
-    StructuredResourceSelection hierarchySelection = new StructuredResourceSelection();\r
-    StructuredResourceSelection parameterSelection = new StructuredResourceSelection();\r
-    //GraphExplorer parameterExplorer;\r
-    PropertyTable parameterTable;\r
-    GraphExplorer hierarchyExplorer;\r
-    Button deleteParameterButton;\r
-    Button clearButton;\r
-    PropertyTree propertiesTree;\r
-    Button generateButton;\r
-    Button askButton;\r
-    Button overrideButton;\r
-    \r
-    protected String getFormText() {\r
-        return "Parameterization Editor";\r
-    }\r
-\r
-    protected void createWidgets() {\r
-        createModelPropertiesGroup(newGridSection(2, 1, false, false, "Model Properties",\r
-        "Basic properties for this viewpoint"));\r
-        createParametrizationGroup(newGridSection(2, 1, false, false, "Parameterization",\r
-        "Create parameterization for selected shapes"));\r
-        //getSite().setSelectionProvider(this);\r
-    }\r
-    \r
-    private void createParametrizationGroup(Composite parent) {\r
-        toolkit.paintBordersFor(parent);\r
-        toolkit.setBorderStyle(SWT.BORDER);\r
-        \r
-        overrideButton = toolkit.createButton(parent, "Overwrite previous parameterizations", SWT.CHECK);\r
-        overrideButton.addSelectionListener(new SelectionAdapter() {\r
-            public void widgetSelected(SelectionEvent e) {\r
-                askButton.setEnabled(overrideButton.getSelection());\r
-                \r
-            }\r
-        });\r
-\r
-        \r
-        askButton = toolkit.createButton(parent, "Ask before overwriting", SWT.CHECK);\r
-        askButton.addSelectionListener(new SelectionAdapter() {\r
-            public void widgetSelected(SelectionEvent e) {\r
-                \r
-                \r
-            }\r
-        });\r
-        askButton.setEnabled(false);\r
-        \r
-        generateButton = toolkit.createButton(parent, "Generate linear parameterization", SWT.PUSH);\r
-        generateButton.addSelectionListener(new SelectionAdapter() {\r
-            public void widgetSelected(SelectionEvent e) {\r
-                generateMappings();\r
-                \r
-            }\r
-        });\r
-        generateButton.setEnabled(false);\r
-        \r
-        \r
-    }\r
-    \r
-    private void createModelPropertiesGroup(final Composite parent) {\r
-  \r
-        toolkit.paintBordersFor(parent);\r
-        toolkit.setBorderStyle(SWT.BORDER);\r
-        \r
-        GridData gridData1 = new GridData(SWT.FILL, SWT.TOP, false, false, 1, 1);\r
-        \r
-        \r
-        // Parameters\r
-        Label parameterLabel = toolkit.createLabel(parent, "Parameters:");\r
-        parameterLabel.setForeground(toolkit.getColors().getColor(IFormColors.TITLE));\r
-        parameterLabel.setLayoutData(gridData1);\r
-        \r
-//        parameterExplorer = new GraphExplorer(parent, SWT.SINGLE); //new OntologyExplorer("ParameterExplorer", this, getInput("ParameterExplorer", model.getId()));\r
-//        parameterExplorer.getViewer().addPostSelectionChangedListener(new OESelectionListener() {\r
-//\r
-//           protected void resourceSelectionUpdated(StructuredResourceSelection sel) {\r
-//                parameterSelection = sel;\r
-//               if (parameterSelection.size() == 0) {\r
-//                   deleteParameterButton.setEnabled(false);\r
-//                   clearButton.setEnabled(false);\r
-//               } else {\r
-//                   deleteParameterButton.setEnabled(true);\r
-//                   clearButton.setEnabled(true);\r
-//               }\r
-//               updateGenerateButtonStatus();\r
-//           }\r
-//             \r
-//        });\r
-//        Tree oe = parameterExplorer.getTree();\r
-//        toolkit.adapt(oe, true, true);\r
-        \r
-        parameterTable = new PropertyTable(parent,SWT.NONE);\r
-        parameterTable.getViewer().addPostSelectionChangedListener(new OESelectionListener() {\r
-\r
-           protected void resourceSelectionUpdated(StructuredResourceSelection sel) {\r
-                  parameterSelection = sel;\r
-               if (parameterSelection.size() == 0) {\r
-                   deleteParameterButton.setEnabled(false);\r
-                   clearButton.setEnabled(false);\r
-               } else {\r
-                   deleteParameterButton.setEnabled(true);\r
-                   clearButton.setEnabled(true);\r
-               }\r
-               updateGenerateButtonStatus();\r
-           }\r
-               \r
-        });\r
-        \r
-        GridData gd3 = new GridData(GridData.FILL, GridData.FILL, true, true,1,1);\r
-        gd3.heightHint = 50;\r
-        //oe.setLayoutData(gd3);\r
-\r
-        parameterTable.setLayoutData(gd3);\r
-        \r
-        // Buttons to add and remove parameters\r
-        toolkit.createLabel(parent, "");\r
-        Composite buttons = toolkit.createComposite(parent);\r
-\r
-        buttons.setLayout(new FillLayout(SWT.HORIZONTAL));\r
-        Button newParameterButton = toolkit.createButton(buttons, "New Parameter", SWT.PUSH);\r
-        newParameterButton.addSelectionListener(new SelectionAdapter() {\r
-            public void widgetSelected(SelectionEvent e) {\r
-                InputDialog dialog = new InputDialog(ParameterizationContribution.this.parent.getRenderingComposite().getShell(),"New Parameter","Enter parameter's name","new parameter",null);\r
-                if (dialog.open() == InputDialog.CANCEL)\r
-                    return;\r
-                final String name = dialog.getValue();\r
-                if (name.length() < 1) \r
-                    return; // TODO : show error\r
-                \r
-                ParameterizationContribution.this.parent.getSession().asyncWrite(new GraphRequestAdapter() {\r
-                       public GraphRequestStatus perform(Graph g) throws Exception {\r
-                               //fi.vtt.simantics.layer0.stubs.Double parameter = DoubleFactory.createDefault(g);\r
-                        //getModel(g).addStatement(ShapeEditorResources.g3dResource.HasSizingParameter, parameter);\r
-                        //parameter.setValue(new double[]{1.0});\r
-                        //parameter.setName(name);\r
-                               Resource parameter = ParameterizationContribution.this.parent.getModel(g).addRelatedScalarDouble(ShapeEditorResources.g3dResource.HasSizingParameter, 1.0).getResource();\r
-                               IEntity thing = EntityFactory.create(g,parameter);\r
-                               thing.setName(name);\r
-                               return GraphRequestStatus.transactionComplete();\r
-                       };\r
-                });\r
-                    \r
-                \r
-            }\r
-        });\r
-        deleteParameterButton = toolkit.createButton(buttons, "Delete Parameter", SWT.PUSH);\r
-        deleteParameterButton.addSelectionListener(new SelectionAdapter() {\r
-            public void widgetSelected(SelectionEvent e) {\r
-                //StructuredResourceSelection s = (StructuredResourceSelection)parameterScheme.getSelection();\r
-               final StructuredResourceSelection s = parameterSelection;\r
-               if (s.size() != 1)\r
-                    return;\r
-               // we'll have to start write transaction, since we may have to change the graph\r
-               ParameterizationContribution.this.parent.getSession().asyncWrite(new GraphRequestAdapter() {\r
-                       boolean proceed;\r
-                       IEntity selectedParameter;\r
-                       public GraphRequestStatus perform(Graph g) throws Exception {\r
-                                selectedParameter = EntityFactory.create(g,s.getSelectionList().get(0));\r
-                               \r
-                        Collection<IEntity> parameters = selectedParameter.getRelatedObjects(ShapeEditorResources.g3dResource.HasSizingParameter);\r
-                        if (parameters.size() > 0) {\r
-                            final MessageDialog dialog = new MessageDialog(ParameterizationContribution.this.parent.getRenderingComposite().getShell(),"Deleting a parameter",null,"Parameter is in use, doe you wan't to remove it?",MessageDialog.QUESTION,new String[]{"OK","Cancel"},1);\r
-                            parent.getDisplay().syncExec(new Runnable() {\r
-                               @Override\r
-                               public void run() {\r
-                                        proceed = (dialog.open() != 1);\r
-                               }\r
-                            });\r
-                            if (proceed) {\r
-                               ParameterizationContribution.this.parent.getModel(g).removeStatement(ShapeEditorResources.g3dResource.HasSizingParameter,selectedParameter);\r
-                                       }\r
-                        }\r
-                       \r
-                        return GraphRequestStatus.transactionComplete();\r
-                       }\r
-               });\r
-            }\r
-        });\r
-        deleteParameterButton.setEnabled(false);\r
-        \r
-        clearButton = toolkit.createButton(buttons, "Clear Parameter", SWT.PUSH);\r
-        clearButton.addSelectionListener(new SelectionAdapter() {\r
-            public void widgetSelected(SelectionEvent e) {\r
-                final StructuredResourceSelection s = parameterSelection;\r
-                if (s.size() != 1)\r
-                    return;\r
-                ParameterizationContribution.this.parent.getSession().asyncWrite(new GraphRequestAdapter() {\r
-                       boolean proceed;\r
-                       @Override\r
-                       public GraphRequestStatus perform(Graph g) throws Exception {\r
-                                IEntity selectedParameter = EntityFactory.create(g,s.getSelectionList().get(0));\r
-                         Collection<IEntity> equations = selectedParameter.getRelatedObjects(ShapeEditorResources.equationResource.HasTarget);\r
-                                final String name = selectedParameter.getName();\r
-                                if (equations.size() > 0) {\r
-                                        final MessageDialog dialog = new MessageDialog(ParameterizationContribution.this.parent.getRenderingComposite().getShell(),"Clearing a parameter",null,"Do you wan't to clear parameterization for "+ name + " ?\nIt has " + equations.size() + " mappings.",MessageDialog.QUESTION,new String[]{"OK","Cancel"},1);     \r
-                                        parent.getDisplay().syncExec(new Runnable() {\r
-                                                public void run() {\r
-                                                        proceed = (dialog.open() != 1);\r
-                                                };\r
-                                        });\r
-                                        if (proceed) {\r
-                                                for (IEntity eq : equations) {\r
-                                                        eq.removeRelatedStatements(ShapeEditorResources.equationResource.HasSource);\r
-                                                        eq.removeRelatedStatements(ShapeEditorResources.equationResource.HasTarget);\r
-                                                }\r
-                                                return GraphRequestStatus.transactionComplete();\r
-                                        }\r
-                                }\r
-                                return GraphRequestStatus.transactionCancel();\r
-                       }\r
-                });\r
-            \r
-                \r
-            }\r
-        });\r
-        clearButton.setEnabled(false);\r
-        \r
-        Label hierarchyLabel = toolkit.createLabel(parent, "Model Hierarchy:");\r
-        hierarchyLabel.setForeground(toolkit.getColors().getColor(IFormColors.TITLE));\r
-        hierarchyLabel.setLayoutData(gridData1);\r
-        \r
-        hierarchyExplorer = new GraphExplorer(parent,SWT.MULTI); //new OntologyExplorer("HierarchyExplorer", this, getInput("HierarchyExplorer", model.getId()));\r
-        Tree oeh = hierarchyExplorer.getTree();//hierarchyExplorer.getControl(parent, 1, OntologyExplorer.OntologyTree, SWT.MULTI);\r
-        toolkit.adapt(oeh, true, true);\r
-        \r
-        GridData gd4 = new GridData(GridData.FILL, GridData.FILL, true, true,1,1);\r
-        gd4.heightHint = 200;\r
-        oeh.setLayoutData(gd4);\r
-        hierarchyExplorer.getViewer().addPostSelectionChangedListener(new OESelectionListener() {\r
-\r
-          protected void resourceSelectionUpdated(StructuredResourceSelection sel) {\r
-                 hierarchySelection = sel;\r
-              updatePropertiesTable();\r
-              updateGenerateButtonStatus();\r
-          }\r
-  \r
-          private void updatePropertiesTable() {\r
-              propertiesTree.setProperties(hierarchySelection);\r
-              \r
-          }\r
-               \r
-        });\r
-\r
-        Label propertiesLabel = toolkit.createLabel(parent, "Available properties:");\r
-        propertiesLabel.setForeground(toolkit.getColors().getColor(IFormColors.TITLE));\r
-        propertiesLabel.setLayoutData(gridData1); \r
-        \r
-        //propertiesTable = toolkit.createTable(parent, SWT.MULTI);\r
-        Tree tree = toolkit.createTree(parent, SWT.MULTI);\r
-        propertiesTree = new PropertyTree(tree,ParameterizationContribution.this.parent.getSession());\r
-        //\r
-        GridData gd5 = new GridData(GridData.FILL, GridData.FILL, true, true,1,1);\r
-        gd5.heightHint = 200;\r
-        //propertiesTable.setLayoutData(gd5);\r
-        tree.setLayoutData(gd5);\r
-        tree.addSelectionListener(new SelectionAdapter() {\r
-\r
-            @Override\r
-            public void widgetSelected(SelectionEvent e) {\r
-                updateGenerateButtonStatus();\r
-            }\r
-            \r
-        });\r
-\r
-        \r
-    }\r
-       \r
-    private void updateGenerateButtonStatus() {\r
-        if (parameterSelection.size() == 0) {\r
-            generateButton.setEnabled(false);\r
-            return;\r
-        }\r
-        if (hierarchySelection.size() == 0) {\r
-            generateButton.setEnabled(false);\r
-            return;\r
-        }\r
-        if (propertiesTree.getTree().getSelection().length == 0) {\r
-            generateButton.setEnabled(false);\r
-            return;\r
-        }\r
-        generateButton.setEnabled(true);\r
-    }\r
-    \r
-    List<Resource> res;\r
-    \r
-    private void generateMappings() {\r
-               final StructuredResourceSelection selectedShapes = hierarchySelection;\r
-               final StructuredResourceSelection selectedParameter = parameterSelection;\r
-               \r
-               final boolean override = overrideButton.getSelection();\r
-               final boolean ask = askButton.getSelection();\r
-               //TreeItem[] selectedProperties = propertiesTree.getTree().getSelection();\r
-               \r
-               assert (selectedParameter.size() == 1);\r
-               assert (selectedShapes.size() > 0);\r
-               //assert(selectedProperties.length > 0);\r
-               parent.getSession().asyncWrite(new GraphRequestAdapter() {\r
-                       @Override\r
-                       public GraphRequestStatus perform(Graph g) throws Exception {\r
-                               //fi.vtt.simantics.layer0.stubs.Double parameter = DoubleFactory.create(g,selectedParameter.getSelectionList().get(0));\r
-                               IEntity parameter = EntityFactory.create(g,selectedParameter.getSelectionList().get(0));\r
-                               Collection<IEntity> prop = parameter.getRelatedObjects(ShapeEditorResources.g3dResource.HasDefaultDoubleValue);\r
-                               //fi.vtt.simantics.layer0.stubs.Double defaultValue;\r
-                               double value = g.getScalarDouble(parameter.getResource());\r
-                               if (prop.size() == 0) {\r
-                                       //defaultValue = DoubleFactory.createDefault(g);\r
-                                       //parameter.addStatement(ShapeEditorResources.g3dResource.HasDefaultDoubleValue, defaultValue);\r
-                                       parameter.addRelatedScalarDouble(ShapeEditorResources.g3dResource.HasDefaultDoubleValue, value);\r
-                               } else {\r
-                                       //defaultValue = DoubleFactory.create(prop.iterator().next());\r
-                                       g.setScalarDouble(prop.iterator().next().getResource(),value);\r
-                               }\r
-                               //defaultValue.setValue(parameter.getValue());\r
-                               final Graph graph = g;\r
-                               parent.getRenderingComposite().getDisplay().syncExec(new Runnable() {\r
-                                       public void run() {\r
-                                               res = propertiesTree.findLeafPropertyInstances(graph, selectedShapes.getSelectionList());\r
-                                       };\r
-                               });\r
-                                \r
-                               \r
-                               double refValue = parameter.toProperty().getScalarDouble();\r
-                               ArrayList<Resource> mappedProperties = new ArrayList<Resource>();\r
-                               \r
-                               for (Resource r : res) {\r
-                                       IEntity propertyThing = EntityFactory.create(g,r);\r
-                                       assert (propertyThing.isInstanceOf(g.getBuiltins().Double));\r
-                                       final String name = ResourceDebugUtils.getReadableNameForEntity(propertyThing);\r
-                                       double rb = propertyThing.toProperty().getScalarDouble();\r
-                                       System.out.println("Mapping to " + name + " " + rb);\r
-                                       Collection<IEntity> equations = propertyThing.getRelatedObjects(ShapeEditorResources.equationResource.HasSource);\r
-                                       if (equations.size() != 0) {\r
-                                               mappedProperties.add(propertyThing.getResource());\r
-                                               if (override) {\r
-                                                       System.out.println("Override");\r
-                                                       boolean over = true;\r
-                                                       if (ask) {\r
-                                                               IEntity t = propertyThing;\r
-                                                               while (t.isInstanceOf(g.getBuiltins().Property)) {\r
-                                                                       Collection<IEntity> ts = t.getRelatedObjects(g.getBuiltins().PropertyOf);\r
-                                                                       // FIXME : traverse all possible routes\r
-                                                                       t = ts.iterator().next();\r
-                                                               }\r
-                                                               //StructuredResourceSelection selection = new StructuredResourceSelection(t.getResource());\r
-                                                               // TODO : do the selection!\r
-                                                               //hierarchyScheme.setSelection(selection);\r
-                                                               //fireSelectionChanged();\r
-                                                               MessageDialog dialog = new MessageDialog(ParameterizationContribution.this.parent.getRenderingComposite().getShell(),\r
-                                                                               "Override mapping",\r
-                                                                               null,\r
-                                                                               "Override mapping to property of highlighted shape?",\r
-                                                                               MessageDialog.QUESTION, new String[] {\r
-                                                                                               "Yes","No", "Cancel" }, 0);\r
-                                                               int i = dialog.open();\r
-                                                               if (i == 2)\r
-                                                                       return GraphRequestStatus.transactionCancel();\r
-                                                               over = (i == 0);\r
-                                                       }\r
-                                                       if (over) {\r
-                                                               \r
-                                                       }\r
-                                               } else {\r
-                                                       if (equations.size() != 1) {\r
-                                                               throw new RuntimeException("One property can have only one euquation as source function.");\r
-                                                       }\r
-                                                       IEntity equation = equations.iterator().next();\r
-                                                       if (!equation.isInstanceOf(ShapeEditorResources.equationResource.SecondOrderScalarPolynomial)) {\r
-                                                               throw new RuntimeException("Only Second order scalar polynomials are supported");\r
-                                                       }\r
-                                                       SecondOrderScalarPolynomial s = new SecondOrderScalarPolynomial(equation);\r
-                                                       s.setA(new double[]{0.0});\r
-                                                       s.setB(new double[]{rb / refValue});\r
-                                                       s.setC(new double[]{0.0});\r
-                                                               \r
-                                               }\r
-                                       } else { //override\r
-                                               // create relation\r
-                                               SecondOrderScalarPolynomial s = SecondOrderScalarPolynomial.createDefault(g);\r
-                                               s.setA(new double[]{0.0});\r
-                                               s.setB(new double[]{rb / refValue});\r
-                                               s.setC(new double[]{0.0});\r
-                                               \r
-                                               // these relations have been instantiated, but addStatements won't delete them so we have to delete them manually.\r
-                                               s.removeRelatedStatements(ShapeEditorResources.equationResource.HasTarget);\r
-                                               s.removeRelatedStatements(ShapeEditorResources.equationResource.HasSource);\r
-                                               \r
-                                               parameter.addStatement(ShapeEditorResources.equationResource.HasTarget, s);\r
-                                               \r
-                                               s.addStatement(ShapeEditorResources.equationResource.HasTarget, propertyThing);\r
-                                               mappedProperties.add(propertyThing.getResource());\r
-                                       }\r
-                                       \r
-                               }\r
-                               G3DModel model = parent.getModel(g);\r
-                               Collection<Animation> animations = model.getAnimation();\r
-                               for (Animation animation : animations) {\r
-                                       Collection<Interpolator> interpolators = animation.getInterpolator();\r
-                                       for (Interpolator interpolator : interpolators) {\r
-                                               IEntity target = interpolator.getTarget();\r
-                                               for (Resource property : mappedProperties) {\r
-                                                       if (target.getResource().equals(property)) {\r
-                                                               ShapeEditorResources.curveBuilder.createDefault(interpolator);\r
-                                                       }\r
-                                               }\r
-                                       }\r
-                               }\r
-                               return GraphRequestStatus.transactionComplete();\r
-                       }\r
-               });\r
-\r
-\r
-\r
-       }\r
-       \r
-}\r