View Javadoc

1   /*
2    * Copyright (c) 2003-2008 by Cosylab d. d.
3    *
4    * This file is part of CosyBeans-Common.
5    *
6    * CosyBeans-Common is free software: you can redistribute it and/or modify
7    * it under the terms of the GNU General Public License as published by
8    * the Free Software Foundation, either version 3 of the License, or
9    * (at your option) any later version.
10   *
11   * CosyBeans-Common is distributed in the hope that it will be useful,
12   * but WITHOUT ANY WARRANTY; without even the implied warranty of
13   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14   * GNU General Public License for more details.
15   *
16   * You should have received a copy of the GNU General Public License
17   * along with CosyBeans-Common.  If not, see <http://www.gnu.org/licenses/>.
18   */
19  
20  package com.cosylab.gui.components;
21  
22  import java.awt.BorderLayout;
23  import java.awt.Color;
24  import java.awt.event.ContainerEvent;
25  import java.awt.event.ContainerListener;
26  import java.awt.event.WindowAdapter;
27  import java.awt.event.WindowEvent;
28  
29  import javax.swing.JComponent;
30  import javax.swing.JFrame;
31  
32  import com.cosylab.application.state.State;
33  import com.cosylab.gui.components.ledder.BitDescriptor;
34  import com.cosylab.gui.components.ledder.DefaultBitDescriptor;
35  
36  
37  /**
38   * <code>LabelledLedder</code> ...  DOCUMENT ME!
39   *
40   * @author <a href="mailto:anze.zupanc@cosylab.com">Anze Zupanc</a>
41   * @version $Id: LabelledLedder.java,v 1.24 2008-04-22 12:28:40 jbobnar Exp $
42   *
43   * @since Jul 20, 2004.
44   */
45  public class LabelledLedder extends AbstractDisplayerPanel
46  {
47  
48  	//private BitmaskField bitmask=null;
49  	private static final long serialVersionUID = 1L;
50  
51  	/**
52  	 * DOCUMENT ME!
53  	 *
54  	 * @param args DOCUMENT ME!
55  	 */
56  	public static void main(String[] args)
57  	{
58  		LabelledLedder ll = new LabelledLedder("Labelled Ledder") ;
59  		DefaultBitDescriptor lm = new DefaultBitDescriptor();
60  		ll.setBitDescriptor(lm);
61  		
62  		int ledCount = 7;
63  
64  		String[] descText =
65  			{
66  				"1On",
67  				"2Sum Failure",
68  				"3DC Overcurrent",
69  				"4Remote",
70  				"5Phase Failure",
71  				"6External Interlock",
72  				"7Not Ready"};
73  
74  		long c = 0;
75  		long m = 1;
76  
77  		for (int i = 0; i < ledCount; i++) {
78  			Color con = Color.GREEN;
79  			Color cof = Color.RED;
80  			String cde;
81  
82  			if (i < descText.length) {
83  				cde = descText[i % descText.length];
84  			} else {
85  				int nChars = (int) (Math.random() * 12) + 2;
86  				cde = "";
87  				cde += (char) (int) (Math.random() * 25 + 65);
88  				for (int j = 0; j < nChars; j++) {
89  					cde += (char) (int) (Math.random() * 25 + 97);
90  				}
91  			}
92  			c += m;
93  			m *= 2;
94  			
95  			lm.add(cde, con, cof);
96  		}
97  		
98  		ll.setMask(c);
99  
100 		
101 
102 		JFrame frame = new JFrame("Ledder Testing Applet");
103 		frame.getContentPane().setLayout(new BorderLayout(10, 10));
104 		frame.getContentPane().add(ll);
105 		frame.setSize(500, 200);
106 		frame.addWindowListener(new WindowAdapter() {
107 				public void windowClosing(WindowEvent e)
108 				{
109 					System.exit(0);
110 				}
111 			});
112 	//	ll.setEditable(true);
113 		ll.setEditable(true);
114 		frame.setVisible(true);
115 /*		try {
116             Thread.sleep(2000);
117             ll.setBits(10);
118             Thread.sleep(2000);
119             ll.getLedder().setBits(15);
120             Thread.sleep(2000);
121             System.out.println(ll.getLedder().getBits());
122         } catch (InterruptedException e1) {
123             // TODO Auto-generated catch block
124             e1.printStackTrace();
125         }
126 */		
127 	}
128 
129 	private Ledder ledder;
130 	
131 	/**
132 	 * Creates a new LabelledLedder object.
133 	 */
134 	public LabelledLedder()
135 	{
136 		this(null);
137 	}
138 
139 	/**
140 	 * Creates a new LabelledLedder object.
141 	 *
142 	 * @param title DOCUMENT ME!
143 	 */
144 	public LabelledLedder(String title)
145 	{
146 		// TODO initialize with super constructor, use popup manager from parent
147 		super();
148 		
149 		setTitle(title);
150 
151 		setTitleVisible(true);
152 		setLayoutOrientation(DYNAMIC_LAYOUT);
153 		setResizable(true);
154 		setEnhanced(true);
155 	}
156 
157 	/**
158 	 * DOCUMENT ME!
159 	 *TODO prej je bil bitmask().getBits... vracal je 0!
160 	 * @return long
161 	 */
162 	public long getBits()
163 	{
164 		return getLedder().getBits();
165 	}
166 
167 	/**
168 	 * DOCUMENT ME!
169 	 *
170 	 * @return int
171 	 */
172 	
173 	protected Ledder getLedder()
174 	{
175 		if (ledder == null) {
176 			ledder = new Ledder();
177 			//			ledder.addPropertyChangeListener(new PropertyChangeListener() {
178 			//					/**
179 			//					 * @see java.beans.PropertyChangeListener#propertyChange(PropertyChangeEvent)
180 			//					 */
181 			//					public void propertyChange(PropertyChangeEvent evt)
182 			//					{
183 			//						firePropertyChange(evt.getPropertyName(),
184 			//						    evt.getOldValue(), evt.getNewValue());
185 			//					}
186 			//				});
187 			//ledder.addMouseListener(getPopupManager().getMouseHook());
188 			
189 			
190 			
191 			ledder.addContainerListener(new ContainerListener() {
192 				public void componentRemoved(ContainerEvent e) {
193 					e.getChild().removeMouseListener(getPopupManager().getMouseHook());
194 				}
195 				public void componentAdded(ContainerEvent e) {
196 					e.getChild().addMouseListener(getPopupManager().getMouseHook());
197 				}
198 			});
199 		
200 		}
201 
202 		return ledder;
203 	}
204 
205 	/**
206 	 * DOCUMENT ME!
207 	 *
208 	 * @return long
209 	 */
210 	public long getMask()
211 	{
212 		return getLedder().getMask();
213 	}
214 
215 	/**
216 	 * DOCUMENT ME!
217 	 *
218 	 * @return BitDescriptor
219 	 */
220 	public BitDescriptor getBitDescriptor()
221 	{
222 		return getLedder().getModel();
223 	}
224 
225 
226 	/**
227 	 * Overriden to implement additional features saving.
228 	 *
229 	 * @return state of the component.
230 	 */
231 	public State getState()
232 	{
233 		State state = super.getState();
234 
235 		return state;
236 	}
237 
238 	
239 	/**
240 	 * Returns value displaying GUI component: the <code>Wheelswitch</code>.
241 	 *
242 	 * @see AbstractDisplayerPanel#getValueComponent()
243 	 */
244 	protected JComponent getValueComponent()
245 	{
246 		return getLedder();
247 	}
248 
249 	/**
250 	 * Overriden to implement additional functionality.
251 	 *
252 	 * @see com.cosylab.gui.components.AbstractDisplayerPanel#setResizable(boolean)
253 	 */
254 	protected void internalSetResizable()
255 	{
256 		super.internalSetResizable();
257 		getLedder().revalidate();
258 	}
259 
260 	/**
261 	 * Returns whether the ledder can be edited  by the user.
262 	 *
263 	 * @return boolean
264 	 */
265 	public boolean isEditable()
266 	{
267 		return getLedder().isEditable();
268 	}
269 	
270 	public void setEditable(boolean editable){
271 	    getLedder().setEditable(editable);
272 	}
273 	/**
274 	 * If the reverseLedsOrder is <code>true<code> then the leds will be displayed
275 	 * in reverse order.
276 	 * 
277 	 * @return reverseLedsOrder boolean 
278 	 */
279 	public boolean isReverseLedsOrder() {
280 		return getLedder().isReverseLedsOrder();
281 	}
282 	/* (non-Javadoc)
283 	 * @see com.cosylab.gui.components.AbstractDisplayerPanel#layoutDisplayer()
284 	 */
285 	
286 	/**
287 	 * DOCUMENT ME!
288 	 *
289 	 * @param value long
290 	 */
291 	public void setBits(long value)
292 	{
293 		getLedder().setBits(value);
294 	}
295 
296 	/**
297 	 * DOCUMENT ME!
298 	 *
299 	 * @param value long
300 	 */
301 	public void setMask(long value)
302 	{
303 		getLedder().setMask(value);
304 	}
305 
306 	/**
307 	 * DOCUMENT ME!
308 	 *
309 	 * @param model BitDescriptor
310 	 */
311 	public void setBitDescriptor(BitDescriptor model)
312 	{
313 		getLedder().setModel(model);
314 	}
315 
316 	/**
317 	 * If the reverseLedsOrder is <code>true<code> then the leds will be displayed
318 	 * in reverse order.
319 	 * 
320 	 * @param b boolean
321 	 */
322 	public void setReverseLedsOrder(boolean b) {
323 		getLedder().setReverseLedsOrder(b);
324 	}
325 	
326 	/**
327 	 * Overriden to implement additional features loading.
328 	 *
329 	 * @param state to be loaded.
330 	 */
331 	public void setState(State state)
332 	{
333 		super.setState(state);
334 
335 	}
336 	
337 	
338 	public void setEnabled(boolean enabled){
339 	    getTitleComponent().setEnabled(enabled);
340 	}
341 	
342 
343 }
344 
345 /* __oOo__ */