View Javadoc

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__ */