1 package org.simantics.spreadsheet.ui.editor;
\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
30 public class CommandCellTab extends PropertyTabContributorImpl {
\r
32 private IWorkbenchPart getContributor(IWorkbenchSite site) {
\r
33 IWorkbenchPage page = site.getPage();
\r
36 return page.getActivePart();
\r
39 public void createControls(Composite body, final IWorkbenchSite site, final ISessionContext context, WidgetSupport support) {
\r
41 Display display = body.getDisplay();
\r
42 Font font = new Font(display, "Arial", 12, SWT.NONE);
\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
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
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
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
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
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
76 Button toggleCaseButton = new Button(composite, support, SWT.PUSH);
\r
77 toggleCaseButton.setText("Execute");
\r
78 toggleCaseButton.addSelectionListener(new SelectionListenerImpl<Variable>(context) {
\r
81 public void apply(WriteGraph graph, Variable variable) throws DatabaseException {
\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
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