1
2 package org.xrn.gui;
3
4 import java.awt.Color;
5 import java.awt.Font;
6 import java.awt.event.ActionEvent;
7 import java.awt.event.ActionListener;
8 import java.util.List;
9 import java.util.Vector;
10
11 import javax.swing.JButton;
12 import javax.swing.JComponent;
13 import javax.swing.JPanel;
14 import javax.swing.JScrollPane;
15 import javax.swing.JTable;
16 import javax.swing.ListSelectionModel;
17 import javax.swing.border.TitledBorder;
18 import javax.swing.event.ListSelectionEvent;
19 import javax.swing.event.ListSelectionListener;
20
21 import org.xrn.xsd2java.Composition;
22 import org.xrn.xsd2java.impl.ComponentImpl;
23 import org.xrn.xsd2java.impl.CompositionImpl;
24
25 /***
26 *
27 * The Composition panel - composition (a list of components)
28 * @author Carsten Maneg
29 * Date Nov 13, 2004
30 * Time 11:34:26 PM
31 */
32 public class CompositionPanel extends JPanel implements ActionListener, ListSelectionListener{
33 private Font schriftTyp;
34
35 private JPanel panelOwner;
36 private OneReleaseComponentPanel componentPanel = null;
37 private SummaryPanel summaryPanel = null;
38 private JTable table = null;
39 private MyTableModel tableModel = null;
40 private JScrollPane scrollPane = null;
41 private JButton removeButton = new JButton( "Remove" );
42 private JButton addButton = new JButton( "Add" );
43
44 private Composition composition = new CompositionImpl();
45 private List componentList = null;
46
47 /***
48 * Constructor
49 * @param owner
50 */
51 public CompositionPanel( JPanel owner ){
52
53 setBorder( new TitledBorder( "" ) );
54 schriftTyp = new Font( "newFont", Font.BOLD, 14 );
55 setFont( schriftTyp );
56 setLayout( null );
57
58 panelOwner = owner;
59
60 componentPanel = new OneReleaseComponentPanel( this );
61 dlgObjHinzufuegen( componentPanel, 200, 25, 300, 150 );
62
63 summaryPanel = new SummaryPanel( this, "normal" );
64 dlgObjHinzufuegen( summaryPanel, 200, 185, 300, 160 );
65
66 createTable();
67 dlgObjHinzufuegen( scrollPane, 25, 25, 165, 150 );
68
69 addButton.addActionListener( this );
70 dlgObjHinzufuegen( addButton, 25, 185, 80, 20 );
71 removeButton.addActionListener( this );
72 dlgObjHinzufuegen( removeButton, 110, 185, 80, 20 );
73 }
74
75 /***
76 *
77 * @param c - The component to add
78 * @param x0
79 * @param y0
80 * @param width
81 * @param height
82 */
83 public void dlgObjHinzufuegen( JComponent c, int x0, int y0, int breite, int hoehe ){
84 c.setBounds( x0, y0, breite, hoehe );
85 c.setForeground( Color.black );
86 add(c);
87 }
88
89 /***
90 * Creates the component table to show the components of the release notes
91 *
92 */
93 public void createTable( ){
94
95 Vector columnName = new Vector( 1 );
96 columnName.addElement( "Component" );
97
98 tableModel = new MyTableModel( columnName, 0 );
99 table = new JTable( tableModel );
100
101
102
103 table.getColumnModel().getColumn( 0 ).setPreferredWidth( 100 );
104 table.getSelectionModel().addListSelectionListener( this );
105 table.setSelectionMode( ListSelectionModel.SINGLE_SELECTION );
106 scrollPane = new JScrollPane( table );
107 }
108
109 /***
110 * Delete the table input
111 *
112 */
113 public void resetTable( ){
114
115 for ( int i = tableModel.getRowCount() - 1; i >= 0 ; i-- )
116 tableModel.removeRow( i );
117 }
118
119 /***
120 * Write the releases list to the table
121 *
122 */
123 private void writeTable(){
124 int i = 0;
125 Vector sv = new Vector();
126 ComponentImpl component = null;
127
128 resetTable();
129 for( i=0; i < composition.getComponent().size(); i++ ){
130 component = (ComponentImpl)composition.getComponent().get( i );
131 sv = new Vector();
132 sv.addElement( component.getID() );
133 tableModel.addRow( sv );
134 }
135 if( composition.getComponent().size() > 0 )
136 table.setRowSelectionInterval( 0, 0 );
137 }
138
139 /***
140 * Handle the button events
141 */
142 public void actionPerformed( ActionEvent e ){
143 if ( e.getSource() == addButton ){
144 composition.getComponent().add( componentPanel.getFeatureComponent() );
145 writeTable();
146 }
147 if ( e.getSource() == removeButton ){
148 if( table.getSelectedRow() > -1 ){
149 composition.getComponent().remove( table.getSelectedRow() );
150 writeTable();
151 resetFields();
152 }
153 else{
154 MessageWindow.mitteilung( "No component selected !" );
155 }
156 }
157 }
158
159 /***
160 * Handle the table selection events
161 */
162 public void valueChanged( ListSelectionEvent e ){
163 if( table.getSelectedRow() > -1 ){
164 ComponentImpl component = (ComponentImpl)composition.getComponent().get( table.getSelectedRow() );
165 componentPanel.setFeatureComponent( component );
166 }
167 }
168
169 /***
170 *
171 *
172 */
173 public void resetFields( ){
174 componentPanel.resetFields();
175 summaryPanel.resetFields();
176 }
177
178 /***
179 *
180 * @return
181 */
182 public Composition getComposition(){
183 composition.setSummary( summaryPanel.getSummary() );
184 return this.composition;
185 }
186
187 /***
188 *
189 * @param composition
190 */
191 public void setComposition( Composition composition ){
192 this.composition = composition;
193 if( composition != null ){
194 componentList = composition.getComponent();
195 writeTable();
196 summaryPanel.setSummary( composition.getSummary() );
197 }
198 }
199 }