]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.spreadsheet.ui/src/org/simantics/spreadsheet/ui/editor/SpreadsheetSelectionProcessor.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.spreadsheet.ui / src / org / simantics / spreadsheet / ui / editor / SpreadsheetSelectionProcessor.java
diff --git a/bundles/org.simantics.spreadsheet.ui/src/org/simantics/spreadsheet/ui/editor/SpreadsheetSelectionProcessor.java b/bundles/org.simantics.spreadsheet.ui/src/org/simantics/spreadsheet/ui/editor/SpreadsheetSelectionProcessor.java
new file mode 100644 (file)
index 0000000..59475f3
--- /dev/null
@@ -0,0 +1,77 @@
+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