1 /*
2 * Copyright (c) 2006 Stiftung Deutsches Elektronen-Synchroton,
3 * Member of the Helmholtz Association, (DESY), HAMBURG, GERMANY.
4 *
5 * THIS SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN "../AS IS" BASIS.
6 * WITHOUT WARRANTY OF ANY KIND, EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED
7 * TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR PARTICULAR PURPOSE AND
8 * NON-INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
9 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
10 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
11 * THE USE OR OTHER DEALINGS IN THE SOFTWARE. SHOULD THE SOFTWARE PROVE DEFECTIVE
12 * IN ANY RESPECT, THE USER ASSUMES THE COST OF ANY NECESSARY SERVICING, REPAIR OR
13 * CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE.
14 * NO USE OF ANY SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
15 * DESY HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
16 * OR MODIFICATIONS.
17 * THE FULL LICENSE SPECIFYING FOR THE SOFTWARE THE REDISTRIBUTION, MODIFICATION,
18 * USAGE AND OTHER RIGHTS AND OBLIGATIONS IS INCLUDED WITH THE DISTRIBUTION OF THIS
19 * PROJECT IN THE FILE LICENSE.HTML. IF THE LICENSE IS NOT INCLUDED YOU MAY FIND A COPY
20 * AT HTTP://WWW.DESY.DE/LEGAL/LICENSE.HTM
21 */
22
23 package de.desy.acop.displayers.selector;
24
25 import java.awt.Color;
26 import java.awt.Component;
27 import java.beans.PropertyChangeEvent;
28 import java.beans.PropertyChangeListener;
29 import java.beans.PropertyEditorSupport;
30
31 import com.cosylab.gui.adapters.ConverterUtilities;
32
33 import de.desy.acop.displayers.tools.AcopGraphParameters;
34 import de.desy.acop.displayers.tools.MultipleAcopDisplayer;
35 import de.desy.acop.transport.ConnectionParameters;
36
37 /**
38 * <code>PropertyEditor</code> for <code>AcopGraphParameters</code> property type.
39 *
40 * @author Jaka Bobnar, Cosylab
41 * @see AcopGraphParameters
42 */
43 public class ChartSelectorPropertyEditor extends PropertyEditorSupport {
44
45 private ChartConnectionCustomizer editor;
46
47 /**
48 * Creates new instance of SelectorPropertyEditor.
49 */
50 public ChartSelectorPropertyEditor() {
51 super();
52 }
53
54 /*
55 * (non-Javadoc)
56 * @see java.beans.PropertyEditorSupport#getCustomEditor()
57 */
58 @Override
59 public Component getCustomEditor() {
60 if (editor == null) {
61 editor = new ChartConnectionCustomizer();
62 editor.setDisplayerParameters((AcopGraphParameters[]) getValue());
63 editor.addPropertyChangeListener(MultipleAcopDisplayer.DISPLAYER_PARAMETERS_PROPERTY,
64 new PropertyChangeListener() {
65 public void propertyChange(PropertyChangeEvent evt) {
66 setValueSilently(editor.getDisplayerParameters());
67 }
68 });
69 }
70 return editor;
71 }
72
73 /*
74 * (non-Javadoc)
75 * @see java.beans.PropertyEditorSupport#getJavaInitializationString()
76 */
77 @Override
78 public String getJavaInitializationString() {
79 AcopGraphParameters[] params = (AcopGraphParameters[]) getValue();
80 StringBuffer buffer = new StringBuffer();
81 buffer.append("new de.desy.acop.displayers.tools.AcopGraphParameters[]{");
82 ConnectionParameters cp;
83 Color color;
84 if (params != null) {
85 for (AcopGraphParameters p : params) {
86 cp = p.getConnectionParameters();
87 color = p.getColor();
88 buffer.append("new de.desy.acop.displayers.tools.AcopGraphParameters(");
89 buffer.append("new de.desy.acop.transport.ConnectionParameters(\""
90 + cp.getRemoteName()
91 + "\",de.desy.acop.transport.AccessMode."
92 + cp.getAccessMode() + ", " + cp.getAccessRate() + "," + cp.getPropertySize() + "," + SelectorUtilities.getExtendedDataString(cp) + "),");
93 if (color!=null) {
94 buffer.append("new java.awt.Color("+color.getRGB() + "),");
95 } else {
96 buffer.append("null,");
97 }
98 buffer.append(p.getFFT() + "," + p.getDrawStyle() + ","+p.getMode()+","+ p.getWidth() + "," + p.isTrend() + "," + p.getTrendLength());
99 if (p.getConverter() != null){
100 buffer.append(", " + ConverterUtilities.getInitializationString(p.getConverter()));
101 }
102 else {
103 buffer.append(", null");
104 }
105 buffer.append("),");
106
107 }
108 }
109 return buffer.toString() + "}";
110 }
111
112 /*
113 * (non-Javadoc)
114 * @see java.beans.PropertyEditorSupport#supportsCustomEditor()
115 */
116 @Override
117 public boolean supportsCustomEditor() {
118 return true;
119 }
120
121 // /*
122 // * (non-Javadoc)
123 // * @see java.beans.PropertyEditorSupport#setAsText(java.lang.String)
124 // */
125 // @Override
126 // public void setAsText(String text) {
127 // if (text == null || text.trim().equals("")) setValue(null);
128 // String[] values = text.split(";");
129 // AcopGraphParameters[] params = new AcopGraphParameters[values.length];
130 // String[] temp;
131 // String[] cp;
132 // for (int i = 0; i < values.length; i++) {
133 // temp = values[i].split(":");
134 // cp = temp[0].split(",");
135 // params[i] = new AcopGraphParameters(new ConnectionParameters(cp[0], AccessMode
136 // .valueOf(cp[1]), Integer.parseInt(cp[2])), new Color(Integer.parseInt(temp[1].trim())),Integer.parseInt(temp[2].trim()), Integer.parseInt(temp[3].trim()), Integer.parseInt(temp[4].trim()), Integer.parseInt(temp[5].trim()), Boolean.parseBoolean(temp[6].trim()));
137 // }
138 // setValue(params);
139 // }
140
141 /*
142 * (non-Javadoc)
143 * @see java.beans.PropertyEditorSupport#getAsText()
144 */
145 @Override
146 public String getAsText() {
147 AcopGraphParameters[] params = (AcopGraphParameters[]) getValue();
148 if (params == null || params.length == 0) return "";
149 StringBuffer buffer = new StringBuffer();
150 for (AcopGraphParameters cp : params) {
151 buffer.append(cp.toString() + ";");
152 }
153 return buffer.toString();
154 }
155
156
157 private void setValueSilently(Object value) {
158 super.setValue(value);
159 }
160 /*
161 * (non-Javadoc)
162 *
163 * @see java.beans.PropertyEditorSupport#setValue(java.lang.Object)
164 */
165 @Override
166 public void setValue(Object value) {
167 super.setValue(value);
168 if (editor != null) {
169 editor.setDisplayerParameters((AcopGraphParameters[]) value);
170 }
171 }
172 }
173
174 /* __oOo__ */