]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/SpreadsheetStyle.java
Changing existing log4j logging to use slf4j
[simantics/platform.git] / bundles / org.simantics.spreadsheet.graph / src / org / simantics / spreadsheet / graph / SpreadsheetStyle.java
1 package org.simantics.spreadsheet.graph;\r
2 \r
3 import java.util.Collection;\r
4 import java.util.Collections;\r
5 import java.util.Map;\r
6 import java.util.Optional;\r
7 \r
8 import org.simantics.datatypes.literal.Font;\r
9 import org.simantics.datatypes.literal.RGB;\r
10 \r
11 public final class SpreadsheetStyle implements SheetNode, SpreadsheetElement<SpreadsheetStyle, SpreadsheetStyle> {\r
12 \r
13 //    public static final Binding BINDING = Bindings.getBindingUnchecked(SpreadsheetStyle.class);\r
14     \r
15     private static final SpreadsheetStyle EMPTY = SpreadsheetStyle.newInstace().name("Style_E").build();\r
16     \r
17     private static final long serialVersionUID = -4969920277489585741L;\r
18     \r
19     public final String name;\r
20         public final int border;\r
21         public final int align;\r
22         public final Font font;\r
23         public final RGB.Integer foreground;\r
24         public final RGB.Integer background;\r
25         public final boolean locked;\r
26         public final int rowSpan;\r
27         public final int columnSpan;\r
28 \r
29         private transient int synchronizationId;\r
30     private transient final int hashCode;\r
31 \r
32     public final String formatString;\r
33     public final int formatIndex;\r
34         \r
35         public SpreadsheetStyle(String name, int border, int align2, Font font2, RGB.Integer foreground2, RGB.Integer background2, boolean locked2, int rowSpan2, int columnSpan2, String formatString, short formatIndex) {\r
36             this.name = name;\r
37             this.border = border;\r
38             this.align = align2;\r
39             this.font = font2;\r
40             this.foreground = foreground2;\r
41             this.background = background2;\r
42             this.locked = locked2;\r
43             this.rowSpan = rowSpan2;\r
44             this.columnSpan = columnSpan2;\r
45             \r
46             this.formatString = formatString;\r
47             this.formatIndex = formatIndex;\r
48             \r
49             \r
50             this.hashCode = hashCode();\r
51     }\r
52         \r
53         public int getId() {\r
54             return synchronizationId;\r
55         }\r
56         \r
57         public int getStyleId() {\r
58             return hashCode();\r
59         }\r
60 \r
61     @Override\r
62     public void accept(SpreadsheetVisitor v) {\r
63         \r
64     }\r
65 \r
66     @Override\r
67     public Optional<SpreadsheetStyle> getParent() {\r
68         return Optional.empty();\r
69     }\r
70 \r
71     @Override\r
72     public Collection<SpreadsheetStyle> getSpreadsheetChildren() {\r
73         return Collections.emptyList();\r
74     }\r
75 \r
76     @Override\r
77     public void remove(SpreadsheetStyle child) {\r
78         \r
79     }\r
80 \r
81     @Override\r
82     public String getName() {\r
83         return "style";\r
84     }\r
85 \r
86     @Override\r
87     public Map<?, ?> getChildren() {\r
88         return Collections.emptyMap();\r
89     }\r
90 \r
91     @Override\r
92     public Map<?, ?> getProperties() {\r
93         return Collections.emptyMap();\r
94     }\r
95 \r
96     @Override\r
97     public int hashCode() {\r
98         if (hashCode != 0)\r
99             return hashCode;\r
100         \r
101         final int prime = 31;\r
102         int result = 1;\r
103         result = prime * result + align;\r
104         result = prime * result + ((formatString == null) ? 0 : formatString.hashCode());\r
105         result = prime * result + ((background == null) ? 0 : background.hashCode());\r
106         result = prime * result + border;\r
107         result = prime * result + formatIndex;\r
108         result = prime * result + columnSpan;\r
109         result = prime * result + ((font == null) ? 0 : font.hashCode());\r
110         result = prime * result + ((foreground == null) ? 0 : foreground.hashCode());\r
111         result = prime * result + (locked ? 1231 : 1237);\r
112         result = prime * result + rowSpan;\r
113         \r
114         return result;\r
115     }\r
116 \r
117     @Override\r
118     public boolean equals(Object obj) {\r
119         if (this == obj)\r
120             return true;\r
121         if (obj == null)\r
122             return false;\r
123         if (getClass() != obj.getClass())\r
124             return false;\r
125         SpreadsheetStyle other = (SpreadsheetStyle) obj;\r
126         if (align != other.align)\r
127             return false;\r
128         if (background == null) {\r
129             if (other.background != null)\r
130                 return false;\r
131         } else if (!background.equals(other.background))\r
132             return false;\r
133         if (border != other.border)\r
134             return false;\r
135         if (columnSpan != other.columnSpan)\r
136             return false;\r
137         if (font == null) {\r
138             if (other.font != null)\r
139                 return false;\r
140         } else if (!font.equals(other.font))\r
141             return false;\r
142         if (foreground == null) {\r
143             if (other.foreground != null)\r
144                 return false;\r
145         } else if (!foreground.equals(other.foreground))\r
146             return false;\r
147         if (locked != other.locked)\r
148             return false;\r
149         if (rowSpan != other.rowSpan)\r
150             return false;\r
151         if (synchronizationId != other.synchronizationId)\r
152             return false;\r
153         if (formatIndex != other.formatIndex)\r
154             return false;\r
155         if (formatString == null) {\r
156             if (other.formatString != null)\r
157                 return false;\r
158         } else if (!formatString.equals(other.formatString))\r
159             return false;\r
160         return true;\r
161     }\r
162     \r
163     public static SpreadsheetStyleBuilder newInstace() {\r
164         return new SpreadsheetStyleBuilder();\r
165     }\r
166     \r
167     public static SpreadsheetStyle empty() {\r
168         return EMPTY;\r
169     }\r
170     \r
171     public static class SpreadsheetStyleBuilder {\r
172         \r
173         private String name;\r
174         private RGB.Integer foreground;\r
175         private RGB.Integer background;\r
176         private int border;\r
177         private int align;\r
178         private Font font;\r
179         private boolean locked;\r
180         private int rowSpan = 1;\r
181         private int columnSpan = 1;\r
182         private String formatString;\r
183         private short formatIndex;\r
184 \r
185         private SpreadsheetStyleBuilder() {}\r
186         \r
187         public SpreadsheetStyleBuilder name(String name) {\r
188             this.name = name;\r
189             return this;\r
190         }\r
191         \r
192         public SpreadsheetStyleBuilder foreground(RGB.Integer foreground) {\r
193             this.foreground = foreground;\r
194             return this;\r
195         }\r
196         \r
197         public SpreadsheetStyleBuilder background(RGB.Integer background) {\r
198             this.background = background;\r
199             return this;\r
200         }\r
201         \r
202         public SpreadsheetStyleBuilder border(Integer border) {\r
203             this.border = border == null ? 0 : border;\r
204             return this;\r
205         }\r
206         \r
207         public SpreadsheetStyleBuilder align(Integer align) {\r
208             this.align = align == null ? 0 : align;\r
209             return this;\r
210         }\r
211         \r
212         public SpreadsheetStyleBuilder font(Font font) {\r
213             this.font = font;\r
214             return this;\r
215         }\r
216         \r
217         public SpreadsheetStyleBuilder locked(boolean locked) {\r
218             this.locked = locked;\r
219             return this;\r
220         }\r
221         \r
222         public SpreadsheetStyleBuilder rowSpan(int rowSpan) {\r
223             this.rowSpan = rowSpan;\r
224             return this;\r
225         }\r
226         \r
227         public SpreadsheetStyleBuilder font(int columnSpan) {\r
228             this.columnSpan = columnSpan;\r
229             return this;\r
230         }\r
231         \r
232         public SpreadsheetStyle build() {\r
233             SpreadsheetStyle style = new SpreadsheetStyle(name, border, align, font, foreground, background, locked, rowSpan, columnSpan, formatString, formatIndex);\r
234             return style;\r
235         }\r
236 \r
237         public SpreadsheetStyleBuilder formatString(String formatString) {\r
238             this.formatString = formatString;\r
239             return this;\r
240         }\r
241 \r
242         public SpreadsheetStyleBuilder formatIndex(short formatIndex) {\r
243             this.formatIndex = formatIndex;\r
244             return this;\r
245         }\r
246 \r
247         public SpreadsheetStyleBuilder columnSpan(int columnSpan2) {\r
248             this.columnSpan = columnSpan2;\r
249             return this;\r
250         }\r
251     }\r
252 \r
253     public void setSynchronizationId(int newId) {\r
254         this.synchronizationId = newId;\r
255     }\r
256     \r
257 }\r