]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.browsing.ui/src/org/simantics/browsing/ui/content/CompositeLabelDecorator.java
Do not compute replaceable type for non ReplaceableDefinedComponentTypes
[simantics/platform.git] / bundles / org.simantics.browsing.ui / src / org / simantics / browsing / ui / content / CompositeLabelDecorator.java
1 package org.simantics.browsing.ui.content;
2
3 import java.util.Collection;
4
5 public class CompositeLabelDecorator implements LabelDecorator {
6
7     Collection<LabelDecorator> decorators;
8     
9     public static final LabelDecorator ID = new LabelDecorator() {
10
11         @Override
12         public String decorateLabel(String label, String column, int itemIndex) {
13             return label;
14         }
15
16         @Override
17         public <Color> Color decorateForeground(Color color, String column,
18                 int itemIndex) {
19             return color;
20         }
21
22         @Override
23         public <Color> Color decorateBackground(Color color, String column,
24                 int itemIndex) {
25             return color;
26         }
27
28         @Override
29         public <Font> Font decorateFont(Font font, String column, int itemIndex) {
30             return font;
31         }
32         
33     };
34     
35     private CompositeLabelDecorator(Collection<LabelDecorator> decorators) {
36         this.decorators = decorators;
37     }
38     
39     public static LabelDecorator create(Collection<LabelDecorator> decorators) {
40         if(decorators.isEmpty())
41             return ID;
42         else if(decorators.size() == 1)
43             return decorators.iterator().next();
44         else
45             return new CompositeLabelDecorator(decorators);
46     }
47
48     @Override
49     public String decorateLabel(String label, String column, int itemIndex) {
50         for(LabelDecorator decorator : decorators) {
51             String dlabel = decorator.decorateLabel(label, column, itemIndex);
52             if(dlabel != null)
53                 label = dlabel;
54         }
55         return label;
56     }
57
58     @Override
59     public <Color> Color decorateForeground(Color color, String column,
60             int itemIndex) {
61         for(LabelDecorator decorator : decorators) {
62             Color dcolor = decorator.decorateForeground(color, column, itemIndex);
63             if (dcolor != null)
64                 color = dcolor;
65         }
66         return color;
67     }
68
69     @Override
70     public <Color> Color decorateBackground(Color color, String column,
71             int itemIndex) {
72         for(LabelDecorator decorator : decorators) {
73             Color dcolor = decorator.decorateBackground(color, column, itemIndex);
74             if (dcolor != null)
75                 color = dcolor;
76         }
77         return color;
78     }
79
80     @Override
81     public <Font> Font decorateFont(Font font, String column, int itemIndex) {
82         for(LabelDecorator decorator : decorators) {
83             Font dfont = decorator.decorateFont(font, column, itemIndex);
84             if (dfont != null)
85                 font = dfont;
86         }
87         return font;
88     }
89
90 }