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