View Javadoc

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   * The releases panel - shows the list of releases
32   * @author Carsten Maneg
33   * Date Nov 12, 2004
34   * Time 11:10:59 PM
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     	//table.setAutoResizeMode( JTable.AUTO_RESIZE_OFF );
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 //    	dlgObjHinzufuegen( itemScrollPane, 25, 25, 150, 250 );    	
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     	//table.setAutoResizeMode( JTable.AUTO_RESIZE_OFF );
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 //    	dlgObjHinzufuegen( itemScrollPane, 25, 25, 150, 250 );    	
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     	//table.setAutoResizeMode( JTable.AUTO_RESIZE_OFF );
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 //    	dlgObjHinzufuegen( itemScrollPane, 25, 25, 150, 250 );    	
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         // TODO just a test; should read the table
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 //        feature.setTitle( titleField.getText( ) );
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 //        if( table.getSelectedRow() > -1 ){
374 //            this.feature = (FeatureImpl)features.getFeature().get( table.getSelectedRow() );
375 //            setFeature();
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 }