1 /*******************************************************************************
\r
2 * Copyright (c) 2007, 2010 Association for Decentralized Information Management
\r
3 * in Industry THTH ry.
\r
4 * All rights reserved. This program and the accompanying materials
\r
5 * are made available under the terms of the Eclipse Public License v1.0
\r
6 * which accompanies this distribution, and is available at
\r
7 * http://www.eclipse.org/legal/epl-v10.html
\r
10 * VTT Technical Research Centre of Finland - initial API and implementation
\r
11 *******************************************************************************/
\r
12 package org.simantics.browsing.ui.swt;
\r
14 import java.util.Set;
\r
16 import org.eclipse.jface.layout.GridDataFactory;
\r
17 import org.eclipse.jface.window.Window;
\r
18 import org.eclipse.swt.SWT;
\r
19 import org.eclipse.swt.widgets.Composite;
\r
20 import org.eclipse.swt.widgets.Display;
\r
21 import org.eclipse.swt.widgets.Tree;
\r
22 import org.eclipse.swt.widgets.TreeItem;
\r
23 import org.eclipse.ui.IWorkbenchSite;
\r
24 import org.simantics.browsing.ui.Column;
\r
25 import org.simantics.browsing.ui.Column.Align;
\r
26 import org.simantics.browsing.ui.common.ColumnKeys;
\r
27 import org.simantics.browsing.ui.graph.impl.GraphInputSources;
\r
28 import org.simantics.browsing.ui.graph.impl.SessionContextInputSource;
\r
29 import org.simantics.browsing.ui.swt.widgets.GraphExplorerComposite;
\r
30 import org.simantics.browsing.ui.swt.widgets.impl.WidgetSupport;
\r
31 import org.simantics.db.management.ISessionContext;
\r
32 import org.simantics.utils.DataContainer;
\r
33 import org.simantics.utils.datastructures.ArrayMap;
\r
36 * A dialog, which contains a single graph explorer composite
\r
38 * Override getBrowseContexts() to specify the graph explorer contents.
\r
42 public abstract class GraphExplorerDialog2 extends SimanticsDialog {
\r
44 abstract public Set<String> getBrowseContexts();
\r
46 private final IWorkbenchSite site;
\r
47 private final DataContainer<Object[]> result = new DataContainer<Object[]>();
\r
49 private GraphExplorerComposite outputExplorer;
\r
51 public GraphExplorerDialog2(IWorkbenchSite site, String title) {
\r
52 super(Display.getCurrent().getActiveShell(), title);
\r
56 Column[] getColumns() {
\r
57 return new Column[] { new Column(ColumnKeys.SINGLE, Align.RIGHT, 180, "single", true, 1) };
\r
61 protected SessionContextInputSource getInputSource() {
\r
62 return GraphInputSources.projectSource();
\r
66 protected boolean isResizable() {
\r
71 protected void createControls(Composite body, ISessionContext context, WidgetSupport support) {
\r
73 outputExplorer = new GraphExplorerComposite(
\r
74 ArrayMap.keys("displaySelectors", "displayFilter").values(false, false), site, body, support,
\r
76 outputExplorer.setBrowseContexts(getBrowseContexts());
\r
77 outputExplorer.setColumnsVisible(false);
\r
78 outputExplorer.setColumns(getColumns());
\r
79 outputExplorer.finish();
\r
81 outputExplorer.setBackground(body.getDisplay().getSystemColor(SWT.COLOR_GREEN));
\r
83 GridDataFactory.fillDefaults().grab(true, true).span(2, 1).minSize(300, 400).applyTo(outputExplorer);
\r
88 protected void buttonPressed(int buttonId) {
\r
89 if (buttonId == Window.OK) {
\r
91 Tree tree = (Tree) outputExplorer.getExplorerControl();
\r
93 TreeItem[] selectedItems = tree.getSelection();
\r
94 Object[] res = new Object[selectedItems.length];
\r
95 for (int i = 0; i < selectedItems.length; i++) {
\r
96 res[i] = selectedItems[i].getData();
\r
100 super.buttonPressed(buttonId);
\r
104 public Object[] getSelection() {
\r
105 return result.get();
\r
108 public GraphExplorerComposite getGraphExplorerComposite() {
\r
109 return outputExplorer;
\r