]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.trend/src/org/simantics/trend/configuration/TrendItem.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.trend / src / org / simantics / trend / configuration / TrendItem.java
1 /*******************************************************************************\r
2  * Copyright (c) 2007 VTT Technical Research Centre of Finland and others.\r
3  * All rights reserved. This program and the accompanying materials\r
4  * are made available under the terms of the Eclipse Public License v1.0\r
5  * which accompanies this distribution, and is available at\r
6  * http://www.eclipse.org/legal/epl-v10.html\r
7  *\r
8  * Contributors:\r
9  *     VTT Technical Research Centre of Finland - initial API and implementation\r
10  *******************************************************************************/\r
11 package org.simantics.trend.configuration;\r
12 \r
13 import org.simantics.databoard.annotations.Identifier;\r
14 import org.simantics.databoard.annotations.Optional;\r
15 import org.simantics.databoard.util.Bean;\r
16 import org.simantics.utils.strings.AlphanumComparator;\r
17 \r
18 /**\r
19  * @author Toni Kalajainen\r
20  */\r
21 public class TrendItem extends Bean {\r
22         \r
23         // Sorting and color index\r
24         public int index;\r
25         \r
26         // Chart Label\r
27         public @Optional String label;  \r
28         // Normal Label (eg. The label in CSV file)\r
29         public @Optional String simpleLabel;\r
30         // Variable reference in user friendly format\r
31         public @Optional String variableReference;\r
32         \r
33         // GroupId in the history\r
34         public @Identifier String groupId;\r
35         // ItemId in the group\r
36         public @Identifier String groupItemId;\r
37         // Variable id in format understood by org.simantics.simulation.data.Datasource\r
38         public @Identifier String variableId;\r
39         \r
40         public Scale scale;\r
41         \r
42         // TODO Rename Binary to Bar\r
43         public enum Renderer { Analog, Binary } public Renderer renderer;\r
44         \r
45         public @Optional String unit;\r
46         \r
47         public DrawMode drawMode = DrawMode.getDefault();\r
48 \r
49         // If true, the item shall not be shown in the chart.\r
50         public boolean hidden = false;\r
51 \r
52         // Defines a custom stroke to be used when rendering this item.\r
53         public @Optional Float customStrokeWidth;\r
54 \r
55         // Defines a custom color to be used when rendering this item.\r
56         // If not defined, color is calculated based on #index.\r
57         public @Optional float[] customColor;\r
58 \r
59         public enum DrawMode {\r
60                 DeviationAndLine,\r
61                 DeviationAndAverage,\r
62                 DeviationAndSample,\r
63                 Average,\r
64                 Line,\r
65                 Sample,\r
66                 Deviation;\r
67                 public static DrawMode getDefault() {\r
68                         return DeviationAndLine; \r
69                 }\r
70         }\r
71         \r
72         public TrendItem() {\r
73         }\r
74 \r
75         public TrendItem(int index, String label, String subscriptionId, String variableId, Scale scale) {\r
76                 this(index, label, subscriptionId, variableId, scale, Renderer.Analog);\r
77         }\r
78 \r
79         public TrendItem(int index, String label, String subscriptionId, String variableId, Scale scale, Renderer renderer) {\r
80                 this.index = index;\r
81                 this.label = label;\r
82                 this.variableId = variableId;\r
83                 this.scale = scale;\r
84                 this.renderer = renderer;\r
85                 this.groupId = subscriptionId;\r
86                 this.groupItemId = variableId;\r
87         }       \r
88 \r
89         public TrendItem(int index, String label, String subscriptionId, String variableId, Scale scale, Renderer renderer, double min, double max) {\r
90                 this.index = index;\r
91                 this.label = label;\r
92                 this.variableId = variableId;\r
93                 this.scale = new Scale.Manual(min, max);\r
94                 this.renderer = renderer;\r
95                 this.groupId = subscriptionId;\r
96                 this.groupItemId = variableId;\r
97         }\r
98         \r
99         public TrendItem(int index, String label, String subscriptionId, String variableId, Scale scale, Renderer renderer, double min, double max, DrawMode drawMode) {\r
100                 this.index = index;\r
101                 this.label = label;\r
102                 this.variableId = variableId;\r
103                 this.scale = new Scale.Manual(min, max);\r
104                 this.renderer = renderer;\r
105                 this.groupId = subscriptionId;\r
106                 this.groupItemId = variableId;\r
107                 this.drawMode = drawMode;\r
108         }\r
109         \r
110         @Override\r
111         public int compareTo(Bean o) {\r
112                 if ( o instanceof TrendItem == false ) return 0;\r
113                 TrendItem other = (TrendItem) o;\r
114                 \r
115                 int c = renderer.ordinal() - other.renderer.ordinal();\r
116                 if ( c!=0 ) return c;\r
117                 \r
118                 c = index - other.index;\r
119                 if ( c!=0 ) return c;\r
120                 \r
121                 String myLabel1 = label!=null?label:"";\r
122                 String otLabel1 = other.label!=null?other.label:"";\r
123                 c = AlphanumComparator.CASE_INSENSITIVE_COMPARATOR.compare(myLabel1, otLabel1);\r
124                 if ( c!=0 ) return c;\r
125                 \r
126                 String myLabel2 = simpleLabel!=null?simpleLabel:"";\r
127                 String otLabel2 = other.simpleLabel!=null?other.simpleLabel:"";\r
128                 c = AlphanumComparator.CASE_INSENSITIVE_COMPARATOR.compare(myLabel2, otLabel2);\r
129                 if ( c!=0 ) return c;\r
130                 \r
131                 String mySid = groupId!=null?groupId:""; \r
132                 String otSid = other.groupId!=null?other.groupId:""; \r
133                 c = mySid.compareTo(otSid);\r
134                 if ( c!=0 ) return c;\r
135 \r
136                 String myGiid = groupItemId!=null?groupItemId:""; \r
137                 String otGiid = other.groupItemId!=null?other.groupItemId:""; \r
138                 c = myGiid.compareTo(otGiid);\r
139                 if ( c!=0 ) return c;\r
140 \r
141                 String myVid = variableId!=null?variableId:""; \r
142                 String otVid = other.variableId!=null?other.variableId:""; \r
143                 c = myVid.compareTo(otVid);\r
144                 if ( c!=0 ) return c;\r
145                 \r
146                 return c;               \r
147         }\r
148         \r
149 }\r
150 \r