-package org.simantics.spreadsheet.graph;\r
-\r
-import java.util.ArrayList;\r
-import java.util.Collections;\r
-import java.util.List;\r
-import java.util.Set;\r
-\r
-import org.eclipse.jface.layout.GridDataFactory;\r
-import org.eclipse.swt.SWT;\r
-import org.eclipse.swt.events.ModifyEvent;\r
-import org.eclipse.swt.events.ModifyListener;\r
-import org.eclipse.swt.events.SelectionAdapter;\r
-import org.eclipse.swt.events.SelectionEvent;\r
-import org.eclipse.swt.layout.GridData;\r
-import org.eclipse.swt.layout.GridLayout;\r
-import org.eclipse.swt.widgets.Combo;\r
-import org.eclipse.swt.widgets.Composite;\r
-import org.eclipse.swt.widgets.Label;\r
-import org.eclipse.swt.widgets.Text;\r
-import org.eclipse.ui.IWorkbenchSite;\r
-import org.simantics.Simantics;\r
-import org.simantics.browsing.ui.BuiltinKeys;\r
-import org.simantics.browsing.ui.NodeContext;\r
-import org.simantics.browsing.ui.graph.impl.SessionContextInputSource;\r
-import org.simantics.browsing.ui.swt.GraphExplorerDialog2;\r
-import org.simantics.browsing.ui.swt.widgets.GraphExplorerComposite;\r
-import org.simantics.browsing.ui.swt.widgets.impl.WidgetSupport;\r
-import org.simantics.db.ReadGraph;\r
-import org.simantics.db.Resource;\r
-import org.simantics.db.common.request.PossibleIndexRoot;\r
-import org.simantics.db.common.request.UniqueRead;\r
-import org.simantics.db.exception.DatabaseException;\r
-import org.simantics.db.layer0.request.IsLinkedTo;\r
-import org.simantics.db.layer0.util.Layer0Utils;\r
-import org.simantics.db.management.ISessionContext;\r
-import org.simantics.utils.datastructures.Pair;\r
-\r
-public class SaveSpreadsheetStateDialog extends GraphExplorerDialog2 {\r
-\r
- private static final String SELECT_CUSTOM = "Select custom..";\r
- \r
- private Combo parentSelector;\r
- private Pair<String, Resource>[] pairs;\r
- private String[] parents;\r
-\r
- private Text stateName;\r
-\r
- private String currentItem;\r
- private String currentStateName;\r
- \r
- private List<Resource> result;\r
- \r
- public SaveSpreadsheetStateDialog(IWorkbenchSite site, String title, Pair<String, Resource>[] pairs) {\r
- super(site, title);\r
- this.pairs = pairs;\r
- \r
- Resource book = pairs[0].second;\r
- Resource context = pairs[1].second;\r
- \r
- try {\r
- result = Simantics.getSession().syncRequest(new UniqueRead<List<Resource>>() {\r
-\r
- @Override\r
- public List<Resource> perform(ReadGraph graph) throws DatabaseException {\r
- Resource bookINdex = graph.syncRequest(new PossibleIndexRoot(book));\r
- Resource contextIndex = graph.syncRequest(new PossibleIndexRoot(context)); \r
- \r
- List<Resource> result = new ArrayList<>();\r
- Set<Resource> indexRoots = Layer0Utils.listIndexRoots(graph);\r
- for (Resource indexRoot : indexRoots) {\r
- if (graph.syncRequest(new IsLinkedTo(indexRoot, bookINdex)) && graph.syncRequest(new IsLinkedTo(indexRoot, contextIndex))) {\r
- result.add(indexRoot);\r
- }\r
- }\r
- return result;\r
- }\r
- });\r
- } catch (DatabaseException e) {\r
- e.printStackTrace();\r
- }\r
- \r
- String[] newParents = new String[pairs.length + 1];\r
- for (int i = 0; i < pairs.length; i++) {\r
- newParents[i] = pairs[i].first;\r
- }\r
- newParents[pairs.length] = SELECT_CUSTOM;\r
- this.parents = newParents;\r
- }\r
-\r
- @Override\r
- public Set<String> getBrowseContexts() {\r
- return Collections.singleton("http://www.simantics.org/Project-1.2/ProjectBrowseContext");\r
- }\r
- \r
- @Override\r
- protected SessionContextInputSource getInputSource() {\r
- return super.getInputSource();\r
- }\r
-\r
- @Override\r
- protected void createControls(Composite body, ISessionContext context, WidgetSupport support) {\r
- \r
- Composite upperComposite = new Composite(body, SWT.NONE);\r
- GridLayout layout = new GridLayout(2, false);\r
- upperComposite.setLayout(layout);\r
- GridDataFactory.fillDefaults().grab(true, true).applyTo(upperComposite);\r
- \r
- Composite explorerComposite = new Composite(body, SWT.NONE);\r
- explorerComposite.setLayout(new GridLayout());\r
- GridDataFactory.fillDefaults().grab(true, true).applyTo(explorerComposite);\r
- \r
- Label parentLabel = new Label(upperComposite, SWT.NONE);\r
- parentLabel.setText("Select parent: ");\r
- \r
- parentSelector = new Combo(upperComposite, SWT.READ_ONLY);\r
- parentSelector.setItems(parents);\r
- parentSelector.select(0);\r
- \r
- GridDataFactory.fillDefaults().grab(true, false).applyTo(parentSelector);\r
- \r
- parentSelector.addSelectionListener(new SelectionAdapter() {\r
- \r
- @Override\r
- public void widgetSelected(SelectionEvent e) {\r
- hideOrShowGE();\r
- }\r
- \r
- @Override\r
- public void widgetDefaultSelected(SelectionEvent e) {\r
- widgetSelected(e);\r
- }\r
- });\r
- \r
- Label stateNameLabel = new Label(upperComposite, SWT.NONE);\r
- stateNameLabel.setText("Name of the state: ");\r
- GridDataFactory.fillDefaults().grab(false, false).applyTo(stateNameLabel);\r
- \r
- stateName = new Text(upperComposite, SWT.NONE);\r
- \r
- stateName.addModifyListener(new ModifyListener() {\r
- \r
- @Override\r
- public void modifyText(ModifyEvent e) {\r
- currentStateName = stateName.getText();\r
- }\r
- });\r
- \r
- GridDataFactory.fillDefaults().grab(true, false).applyTo(stateName);\r
- \r
- super.createControls(explorerComposite, context, support);\r
- \r
- hideOrShowGE();\r
- }\r
-\r
- private void hideOrShowGE() {\r
- int selection = parentSelector.getSelectionIndex();\r
- currentItem = parentSelector.getItem(selection);\r
- \r
- GraphExplorerComposite composite = getGraphExplorerComposite();\r
- GridData data = (GridData) composite.getLayoutData();\r
- \r
- if (currentItem.equals(SELECT_CUSTOM))\r
- data.exclude = false;\r
- else\r
- data.exclude = true;\r
- \r
- \r
- composite.setLayoutData(data);\r
- composite.setVisible(!data.exclude);\r
- composite.getParent().pack();\r
- composite.getParent().layout();\r
- composite.getParent().getParent().pack();\r
- composite.getParent().getParent().layout();\r
- composite.getParent().getParent().getParent().getParent().getParent();\r
- composite.getShell().pack();\r
- composite.getShell().layout();\r
-// explorerComposite.pack();\r
-// explorerComposite.getShell().layout(false);\r
- }\r
- \r
- \r
- \r
- @Override\r
- public Object[] getSelection() {\r
- if (currentItem.equals(SELECT_CUSTOM)) {\r
- Object[] selection = super.getSelection();\r
- NodeContext context = (NodeContext)selection[0];\r
- Object obj = context.getConstant(BuiltinKeys.INPUT);\r
- return new Object[] { Pair.make(obj, currentStateName) };\r
- } else {\r
- for (int i = 0; i < pairs.length; i++) {\r
- Pair<String, Resource> p = pairs[i];\r
- if (p.first.equals(currentItem)) {\r
- return new Object[] {Pair.make(p.second, currentStateName) };\r
- }\r
- }\r
- }\r
- return null;\r
- }\r
- \r
-}\r
+package org.simantics.spreadsheet.graph;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Set;
+
+import org.eclipse.jface.layout.GridDataFactory;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.IWorkbenchSite;
+import org.simantics.Simantics;
+import org.simantics.browsing.ui.BuiltinKeys;
+import org.simantics.browsing.ui.NodeContext;
+import org.simantics.browsing.ui.graph.impl.SessionContextInputSource;
+import org.simantics.browsing.ui.swt.GraphExplorerDialog2;
+import org.simantics.browsing.ui.swt.widgets.GraphExplorerComposite;
+import org.simantics.browsing.ui.swt.widgets.impl.WidgetSupport;
+import org.simantics.db.ReadGraph;
+import org.simantics.db.Resource;
+import org.simantics.db.common.request.PossibleIndexRoot;
+import org.simantics.db.common.request.UniqueRead;
+import org.simantics.db.exception.DatabaseException;
+import org.simantics.db.layer0.request.IsLinkedTo;
+import org.simantics.db.layer0.util.Layer0Utils;
+import org.simantics.db.management.ISessionContext;
+import org.simantics.utils.datastructures.Pair;
+
+public class SaveSpreadsheetStateDialog extends GraphExplorerDialog2 {
+
+ private static final String SELECT_CUSTOM = "Select custom..";
+
+ private Combo parentSelector;
+ private Pair<String, Resource>[] pairs;
+ private String[] parents;
+
+ private Text stateName;
+
+ private String currentItem;
+ private String currentStateName;
+
+ private List<Resource> result;
+
+ public SaveSpreadsheetStateDialog(IWorkbenchSite site, String title, Pair<String, Resource>[] pairs) {
+ super(site, title);
+ this.pairs = pairs;
+
+ Resource book = pairs[0].second;
+ Resource context = pairs[1].second;
+
+ try {
+ result = Simantics.getSession().syncRequest(new UniqueRead<List<Resource>>() {
+
+ @Override
+ public List<Resource> perform(ReadGraph graph) throws DatabaseException {
+ Resource bookINdex = graph.syncRequest(new PossibleIndexRoot(book));
+ Resource contextIndex = graph.syncRequest(new PossibleIndexRoot(context));
+
+ List<Resource> result = new ArrayList<>();
+ Set<Resource> indexRoots = Layer0Utils.listIndexRoots(graph);
+ for (Resource indexRoot : indexRoots) {
+ if (graph.syncRequest(new IsLinkedTo(indexRoot, bookINdex)) && graph.syncRequest(new IsLinkedTo(indexRoot, contextIndex))) {
+ result.add(indexRoot);
+ }
+ }
+ return result;
+ }
+ });
+ } catch (DatabaseException e) {
+ e.printStackTrace();
+ }
+
+ String[] newParents = new String[pairs.length + 1];
+ for (int i = 0; i < pairs.length; i++) {
+ newParents[i] = pairs[i].first;
+ }
+ newParents[pairs.length] = SELECT_CUSTOM;
+ this.parents = newParents;
+ }
+
+ @Override
+ public Set<String> getBrowseContexts() {
+ return Collections.singleton("http://www.simantics.org/Project-1.2/ProjectBrowseContext");
+ }
+
+ @Override
+ protected SessionContextInputSource getInputSource() {
+ return super.getInputSource();
+ }
+
+ @Override
+ protected void createControls(Composite body, ISessionContext context, WidgetSupport support) {
+
+ Composite upperComposite = new Composite(body, SWT.NONE);
+ GridLayout layout = new GridLayout(2, false);
+ upperComposite.setLayout(layout);
+ GridDataFactory.fillDefaults().grab(true, true).applyTo(upperComposite);
+
+ Composite explorerComposite = new Composite(body, SWT.NONE);
+ explorerComposite.setLayout(new GridLayout());
+ GridDataFactory.fillDefaults().grab(true, true).applyTo(explorerComposite);
+
+ Label parentLabel = new Label(upperComposite, SWT.NONE);
+ parentLabel.setText("Select parent: ");
+
+ parentSelector = new Combo(upperComposite, SWT.READ_ONLY);
+ parentSelector.setItems(parents);
+ parentSelector.select(0);
+
+ GridDataFactory.fillDefaults().grab(true, false).applyTo(parentSelector);
+
+ parentSelector.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ hideOrShowGE();
+ }
+
+ @Override
+ public void widgetDefaultSelected(SelectionEvent e) {
+ widgetSelected(e);
+ }
+ });
+
+ Label stateNameLabel = new Label(upperComposite, SWT.NONE);
+ stateNameLabel.setText("Name of the state: ");
+ GridDataFactory.fillDefaults().grab(false, false).applyTo(stateNameLabel);
+
+ stateName = new Text(upperComposite, SWT.NONE);
+
+ stateName.addModifyListener(new ModifyListener() {
+
+ @Override
+ public void modifyText(ModifyEvent e) {
+ currentStateName = stateName.getText();
+ }
+ });
+
+ GridDataFactory.fillDefaults().grab(true, false).applyTo(stateName);
+
+ super.createControls(explorerComposite, context, support);
+
+ hideOrShowGE();
+ }
+
+ private void hideOrShowGE() {
+ int selection = parentSelector.getSelectionIndex();
+ currentItem = parentSelector.getItem(selection);
+
+ GraphExplorerComposite composite = getGraphExplorerComposite();
+ GridData data = (GridData) composite.getLayoutData();
+
+ if (currentItem.equals(SELECT_CUSTOM))
+ data.exclude = false;
+ else
+ data.exclude = true;
+
+
+ composite.setLayoutData(data);
+ composite.setVisible(!data.exclude);
+ composite.getParent().pack();
+ composite.getParent().layout();
+ composite.getParent().getParent().pack();
+ composite.getParent().getParent().layout();
+ composite.getParent().getParent().getParent().getParent().getParent();
+ composite.getShell().pack();
+ composite.getShell().layout();
+// explorerComposite.pack();
+// explorerComposite.getShell().layout(false);
+ }
+
+
+
+ @Override
+ public Object[] getSelection() {
+ if (currentItem.equals(SELECT_CUSTOM)) {
+ Object[] selection = super.getSelection();
+ NodeContext context = (NodeContext)selection[0];
+ Object obj = context.getConstant(BuiltinKeys.INPUT);
+ return new Object[] { Pair.make(obj, currentStateName) };
+ } else {
+ for (int i = 0; i < pairs.length; i++) {
+ Pair<String, Resource> p = pairs[i];
+ if (p.first.equals(currentItem)) {
+ return new Object[] {Pair.make(p.second, currentStateName) };
+ }
+ }
+ }
+ return null;
+ }
+
+}