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 * TaskTableUI.java
26 *
27 * The Viewer/Controller for displaying and editing the list of Known Tasks
28 *****************************************************************************/
29
30 package zeus.generator;
31
32 import java.awt.*;
33 import java.awt.event.*;
34 import java.util.*;
35 import javax.swing.*;
36 import javax.swing.table.*;
37 import javax.swing.border.*;
38 import javax.swing.event.*;
39
40 import zeus.gui.*;
41 import zeus.gui.fields.*;
42 import zeus.util.*;
43
44 public class TaskTableUI extends JPanel {
45 protected JTable table;
46 protected TaskTableModel model;
47 protected AgentGenerator generator;
48
49 static final String[] ERROR_MESSAGE = {
50
51 };
52
53 public TaskTableUI(AgentGenerator generator, GeneratorModel genmodel) {
54 this.generator = generator;
55
56 model = new TaskTableModel(genmodel);
57 setPreferredSize(new Dimension(240,120));
58
59 TableColumnModel tm = new DefaultTableColumnModel();
60 TableColumn column;
61 column = new TableColumn(TaskTableModel.TASK,12,
62 new DefaultTableCellRenderer(),new DefaultCellEditor(new NameField()));
63 column.setHeaderValue(model.getColumnName(TaskTableModel.TASK));
64 tm.addColumn(column);
65 column = new TableColumn(TaskTableModel.TYPE,24);
66 column.setHeaderValue(model.getColumnName(TaskTableModel.TYPE));
67 tm.addColumn(column);
68
69 table = new JTable(model,tm);
70
71 table.getTableHeader().setReorderingAllowed(false);
72 table.setColumnSelectionAllowed(false);
73 table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
74
75 JScrollPane scrollPane = new JScrollPane(table);
76 scrollPane.setBorder(new BevelBorder(BevelBorder.LOWERED));
77 table.setBackground(java.awt.Color.white);
78
79
80 setLayout(new BorderLayout());
81 add(scrollPane,BorderLayout.CENTER);
82
83 MouseListener ml = new MouseAdapter() {
84 public void mouseClicked(MouseEvent e) {
85 int row = table.rowAtPoint(e.getPoint());
86 if ( row != -1 && table.isRowSelected(row) ) {
87 if ( e.getClickCount() == 2 )
88 editTask();
89 }
90 }
91 };
92 table.addMouseListener(ml);
93 }
94
95 void errorMsg(int tag) {
96 JOptionPane.showMessageDialog(this,ERROR_MESSAGE[tag],
97 "Error", JOptionPane.ERROR_MESSAGE);
98 }
99
100 protected String getSelectedTaskName() {
101 int row = table.getSelectedRow();
102 if ( row == -1 ) {
103 errorMsg(0);
104 return null;
105 }
106 return (String)model.getValueAt(row,TaskTableModel.TASK);
107 }
108
109 protected String getSelectedTaskId() {
110 int row = table.getSelectedRow();
111 if ( row == -1 ) {
112 errorMsg(0);
113 return null;
114 }
115 return (String)model.getValueAt(row,TaskTableModel.ID);
116 }
117
118 public void addNewTask(int type) {
119 model.addNewRow(type);
120 }
121
122 public void editTask() {
123 String id = getSelectedTaskId();
124 if ( id == null ) return;
125 generator.editTask(id);
126 }
127
128 public void removeTask() {
129 String id = getSelectedTaskId();
130 if ( id == null ) return;
131 generator.removeTask(id);
132 }
133
134 public void cloneTask() {
135 String id = getSelectedTaskId();
136 if ( id == null ) return;
137 generator.cloneTask(id);
138 }
139
140 public void renameTask() {
141 int row = table.getSelectedRow();
142 if ( row == -1 ) {
143 errorMsg(0);
144 return;
145 }
146 model.setEditable(true);
147 table.editCellAt(row,TaskTableModel.TASK);
148 model.setEditable(false);
149 }
150 }