View Javadoc

1   /*
2   * The contents of this file are subject to the BT "ZEUS" Open Source 
3   * Licence (L77741), Version 1.0 (the "Licence"); you may not use this file 
4   * except in compliance with the Licence. You may obtain a copy of the Licence
5   * from $ZEUS_INSTALL/licence.html or alternatively from
6   * http://www.labs.bt.com/projects/agents/zeus/licence.htm
7   * 
8   * Except as stated in Clause 7 of the Licence, software distributed under the
9   * Licence is distributed WITHOUT WARRANTY OF ANY KIND, either express or 
10  * implied. See the Licence for the specific language governing rights and 
11  * limitations under the Licence.
12  * 
13  * The Original Code is within the package zeus.*.
14  * The Initial Developer of the Original Code is British Telecommunications
15  * public limited company, whose registered office is at 81 Newgate Street, 
16  * London, EC1A 7AJ, England. Portions created by British Telecommunications 
17  * public limited company are Copyright 1996-9. All Rights Reserved.
18  * 
19  * THIS NOTICE MUST BE INCLUDED ON ANY COPY OF THIS FILE
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       /* 0 */ "Please select a row before\ncalling this operation"
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      //Add the scroll pane to this panel.
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 }