+++ /dev/null
-package org.simantics.views.swt.loader;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.TreeItem;
-import org.simantics.browsing.ui.BuiltinKeys;
-import org.simantics.browsing.ui.NodeContext;
-import org.simantics.databoard.Bindings;
-import org.simantics.db.ReadGraph;
-import org.simantics.db.Resource;
-import org.simantics.db.VirtualGraph;
-import org.simantics.db.WriteGraph;
-import org.simantics.db.common.request.ResourceRead;
-import org.simantics.db.common.request.WriteRequest;
-import org.simantics.db.exception.DatabaseException;
-import org.simantics.db.layer0.util.Simantics;
-import org.simantics.db.layer0.variable.Variable;
-import org.simantics.scenegraph.ParentNode;
-import org.simantics.scenegraph.loader.ScenegraphLoader;
-import org.simantics.views.ViewUtils;
-import org.simantics.views.ontology.ViewsResources;
-import org.simantics.views.swt.client.base.ISWTViewNode;
-import org.simantics.views.swt.client.impl.SWTExplorer;
-
-public class ExplorerLoader implements ScenegraphLoader {
-
- final private Resource configuration;
-
- public ExplorerLoader(Resource configuration) {
- this.configuration = configuration;
- }
-
- @Override
- public ISWTViewNode create(ParentNode<ISWTViewNode> parent, final Variable context) throws DatabaseException {
-
- SWTExplorer node = parent.addNode(SWTExplorer.class);
-
- node.setStyle(LoaderUtils.getStyle(configuration));
-
- String browseContextURI = Simantics.getSession().sync(new ResourceRead<String>(configuration) {
-
- @Override
- public String perform(ReadGraph graph) throws DatabaseException {
- ViewsResources VIEW = ViewsResources.getInstance(graph);
- Resource browseContext = graph.getSingleObject(resource, VIEW.Explorer_BrowseContext);
- return graph.getURI(browseContext);
- }
-
- });
-
- node.setBrowseContextURI(browseContextURI);
-
- node.setLayoutData(LoaderUtils.getGridData(configuration));
-
- node.setColumns(LoaderUtils.getColumns(configuration));
-
- LoaderUtils.listen(configuration, context, ViewsResources.URIs.Explorer_InputTransformation, node.getInputFunction());
-
- LoaderUtils.listen(configuration, context, ViewsResources.URIs.Explorer_HasColumnsVisible, node.getColumnsVisibleFunction());
-
- Listener selectionListener = Simantics.getSession().sync(new ResourceRead<Listener>(configuration) {
-
- @Override
- public Listener perform(ReadGraph graph) throws DatabaseException {
- ViewsResources VIEW = ViewsResources.getInstance(graph);
- Resource listener = graph.getPossibleObject(resource, VIEW.Explorer_SelectionListener);
- if(listener == null) return null;
- return graph.adapt(listener, Listener.class);
- }
-
- });
-
- if(selectionListener != null) node.addListenerToControl(SWT.Selection, selectionListener);
-
- node.addListenerToControl(SWT.Selection, new Listener() {
-
- @Override
- public void handleEvent(Event event) {
-
- TreeItem item = (TreeItem)event.item;
-// Tree tree = item.getParent();
-// GraphExplorer explorer = (GraphExplorer)tree.getData("GraphExplorer");
-// final Resource runtimeDiagram = (Resource)explorer.getRoot().getConstant(BuiltinKeys.INPUT);
-// final boolean checked = item.getChecked();
- NodeContext nc = (NodeContext)item.getData();
- Object obj = nc.getConstant(BuiltinKeys.INPUT);
-
- if (obj instanceof Variable) {
- final Variable var = (Variable) obj;
- Simantics.getSession().async(new WriteRequest(Simantics.getSession().getService(VirtualGraph.class)) {
- @Override
- public void perform(WriteGraph graph) throws DatabaseException {
- ViewsResources VIEW = ViewsResources.getInstance(graph);
- System.err.println("setParameter " + context.getURI(graph) + " -> " + var.getURI(graph));
- ViewUtils.setParameter(graph, context, VIEW.Explorer_Selection, var.getURI(graph), Bindings.STRING);
- }
- });
- }
- }
-
- });
-
- return node;
-
- }
-
-}
-