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.beans.PropertyChangeEvent;
27  import java.beans.PropertyChangeListener;
28  import java.beans.PropertyEditorSupport;
29  
30  import com.cosylab.gui.adapters.ConverterUtilities;
31  
32  import de.desy.acop.displayers.table.AcopTableParameters;
33  import de.desy.acop.displayers.tools.MultipleAcopDisplayer;
34  import de.desy.acop.transport.ConnectionParameters;
35  
36  /**
37   * <code>TableSelectorPropertyEditor</code> is a <code>PropertyEditor</code>
38   * for <code>AcopTableParameters</code>.
39   * 
40   * @author <a href="mailto:jaka.bobnar@cosylab.com">Jaka Bobnar</a>
41   * @version $Id: Templates.xml,v 1.10 2004/01/13 16:17:13 jbobnar Exp $
42   * @see AcopTableParameters
43   */
44  public class TableSelectorPropertyEditor extends PropertyEditorSupport {
45  
46  	private TableConnectionCustomizer editor;
47  
48  	/**
49       * Creates new instance of SelectorPropertyEditor.
50       */
51  	public TableSelectorPropertyEditor() {
52  		super();
53  	}
54  
55  	/*
56  	 * (non-Javadoc)
57  	 * @see java.beans.PropertyEditorSupport#getCustomEditor()
58  	 */
59  	@Override
60  	public Component getCustomEditor() {
61  		if (editor == null) {
62  			editor = new TableConnectionCustomizer();
63  			editor.setDisplayerParameters((AcopTableParameters[]) getValue());
64  			editor.addPropertyChangeListener(MultipleAcopDisplayer.DISPLAYER_PARAMETERS_PROPERTY,
65  			        new PropertyChangeListener() {
66  				        public void propertyChange(PropertyChangeEvent evt) {
67  					        setValueSilently(editor.getDisplayerParameters());
68  				        }
69  			        });
70  		}
71  		return editor;
72  	}
73  
74  	/* 
75  	 * (non-Javadoc)
76  	 * @see java.beans.PropertyEditorSupport#getJavaInitializationString()
77  	 */
78  	@Override
79  	public String getJavaInitializationString() {
80  		AcopTableParameters[] params = (AcopTableParameters[]) getValue();
81  		StringBuffer buffer = new StringBuffer();
82  		buffer.append("new de.desy.acop.displayers.table.AcopTableParameters[]{");
83  		ConnectionParameters cp; 
84  		if (params != null) {
85  			for (AcopTableParameters p : params) {
86  				cp = p.getConnectionParameters();
87  				buffer.append("new de.desy.acop.displayers.table.AcopTableParameters(");
88  				buffer.append("new de.desy.acop.transport.ConnectionParameters(\""
89  				        + cp.getRemoteName()
90  				        + "\",de.desy.acop.transport.AccessMode."
91  				        + cp.getAccessMode() + ", " + cp.getAccessRate() + "," + cp.getPropertySize() + "," + SelectorUtilities.getExtendedDataString(cp) + "),");
92  				buffer.append("de.desy.acop.displayers.table.TableDisplayType."+p.getColumnType() + 
93  						(p.getConverter() == null ? ", null" : ", " + 
94  						ConverterUtilities.getInitializationString(p.getConverter())) + "),");
95  			}
96  		}
97  		return buffer.toString() + "}";
98  	}
99  
100 	/*
101 	 * (non-Javadoc)
102 	 * @see java.beans.PropertyEditorSupport#supportsCustomEditor()
103 	 */
104 	@Override
105 	public boolean supportsCustomEditor() {
106 		return true;
107 	}
108 	
109 
110 	/*
111 	 * (non-Javadoc)
112 	 * @see java.beans.PropertyEditorSupport#getAsText()
113 	 */
114 	@Override
115 	public String getAsText() {
116 		AcopTableParameters[] params = (AcopTableParameters[]) getValue();	
117 	    if (params == null || params.length == 0) return "";
118 	    StringBuffer buffer = new StringBuffer();
119 	    for (AcopTableParameters cp : params) {
120 	    	buffer.append(cp.toString() + ";");
121 	    }
122 	    return buffer.toString();
123 	}
124 
125 	
126 	private void setValueSilently(Object value) {
127 		super.setValue(value);
128 	}
129 	/*
130      * (non-Javadoc)
131      * 
132      * @see java.beans.PropertyEditorSupport#setValue(java.lang.Object)
133      */
134 	@Override
135 	public void setValue(Object value) {
136 		super.setValue(value);
137 		if (editor != null) {
138 			editor.setDisplayerParameters((AcopTableParameters[]) value);
139 		}
140 	}
141 }
142 
143 /* __oOo__ */