22b76d5cd20284ffb83fe4327af4d9a040c03430
[scilab.git] / scilab / modules / graphic_objects / src / java / org / scilab / modules / graphic_objects / axes / AxisProperty.java
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2010 - DIGITEO - Manuel JULIACHS
4  * Copyright (C) 2013 - Scilab Enterprises - Calixte DENIZET
5  *
6  * This file must be used under the terms of the CeCILL.
7  * This source file is licensed as described in the file COPYING, which
8  * you should have received as part of this distribution.  The terms
9  * are also available at
10  * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
11  *
12  */
13
14 package org.scilab.modules.graphic_objects.axes;
15
16 import org.scilab.modules.graphic_objects.contouredObject.Line;
17 import org.scilab.modules.graphic_objects.graphicObject.GraphicObject.UpdateStatus;
18 import org.scilab.modules.graphic_objects.textObject.FormattedText;
19
20 import java.util.ArrayList;
21
22
23 /**
24  * Axis property class
25  * @author Manuel JULIACHS
26  */
27 public class AxisProperty {
28     /**
29      * AxisProperty properties names
30      */
31     public enum AxisPropertyProperty { VISIBLE, REVERSE, GRIDCOLOR, GRIDTHICKNESS, GRIDSTYLE, LABEL, AXISLOCATION,
32                                        LOGFLAG, UNKNOWNPROPERTY
33                                      }
34
35     /**
36      * Axis location type
37      * BOTTOM, TOP, MIDDLE, ORIGIN are allowed for an x-axis,
38      * LEFT, RIGHT, MIDDLE or ORIGIN are allowed for a y-axis
39      */
40     public static enum AxisLocation { BOTTOM, TOP, MIDDLE, ORIGIN, LEFT, RIGHT;
41
42
43                                       /**
44                                        * Converts an integer to the corresponding enum
45                                        * @param intValue the integer value
46                                        * @return the axis location enum
47                                        */
48     public static AxisLocation intToEnum(Integer intValue) {
49         switch (intValue) {
50             case 0:
51                 return AxisLocation.BOTTOM;
52             case 1:
53                 return AxisLocation.TOP;
54             case 2:
55                 return AxisLocation.MIDDLE;
56             case 3:
57                 return AxisLocation.ORIGIN;
58             case 4:
59                 return AxisLocation.LEFT;
60             case 5:
61                 return AxisLocation.RIGHT;
62             default:
63                 return null;
64         }
65     }
66                                     }
67
68     /** Specifies whether the axis is visible or not */
69     private boolean visible;
70
71     /** Specifies whether the axis is reversed or not */
72     private boolean reverse;
73
74     /** Grid color */
75     private int gridColor;
76
77     /** Grid thickness */
78     private double gridThickness;
79
80     /** Grid style */
81     private Line.LineType gridStyle;
82
83     /** Axis label UID */
84     private Integer label;
85
86     /** Axis location */
87     private AxisLocation axisLocation;
88
89     /** Specifies whether logarithmic coordinates are used or not */
90     private boolean logFlag;
91
92     /** Ticks property */
93     private TicksProperty ticks;
94
95     /** Constructor */
96     public AxisProperty() {
97         visible = false;
98         reverse = false;
99         gridColor = 0;
100         gridThickness = -1;
101         gridStyle = Line.LineType.DASH_DOT;
102
103         /* Sets the label to the null object */
104         label = 0;
105
106         axisLocation = AxisLocation.ORIGIN;
107         ticks = new TicksProperty();
108         logFlag = false;
109     }
110
111     /**
112      * Copy constructor
113      * @param axisProperty the AxisProperty to copy
114      */
115     public AxisProperty(AxisProperty axisProperty) {
116         visible = axisProperty.visible;
117         reverse = axisProperty.reverse;
118         gridColor = axisProperty.gridColor;
119         gridThickness = axisProperty.gridThickness;
120         gridStyle = axisProperty.gridStyle;
121
122         label = 0;
123
124         axisLocation = axisProperty.axisLocation;
125         ticks = new TicksProperty(axisProperty.ticks);
126         logFlag = axisProperty.logFlag;
127     }
128
129     /**
130      * Returns the enum associated to a property name
131      * @param propertyName the property name
132      * @return the property enum
133      */
134     public Object getPropertyFromName(String propertyName) {
135         if (propertyName.equals("Visible")) {
136             return AxisPropertyProperty.VISIBLE;
137         } else if (propertyName.equals("Reverse")) {
138             return AxisPropertyProperty.REVERSE;
139         } else if (propertyName.equals("GridColor")) {
140             return AxisPropertyProperty.GRIDCOLOR;
141         } else if (propertyName.equals("GridThickness")) {
142             return AxisPropertyProperty.GRIDTHICKNESS;
143         } else if (propertyName.equals("GridStyle")) {
144             return AxisPropertyProperty.GRIDSTYLE;
145         } else if (propertyName.equals("Label")) {
146             return AxisPropertyProperty.LABEL;
147         } else if (propertyName.equals("AxisLocation")) {
148             return AxisPropertyProperty.AXISLOCATION;
149         } else if (propertyName.equals("LogFlag")) {
150             return AxisPropertyProperty.LOGFLAG;
151         } else {
152             return AxisPropertyProperty.UNKNOWNPROPERTY;
153         }
154     }
155
156     /**
157      * Fast property get method
158      * @param property the property to get
159      * @return the property value
160      */
161     public Object getProperty(Object property) {
162         if (property == AxisPropertyProperty.VISIBLE) {
163             return getVisible();
164         } else if (property == AxisPropertyProperty.REVERSE) {
165             return getReverse();
166         } else if (property == AxisPropertyProperty.GRIDCOLOR) {
167             return getGridColor();
168         } else if (property == AxisPropertyProperty.GRIDTHICKNESS) {
169             return getGridThickness();
170         } else if (property == AxisPropertyProperty.GRIDSTYLE) {
171             return getGridStyle();
172         } else if (property == AxisPropertyProperty.LABEL) {
173             return getLabel();
174         } else if (property == AxisPropertyProperty.AXISLOCATION) {
175             return getAxisLocation();
176         } else if (property == AxisPropertyProperty.LOGFLAG) {
177             return getLogFlag();
178         } else {
179             return null;
180         }
181     }
182
183     /**
184      * Fast property set method
185      * @param property the property to set
186      * @param value the property value
187      * @return true if the property has been set, false otherwise
188      */
189     public boolean setProperty(Object property, Object value) {
190         if (property == AxisPropertyProperty.VISIBLE) {
191             setVisible((Boolean) value);
192         } else if (property == AxisPropertyProperty.REVERSE) {
193             setReverse((Boolean) value);
194         } else if (property == AxisPropertyProperty.GRIDCOLOR) {
195             setGridColor((Integer) value);
196         } else if (property == AxisPropertyProperty.GRIDTHICKNESS) {
197             setGridThickness((Double) value);
198         } else if (property == AxisPropertyProperty.GRIDSTYLE) {
199             setGridStyle((Integer) value);
200         } else if (property == AxisPropertyProperty.LABEL) {
201             setLabel((Integer) value);
202         } else if (property == AxisPropertyProperty.AXISLOCATION) {
203             setAxisLocation((AxisLocation) value);
204         } else if (property == AxisPropertyProperty.LOGFLAG) {
205             setLogFlag((Boolean) value);
206         }
207
208         return true;
209     }
210
211     /**
212      * @return the axisLocation
213      */
214     public AxisLocation getAxisLocationAsEnum() {
215         return axisLocation;
216     }
217
218     /**
219      * @return the axisLocation
220      */
221     public AxisLocation getAxisLocation() {
222         return axisLocation;
223     }
224
225     /**
226      * @param axisLocation the axisLocation to set
227      */
228     public UpdateStatus setAxisLocation(AxisLocation axisLocation) {
229         if (this.axisLocation != axisLocation) {
230             this.axisLocation = axisLocation;
231             return UpdateStatus.Success;
232         }
233
234         return UpdateStatus.NoChange;
235     }
236
237     /**
238      * @return the gridColor
239      */
240     public Integer getGridColor() {
241         return gridColor;
242     }
243
244     /**
245      * @param gridColor the gridColor to set
246      */
247     public UpdateStatus setGridColor(Integer gridColor) {
248         if (this.gridColor != gridColor) {
249             this.gridColor = gridColor;
250             return UpdateStatus.Success;
251         }
252
253         return UpdateStatus.NoChange;
254     }
255
256     /**
257      * @return the gridThickness
258      */
259     public Double getGridThickness() {
260         return gridThickness;
261     }
262
263     /**
264      * @param gridThickness the gridThickness to set
265      */
266     public UpdateStatus setGridThickness(Double gridThickness) {
267         if (this.gridThickness != gridThickness) {
268             this.gridThickness = gridThickness;
269             return UpdateStatus.Success;
270         }
271
272         return UpdateStatus.NoChange;
273     }
274
275     /**
276      * @return the gridStyle
277      */
278     public Integer getGridStyle() {
279         return gridStyle.asScilabIndex();
280     }
281
282     /**
283      * @param gridStyle the gridStyle to set
284      */
285     public UpdateStatus setGridStyle(Integer gridStyle) {
286         Line.LineType type = Line.LineType.fromScilabIndex(gridStyle);
287         if (this.gridStyle != type) {
288             this.gridStyle = type;
289             return UpdateStatus.Success;
290         }
291
292         return UpdateStatus.NoChange;
293     }
294
295     /**
296      * @return the label
297      */
298     public Integer getLabel() {
299         return label;
300     }
301
302     /**
303      * @param label the label to set
304      */
305     public UpdateStatus setLabel(Integer label) {
306         if (this.label != label) {
307             this.label = label == null ? 0 : label;
308             return UpdateStatus.Success;
309         }
310
311         return UpdateStatus.NoChange;
312     }
313
314     /**
315      * @return the logFlag
316      */
317     public Boolean getLogFlag() {
318         return logFlag;
319     }
320
321     /**
322      * @param logFlag the logFlag to set
323      */
324     public UpdateStatus setLogFlag(Boolean logFlag) {
325         if (this.logFlag != logFlag) {
326             this.logFlag = logFlag;
327             return UpdateStatus.Success;
328         }
329
330         return UpdateStatus.NoChange;
331     }
332
333     /**
334      * @return the reverse
335      */
336     public Boolean getReverse() {
337         return reverse;
338     }
339
340     /**
341      * @param reverse the reverse to set
342      */
343     public UpdateStatus setReverse(Boolean reverse) {
344         if (this.reverse != reverse) {
345             this.reverse = reverse;
346             return UpdateStatus.Success;
347         }
348
349         return UpdateStatus.NoChange;
350     }
351
352     /**
353      * @return the ticks
354      */
355     public TicksProperty getTicks() {
356         return ticks;
357     }
358
359     /**
360      * @param ticks the ticks to set
361      */
362     public UpdateStatus setTicks(TicksProperty ticks) {
363         if (!this.ticks.equals(ticks)) {
364             this.ticks = ticks;
365             return UpdateStatus.Success;
366         }
367
368         return UpdateStatus.NoChange;
369     }
370
371     /**
372      * @return the visible
373      */
374     public Boolean getVisible() {
375         return visible;
376     }
377
378     /**
379      * @param visible the visible to set
380      */
381     public UpdateStatus setVisible(Boolean visible) {
382         if (this.visible != visible) {
383             this.visible = visible;
384             return UpdateStatus.Success;
385         }
386
387         return UpdateStatus.NoChange;
388     }
389
390     /**
391      * @return the autoticks
392      */
393     public Boolean getAutoTicks() {
394         return ticks.getAuto();
395     }
396
397     /**
398      * @param autoticks the autoticks to set
399      */
400     public UpdateStatus setAutoTicks(Boolean autoticks) {
401         return ticks.setAuto(autoticks);
402     }
403
404     /**
405      * @return the number of ticks
406      */
407     public Integer getNumberOfTicks() {
408         return ticks.getNumber();
409     }
410
411     /**
412      * @return the ticks locations
413      */
414     public Double[] getTicksLocations() {
415         return ticks.getLocations();
416     }
417
418     /**
419      * @param ticksLocations the ticks locations to set
420      */
421     public UpdateStatus setTicksLocations(Double[] ticksLocations) {
422         return ticks.setLocations(ticksLocations);
423     }
424
425     /**
426      * @return the ticks labels
427      */
428     public ArrayList<FormattedText> getTicksLabels() {
429         return ticks.getLabels();
430     }
431
432     /**
433      * @param labels the labels to set
434      */
435     public UpdateStatus setTicksLabels(ArrayList<FormattedText> labels) {
436         return ticks.setLabels(labels);
437     }
438
439     /**
440      * @return the ticks labels
441      */
442     public String[] getTicksLabelsStrings() {
443         return ticks.getLabelsStrings();
444     }
445
446     /**
447      * @param labels the labels strings to set
448      */
449     public UpdateStatus setTicksLabelsStrings(String[] labels) {
450         return ticks.setLabelsStrings(labels);
451     }
452
453     /**
454      * @return the number of subticks
455      */
456     public Integer getSubticks() {
457         return ticks.getSubticks();
458     }
459
460     /**
461      * @param subticks the number of subticks to set
462      */
463     public UpdateStatus setSubticks(Integer subticks) {
464         return ticks.setSubticks(subticks);
465     }
466
467     /**
468      * Supposes all ticks labels have the same font style.
469      * To be corrected.
470      * @return the ticks labels font style
471      */
472     public Integer getFontStyle() {
473         return ticks.getFontStyle();
474     }
475
476     /**
477      * Supposes all ticks labels have the same font style.
478      * To be corrected.
479      * @param fontStyle the ticks labels font style to set
480      */
481     public UpdateStatus setFontStyle(Integer fontStyle) {
482         return ticks.setFontStyle(fontStyle);
483     }
484
485     /**
486      * Supposes all ticks labels have the same font size.
487      * To be corrected.
488      * @return the ticks labels font size
489      */
490     public Double getFontSize() {
491         return ticks.getFontSize();
492     }
493
494     /**
495      * Supposes all ticks labels have the same font size.
496      * To be corrected.
497      * @param fontSize the ticks labels font size to set
498      */
499     public UpdateStatus setFontSize(Double fontSize) {
500         return ticks.setFontSize(fontSize);
501     }
502
503     /**
504      * Supposes all ticks labels have the same font color.
505      * To be corrected.
506      * @return the ticks labels font color
507      */
508     public Integer getFontColor() {
509         return ticks.getFontColor();
510     }
511
512     /**
513      * Supposes all ticks labels have the same font color.
514      * To be corrected.
515      * @param fontColor the ticks labels font color to set
516      */
517     public UpdateStatus setFontColor(Integer fontColor) {
518         return ticks.setFontColor(fontColor);
519     }
520
521     /**
522      * Supposes all ticks labels have the same font fractional.
523      * To be corrected.
524      * @return the ticks labels font fractional
525      */
526     public Boolean getFontFractional() {
527         return ticks.getFontFractional();
528     }
529
530     /**
531      * Supposes all ticks labels have the same font fractional.
532      * To be corrected.
533      * @param fontFractional the ticks labels font fractional to set
534      */
535     public UpdateStatus setFontFractional(Boolean fontFractional) {
536         return ticks.setFontFractional(fontFractional);
537     }
538
539 }