]> gerrit.simantics Code Review - simantics/platform.git/blob - 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
1 package org.simantics.spreadsheet.ui.editor;\r
2 \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
7 \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
18 \r
19 /**\r
20  * @author Tuukka Lehtonen\r
21  */\r
22 public class SpreadsheetSelectionProcessor implements SelectionProcessor<Collection<?>, ReadGraph> {\r
23 \r
24     @Override\r
25     public Collection<?> process(Collection<?> selection, ReadGraph graph) {\r
26         try {\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
31                 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
38                 if(cell != null) {\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
48 //                              } else {\r
49 //                                      \r
50 //                              }\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
57 //                              }\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
64                         } else {\r
65                                 return Collections.emptyList();\r
66                         }\r
67                 } else {\r
68                         result.add(new ComparableTabContributor(new NoCellTab(), 3, new NoCellInput(variable, location), "Configuration"));\r
69                 }\r
70                 return result;\r
71         } catch (Throwable t) {\r
72                 t.printStackTrace();\r
73                 return Collections.emptyList();\r
74         }\r
75     }\r
76 \r
77 }