]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.browsing.ui.swt/src/org/simantics/browsing/ui/swt/ViewerCellReference.java
Merge remote-tracking branch 'origin/svn' commit 'ccc1271c9d6657fb9dcf4cf3cb115fa0c8c...
[simantics/platform.git] / bundles / org.simantics.browsing.ui.swt / src / org / simantics / browsing / ui / swt / ViewerCellReference.java
1 package org.simantics.browsing.ui.swt;\r
2 \r
3 import org.eclipse.jface.viewers.ViewerCell;\r
4 import org.simantics.browsing.ui.common.internal.UIElementReference;\r
5 \r
6 /**\r
7  * "Reference" to a viewer cell.\r
8  * \r
9  * ViewerCell is an object, which is not immutable, and has a very short lifespan. Hence we store its element and columnIndex.\r
10  * \r
11  * \r
12  * @author Marko Luukkainen <marko.luukkainen@vtt.fi>\r
13  *\r
14  */\r
15 public class ViewerCellReference implements UIElementReference{\r
16         \r
17         private final Object element;\r
18         private final int column;\r
19         \r
20         public static ViewerCellReference create(ViewerCell cell) {\r
21                 return new ViewerCellReference(cell);\r
22         }\r
23         \r
24         private ViewerCellReference(ViewerCell cell) {\r
25                 this.element = cell.getElement();\r
26                 this.column = cell.getColumnIndex();\r
27         }\r
28         \r
29         @Override\r
30         public boolean hasReference() {\r
31                 return element != null;\r
32         }\r
33         \r
34         @Override\r
35         public boolean isDisposed() {\r
36                 if (element == null)\r
37                         return true;\r
38                 return false;\r
39         }\r
40         \r
41         public Object getElement() {\r
42                 return element;\r
43         }\r
44         \r
45         public int getColumn() {\r
46                 return column;\r
47         }\r
48         \r
49         @Override\r
50         public int hashCode() {\r
51                 return element.hashCode() + column;\r
52                 \r
53         }\r
54         \r
55         @Override\r
56         public boolean equals(Object obj) {\r
57                 if (obj == null)\r
58                         return false;\r
59                 if (obj.getClass() != getClass())\r
60                         return false;\r
61                 ViewerCellReference other = (ViewerCellReference)obj;\r
62                 if (column != other.column)\r
63                         return false;\r
64                 return element.equals(other.element);\r
65         }\r
66 }\r