1 /*******************************************************************************
2 * Copyright (c) 2007, 2010 Association for Decentralized Information Management
4 * All rights reserved. This program and the accompanying materials
5 * are made available under the terms of the Eclipse Public License v1.0
6 * which accompanies this distribution, and is available at
7 * http://www.eclipse.org/legal/epl-v10.html
10 * VTT Technical Research Centre of Finland - initial API and implementation
11 *******************************************************************************/
12 package org.simantics.spreadsheet.ui.editor;
14 import java.util.Collections;
16 import org.eclipse.swt.SWT;
17 import org.eclipse.swt.layout.GridData;
18 import org.eclipse.swt.widgets.Composite;
19 import org.eclipse.ui.contexts.IContextService;
20 import org.simantics.db.ReadGraph;
21 import org.simantics.db.exception.DatabaseException;
22 import org.simantics.db.layer0.variable.Variable;
23 import org.simantics.db.request.Read;
24 import org.simantics.selectionview.StandardPropertyPage;
25 import org.simantics.spreadsheet.graph.GraphUI;
26 import org.simantics.spreadsheet.resource.SpreadsheetResource;
27 import org.simantics.spreadsheet.ui.Spreadsheet;
28 import org.simantics.ui.workbench.IPropertyPage;
29 import org.simantics.ui.workbench.ResourceEditorPart2;
30 import org.simantics.utils.ui.LayoutUtils;
31 import org.simantics.utils.ui.jface.ActiveSelectionProvider;
33 public class SpreadsheetEditor extends ResourceEditorPart2 {
35 public static final boolean EXCEL = true;
36 public static final String EDITOR_ID = "org.simantics.spreadsheet.ui.editor";
38 private Spreadsheet spreadsheet;
39 // private SimpleContainerTableModel tableModel;
40 private final ActiveSelectionProvider selectionProvider = new ActiveSelectionProvider();
41 //private ExcelLink excelLink;
44 public Spreadsheet getSpreadsheet() {
49 public void createPartControl(Composite parent) {
52 parent.setLayout(LayoutUtils.createNoBorderGridLayout(1));
53 parent.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_WHITE));
55 ui = new GraphUI(getSession());
59 Variable variable = getSession().syncRequest(new Read<Variable>() {
62 public Variable perform(ReadGraph graph) throws DatabaseException {
64 // String modelURI = getResourceInput2().getModelURI();
65 // String rvi = getResourceInput2().getRVI();
66 // Resource model = graph.getResource(modelURI);
67 // Resource config = getInputResource();
68 //// String configName = URIStringUtils.escape((String)graph.getPossibleRelatedValue(config, b.HasName, Bindings.STRING));
69 //// Resource model = StructuralVariables.getModel(graph, config);
70 // Resource realization = graph.getPossibleObject(model, b.HasBaseRealization);
71 // Variable base = graph.adapt(realization, Variable.class);
72 // return base.browse(graph, rvi);
79 spreadsheet = new Spreadsheet(parent, SWT.NONE, ui, selectionProvider);
80 spreadsheet.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_WHITE));
82 ui.load(variable, spreadsheet.getClientInterface());
83 } catch (DatabaseException e) {
87 spreadsheet.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
88 spreadsheet.defaultInitializeUI();
90 getSite().setSelectionProvider(selectionProvider);
92 IContextService contexts = (IContextService)getSite().getService(IContextService.class);
93 contexts.activateContext("org.simantics.spreadsheet.ui.context");
98 public void setFocus() {
99 if (spreadsheet != null)
100 spreadsheet.setFocus();
104 public Object getAdapter(Class adapter) {
105 if (adapter == IPropertyPage.class)
106 return new StandardPropertyPage(getSite(), Collections.singleton(SpreadsheetResource.URIs.BrowseContext));
107 if (adapter == GraphUI.class)
109 if (adapter == Spreadsheet.class)
110 return getSpreadsheet();
115 public void dispose() {
118 // excelLink.dispose();
120 // backend.dispose();
122 // tableModel.dispose();