]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.spreadsheet.ui/src/org/simantics/spreadsheet/ui/editor/CommandCellTab.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.spreadsheet.ui / src / org / simantics / spreadsheet / ui / editor / CommandCellTab.java
diff --git a/bundles/org.simantics.spreadsheet.ui/src/org/simantics/spreadsheet/ui/editor/CommandCellTab.java b/bundles/org.simantics.spreadsheet.ui/src/org/simantics/spreadsheet/ui/editor/CommandCellTab.java
new file mode 100644 (file)
index 0000000..ceed341
--- /dev/null
@@ -0,0 +1,105 @@
+package org.simantics.spreadsheet.ui.editor;\r
+\r
+import org.eclipse.jface.layout.GridDataFactory;\r
+import org.eclipse.jface.layout.GridLayoutFactory;\r
+import org.eclipse.swt.SWT;\r
+import org.eclipse.swt.graphics.Font;\r
+import org.eclipse.swt.widgets.Composite;\r
+import org.eclipse.swt.widgets.Display;\r
+import org.eclipse.ui.IWorkbenchPage;\r
+import org.eclipse.ui.IWorkbenchPart;\r
+import org.eclipse.ui.IWorkbenchSite;\r
+import org.eclipse.ui.part.IContributedContentsView;\r
+import org.simantics.browsing.ui.swt.widgets.Button;\r
+import org.simantics.browsing.ui.swt.widgets.Label;\r
+import org.simantics.browsing.ui.swt.widgets.TrackedText;\r
+import org.simantics.browsing.ui.swt.widgets.VariableStringPropertyFactory;\r
+import org.simantics.browsing.ui.swt.widgets.VariableStringPropertyTextModifier;\r
+import org.simantics.browsing.ui.swt.widgets.impl.SelectionListenerImpl;\r
+import org.simantics.browsing.ui.swt.widgets.impl.WidgetSupport;\r
+import org.simantics.db.WriteGraph;\r
+import org.simantics.db.exception.DatabaseException;\r
+import org.simantics.db.layer0.variable.Variable;\r
+import org.simantics.db.management.ISessionContext;\r
+import org.simantics.selectionview.PropertyTabContributorImpl;\r
+import org.simantics.spreadsheet.CommandCellExecutor;\r
+import org.simantics.spreadsheet.Range;\r
+import org.simantics.spreadsheet.graph.GraphUI;\r
+import org.simantics.spreadsheet.util.SpreadsheetUtils;\r
+\r
+public class CommandCellTab extends PropertyTabContributorImpl {\r
+\r
+    private IWorkbenchPart getContributor(IWorkbenchSite site) {\r
+        IWorkbenchPage page = site.getPage();\r
+        if (null == page)\r
+            return null;\r
+        return page.getActivePart();\r
+    }\r
+       \r
+    public void createControls(Composite body, final IWorkbenchSite site, final ISessionContext context, WidgetSupport support) {\r
+\r
+        Display display = body.getDisplay();\r
+        Font font = new Font(display, "Arial", 12, SWT.NONE); \r
+\r
+       Composite composite = new Composite(body, SWT.NONE);\r
+        composite.setBackground(display.getSystemColor(SWT.COLOR_WHITE));\r
+        GridDataFactory.fillDefaults().grab(true, true).applyTo(composite);\r
+        GridLayoutFactory.fillDefaults().equalWidth(false).numColumns(2).applyTo(composite);\r
+       \r
+        Composite headerComposite = new Composite(composite, 0);\r
+        headerComposite.setBackground(display.getSystemColor(SWT.COLOR_BLACK));\r
+        GridDataFactory.fillDefaults().span(2, 1).grab(true, false).applyTo(headerComposite);\r
+        GridLayoutFactory.fillDefaults().equalWidth(false).numColumns(1).extendedMargins(2,2,2,2).applyTo(headerComposite);\r
+\r
+        Composite headerComposite2 = new Composite(headerComposite, 0);\r
+        headerComposite2.setBackground(display.getSystemColor(SWT.COLOR_WHITE));\r
+        GridDataFactory.fillDefaults().span(2, 1).grab(true, false).applyTo(headerComposite2);\r
+        GridLayoutFactory.fillDefaults().equalWidth(false).numColumns(1).extendedMargins(3,3,3,3).applyTo(headerComposite2);\r
+\r
+        Label header = new Label(headerComposite2, support, 0);\r
+        //header.setTextFactory(new VariableStringPropertyFactory(" Variable - %1", "#URI"));\r
+        header.setText("Command");\r
+        header.setFont(font);\r
+        header.setBackground(display.getSystemColor(SWT.COLOR_WHITE));\r
+        GridDataFactory.fillDefaults().grab(true, false).span(2, 1).align(SWT.CENTER, SWT.CENTER).applyTo(header.getWidget());\r
+        \r
+       Label label = new Label(composite, support, SWT.NONE);\r
+       label.setText("Expression: ");\r
+        label.setBackground(display.getSystemColor(SWT.COLOR_WHITE));\r
+        GridDataFactory.fillDefaults().grab(false, false).applyTo(label.getWidget());\r
+       \r
+        TrackedText name = new TrackedText(composite, support, SWT.BORDER);\r
+        name.setTextFactory(new VariableStringPropertyFactory("#Expression"));\r
+        name.addModifyListener(new VariableStringPropertyTextModifier("Expression"));\r
+        GridDataFactory.fillDefaults().grab(true, false).applyTo(name.getWidget());\r
+        \r
+        Button toggleCaseButton = new Button(composite, support, SWT.PUSH);\r
+        toggleCaseButton.setText("Execute");\r
+        toggleCaseButton.addSelectionListener(new SelectionListenerImpl<Variable>(context) {\r
+\r
+                       @Override\r
+                       public void apply(WriteGraph graph, Variable variable) throws DatabaseException {\r
+                               \r
+                       final IWorkbenchPart spp = getContributor(site);\r
+                       System.out.println("run command " + spp);\r
+                       if(spp instanceof IContributedContentsView) {\r
+                               IContributedContentsView ccw = (IContributedContentsView)spp;\r
+                               IWorkbenchPart editorPart = ccw.getContributingPart();\r
+                               GraphUI ui = (GraphUI)editorPart.getAdapter(GraphUI.class);\r
+                               if(ui != null) {\r
+                                       CommandCellExecutor executor = (CommandCellExecutor)ui.getAdapter(CommandCellExecutor.class);\r
+                                       String location = variable.getPossiblePropertyValue(graph, "HasName");\r
+                                       Range range = SpreadsheetUtils.decodeCellAbsolute(location);\r
+                                       executor.execute(range.startRow, range.startColumn);\r
+                                       System.out.println("uiui");\r
+                               }\r
+                      \r
+                       }\r
+                               \r
+                       }\r
+                       \r
+               });\r
+        \r
+    }\r
+   \r
+}\r