1 package org.simantics.spreadsheet.ui.editor;
\r
3 import java.util.ArrayList;
\r
4 import java.util.Collection;
\r
5 import java.util.Collections;
\r
6 import java.util.Iterator;
\r
8 import org.simantics.db.ReadGraph;
\r
9 import org.simantics.db.Resource;
\r
10 import org.simantics.db.layer0.variable.Variable;
\r
11 import org.simantics.db.layer0.variable.Variables;
\r
12 import org.simantics.selectionview.ComparableTabContributor;
\r
13 import org.simantics.selectionview.SelectionProcessor;
\r
14 import org.simantics.spreadsheet.resource.SpreadsheetResource;
\r
15 import org.simantics.spreadsheet.ui.TableSelection;
\r
16 import org.simantics.spreadsheet.ui.editor.NoCellTab.NoCellInput;
\r
17 import org.simantics.spreadsheet.util.SpreadsheetUtils;
\r
20 * @author Tuukka Lehtonen
\r
22 public class SpreadsheetSelectionProcessor implements SelectionProcessor<Collection<?>, ReadGraph> {
\r
25 public Collection<?> process(Collection<?> selection, ReadGraph graph) {
\r
27 if(selection == null) return Collections.emptyList();
\r
28 if(selection.size() != 3) return Collections.emptyList();
\r
29 Iterator<?> it = selection.iterator();
\r
30 final Variable variable = (Variable)it.next();
\r
32 final TableSelection sel = (TableSelection)it.next();
\r
33 int row = sel.getRows()[0];
\r
34 int column = sel.getColumns()[0];
\r
35 String location = SpreadsheetUtils.cellName(row, column);
\r
36 ArrayList<ComparableTabContributor> result = new ArrayList<ComparableTabContributor>();
\r
37 final Variable cell = variable.getPossibleChild(graph, location);
\r
39 SpreadsheetResource sr = SpreadsheetResource.getInstance(graph);
\r
40 //result.add(new ComparableTabContributor(new SheetTab(), 2, variable, "Sheet"));
\r
41 final Resource type = cell.getPossiblePropertyValue(graph, Variables.TYPE);
\r
42 if(sr.TextCell.equals(type)) {
\r
43 result.add(new ComparableTabContributor(new TextCellTab(), 3, cell, "Configuration"));
\r
44 // if(sr.ExpressionRealization.equals(type)) {
\r
45 // Variable expression = cell.getPossibleProperty(graph, "Expression");
\r
46 // if(expression != null) {
\r
47 // result.add(new ComparableTabContributor(new ExpressionCellTab(), 3, cell, "Configuration"));
\r
51 // } else if(sr.CommandRealization.equals(type)) {
\r
52 // result.add(new ComparableTabContributor(new CommandCellTab(), 3, cell, "Configuration"));
\r
53 // } else if(sr.TextRealization.equals(type)) {
\r
54 // result.add(new ComparableTabContributor(new TextCellTab(), 3, cell, "Configuration"));
\r
55 // } else if(sr.MatrixRealization.equals(type)) {
\r
56 // result.add(new ComparableTabContributor(new MatrixCellTab(), 3, cell, "Configuration"));
\r
58 // System.out.println("cell type = " + type);
\r
59 // final String content = cell.getPossiblePropertyValue(graph, "Content");
\r
60 // if(content != null) {
\r
61 // final Variable contentVariable = Variables.getVariable(graph, content);
\r
62 // if(variable == null) return Collections.emptyList();
\r
63 // return Collections.singleton(new ComparableTabContributor(new SpreadsheetTab(), 3, contentVariable, "Configuration"));
\r
65 return Collections.emptyList();
\r
68 result.add(new ComparableTabContributor(new NoCellTab(), 3, new NoCellInput(variable, location), "Configuration"));
\r
71 } catch (Throwable t) {
\r
72 t.printStackTrace();
\r
73 return Collections.emptyList();
\r