X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.spreadsheet.graph%2Fsrc%2Forg%2Fsimantics%2Fspreadsheet%2Fgraph%2Fsynchronization%2FStyleUpdater.java;h=4451d13140a6049d3b3271d90757b4bfcf2921ce;hb=6b4432af6fe79c859dd1ddb31fd185d64c729863;hp=c536ff67e687dad875569c89502e99663c5b4570;hpb=969bd23cab98a79ca9101af33334000879fb60c5;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/synchronization/StyleUpdater.java b/bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/synchronization/StyleUpdater.java index c536ff67e..4451d1314 100644 --- a/bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/synchronization/StyleUpdater.java +++ b/bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/synchronization/StyleUpdater.java @@ -1,232 +1,232 @@ -package org.simantics.spreadsheet.graph.synchronization; - -import java.util.Collection; -import java.util.Map; - -import org.simantics.databoard.binding.mutable.Variant; -import org.simantics.datatypes.literal.Font; -import org.simantics.datatypes.literal.RGB; -import org.simantics.spreadsheet.graph.SpreadsheetBook; -import org.simantics.spreadsheet.graph.SpreadsheetStyle; -import org.simantics.structural.synchronization.base.CommandBuilder; -import org.simantics.structural.synchronization.base.ModuleUpdateContext; -import org.simantics.structural.synchronization.base.ModuleUpdaterBase; -import org.simantics.structural.synchronization.base.PropertyUpdateRule; -import org.simantics.structural.synchronization.base.Solver; - -public class StyleUpdater extends ModuleUpdaterBase { - - private static class ForegroundUpdateRule implements PropertyUpdateRule { - @Override - public String getPropertyName() { - return "foreground"; - } - - @Override - public void apply(ModuleUpdateContext context, boolean isCreating, Map propertyMap, Map> connectionMap, Variant value) { - StyleCommandBuilder builder = context.getConcreteCommand(); - RGB.Integer color = (RGB.Integer) value.getValue(); - builder.foreground = color; - } - } - - private static class BackgroundUpdateRule implements PropertyUpdateRule { - @Override - public String getPropertyName() { - return "background"; - } - - @Override - public void apply(ModuleUpdateContext context, boolean isCreating, Map propertyMap, Map> connectionMap, Variant value) { - StyleCommandBuilder builder = context.getConcreteCommand(); - RGB.Integer color = (RGB.Integer) value.getValue(); - builder.background = color; - } - } - - private static class FontUpdateRule implements PropertyUpdateRule { - @Override - public String getPropertyName() { - return "font"; - } - - @Override - public void apply(ModuleUpdateContext context, boolean isCreating, Map propertyMap, Map> connectionMap, Variant value) { - StyleCommandBuilder builder = context.getConcreteCommand(); - Font font = (Font) value.getValue(); - builder.font = font; - } - } - - private static class AlignUpdateRule implements PropertyUpdateRule { - @Override - public String getPropertyName() { - return "align"; - } - - @Override - public void apply(ModuleUpdateContext context, boolean isCreating, Map propertyMap, Map> connectionMap, Variant value) { - StyleCommandBuilder builder = context.getConcreteCommand(); - int align = (int) value.getValue(); - builder.align = align; - } - } - - private static class FormatStringUpdateRule implements PropertyUpdateRule { - @Override - public String getPropertyName() { - return "formatString"; - } - - @Override - public void apply(ModuleUpdateContext context, boolean isCreating, Map propertyMap, Map> connectionMap, Variant value) { - StyleCommandBuilder builder = context.getConcreteCommand(); - String formatString = (String) value.getValue(); - builder.formatString = formatString; - } - } - - private static class FormatIndexUpdateRule implements PropertyUpdateRule { - @Override - public String getPropertyName() { - return "formatIndex"; - } - - @Override - public void apply(ModuleUpdateContext context, boolean isCreating, Map propertyMap, Map> connectionMap, Variant value) { - StyleCommandBuilder builder = context.getConcreteCommand(); - int index = (int) value.getValue(); - builder.formatIndex = index; - } - } - - private static class BorderUpdateRule implements PropertyUpdateRule { - @Override - public String getPropertyName() { - return "border"; - } - - @Override - public void apply(ModuleUpdateContext context, boolean isCreating, Map propertyMap, Map> connectionMap, Variant value) { - StyleCommandBuilder builder = context.getConcreteCommand(); - int border = (int) value.getValue(); - builder.border = border; - } - } - - private static class LockedUpdateRule implements PropertyUpdateRule { - @Override - public String getPropertyName() { - return "locked"; - } - - @Override - public void apply(ModuleUpdateContext context, boolean isCreating, Map propertyMap, Map> connectionMap, Variant value) { - StyleCommandBuilder builder = context.getConcreteCommand(); - boolean locked = (boolean) value.getValue(); - builder.locked = locked; - } - } - - private static class ColumnSpanUpdateRule implements PropertyUpdateRule { - @Override - public String getPropertyName() { - return "columnSpan"; - } - - @Override - public void apply(ModuleUpdateContext context, boolean isCreating, Map propertyMap, Map> connectionMap, Variant value) { - StyleCommandBuilder builder = context.getConcreteCommand(); - int columnSpan = (int) value.getValue(); - builder.columnSpan = columnSpan; - } - } - - private static class RowSpanUpdateRule implements PropertyUpdateRule { - @Override - public String getPropertyName() { - return "rowSpan"; - } - - @Override - public void apply(ModuleUpdateContext context, boolean isCreating, Map propertyMap, Map> connectionMap, Variant value) { - StyleCommandBuilder builder = context.getConcreteCommand(); - int rowSpan = (int) value.getValue(); - builder.rowSpan = rowSpan; - } - } - - - public StyleUpdater(String moduleType) { - super(moduleType); - - addPropertyUpdateRule(new ForegroundUpdateRule()); - addPropertyUpdateRule(new BackgroundUpdateRule()); - addPropertyUpdateRule(new FontUpdateRule()); - addPropertyUpdateRule(new AlignUpdateRule()); - addPropertyUpdateRule(new FormatStringUpdateRule()); - addPropertyUpdateRule(new FormatIndexUpdateRule()); - addPropertyUpdateRule(new BorderUpdateRule()); - addPropertyUpdateRule(new LockedUpdateRule()); - addPropertyUpdateRule(new ColumnSpanUpdateRule()); - addPropertyUpdateRule(new RowSpanUpdateRule()); - } - - @Override - public CommandBuilder createAddCommandBuilder(final String name) { - return new StyleCommandBuilder(name, false); - } - - @Override - public CommandBuilder createUpdateCommandBuilder(String name) { - return new StyleCommandBuilder(name, true); - } - - private static class StyleCommandBuilder implements CommandBuilder { - - protected int rowSpan; - protected int columnSpan; - protected int border; - protected boolean locked; - protected int formatIndex; - protected String formatString; - protected org.simantics.datatypes.literal.RGB.Integer background; - protected org.simantics.datatypes.literal.RGB.Integer foreground; - protected Font font; - protected int align; - - private boolean update; - private String name; - - public StyleCommandBuilder(String name, boolean update) { - this.name = name.split("/")[1]; - this.update = update; - } - - @Override - public void apply(Solver solver) { - SpreadsheetBook book = solver.getConcreteSolver(); - SpreadsheetStyle style = SpreadsheetStyle.newInstace().name(name).align(align).font(font) - .background(background).foreground(foreground).border(border).locked(locked).rowSpan(rowSpan) - .columnSpan(columnSpan).formatIndex((short) formatIndex).formatString(formatString).build(); - if (book.getStyle(style.getStyleId()) == null) - book.addStyle(style); - - } - - @SuppressWarnings("unchecked") - @Override - public T getConcrete() { - return (T) this; - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("StyleCommandBuilder for ").append(name).append(" [background=").append(background).append(", foregroung=").append(foreground).append(", font=").append(font).append(", align=").append(align).append("]"); - return sb.toString(); - } - - } - -} +package org.simantics.spreadsheet.graph.synchronization; + +import java.util.Collection; +import java.util.Map; + +import org.simantics.databoard.binding.mutable.Variant; +import org.simantics.datatypes.literal.Font; +import org.simantics.datatypes.literal.RGB; +import org.simantics.spreadsheet.graph.SpreadsheetBook; +import org.simantics.spreadsheet.graph.SpreadsheetStyle; +import org.simantics.structural.synchronization.base.CommandBuilder; +import org.simantics.structural.synchronization.base.ModuleUpdateContext; +import org.simantics.structural.synchronization.base.ModuleUpdaterBase; +import org.simantics.structural.synchronization.base.PropertyUpdateRule; +import org.simantics.structural.synchronization.utils.Solver; + +public class StyleUpdater extends ModuleUpdaterBase { + + private static class ForegroundUpdateRule implements PropertyUpdateRule { + @Override + public String getPropertyName() { + return "foreground"; + } + + @Override + public void apply(ModuleUpdateContext context, boolean isCreating, Map propertyMap, Map> connectionMap, Variant value) { + StyleCommandBuilder builder = context.getConcreteCommand(); + RGB.Integer color = (RGB.Integer) value.getValue(); + builder.foreground = color; + } + } + + private static class BackgroundUpdateRule implements PropertyUpdateRule { + @Override + public String getPropertyName() { + return "background"; + } + + @Override + public void apply(ModuleUpdateContext context, boolean isCreating, Map propertyMap, Map> connectionMap, Variant value) { + StyleCommandBuilder builder = context.getConcreteCommand(); + RGB.Integer color = (RGB.Integer) value.getValue(); + builder.background = color; + } + } + + private static class FontUpdateRule implements PropertyUpdateRule { + @Override + public String getPropertyName() { + return "font"; + } + + @Override + public void apply(ModuleUpdateContext context, boolean isCreating, Map propertyMap, Map> connectionMap, Variant value) { + StyleCommandBuilder builder = context.getConcreteCommand(); + Font font = (Font) value.getValue(); + builder.font = font; + } + } + + private static class AlignUpdateRule implements PropertyUpdateRule { + @Override + public String getPropertyName() { + return "align"; + } + + @Override + public void apply(ModuleUpdateContext context, boolean isCreating, Map propertyMap, Map> connectionMap, Variant value) { + StyleCommandBuilder builder = context.getConcreteCommand(); + int align = (int) value.getValue(); + builder.align = align; + } + } + + private static class FormatStringUpdateRule implements PropertyUpdateRule { + @Override + public String getPropertyName() { + return "formatString"; + } + + @Override + public void apply(ModuleUpdateContext context, boolean isCreating, Map propertyMap, Map> connectionMap, Variant value) { + StyleCommandBuilder builder = context.getConcreteCommand(); + String formatString = (String) value.getValue(); + builder.formatString = formatString; + } + } + + private static class FormatIndexUpdateRule implements PropertyUpdateRule { + @Override + public String getPropertyName() { + return "formatIndex"; + } + + @Override + public void apply(ModuleUpdateContext context, boolean isCreating, Map propertyMap, Map> connectionMap, Variant value) { + StyleCommandBuilder builder = context.getConcreteCommand(); + int index = (int) value.getValue(); + builder.formatIndex = index; + } + } + + private static class BorderUpdateRule implements PropertyUpdateRule { + @Override + public String getPropertyName() { + return "border"; + } + + @Override + public void apply(ModuleUpdateContext context, boolean isCreating, Map propertyMap, Map> connectionMap, Variant value) { + StyleCommandBuilder builder = context.getConcreteCommand(); + int border = (int) value.getValue(); + builder.border = border; + } + } + + private static class LockedUpdateRule implements PropertyUpdateRule { + @Override + public String getPropertyName() { + return "locked"; + } + + @Override + public void apply(ModuleUpdateContext context, boolean isCreating, Map propertyMap, Map> connectionMap, Variant value) { + StyleCommandBuilder builder = context.getConcreteCommand(); + boolean locked = (boolean) value.getValue(); + builder.locked = locked; + } + } + + private static class ColumnSpanUpdateRule implements PropertyUpdateRule { + @Override + public String getPropertyName() { + return "columnSpan"; + } + + @Override + public void apply(ModuleUpdateContext context, boolean isCreating, Map propertyMap, Map> connectionMap, Variant value) { + StyleCommandBuilder builder = context.getConcreteCommand(); + int columnSpan = (int) value.getValue(); + builder.columnSpan = columnSpan; + } + } + + private static class RowSpanUpdateRule implements PropertyUpdateRule { + @Override + public String getPropertyName() { + return "rowSpan"; + } + + @Override + public void apply(ModuleUpdateContext context, boolean isCreating, Map propertyMap, Map> connectionMap, Variant value) { + StyleCommandBuilder builder = context.getConcreteCommand(); + int rowSpan = (int) value.getValue(); + builder.rowSpan = rowSpan; + } + } + + + public StyleUpdater(String moduleType) { + super(moduleType); + + addPropertyUpdateRule(new ForegroundUpdateRule()); + addPropertyUpdateRule(new BackgroundUpdateRule()); + addPropertyUpdateRule(new FontUpdateRule()); + addPropertyUpdateRule(new AlignUpdateRule()); + addPropertyUpdateRule(new FormatStringUpdateRule()); + addPropertyUpdateRule(new FormatIndexUpdateRule()); + addPropertyUpdateRule(new BorderUpdateRule()); + addPropertyUpdateRule(new LockedUpdateRule()); + addPropertyUpdateRule(new ColumnSpanUpdateRule()); + addPropertyUpdateRule(new RowSpanUpdateRule()); + } + + @Override + public CommandBuilder createAddCommandBuilder(final String name) { + return new StyleCommandBuilder(name, false); + } + + @Override + public CommandBuilder createUpdateCommandBuilder(String name) { + return new StyleCommandBuilder(name, true); + } + + private static class StyleCommandBuilder implements CommandBuilder { + + protected int rowSpan; + protected int columnSpan; + protected int border; + protected boolean locked; + protected int formatIndex; + protected String formatString; + protected org.simantics.datatypes.literal.RGB.Integer background; + protected org.simantics.datatypes.literal.RGB.Integer foreground; + protected Font font; + protected int align; + + private boolean update; + private String name; + + public StyleCommandBuilder(String name, boolean update) { + this.name = name.split("/")[1]; + this.update = update; + } + + @Override + public void apply(Solver solver) { + SpreadsheetBook book = solver.getConcreteSolver(); + SpreadsheetStyle style = SpreadsheetStyle.newInstace().name(name).align(align).font(font) + .background(background).foreground(foreground).border(border).locked(locked).rowSpan(rowSpan) + .columnSpan(columnSpan).formatIndex((short) formatIndex).formatString(formatString).build(); + if (book.getStyle(style.getStyleId()) == null) + book.addStyle(style); + + } + + @SuppressWarnings("unchecked") + @Override + public T getConcrete() { + return (T) this; + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("StyleCommandBuilder for ").append(name).append(" [background=").append(background).append(", foregroung=").append(foreground).append(", font=").append(font).append(", align=").append(align).append("]"); + return sb.toString(); + } + + } + +}