1 package org.wcb.autohome.util.ui;
2 /***
3 * Copyright (C) 1999 Walter Bogaardt
4 *
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2 of the License, or (at your option) any later version.
9 *
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
14 *
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this library; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
18 *
19 * Project: Home Automation Interface
20 *
21 */
22
23 import java.awt.Component;
24 import javax.swing.JLabel;
25 import javax.swing.ImageIcon;
26 import javax.swing.JTable;
27 import javax.swing.table.DefaultTableCellRenderer;
28 import org.wcb.autohome.AutoHomeAdminSession;
29 import org.wcb.autohome.interfaces.X10DeviceConstants;
30 import org.wcb.autohome.interfaces.IMacroTrigger;
31
32 /***
33 * Filename: $Id: TriggerRender.java,v 1.4 2004/07/22 03:06:50 wbogaardt Exp $
34 *
35 * Abstract: This class renders an icon on a jtable cell. It helps to have
36 * a graphical representation of the item rather than just text.
37 *
38 * $Log: TriggerRender.java,v $
39 * Revision 1.4 2004/07/22 03:06:50 wbogaardt
40 * removed deprecated method calls.
41 *
42 * Revision 1.3 2004/02/27 01:29:53 wbogaardt
43 * modified classes so they conform to Checkstyle format in readability
44 *
45 * Revision 1.2 2004/01/16 00:53:43 wbogaardt
46 * Fixed a very obscure bug with the Macro Panel that it didn't added new
47 * x10 devices to the drop down of available x10 device for the macro. Modified Macro triggers to change
48 * the events to integer verses strings cleaner this way.
49 *
50 * Revision 1.1 2004/01/15 21:06:57 wbogaardt
51 * new render and directory
52 *
53 *
54 */
55 public class TriggerRender extends DefaultTableCellRenderer implements X10DeviceConstants {
56
57 private ImageIcon onBulb = AutoHomeAdminSession.LIGHTICON;
58 private ImageIcon offBulb = AutoHomeAdminSession.LIGHTICON_OFF;
59 private ImageIcon onPlug = AutoHomeAdminSession.APPLIANCEICON;
60 private ImageIcon offPlug = AutoHomeAdminSession.APPLIANCEICON_OFF;
61 private ImageIcon timeIcon = AutoHomeAdminSession.CLOCKICON;
62 private ImageIcon eventIcon = AutoHomeAdminSession.CAUTIONICON;
63
64
65 /***
66 * This sets up the trigger render component.
67 */
68 public TriggerRender() {
69 setHorizontalAlignment(JLabel.CENTER);
70 }
71
72 /***
73 * This sets up the customized cell render. Return a component that has been configured to display the specified
74 * value. That component's paint method is then called to "render" the cell. If it is necessary to compute the
75 * dimensions of a list because the list cells do not have a fixed size, this method is called to
76 * generate a component on which getPreferredSize can be invoked.
77 *
78 * @param table The JTable we're painting.
79 * @param value The value returned by list.getModel().getElementAt(index).
80 * @param isSelected True if the specified cell was selected.
81 * @param hasFocus True if the specified cell has the focus.
82 * @param row The row of the selected table
83 * @param col the column of the selected table
84 * @return A component whose paint() method will render the specified value.
85 */
86 public Component getTableCellRendererComponent(JTable table, Object value,
87 boolean isSelected,
88 boolean hasFocus,
89 int row, int col) {
90 IMacroTrigger idevice = (IMacroTrigger) value;
91 switch(idevice.getTriggerType())
92 {
93 case LAMP_MODULE_ON:
94 super.setIcon(onBulb);
95 return this;
96 case APPLIANCE_MODULE_ON:
97 super.setIcon(onPlug);
98 return this;
99 case TIMER_EVENT:
100 super.setText("Timer");
101 super.setIcon(timeIcon);
102 return this;
103 case TRIGGER_EVENT:
104 super.setText("Trigger");
105 super.setIcon(eventIcon);
106 return this;
107 default:
108 return this;
109 }
110 }
111 }