1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 /*****************************************************************************
25 * AgentPanel.java
26 *
27 *
28 ***************************************************************************/
29
30 package zeus.generator.code;
31
32 import java.io.*;
33 import java.util.*;
34 import java.awt.*;
35 import java.awt.event.*;
36 import javax.swing.*;
37 import javax.swing.border.*;
38 import javax.swing.table.*;
39 import javax.swing.event.*;
40
41 import zeus.util.*;
42 import zeus.gui.help.*;
43 import zeus.gui.editors.*;
44 import zeus.gui.fields.*;
45
46 public class AgentPanel extends JPanel {
47 protected GenerationPlan genplan;
48 protected AgentModel agentModel;
49 protected JTable agentTable;
50
51 public AgentPanel(GenerationPlan genplan) {
52 this.genplan = genplan;
53
54 agentModel = new AgentModel(genplan);
55
56 TableColumnModel tm = new DefaultTableColumnModel();
57 TableColumn column;
58 JCheckBox checkbox = new JCheckBox();
59 checkbox.setHorizontalAlignment(JCheckBox.CENTER);
60 DefaultCellEditor cellEditor = new DefaultCellEditor(checkbox);
61
62 column = new TableColumn(AgentModel.GENERATE,8,
63 new CheckBoxCellRenderer(), cellEditor);
64 column.setHeaderValue(agentModel.getColumnName(AgentModel.GENERATE));
65 tm.addColumn(column);
66
67 column = new TableColumn(AgentModel.STATUS,24);
68 column.setHeaderValue(agentModel.getColumnName(AgentModel.STATUS));
69 tm.addColumn(column);
70
71 column = new TableColumn(AgentModel.NAME,24);
72 column.setHeaderValue(agentModel.getColumnName(AgentModel.NAME));
73 tm.addColumn(column);
74
75 column = new TableColumn(AgentModel.HOST,24);
76 column.setHeaderValue(agentModel.getColumnName(AgentModel.HOST));
77 tm.addColumn(column);
78
79 column = new TableColumn(AgentModel.SERVER_FILE,24);
80 column.setHeaderValue(agentModel.getColumnName(AgentModel.SERVER_FILE));
81 tm.addColumn(column);
82
83 column = new TableColumn(AgentModel.DATABASE,24);
84 column.setHeaderValue(agentModel.getColumnName(AgentModel.DATABASE));
85 tm.addColumn(column);
86
87 column = new TableColumn(AgentModel.HAS_GUI,24,
88 new CheckBoxCellRenderer(), cellEditor);
89 column.setHeaderValue(agentModel.getColumnName(AgentModel.HAS_GUI));
90 tm.addColumn(column);
91
92 column = new TableColumn(AgentModel.EXTERNAL,24);
93 column.setHeaderValue(agentModel.getColumnName(AgentModel.EXTERNAL));
94 tm.addColumn(column);
95
96 column = new TableColumn(AgentModel.ICON,24,
97 new IconRenderer(), new IconEditor());
98 column.setHeaderValue(agentModel.getColumnName(AgentModel.ICON));
99 tm.addColumn(column);
100
101 agentTable = new JTable(agentModel,tm);
102 agentTable.getTableHeader().setReorderingAllowed(false);
103 agentTable.setColumnSelectionAllowed(false);
104
105 TitledBorder border = BorderFactory.createTitledBorder("Task Agents");
106 border.setTitlePosition(TitledBorder.TOP);
107 border.setTitleJustification(TitledBorder.RIGHT);
108 border.setTitleFont(new Font("Helvetica", Font.BOLD, 14));
109 border.setTitleColor(Color.blue);
110 setBorder(border);
111
112 JScrollPane scrollPane = new JScrollPane(agentTable);
113 scrollPane.setBorder(new BevelBorder(BevelBorder.LOWERED));
114 scrollPane.setMinimumSize(new Dimension(160,80));
115 scrollPane.setPreferredSize(new Dimension(200,80));
116 agentTable.setBackground(Color.white);
117
118 GridBagLayout gridBagLayout = new GridBagLayout();
119 setLayout(gridBagLayout);
120 GridBagConstraints gbc;
121 setBackground(Color.lightGray);
122
123 JToolBar toolbar = new AgentToolBar();
124 gbc = new GridBagConstraints();
125 gbc.anchor = GridBagConstraints.NORTHWEST;
126 gbc.fill = GridBagConstraints.NONE;
127 gbc.gridwidth = GridBagConstraints.REMAINDER;
128 gbc.insets = new Insets(0,8,0,0);
129 gridBagLayout.setConstraints(toolbar,gbc);
130 add(toolbar);
131
132 gbc = new GridBagConstraints();
133 gbc.gridwidth = GridBagConstraints.REMAINDER;
134 gbc.anchor = GridBagConstraints.NORTHWEST;
135 gbc.fill = GridBagConstraints.BOTH;
136 gbc.weightx = gbc.weighty = 1;
137 gbc.insets = new Insets(8,8,8,8);
138 gridBagLayout.setConstraints(scrollPane,gbc);
139 add(scrollPane);
140 }
141
142 protected class CheckBoxCellRenderer extends JCheckBox
143 implements TableCellRenderer,
144 java.io.Serializable {
145
146 public CheckBoxCellRenderer() {
147 setHorizontalAlignment(JCheckBox.CENTER);
148 }
149
150 public Component getTableCellRendererComponent(JTable table,
151 Object value, boolean isSelected, boolean hasFocus,
152 int row, int column) {
153
154 if ( value != null )
155 this.setSelected(((Boolean)value).booleanValue());
156 return this;
157 }
158 }
159
160 protected class IconRenderer extends DefaultTableCellRenderer {
161 public IconRenderer() {
162 setHorizontalAlignment(JLabel.CENTER);
163 }
164 public void setValue(Object value) {
165 if ( value == null ) return;
166
167 String path = ((String)value).trim();
168 if ( path.equals("") ) return;
169
170 super.setIcon(new ImageIcon(path));
171 }
172 }
173
174 class IconEditor extends DefaultCellEditor
175 implements ActionListener {
176
177 protected JButton button = new JButton("");
178 protected int row, column;
179 protected Object value;
180 protected FileDialog dialog = null;
181
182 public IconEditor() {
183 super(new JTextField());
184 setClickCountToStart(1);
185
186 button.setBackground(Color.white);
187 button.setHorizontalAlignment(JButton.LEFT);
188 button.setBorderPainted(false);
189 button.addActionListener(this);
190 }
191
192 public void actionPerformed(ActionEvent e) {
193 Object src = e.getSource();
194 if ( src == button ) {
195
196
197 if ( dialog == null )
198 dialog = new FileDialog((Frame)SwingUtilities.getRoot(button),
199 "Select (a file within) Target Directory",FileDialog.LOAD);
200
201 fireEditingCanceled();
202
203 if ( value != null && !value.equals("") ) {
204 File f1 = new File((String)value);
205 dialog.setFile(f1.getName());
206 dialog.setDirectory(f1.getParent());
207 }
208 else
209 dialog.setFile("*.gif");
210
211 dialog.pack();
212 dialog.setVisible(true);
213
214 String path = (dialog.getFile() == null) ? null : dialog.getDirectory() +
215 System.getProperty("file.separator") + dialog.getFile();
216 agentModel.setValueAt(path,row,column);
217 }
218 }
219
220 public Component getTableCellEditorComponent(JTable table, Object value,
221 boolean isSelected,
222 int row, int column) {
223 this.row = row;
224 this.column = column;
225 this.value = value;
226 return button;
227 }
228 }
229
230 protected class AgentToolBar extends JToolBar
231 implements ActionListener {
232
233 protected JToggleButton helpBtn;
234 protected HelpWindow helpWin;
235
236 public AgentToolBar() {
237 setBackground(Color.lightGray);
238 setBorder( new BevelBorder(BevelBorder.LOWERED ) );
239 setFloatable(false);
240 String path = SystemProps.getProperty("gif.dir") + "generator" +
241 System.getProperty("file.separator");
242
243
244 helpBtn = new JToggleButton(new ImageIcon(path + "help.gif"));
245 helpBtn.setMargin(new Insets(0,0,0,0));
246 add(helpBtn);
247 helpBtn.setToolTipText("Help");
248 helpBtn.addActionListener(this);
249 }
250
251 public void actionPerformed(ActionEvent e) {
252 Object src = e.getSource();
253 if ( src == helpBtn ) {
254 if ( helpBtn.isSelected() ) {
255 helpWin = new HelpWindow(SwingUtilities.getRoot(this),
256 getLocation(), "generator", "Generation Plan: Agents");
257 helpWin.setSource(helpBtn);
258 }
259 else {
260 helpWin.dispose();
261 }
262 }
263 }
264 }
265 }