--- /dev/null
+package org.simantics.spreadsheet.graph;\r
+\r
+import java.util.Collections;\r
+import java.util.Map;\r
+\r
+import org.simantics.databoard.binding.mutable.Variant;\r
+\r
+public class SpreadsheetCellEditable implements SheetNode {\r
+\r
+ public final SpreadsheetCell cell;\r
+ \r
+ public SpreadsheetCellEditable(SpreadsheetCell spreadsheetCell) {\r
+ this.cell = spreadsheetCell;\r
+ }\r
+\r
+ @Override\r
+ public String getName() {\r
+ return "editable";\r
+ }\r
+\r
+ @Override\r
+ public Map getChildren() {\r
+ return Collections.emptyMap();\r
+ }\r
+\r
+ @Override\r
+ public Map getProperties() {\r
+ return Collections.emptyMap();\r
+ }\r
+ \r
+ @Override\r
+ public int hashCode() {\r
+ final int prime = 31;\r
+ int result = 1;\r
+ result = prime * result + ((cell == null) ? 0 : cell.hashCode());\r
+ return result;\r
+ }\r
+\r
+ @Override\r
+ public boolean equals(Object obj) {\r
+ if (this == obj)\r
+ return true;\r
+ if (obj == null)\r
+ return false;\r
+ if (getClass() != obj.getClass())\r
+ return false;\r
+ SpreadsheetCellEditable other = (SpreadsheetCellEditable) obj;\r
+ if (cell == null) {\r
+ if (other.cell != null)\r
+ return false;\r
+ } else if (!cell.equals(other.cell))\r
+ return false;\r
+ return true;\r
+ }\r
+\r
+ public boolean editable() {\r
+ if (cell.content == null || cell.content instanceof SpreadsheetFormula || cell.content instanceof SpreadsheetSCLConstant)\r
+ return false;\r
+ if (cell.content instanceof String) {\r
+ String content = (String) cell.content;\r
+ if (content.isEmpty())\r
+ return false;\r
+ }\r
+ if (cell.content instanceof Variant) {\r
+ Variant content = (Variant) cell.content;\r
+ if (content.getValue() == null)\r
+ return false;\r
+ if (content.getValue() instanceof String) {\r
+ String actualContent = (String) content.getValue();\r
+ if (actualContent.isEmpty())\r
+ return false;\r
+ }\r
+ }\r
+// System.out.println("content is " + cell.content);\r
+ return true;\r
+ }\r
+\r
+}\r