--- /dev/null
+package org.simantics.spreadsheet.ui.editor;\r
+\r
+import java.util.ArrayList;\r
+import java.util.Collection;\r
+import java.util.Collections;\r
+import java.util.Iterator;\r
+\r
+import org.simantics.db.ReadGraph;\r
+import org.simantics.db.Resource;\r
+import org.simantics.db.layer0.variable.Variable;\r
+import org.simantics.db.layer0.variable.Variables;\r
+import org.simantics.selectionview.ComparableTabContributor;\r
+import org.simantics.selectionview.SelectionProcessor;\r
+import org.simantics.spreadsheet.resource.SpreadsheetResource;\r
+import org.simantics.spreadsheet.ui.TableSelection;\r
+import org.simantics.spreadsheet.ui.editor.NoCellTab.NoCellInput;\r
+import org.simantics.spreadsheet.util.SpreadsheetUtils;\r
+\r
+/**\r
+ * @author Tuukka Lehtonen\r
+ */\r
+public class SpreadsheetSelectionProcessor implements SelectionProcessor<Collection<?>, ReadGraph> {\r
+\r
+ @Override\r
+ public Collection<?> process(Collection<?> selection, ReadGraph graph) {\r
+ try {\r
+ if(selection == null) return Collections.emptyList();\r
+ if(selection.size() != 3) return Collections.emptyList();\r
+ Iterator<?> it = selection.iterator();\r
+ final Variable variable = (Variable)it.next();\r
+ it.next();\r
+ final TableSelection sel = (TableSelection)it.next();\r
+ int row = sel.getRows()[0];\r
+ int column = sel.getColumns()[0];\r
+ String location = SpreadsheetUtils.cellName(row, column);\r
+ ArrayList<ComparableTabContributor> result = new ArrayList<ComparableTabContributor>(); \r
+ final Variable cell = variable.getPossibleChild(graph, location);\r
+ if(cell != null) {\r
+ SpreadsheetResource sr = SpreadsheetResource.getInstance(graph);\r
+ //result.add(new ComparableTabContributor(new SheetTab(), 2, variable, "Sheet"));\r
+ final Resource type = cell.getPossiblePropertyValue(graph, Variables.TYPE);\r
+ if(sr.TextCell.equals(type)) {\r
+ result.add(new ComparableTabContributor(new TextCellTab(), 3, cell, "Configuration"));\r
+// if(sr.ExpressionRealization.equals(type)) {\r
+// Variable expression = cell.getPossibleProperty(graph, "Expression");\r
+// if(expression != null) {\r
+// result.add(new ComparableTabContributor(new ExpressionCellTab(), 3, cell, "Configuration"));\r
+// } else {\r
+// \r
+// }\r
+// } else if(sr.CommandRealization.equals(type)) {\r
+// result.add(new ComparableTabContributor(new CommandCellTab(), 3, cell, "Configuration"));\r
+// } else if(sr.TextRealization.equals(type)) {\r
+// result.add(new ComparableTabContributor(new TextCellTab(), 3, cell, "Configuration"));\r
+// } else if(sr.MatrixRealization.equals(type)) {\r
+// result.add(new ComparableTabContributor(new MatrixCellTab(), 3, cell, "Configuration"));\r
+// }\r
+// System.out.println("cell type = " + type);\r
+// final String content = cell.getPossiblePropertyValue(graph, "Content");\r
+// if(content != null) {\r
+// final Variable contentVariable = Variables.getVariable(graph, content);\r
+// if(variable == null) return Collections.emptyList();\r
+// return Collections.singleton(new ComparableTabContributor(new SpreadsheetTab(), 3, contentVariable, "Configuration"));\r
+ } else {\r
+ return Collections.emptyList();\r
+ }\r
+ } else {\r
+ result.add(new ComparableTabContributor(new NoCellTab(), 3, new NoCellInput(variable, location), "Configuration"));\r
+ }\r
+ return result;\r
+ } catch (Throwable t) {\r
+ t.printStackTrace();\r
+ return Collections.emptyList();\r
+ }\r
+ }\r
+\r
+}
\ No newline at end of file