]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdMsaFiles.java
Fixed the unchecked warning issues when building GenBuild
[mirror_edk2.git] / Tools / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / packaging / ui / SpdMsaFiles.java
CommitLineData
a13899c5 1/** @file\r
2 Java class SpdMsaFiles is GUI for create library definition elements of spd file.\r
3 \r
4Copyright (c) 2006, Intel Corporation\r
5All rights reserved. This program and the accompanying materials\r
6are licensed and made available under the terms and conditions of the BSD License\r
7which accompanies this distribution. The full text of the license may be found at\r
8http://opensource.org/licenses/bsd-license.php\r
9\r
10THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
11WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
12**/\r
13package org.tianocore.frameworkwizard.packaging.ui;\r
14\r
15import java.awt.BorderLayout;\r
16import java.awt.Dimension;\r
17import java.awt.Toolkit;\r
18import java.awt.event.ActionEvent;\r
19import java.awt.event.ActionListener;\r
20import java.awt.event.ComponentEvent;\r
21import java.io.File;\r
22import java.util.Vector;\r
23\r
24import javax.swing.AbstractAction;\r
25import javax.swing.DefaultListModel;\r
26import javax.swing.JFileChooser;\r
27import javax.swing.JOptionPane;\r
28import javax.swing.JPanel;\r
29import javax.swing.JRadioButton;\r
30import javax.swing.JTable;\r
31import javax.swing.JTextField;\r
32import javax.swing.JComboBox;\r
33import javax.swing.JLabel;\r
34import javax.swing.JList;\r
35import javax.swing.JScrollPane;\r
36import javax.swing.JButton;\r
37import javax.swing.JFrame;\r
38import javax.swing.ListSelectionModel;\r
39import javax.swing.event.InternalFrameAdapter;\r
40import javax.swing.event.InternalFrameEvent;\r
41import javax.swing.event.ListSelectionEvent;\r
42import javax.swing.event.ListSelectionListener;\r
43import javax.swing.event.TableModelEvent;\r
44import javax.swing.event.TableModelListener;\r
45import javax.swing.table.DefaultTableModel;\r
46import javax.swing.table.TableModel;\r
47\r
48import org.tianocore.PackageSurfaceAreaDocument;\r
49import org.tianocore.frameworkwizard.common.DataType;\r
50import org.tianocore.frameworkwizard.common.Tools;\r
51import org.tianocore.frameworkwizard.common.ui.IInternalFrame;\r
52import org.tianocore.frameworkwizard.common.ui.StarLabel;\r
53\r
54/**\r
55 GUI for create library definition elements of spd file.\r
56 \r
57 @since PackageEditor 1.0\r
58**/\r
59public class SpdMsaFiles extends IInternalFrame implements TableModelListener{\r
60 static JFrame frame;\r
61 \r
62 private JScrollPane jScrollPane = null; // @jve:decl-index=0:visual-constraint="10,95"\r
63\r
64 private JTable jTable = null;\r
65\r
66 private DefaultTableModel model = null;\r
67\r
68 private JPanel jContentPane = null;\r
69\r
70 private JScrollPane jScrollPane1 = null;\r
71\r
72 private JButton jButtonAdd = null;\r
73\r
74 private JButton jButtonRemove = null;\r
75\r
76 private JButton jButtonClearAll = null;\r
77\r
78 private JButton jButtonCancel = null;\r
79\r
80 private JButton jButtonOk = null;\r
81\r
82 private JLabel jLabel = null;\r
83\r
84 private JTextField jTextField = null;\r
85\r
86 private JButton jButtonBrowse = null;\r
87 \r
88 private StarLabel jStarLabel2 = null;\r
89 \r
90 private SpdFileContents sfc = null;\r
91\r
92 private int selectedRow = -1; \r
93\r
94 /**\r
95 This method initializes this\r
96 \r
97 **/\r
98 private void initialize() {\r
99 \r
100 this.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);\r
101\r
102 }\r
103\r
104 /**\r
105 This method initializes jScrollPane \r
106 \r
107 @return javax.swing.JScrollPane \r
108 **/\r
109 private JScrollPane getJScrollPane1() {\r
110 if (jScrollPane1 == null) {\r
111 jScrollPane1 = new JScrollPane();\r
112 jScrollPane1.setBounds(new java.awt.Rectangle(13,177,461,139));\r
113 jScrollPane1.setViewportView(getJTable());\r
114 }\r
115 return jScrollPane1;\r
116 }\r
117\r
118 /**\r
119 This method initializes jTable \r
120 \r
121 @return javax.swing.JTable \r
122 **/\r
123 private JTable getJTable() {\r
124 if (jTable == null) {\r
125 model = new DefaultTableModel();\r
126 jTable = new JTable(model);\r
127 jTable.setRowHeight(20);\r
128 model.addColumn("MsaFile");\r
129 \r
130 jTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
131 jTable.getSelectionModel().addListSelectionListener(new ListSelectionListener(){\r
132 public void valueChanged(ListSelectionEvent e) {\r
133 if (e.getValueIsAdjusting()){\r
134 return;\r
135 }\r
136 ListSelectionModel lsm = (ListSelectionModel)e.getSource();\r
137 if (lsm.isSelectionEmpty()) {\r
138 return;\r
139 }\r
140 else{\r
141 selectedRow = lsm.getMinSelectionIndex();\r
142 }\r
143 }\r
144 });\r
145 \r
146 jTable.getModel().addTableModelListener(this);\r
147 }\r
148 return jTable;\r
149 }\r
150 /**\r
151 This method initializes jButtonAdd \r
152 \r
153 @return javax.swing.JButton \r
154 **/\r
155 private JButton getJButtonAdd() {\r
156 if (jButtonAdd == null) {\r
157 jButtonAdd = new JButton();\r
158 jButtonAdd.setBounds(new java.awt.Rectangle(163,148,90,20));\r
159 jButtonAdd.setText("Add");\r
160 jButtonAdd.addActionListener(this);\r
161 }\r
162 return jButtonAdd;\r
163 }\r
164\r
165 /**\r
166 This method initializes jButtonRemove \r
167 \r
168 @return javax.swing.JButton \r
169 **/\r
170 private JButton getJButtonRemove() {\r
171 if (jButtonRemove == null) {\r
172 jButtonRemove = new JButton();\r
173 jButtonRemove.setBounds(new java.awt.Rectangle(266,148,90,20));\r
174 jButtonRemove.setText("Remove");\r
175 jButtonRemove.addActionListener(this);\r
176 }\r
177 return jButtonRemove;\r
178 }\r
179\r
180 /**\r
181 This method initializes jButtonRemoveAll \r
182 \r
183 @return javax.swing.JButton \r
184 **/\r
185 private JButton getJButtonClearAll() {\r
186 if (jButtonClearAll == null) {\r
187 jButtonClearAll = new JButton();\r
188 jButtonClearAll.setBounds(new java.awt.Rectangle(374,148,90,20));\r
189 jButtonClearAll.setText("Clear All");\r
190 jButtonClearAll.addActionListener(this);\r
191 }\r
192 return jButtonClearAll;\r
193 }\r
194\r
195 /**\r
196 This method initializes jButtonCancel \r
197 \r
198 @return javax.swing.JButton \r
199 **/\r
200 private JButton getJButtonCancel() {\r
201 if (jButtonCancel == null) {\r
202 jButtonCancel = new JButton();\r
203 jButtonCancel.setPreferredSize(new java.awt.Dimension(90, 20));\r
204 jButtonCancel.setLocation(new java.awt.Point(390, 305));\r
205 jButtonCancel.setText("Cancel");\r
206 jButtonCancel.setSize(new java.awt.Dimension(90, 20));\r
207 jButtonCancel.setVisible(false);\r
208 jButtonCancel.addActionListener(this);\r
209 }\r
210 return jButtonCancel;\r
211 }\r
212\r
213 /**\r
214 This method initializes jButton \r
215 \r
216 @return javax.swing.JButton \r
217 **/\r
218 private JButton getJButtonOk() {\r
219 if (jButtonOk == null) {\r
220 jButtonOk = new JButton();\r
221 jButtonOk.setSize(new java.awt.Dimension(90, 20));\r
222 jButtonOk.setText("OK");\r
223 jButtonOk.setLocation(new java.awt.Point(290, 305));\r
224 jButtonOk.setVisible(false);\r
225 jButtonOk.addActionListener(this);\r
226 }\r
227 return jButtonOk;\r
228 }\r
229\r
230 /**\r
231 This is the default constructor\r
232 **/\r
233 public SpdMsaFiles() {\r
234 super();\r
235 initialize();\r
236 init();\r
237 \r
238 }\r
239\r
240 public SpdMsaFiles(PackageSurfaceAreaDocument.PackageSurfaceArea inPsa){\r
241 this();\r
242 sfc = new SpdFileContents(inPsa);\r
243 init(sfc);\r
244 }\r
245 /**\r
246 This method initializes this\r
247 \r
248 @return void\r
249 **/\r
250 private void init() {\r
251 this.setBounds(new java.awt.Rectangle(0, 0, 500, 370));\r
252 this.setPreferredSize(new Dimension(490, 400));\r
253 this.setContentPane(getJScrollPane());\r
254 this.setTitle("Msa Files");\r
255 this.addInternalFrameListener(new InternalFrameAdapter(){\r
256 public void internalFrameDeactivated(InternalFrameEvent e){\r
257 if (jTable.isEditing()) {\r
258 jTable.getCellEditor().stopCellEditing();\r
259 }\r
260 }\r
261 });\r
262 this.setVisible(true);\r
263 initFrame();\r
264 }\r
265\r
266 private void init(SpdFileContents sfc){\r
267 if (sfc.getSpdMsaFileCount() == 0) {\r
268 return ;\r
269 }\r
270 //\r
271 // initialize table using SpdFileContents object\r
272 //\r
273 String[][] saa = new String[sfc.getSpdMsaFileCount()][4];\r
274 sfc.getSpdMsaFiles(saa); \r
275 int i = 0;\r
276 while (i < saa.length) {\r
277 model.addRow(saa[i]);\r
278 i++;\r
279 }\r
280 }\r
281 \r
282 private JScrollPane getJScrollPane(){\r
283 if (jScrollPane == null){\r
284 jScrollPane = new JScrollPane();\r
285 jScrollPane.setViewportView(getJContentPane());\r
286 }\r
287 return jScrollPane;\r
288 }\r
289 /**\r
290 This method initializes jContentPane\r
291 \r
292 @return javax.swing.JPanel\r
293 **/\r
294 private JPanel getJContentPane() {\r
295 if (jContentPane == null) {\r
296 jStarLabel2 = new StarLabel();\r
297 jStarLabel2.setLocation(new java.awt.Point(2,24));\r
298 jLabel = new JLabel();\r
299 jLabel.setBounds(new java.awt.Rectangle(17,24,111,22));\r
300 jLabel.setText("Msa File ");\r
301 \r
302 jContentPane = new JPanel();\r
303 jContentPane.setPreferredSize(new Dimension(480, 325));\r
304 jContentPane.setLayout(null);\r
305 jContentPane.add(jLabel, null);\r
306 jContentPane.add(jStarLabel2, null);\r
307 jContentPane.add(getJScrollPane1(), null);\r
308 jContentPane.add(getJButtonAdd(), null);\r
309 jContentPane.add(getJButtonRemove(), null);\r
310 jContentPane.add(getJButtonClearAll(), null);\r
311 jContentPane.add(getJButtonCancel(), null);\r
312 jContentPane.add(getJButtonOk(), null);\r
313 \r
314 jContentPane.add(getJTextField(), null);\r
315 jContentPane.add(getJButtonBrowse(), null);\r
316 }\r
317 return jContentPane;\r
318 }\r
319\r
320 /**\r
321 fill ComboBoxes with pre-defined contents\r
322 **/\r
323 private void initFrame() {\r
324\r
325 }\r
326\r
327 /* (non-Javadoc)\r
328 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)\r
329 */\r
330 public void actionPerformed(ActionEvent arg0) {\r
331 if (arg0.getSource() == jButtonOk) {\r
332 this.save();\r
333 this.dispose();\r
334\r
335 }\r
336 if (arg0.getSource() == jButtonCancel) {\r
337 this.dispose();\r
338 }\r
339\r
340 if (arg0.getSource() == jButtonAdd) {\r
341 //ToDo: check before add\r
342 String[] row = {jTextField.getText().replace('\\', '/')};\r
343 \r
344 model.addRow(row);\r
345 sfc.genSpdMsaFiles(row[0], null, null, null);\r
346 }\r
347 //\r
348 // remove selected line\r
349 //\r
350 if (arg0.getSource() == jButtonRemove) {\r
351 if (jTable.isEditing()){\r
352 jTable.getCellEditor().stopCellEditing();\r
353 }\r
354 int rowSelected = selectedRow;\r
355 if (rowSelected >= 0) {\r
356 model.removeRow(rowSelected);\r
357 sfc.removeSpdMsaFile(rowSelected);\r
358 }\r
359 }\r
360\r
361 if (arg0.getSource() == jButtonClearAll) {\r
362 if (model.getRowCount() == 0) {\r
363 return;\r
364 }\r
365 model.setRowCount(0);\r
366 sfc.removeSpdMsaFile();\r
367 }\r
368\r
369 }\r
370 \r
371 public void tableChanged(TableModelEvent arg0) {\r
372 // TODO Auto-generated method stub\r
373 int row = arg0.getFirstRow();\r
374 TableModel m = (TableModel)arg0.getSource();\r
375 if (arg0.getType() == TableModelEvent.UPDATE){\r
376 String file = m.getValueAt(row, 0) + "";\r
377\r
378 sfc.updateSpdMsaFile(row, file, null, null, null);\r
379 }\r
380 }\r
381\r
382 /**\r
383 Add contents in list to sfc\r
384 **/\r
385 protected void save() {\r
386 \r
387 }\r
388\r
389 /**\r
390 This method initializes jTextField \r
391 \r
392 @return javax.swing.JTextField \r
393 **/\r
394 private JTextField getJTextField() {\r
395 if (jTextField == null) {\r
396 jTextField = new JTextField();\r
397 jTextField.setBounds(new java.awt.Rectangle(14,51,346,21));\r
398 jTextField.setPreferredSize(new java.awt.Dimension(345,20));\r
399 }\r
400 return jTextField;\r
401 }\r
402\r
403 /**\r
404 This method initializes jButtonBrowse \r
405 \r
406 @return javax.swing.JButton \r
407 **/\r
408 private JButton getJButtonBrowse() {\r
409 if (jButtonBrowse == null) {\r
410 jButtonBrowse = new JButton();\r
411 jButtonBrowse.setBounds(new java.awt.Rectangle(376,50,92,21));\r
412 jButtonBrowse.setText("Browse");\r
413 jButtonBrowse.setPreferredSize(new java.awt.Dimension(90,20));\r
414 jButtonBrowse.addActionListener(new AbstractAction() {\r
415 public void actionPerformed(ActionEvent e) {\r
416 //\r
417 // Select files from current workspace\r
418 //\r
419 String dirPrefix = Tools.dirForNewSpd.substring(0, Tools.dirForNewSpd.lastIndexOf(File.separator));\r
420 JFileChooser chooser = new JFileChooser(dirPrefix);\r
421 File theFile = null;\r
422 String headerDest = null;\r
423 \r
424 chooser.setMultiSelectionEnabled(false);\r
425 chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);\r
426 int retval = chooser.showOpenDialog(frame);\r
427 if (retval == JFileChooser.APPROVE_OPTION) {\r
428\r
429 theFile = chooser.getSelectedFile();\r
430 String file = theFile.getPath();\r
431 if (!file.startsWith(dirPrefix)) {\r
432 JOptionPane.showMessageDialog(frame, "You can only select files in current package!");\r
433 return;\r
434 }\r
435 \r
436 \r
437 }\r
438 else {\r
439 return;\r
440 }\r
441 \r
442 headerDest = theFile.getPath();\r
443 int fileIndex = headerDest.indexOf(System.getProperty("file.separator"), dirPrefix.length());\r
444 \r
445 jTextField.setText(headerDest.substring(fileIndex + 1).replace('\\', '/'));\r
446 \r
447 }\r
448 });\r
449 }\r
450 return jButtonBrowse;\r
451 }\r
452 \r
453 public void componentResized(ComponentEvent arg0) {\r
454 int intPreferredWidth = 500;\r
455 \r
456 resizeComponentWidth(this.jScrollPane1, this.getWidth(), intPreferredWidth);\r
457 resizeComponentWidth(this.jTextField, this.getWidth(), intPreferredWidth);\r
458 relocateComponentX(this.jButtonBrowse, this.getWidth(), this.getPreferredSize().width, 25);\r
459 }\r
460 \r
461 public static void main(String[] args){\r
462 new SpdMsaFiles().setVisible(true);\r
463 }\r
464}\r
465\r
466\r