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.Component;
26 import java.awt.Container;
27 import java.beans.PropertyChangeEvent;
28 import java.beans.PropertyChangeListener;
29 import java.beans.PropertyEditor;
30 import java.beans.PropertyEditorSupport;
31
32 import com.cosylab.gui.components.util.RunnerHelper;
33
34 import de.desy.acop.displayers.tools.AcopDisplayer;
35 import de.desy.acop.transport.ConnectionParameters;
36
37 /**
38 * <code>SelectorPropertyEditor</code> is a <code>PropertyEditor</code>
39 * for <code>ConnectionParameters</code>.
40 *
41 * @author <a href="mailto:jaka.bobnar@cosylab.com">Jaka Bobnar</a>
42 * @version $Id: Templates.xml,v 1.10 2004/01/13 16:17:13 jbobnar Exp $
43 * @see ConnectionParameters
44 */
45 public class SelectorPropertyEditor extends PropertyEditorSupport implements PropertyEditor {
46
47 private ConnectionCustomizer editor;
48
49 /**
50 * Creates new instance of SelectorPropertyEditor.
51 */
52 public SelectorPropertyEditor() {
53 super();
54 }
55
56 /*
57 * (non-Javadoc)
58 * @see java.beans.PropertyEditorSupport#getCustomEditor()
59 */
60 public Component getCustomEditor() {
61 if (editor == null) {
62 editor = new ConnectionCustomizer();
63 editor.setConnectButtonVisible(false);
64 editor.setConnectionParameters((ConnectionParameters)getValue());
65 editor.addPropertyChangeListener(AcopDisplayer.CONNECTION_PARAMETERS_PROPERTY, new PropertyChangeListener() {
66 public void propertyChange(PropertyChangeEvent evt) {
67 setValueSilently(editor.getConnectionParameters());
68 }
69 });
70 }
71
72 return editor;
73 }
74
75 /*
76 * (non-Javadoc)
77 * @see java.beans.PropertyEditorSupport#getJavaInitializationString()
78 */
79 public String getJavaInitializationString() {
80 ConnectionParameters param = (ConnectionParameters) getValue();
81 return "new de.desy.acop.transport.ConnectionParameters(\""+param.getRemoteName()+
82 "\",de.desy.acop.transport.AccessMode."+param.getAccessMode()+","+param.getAccessRate()+"," + param.getPropertySize() + ","+SelectorUtilities.getExtendedDataString(param)+")";
83 }
84
85 /*
86 * (non-Javadoc)
87 * @see java.beans.PropertyEditorSupport#supportsCustomEditor()
88 */
89 public boolean supportsCustomEditor() {
90 return true;
91 }
92
93 // public void setAsText(String text) {
94 // String[] values = text.split(",");
95 // setValue(new ConnectionParameters(values[0], AccessMode.valueOf(values[1]),Integer.parseInt(values[2])));
96 // }
97
98 private void setValueSilently(Object value) {
99 super.setValue(value);
100 }
101
102 /* (non-Javadoc)
103 * @see java.beans.PropertyEditorSupport#setValue(java.lang.Object)
104 */
105 @Override
106 public void setValue(Object value) {
107 super.setValue(value);
108 if (editor!=null) {
109 editor.setConnectionParameters((ConnectionParameters)value);
110 }
111 }
112
113 public static void main(String[] args) {
114 try {
115
116 SelectorPropertyEditor e= new SelectorPropertyEditor();
117 e.addPropertyChangeListener(new PropertyChangeListener() {
118
119 public void propertyChange(PropertyChangeEvent evt) {
120 System.out.println("E: "+evt.getPropertyName()+" "+evt.getNewValue());
121 }
122
123 });
124
125 Component c= e.getCustomEditor();
126
127 RunnerHelper.runComponent((Container)c,300,300);
128
129 } catch (Exception e) {
130 e.printStackTrace();
131 }
132 }
133 }
134
135
136 /* __oOo__ */