]> gerrit.simantics Code Review - simantics/platform.git/blob - 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
1 package org.simantics.spreadsheet.ui.editor;\r
2 \r
3 import org.eclipse.jface.layout.GridDataFactory;\r
4 import org.eclipse.jface.layout.GridLayoutFactory;\r
5 import org.eclipse.swt.SWT;\r
6 import org.eclipse.swt.graphics.Font;\r
7 import org.eclipse.swt.widgets.Composite;\r
8 import org.eclipse.swt.widgets.Display;\r
9 import org.eclipse.ui.IWorkbenchPage;\r
10 import org.eclipse.ui.IWorkbenchPart;\r
11 import org.eclipse.ui.IWorkbenchSite;\r
12 import org.eclipse.ui.part.IContributedContentsView;\r
13 import org.simantics.browsing.ui.swt.widgets.Button;\r
14 import org.simantics.browsing.ui.swt.widgets.Label;\r
15 import org.simantics.browsing.ui.swt.widgets.TrackedText;\r
16 import org.simantics.browsing.ui.swt.widgets.VariableStringPropertyFactory;\r
17 import org.simantics.browsing.ui.swt.widgets.VariableStringPropertyTextModifier;\r
18 import org.simantics.browsing.ui.swt.widgets.impl.SelectionListenerImpl;\r
19 import org.simantics.browsing.ui.swt.widgets.impl.WidgetSupport;\r
20 import org.simantics.db.WriteGraph;\r
21 import org.simantics.db.exception.DatabaseException;\r
22 import org.simantics.db.layer0.variable.Variable;\r
23 import org.simantics.db.management.ISessionContext;\r
24 import org.simantics.selectionview.PropertyTabContributorImpl;\r
25 import org.simantics.spreadsheet.CommandCellExecutor;\r
26 import org.simantics.spreadsheet.Range;\r
27 import org.simantics.spreadsheet.graph.GraphUI;\r
28 import org.simantics.spreadsheet.util.SpreadsheetUtils;\r
29 \r
30 public class CommandCellTab extends PropertyTabContributorImpl {\r
31 \r
32     private IWorkbenchPart getContributor(IWorkbenchSite site) {\r
33         IWorkbenchPage page = site.getPage();\r
34         if (null == page)\r
35             return null;\r
36         return page.getActivePart();\r
37     }\r
38         \r
39     public void createControls(Composite body, final IWorkbenchSite site, final ISessionContext context, WidgetSupport support) {\r
40 \r
41         Display display = body.getDisplay();\r
42         Font font = new Font(display, "Arial", 12, SWT.NONE); \r
43 \r
44         Composite composite = new Composite(body, SWT.NONE);\r
45         composite.setBackground(display.getSystemColor(SWT.COLOR_WHITE));\r
46         GridDataFactory.fillDefaults().grab(true, true).applyTo(composite);\r
47         GridLayoutFactory.fillDefaults().equalWidth(false).numColumns(2).applyTo(composite);\r
48         \r
49         Composite headerComposite = new Composite(composite, 0);\r
50         headerComposite.setBackground(display.getSystemColor(SWT.COLOR_BLACK));\r
51         GridDataFactory.fillDefaults().span(2, 1).grab(true, false).applyTo(headerComposite);\r
52         GridLayoutFactory.fillDefaults().equalWidth(false).numColumns(1).extendedMargins(2,2,2,2).applyTo(headerComposite);\r
53 \r
54         Composite headerComposite2 = new Composite(headerComposite, 0);\r
55         headerComposite2.setBackground(display.getSystemColor(SWT.COLOR_WHITE));\r
56         GridDataFactory.fillDefaults().span(2, 1).grab(true, false).applyTo(headerComposite2);\r
57         GridLayoutFactory.fillDefaults().equalWidth(false).numColumns(1).extendedMargins(3,3,3,3).applyTo(headerComposite2);\r
58 \r
59         Label header = new Label(headerComposite2, support, 0);\r
60         //header.setTextFactory(new VariableStringPropertyFactory(" Variable - %1", "#URI"));\r
61         header.setText("Command");\r
62         header.setFont(font);\r
63         header.setBackground(display.getSystemColor(SWT.COLOR_WHITE));\r
64         GridDataFactory.fillDefaults().grab(true, false).span(2, 1).align(SWT.CENTER, SWT.CENTER).applyTo(header.getWidget());\r
65         \r
66         Label label = new Label(composite, support, SWT.NONE);\r
67         label.setText("Expression: ");\r
68         label.setBackground(display.getSystemColor(SWT.COLOR_WHITE));\r
69         GridDataFactory.fillDefaults().grab(false, false).applyTo(label.getWidget());\r
70         \r
71         TrackedText name = new TrackedText(composite, support, SWT.BORDER);\r
72         name.setTextFactory(new VariableStringPropertyFactory("#Expression"));\r
73         name.addModifyListener(new VariableStringPropertyTextModifier("Expression"));\r
74         GridDataFactory.fillDefaults().grab(true, false).applyTo(name.getWidget());\r
75         \r
76         Button toggleCaseButton = new Button(composite, support, SWT.PUSH);\r
77         toggleCaseButton.setText("Execute");\r
78         toggleCaseButton.addSelectionListener(new SelectionListenerImpl<Variable>(context) {\r
79 \r
80                         @Override\r
81                         public void apply(WriteGraph graph, Variable variable) throws DatabaseException {\r
82                                 \r
83                         final IWorkbenchPart spp = getContributor(site);\r
84                         System.out.println("run command " + spp);\r
85                         if(spp instanceof IContributedContentsView) {\r
86                                 IContributedContentsView ccw = (IContributedContentsView)spp;\r
87                                 IWorkbenchPart editorPart = ccw.getContributingPart();\r
88                                 GraphUI ui = (GraphUI)editorPart.getAdapter(GraphUI.class);\r
89                                 if(ui != null) {\r
90                                         CommandCellExecutor executor = (CommandCellExecutor)ui.getAdapter(CommandCellExecutor.class);\r
91                                         String location = variable.getPossiblePropertyValue(graph, "HasName");\r
92                                         Range range = SpreadsheetUtils.decodeCellAbsolute(location);\r
93                                         executor.execute(range.startRow, range.startColumn);\r
94                                         System.out.println("uiui");\r
95                                 }\r
96                        \r
97                         }\r
98                                 \r
99                         }\r
100                         \r
101                 });\r
102         \r
103     }\r
104    \r
105 }\r