X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.browsing.ui%2Fsrc%2Forg%2Fsimantics%2Fbrowsing%2Fui%2Fcontent%2FCompositeLabelDecorator.java;fp=bundles%2Forg.simantics.browsing.ui%2Fsrc%2Forg%2Fsimantics%2Fbrowsing%2Fui%2Fcontent%2FCompositeLabelDecorator.java;h=a01ee7bbdef91e8356a4d778dabdfd1bd5413552;hp=0000000000000000000000000000000000000000;hb=969bd23cab98a79ca9101af33334000879fb60c5;hpb=866dba5cd5a3929bbeae85991796acb212338a08 diff --git a/bundles/org.simantics.browsing.ui/src/org/simantics/browsing/ui/content/CompositeLabelDecorator.java b/bundles/org.simantics.browsing.ui/src/org/simantics/browsing/ui/content/CompositeLabelDecorator.java new file mode 100644 index 000000000..a01ee7bbd --- /dev/null +++ b/bundles/org.simantics.browsing.ui/src/org/simantics/browsing/ui/content/CompositeLabelDecorator.java @@ -0,0 +1,90 @@ +package org.simantics.browsing.ui.content; + +import java.util.Collection; + +public class CompositeLabelDecorator implements LabelDecorator { + + Collection decorators; + + public static final LabelDecorator ID = new LabelDecorator() { + + @Override + public String decorateLabel(String label, String column, int itemIndex) { + return label; + } + + @Override + public Color decorateForeground(Color color, String column, + int itemIndex) { + return color; + } + + @Override + public Color decorateBackground(Color color, String column, + int itemIndex) { + return color; + } + + @Override + public Font decorateFont(Font font, String column, int itemIndex) { + return font; + } + + }; + + private CompositeLabelDecorator(Collection decorators) { + this.decorators = decorators; + } + + public static LabelDecorator create(Collection decorators) { + if(decorators.isEmpty()) + return ID; + else if(decorators.size() == 1) + return decorators.iterator().next(); + else + return new CompositeLabelDecorator(decorators); + } + + @Override + public String decorateLabel(String label, String column, int itemIndex) { + for(LabelDecorator decorator : decorators) { + String dlabel = decorator.decorateLabel(label, column, itemIndex); + if(dlabel != null) + label = dlabel; + } + return label; + } + + @Override + public Color decorateForeground(Color color, String column, + int itemIndex) { + for(LabelDecorator decorator : decorators) { + Color dcolor = decorator.decorateForeground(color, column, itemIndex); + if (dcolor != null) + color = dcolor; + } + return color; + } + + @Override + public Color decorateBackground(Color color, String column, + int itemIndex) { + for(LabelDecorator decorator : decorators) { + Color dcolor = decorator.decorateBackground(color, column, itemIndex); + if (dcolor != null) + color = dcolor; + } + return color; + } + + @Override + public Font decorateFont(Font font, String column, int itemIndex) { + for(LabelDecorator decorator : decorators) { + Font dfont = decorator.decorateFont(font, column, itemIndex); + if (dfont != null) + font = dfont; + } + return font; + } + +}