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