]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.spreadsheet.ui/src/org/simantics/spreadsheet/ui/editor/NoCellTab.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.spreadsheet.ui / src / org / simantics / spreadsheet / ui / editor / NoCellTab.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.IWorkbenchSite;\r
10 import org.simantics.browsing.ui.swt.widgets.Label;\r
11 import org.simantics.browsing.ui.swt.widgets.TrackedText;\r
12 import org.simantics.browsing.ui.swt.widgets.impl.TextModifyListenerImpl;\r
13 import org.simantics.browsing.ui.swt.widgets.impl.WidgetSupport;\r
14 import org.simantics.db.WriteGraph;\r
15 import org.simantics.db.exception.DatabaseException;\r
16 import org.simantics.db.layer0.variable.Variable;\r
17 import org.simantics.db.layer0.variable.VariableSpaceManipulator;\r
18 import org.simantics.db.layer0.variable.VariableSpaceManipulator.ChildCreationData;\r
19 import org.simantics.db.layer0.variable.Variables;\r
20 import org.simantics.db.layer0.variable.VariableSpaceManipulator.Modification;\r
21 import org.simantics.db.layer0.variable.VariableSpaceManipulator.PropertyCreationData;\r
22 import org.simantics.db.management.ISessionContext;\r
23 import org.simantics.selectionview.PropertyTabContributorImpl;\r
24 \r
25 public class NoCellTab extends PropertyTabContributorImpl {\r
26 \r
27         static class NoCellInput {\r
28                 \r
29                 public Variable sheet;\r
30                 public String location;\r
31                 \r
32                 public NoCellInput(Variable sheet, String location) {\r
33                         this.sheet = sheet;\r
34                         this.location = location;\r
35                 }\r
36                 \r
37         }\r
38         \r
39     public void createControls(Composite body, 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.setText("Create new cell");\r
61         header.setFont(font);\r
62         header.setBackground(display.getSystemColor(SWT.COLOR_WHITE));\r
63         GridDataFactory.fillDefaults().grab(true, false).span(2, 1).align(SWT.CENTER, SWT.CENTER).applyTo(header.getWidget());\r
64         \r
65         Label label = new Label(composite, support, SWT.NONE);\r
66         label.setText("Expression: ");\r
67         label.setBackground(display.getSystemColor(SWT.COLOR_WHITE));\r
68         GridDataFactory.fillDefaults().grab(false, false).applyTo(label.getWidget());\r
69         \r
70         TrackedText name = new TrackedText(composite, support, SWT.BORDER);\r
71         name.setText("");\r
72         GridDataFactory.fillDefaults().grab(true, false).applyTo(name.getWidget());\r
73         name.addModifyListener(new TextModifyListenerImpl<NoCellInput>() {\r
74 \r
75                         @Override\r
76                         public void applyText(WriteGraph graph, NoCellInput input, String text) throws DatabaseException {\r
77 //                              System.out.println("create variable for " + input);\r
78                                 VariableSpaceManipulator manipulator = input.sheet.adapt(graph, VariableSpaceManipulator.class);\r
79                                 manipulator.apply(graph, Modification.addChild(ChildCreationData.build(input.location, "", PropertyCreationData.build(Variables.NAME, text))));\r
80                         }\r
81                 \r
82         });\r
83         \r
84     }\r
85    \r
86 }\r