1
2 package org.xrn.gui;
3
4 import java.awt.Color;
5 import java.awt.event.ActionEvent;
6 import java.awt.event.ActionListener;
7 import java.awt.event.MouseEvent;
8 import java.awt.event.MouseListener;
9 import java.util.Vector;
10
11 import javax.swing.JButton;
12 import javax.swing.JComponent;
13 import javax.swing.JLabel;
14 import javax.swing.JPanel;
15 import javax.swing.JScrollPane;
16 import javax.swing.JTable;
17 import javax.swing.JTextField;
18 import javax.swing.ListSelectionModel;
19 import javax.swing.border.TitledBorder;
20 import javax.swing.event.ListSelectionEvent;
21 import javax.swing.event.ListSelectionListener;
22
23 import org.xrn.xsd2java.Feature.AskingPersonsType;
24 import org.xrn.xsd2java.Feature.ContributorsType;
25 import org.xrn.xsd2java.impl.ContentTypeImpl;
26 import org.xrn.xsd2java.impl.FeatureImpl;
27 import org.xrn.xsd2java.impl.FeatureImpl.ContributorsTypeImpl.ActorTypeImpl;
28
29
30
31
32
33
34
35
36 public class OneFeaturePanel extends JPanel implements ActionListener, MouseListener, ListSelectionListener{
37
38 private FeaturesPanel panelOwner = null;
39 private JTable itemTable = null;
40 private MyTableModel itemTableModel = null;
41 private JScrollPane itemScrollPane = null;
42
43 private MyTableModel contributorTableModel = null;
44 private JTable contributorTable = null;
45 private JScrollPane contributorScrollPane = null;
46
47 private MyTableModel askPersonTableModel = null;
48 private JTable askPersonTable = null;
49 private JScrollPane askPersonScrollPane = null;
50
51 private JLabel idLabel = new JLabel( "Name (ID)" );
52 private JTextField idField = new JTextField();
53 private JLabel parentIDLabel = new JLabel( "Parent (ID)" );
54 private JTextField parentIDField = new JTextField();
55 private JLabel typeLabel = new JLabel( "Type" );
56 private JTextField typeField = new JTextField();
57 private JLabel reasonLabel = new JLabel( "Reason" );
58 private JTextField reasonField = new JTextField();
59 private JLabel categoryLabel = new JLabel( "Category" );
60 private JTextField categoryField = new JTextField();
61 private JLabel titleLabel = new JLabel( "Title" );
62 private JTextField titleField = new JTextField();
63 private JLabel fixIDLabel = new JLabel( "Fix ID" );
64 private JTextField fixIDField = new JTextField();
65 private JLabel contributorLabel = new JLabel( "Contributor ID" );
66 private JTextField contributorField = new JTextField();
67 private JLabel importanceLabel = new JLabel( "Importance" );
68 private JTextField importanceField = new JTextField();
69
70 private JButton removeButton = new JButton( "Remove" );
71 private JButton addButton = new JButton( "Add" );
72 private JButton modifyButton = new JButton( "Modify" );
73
74 private FeatureImpl feature = null;
75
76 /***
77 * Constructor
78 * @param owner - parent of the panel
79 */
80 public OneFeaturePanel( FeaturesPanel owner ){
81
82 setBorder( new TitledBorder( " Feature " ) );
83 setLayout( null );
84
85 panelOwner = owner;
86
87 typeLabel.setFont( XRNConstants.FONT_BOLD );
88
89 dlgObjHinzufuegen( idLabel, 20, 15, 80, 20 );
90 dlgObjHinzufuegen( idField, 105, 15, 120, 20 );
91 dlgObjHinzufuegen( parentIDLabel, 20, 45, 80, 20 );
92 dlgObjHinzufuegen( parentIDField, 105, 45, 120, 20 );
93 dlgObjHinzufuegen( typeLabel, 20, 75, 80, 20 );
94 dlgObjHinzufuegen( typeField, 105, 75, 120, 20 );
95 dlgObjHinzufuegen( titleLabel, 20, 105, 80, 20 );
96 dlgObjHinzufuegen( titleField, 105, 105, 120, 20 );
97 dlgObjHinzufuegen( reasonLabel, 20, 135, 80, 20 );
98 dlgObjHinzufuegen( reasonField, 105, 135, 120, 20 );
99 dlgObjHinzufuegen( categoryLabel, 20, 165, 80, 20 );
100 dlgObjHinzufuegen( categoryField, 105, 165, 120, 20 );
101
102 dlgObjHinzufuegen( fixIDLabel, 20, 195, 80, 20 );
103 dlgObjHinzufuegen( fixIDField, 105, 195, 120, 20 );
104 dlgObjHinzufuegen( contributorLabel, 20, 225, 80, 20 );
105 dlgObjHinzufuegen( contributorField, 105, 225, 120, 20 );
106 dlgObjHinzufuegen( importanceLabel, 20, 255, 80, 20 );
107 dlgObjHinzufuegen( importanceField, 105, 255, 120, 20 );
108
109 addButton.addActionListener( this );
110 dlgObjHinzufuegen( addButton, 20, 295, 80, 20 );
111 modifyButton.addActionListener( this );
112 dlgObjHinzufuegen( modifyButton, 105, 295, 80, 20 );
113 removeButton.addActionListener( this );
114 dlgObjHinzufuegen( removeButton, 190, 295, 80, 20 );
115
116 createItemTable();
117 dlgObjHinzufuegen( itemScrollPane, 240, 15, 120, 120 );
118
119 createContributorTable();
120 dlgObjHinzufuegen( contributorScrollPane, 370, 15, 110, 120 );
121
122 createAskPersonTable();
123 dlgObjHinzufuegen( askPersonScrollPane, 240, 155, 120, 120 );
124 }
125
126 /***
127 *
128 *
129 */
130 public void createItemTable( ){
131
132 Vector spaltenNamen = new Vector( 1 );
133 spaltenNamen.addElement( "Item" );
134
135 itemTableModel = new MyTableModel( spaltenNamen, 0 );
136 itemTable = new JTable( itemTableModel );
137
138
139
140 itemTable.getColumnModel().getColumn( 0 ).setPreferredWidth( 120 );
141 itemTable.getSelectionModel().addListSelectionListener( this );
142 itemTable.setSelectionMode( ListSelectionModel.SINGLE_SELECTION );
143 itemTable.addMouseListener( this );
144 itemScrollPane = new JScrollPane( itemTable );
145
146 }
147
148 /***
149 *
150 *
151 */
152 public void createContributorTable( ){
153
154 Vector spaltenNamen = new Vector( 1 );
155 spaltenNamen.addElement( "Contributor" );
156
157 itemTableModel = new MyTableModel( spaltenNamen, 0 );
158 contributorTable = new JTable( itemTableModel );
159
160
161
162 contributorTable.getColumnModel().getColumn( 0 ).setPreferredWidth( 120 );
163 contributorTable.getSelectionModel().addListSelectionListener( this );
164 contributorTable.setSelectionMode( ListSelectionModel.SINGLE_SELECTION );
165 contributorTable.addMouseListener( this );
166 contributorScrollPane = new JScrollPane( contributorTable );
167
168 }
169 /***
170 *
171 *
172 */
173 public void createAskPersonTable( ){
174
175 Vector spaltenNamen = new Vector( 1 );
176 spaltenNamen.addElement( "Asking Person" );
177
178 itemTableModel = new MyTableModel( spaltenNamen, 0 );
179 askPersonTable = new JTable( itemTableModel );
180
181
182
183 askPersonTable.getColumnModel().getColumn( 0 ).setPreferredWidth( 120 );
184 askPersonTable.getSelectionModel().addListSelectionListener( this );
185 askPersonTable.setSelectionMode( ListSelectionModel.SINGLE_SELECTION );
186 askPersonTable.addMouseListener( this );
187 askPersonScrollPane = new JScrollPane( askPersonTable );
188
189 }
190
191 /***
192 *
193 * @param c
194 * @param x0
195 * @param y0
196 * @param width
197 * @param height
198 */
199 public void dlgObjHinzufuegen( JComponent c, int x0, int y0, int width, int height ){
200 c.setBounds( x0, y0, width, height );
201 c.setForeground( Color.black );
202 add(c);
203 }
204
205 /***
206 * Handle the button actions
207 */
208 public void actionPerformed( ActionEvent e ){
209 if ( e.getSource() == modifyButton ){
210 if( panelOwner.getFeatureTable().getSelectedRow() > -1 ){
211 panelOwner.getFeatures().getFeature().remove( panelOwner.getFeatureTable().getSelectedRow() );
212 panelOwner.getFeatures().getFeature().add( panelOwner.getFeatureTable().getSelectedRow(), getFeature() );
213 }
214 else
215 panelOwner.getFeatures().getFeature().add( getFeature() );
216 panelOwner.writeTable();
217 feature = null;
218 }
219 if ( e.getSource() == addButton ){
220 feature = null;
221 panelOwner.getFeatures().getFeature().add( getFeature() );
222 panelOwner.writeTable();
223 feature = null;
224 }
225 if ( e.getSource() == removeButton ){
226 if( panelOwner.getFeatureTable().getSelectedRow() > -1 ){
227 panelOwner.getFeatures().getFeature().remove( panelOwner.getFeatureTable().getSelectedRow() );
228 panelOwner.writeTable();
229 resetFields();
230 }
231 else{
232 MessageWindow.mitteilung( "No component selected !" );
233 }
234 }
235 }
236
237 /***
238 * Delete the input fields
239 *
240 */
241 public void resetFields( ){
242 idField.setText( "" );
243 parentIDField.setText( "" );
244 typeField.setText( "" );
245 reasonField.setText( "" );
246 categoryField.setText( "" );
247 titleField.setText( "" );
248 fixIDField.setText( "" );
249 contributorField.setText( "" );
250 importanceField.setText( "" );
251 }
252
253 /***
254 * Read the input fields to the single feature object
255 * @return
256 */
257 public FeatureImpl getFeature(){
258 if( feature == null ){
259 feature = new FeatureImpl();
260 }
261 ContentTypeImpl title = new ContentTypeImpl();
262 title.setContentType( titleField.getText() );
263 feature.setTitle( title );
264
265 feature.getItem().add( new ContentTypeImpl() );
266
267 feature.setID( idField.getText( ) );
268 feature.setParentID( parentIDField.getText( ) );
269 feature.setType( typeField.getText( ) );
270 feature.setReason( reasonField.getText( ) );
271 feature.setCategory( categoryField.getText( ) );
272
273 feature.setFixID( fixIDField.getText( ) );
274 feature.setContributorID( contributorField.getText( ) );
275 feature.setImportance( importanceField.getText( ) );
276
277 return feature;
278 }
279
280 /***
281 * Write the values to the fields
282 *
283 */
284 public void setFeature( FeatureImpl newFeature ){
285 this.feature = newFeature;
286 idField.setText( feature.getID() );
287 parentIDField.setText( feature.getParentID() );
288 typeField.setText( feature.getType() );
289 reasonField.setText( feature.getReason() );
290 categoryField.setText( feature.getCategory() );
291 titleField.setText( feature.getAskingPersonID() );
292 fixIDField.setText( feature.getFixID() );
293 contributorField.setText( feature.getContributorID() );
294 importanceField.setText( feature.getImportance() );
295 writeItemTable();
296 writeContributorTable();
297 writeAskPersonTable();
298 }
299
300 /***
301 * Write the item list to the table
302 *
303 */
304 private void writeItemTable(){
305 int i = 0;
306 Vector sv = new Vector();
307 ContentTypeImpl item = null;
308
309 resetTable();
310 for( i=0; i < feature.getItem().size(); i++ ){
311 item = (ContentTypeImpl)feature.getItem().get( i );
312 sv = new Vector();
313 sv.addElement( item.getContentType() );
314 itemTableModel.addRow( sv );
315 }
316 }
317
318 /***
319 * Write the contributor list to the table
320 *
321 */
322 private void writeContributorTable(){
323 int i = 0;
324 Vector sv = new Vector();
325 ContributorsType contributors = feature.getContributors();
326 ActorTypeImpl actor = null;
327
328 resetTable();
329 if( contributors != null ){
330 for( i=0; i < contributors.getActor().size(); i++ ){
331 actor = (ActorTypeImpl)contributors.getActor().get( i );
332 sv = new Vector();
333 sv.addElement( actor.getID() );
334 contributorTableModel.addRow( sv );
335 }
336 }
337 }
338
339 /***
340 * Write the asking person list to the table
341 *
342 */
343 private void writeAskPersonTable(){
344 int i = 0;
345 Vector sv = new Vector();
346 AskingPersonsType persons = feature.getAskingPersons();
347 ActorTypeImpl actor = null;
348
349 resetTable();
350 if( persons != null ){
351 for( i=0; i < persons.getActor().size(); i++ ){
352 actor = (ActorTypeImpl)persons.getActor().get( i );
353 sv = new Vector();
354 sv.addElement( actor.getID() );
355 askPersonTableModel.addRow( sv );
356 }
357 }
358 }
359
360 /***
361 * Delete the table input
362 *
363 */
364 public void resetTable( ){
365 for ( int i = itemTableModel.getRowCount() - 1; i >= 0 ; i-- )
366 itemTableModel.removeRow( i );
367 }
368
369 /***
370 * Handle the table selection events
371 */
372 public void valueChanged( ListSelectionEvent e ){
373
374
375
376
377 }
378
379 public void mouseClicked( MouseEvent me ){
380
381 }
382
383 public void mouseEntered( MouseEvent me ){
384 }
385
386 public void mouseExited( MouseEvent me ){
387 }
388
389 public void mousePressed( MouseEvent me ){
390 }
391
392 public void mouseReleased( MouseEvent me ){
393 }
394
395 }