1 package org.simantics.spreadsheet.graph;
\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
8 import org.simantics.datatypes.literal.Font;
\r
9 import org.simantics.datatypes.literal.RGB;
\r
11 public final class SpreadsheetStyle implements SheetNode, SpreadsheetElement<SpreadsheetStyle, SpreadsheetStyle> {
\r
13 // public static final Binding BINDING = Bindings.getBindingUnchecked(SpreadsheetStyle.class);
\r
15 private static final SpreadsheetStyle EMPTY = SpreadsheetStyle.newInstace().name("Style_E").build();
\r
17 private static final long serialVersionUID = -4969920277489585741L;
\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
29 private transient int synchronizationId;
\r
30 private transient final int hashCode;
\r
32 public final String formatString;
\r
33 public final int formatIndex;
\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
37 this.border = border;
\r
38 this.align = align2;
\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
46 this.formatString = formatString;
\r
47 this.formatIndex = formatIndex;
\r
50 this.hashCode = hashCode();
\r
53 public int getId() {
\r
54 return synchronizationId;
\r
57 public int getStyleId() {
\r
62 public void accept(SpreadsheetVisitor v) {
\r
67 public Optional<SpreadsheetStyle> getParent() {
\r
68 return Optional.empty();
\r
72 public Collection<SpreadsheetStyle> getSpreadsheetChildren() {
\r
73 return Collections.emptyList();
\r
77 public void remove(SpreadsheetStyle child) {
\r
82 public String getName() {
\r
87 public Map<?, ?> getChildren() {
\r
88 return Collections.emptyMap();
\r
92 public Map<?, ?> getProperties() {
\r
93 return Collections.emptyMap();
\r
97 public int hashCode() {
\r
101 final int prime = 31;
\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
118 public boolean equals(Object obj) {
\r
123 if (getClass() != obj.getClass())
\r
125 SpreadsheetStyle other = (SpreadsheetStyle) obj;
\r
126 if (align != other.align)
\r
128 if (background == null) {
\r
129 if (other.background != null)
\r
131 } else if (!background.equals(other.background))
\r
133 if (border != other.border)
\r
135 if (columnSpan != other.columnSpan)
\r
137 if (font == null) {
\r
138 if (other.font != null)
\r
140 } else if (!font.equals(other.font))
\r
142 if (foreground == null) {
\r
143 if (other.foreground != null)
\r
145 } else if (!foreground.equals(other.foreground))
\r
147 if (locked != other.locked)
\r
149 if (rowSpan != other.rowSpan)
\r
151 if (synchronizationId != other.synchronizationId)
\r
153 if (formatIndex != other.formatIndex)
\r
155 if (formatString == null) {
\r
156 if (other.formatString != null)
\r
158 } else if (!formatString.equals(other.formatString))
\r
163 public static SpreadsheetStyleBuilder newInstace() {
\r
164 return new SpreadsheetStyleBuilder();
\r
167 public static SpreadsheetStyle empty() {
\r
171 public static class SpreadsheetStyleBuilder {
\r
173 private String name;
\r
174 private RGB.Integer foreground;
\r
175 private RGB.Integer background;
\r
176 private int border;
\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
185 private SpreadsheetStyleBuilder() {}
\r
187 public SpreadsheetStyleBuilder name(String name) {
\r
192 public SpreadsheetStyleBuilder foreground(RGB.Integer foreground) {
\r
193 this.foreground = foreground;
\r
197 public SpreadsheetStyleBuilder background(RGB.Integer background) {
\r
198 this.background = background;
\r
202 public SpreadsheetStyleBuilder border(Integer border) {
\r
203 this.border = border == null ? 0 : border;
\r
207 public SpreadsheetStyleBuilder align(Integer align) {
\r
208 this.align = align == null ? 0 : align;
\r
212 public SpreadsheetStyleBuilder font(Font font) {
\r
217 public SpreadsheetStyleBuilder locked(boolean locked) {
\r
218 this.locked = locked;
\r
222 public SpreadsheetStyleBuilder rowSpan(int rowSpan) {
\r
223 this.rowSpan = rowSpan;
\r
227 public SpreadsheetStyleBuilder font(int columnSpan) {
\r
228 this.columnSpan = columnSpan;
\r
232 public SpreadsheetStyle build() {
\r
233 SpreadsheetStyle style = new SpreadsheetStyle(name, border, align, font, foreground, background, locked, rowSpan, columnSpan, formatString, formatIndex);
\r
237 public SpreadsheetStyleBuilder formatString(String formatString) {
\r
238 this.formatString = formatString;
\r
242 public SpreadsheetStyleBuilder formatIndex(short formatIndex) {
\r
243 this.formatIndex = formatIndex;
\r
247 public SpreadsheetStyleBuilder columnSpan(int columnSpan2) {
\r
248 this.columnSpan = columnSpan2;
\r
253 public void setSynchronizationId(int newId) {
\r
254 this.synchronizationId = newId;
\r