]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/PackageEditor/src/org/tianocore/packaging/PackageMsaFile.java
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@671 6f19259b...
[mirror_edk2.git] / Tools / Source / PackageEditor / src / org / tianocore / packaging / PackageMsaFile.java
CommitLineData
878ddf1f 1/** @file\r
2 Java class PackageMsaFile is GUI for create MsaFile 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.packaging;\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.io.File;\r
21import java.util.Vector;\r
22\r
23import javax.swing.DefaultListModel;\r
24import javax.swing.JFileChooser;\r
25import javax.swing.JOptionPane;\r
26import javax.swing.JPanel;\r
27import javax.swing.JRadioButton;\r
28import javax.swing.JTextField;\r
29import javax.swing.JComboBox;\r
30import javax.swing.JLabel;\r
31import javax.swing.JList;\r
32import javax.swing.JScrollPane;\r
33import javax.swing.JButton;\r
34import javax.swing.JFrame;\r
33f1b485 35import javax.swing.filechooser.FileFilter;\r
878ddf1f 36\r
37/**\r
38 GUI for create MsaFile elements of spd file\r
39 \r
40 @since PackageEditor 1.0\r
41**/\r
42public class PackageMsaFile extends JFrame implements ActionListener {\r
43 static JFrame frame;\r
44 \r
45 private DefaultListModel listItem = new DefaultListModel();\r
46\r
47 private SpdFileContents sfc = null;\r
48\r
49 private JPanel jContentPane = null;\r
50\r
51 private JScrollPane jScrollPane = null;\r
52\r
53 private JList jListLibraryClassDefinitions = null;\r
54\r
55 private JButton jButtonAdd = null;\r
56\r
57 private JButton jButtonRemove = null;\r
58\r
59 private JButton jButtonClearAll = null;\r
60\r
61 private JButton jButtonCancel = null;\r
62\r
63 private JButton jButtonOk = null;\r
64\r
65 private JLabel jLabel = null;\r
66\r
67 private JTextField jTextField = null;\r
68\r
69 private JButton jButton = null;\r
70\r
71 /**\r
72 This method initializes this\r
73 \r
74 **/\r
75 private void initialize() {\r
76 this.setTitle("MSA Files");\r
77 this.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);\r
78\r
79 }\r
80\r
81 /**\r
82 This method initializes jScrollPane \r
83 \r
84 @return javax.swing.JScrollPane \r
85 **/\r
86 private JScrollPane getJScrollPane() {\r
87 if (jScrollPane == null) {\r
88 jScrollPane = new JScrollPane();\r
89 jScrollPane.setBounds(new java.awt.Rectangle(10, 85, 350, 210));\r
90 jScrollPane.setViewportView(getJListLibraryClassDefinitions());\r
91 }\r
92 return jScrollPane;\r
93 }\r
94\r
95 /**\r
96 This method initializes jListLibraryClassDefinitions \r
97 \r
98 @return javax.swing.JList \r
99 **/\r
100 private JList getJListLibraryClassDefinitions() {\r
101 if (jListLibraryClassDefinitions == null) {\r
102 jListLibraryClassDefinitions = new JList(listItem);\r
103 }\r
104 return jListLibraryClassDefinitions;\r
105 }\r
106\r
107 /**\r
108 This method initializes jButtonAdd \r
109 \r
110 @return javax.swing.JButton \r
111 **/\r
112 private JButton getJButtonAdd() {\r
113 if (jButtonAdd == null) {\r
114 jButtonAdd = new JButton();\r
115 jButtonAdd.setBounds(new java.awt.Rectangle(375, 132, 90, 20));\r
116 jButtonAdd.setText("Add");\r
117 jButtonAdd.addActionListener(this);\r
118 }\r
119 return jButtonAdd;\r
120 }\r
121\r
122 /**\r
123 This method initializes jButtonRemove \r
124 \r
125 @return javax.swing.JButton \r
126 **/\r
127 private JButton getJButtonRemove() {\r
128 if (jButtonRemove == null) {\r
129 jButtonRemove = new JButton();\r
130 jButtonRemove.setBounds(new java.awt.Rectangle(375, 230, 90, 20));\r
131 jButtonRemove.setText("Remove");\r
132 jButtonRemove.addActionListener(this);\r
133 }\r
134 return jButtonRemove;\r
135 }\r
136\r
137 /**\r
138 This method initializes jButtonRemoveAll \r
139 \r
140 @return javax.swing.JButton \r
141 **/\r
142 private JButton getJButtonClearAll() {\r
143 if (jButtonClearAll == null) {\r
144 jButtonClearAll = new JButton();\r
145 jButtonClearAll.setBounds(new java.awt.Rectangle(375, 260, 90, 20));\r
146 jButtonClearAll.setText("Clear All");\r
147 jButtonClearAll.addActionListener(this);\r
148 }\r
149 return jButtonClearAll;\r
150 }\r
151\r
152 /**\r
153 This method initializes jButtonCancel \r
154 \r
155 @return javax.swing.JButton \r
156 **/\r
157 private JButton getJButtonCancel() {\r
158 if (jButtonCancel == null) {\r
159 jButtonCancel = new JButton();\r
160 jButtonCancel.setPreferredSize(new java.awt.Dimension(90, 20));\r
161 jButtonCancel.setLocation(new java.awt.Point(390, 305));\r
162 jButtonCancel.setText("Cancel");\r
163 jButtonCancel.setSize(new java.awt.Dimension(90, 20));\r
164 jButtonCancel.addActionListener(this);\r
165 }\r
166 return jButtonCancel;\r
167 }\r
168\r
169 /**\r
170 This method initializes jButton \r
171 \r
172 @return javax.swing.JButton \r
173 **/\r
174 private JButton getJButtonOk() {\r
175 if (jButtonOk == null) {\r
176 jButtonOk = new JButton();\r
177 jButtonOk.setSize(new java.awt.Dimension(90, 20));\r
178 jButtonOk.setText("OK");\r
179 jButtonOk.setLocation(new java.awt.Point(290, 305));\r
180 jButtonOk.addActionListener(this);\r
181 }\r
182 return jButtonOk;\r
183 }\r
184\r
185 /**\r
186 This is the default constructor\r
187 **/\r
188 public PackageMsaFile(SpdFileContents sfc) {\r
189 super();\r
190 initialize();\r
191 init();\r
192 this.sfc = sfc;\r
193 }\r
194\r
195 /**\r
196 Start the window at the center of screen\r
197 \r
198 */\r
199 protected void centerWindow(int intWidth, int intHeight) {\r
200 Dimension d = Toolkit.getDefaultToolkit().getScreenSize();\r
201 this.setLocation((d.width - intWidth) / 2, (d.height - intHeight) / 2);\r
202 }\r
203\r
204 /**\r
205 Start the window at the center of screen\r
206 \r
207 **/\r
208 protected void centerWindow() {\r
209 centerWindow(this.getSize().width, this.getSize().height);\r
210 }\r
211\r
212 /**\r
213 This method initializes this\r
214 \r
215 @return void\r
216 **/\r
217 private void init() {\r
218 this.setContentPane(getJContentPane());\r
219 this.setTitle("Library Class Declarations");\r
220 this.setBounds(new java.awt.Rectangle(0, 0, 500, 370));\r
221 this.centerWindow();\r
222 initFrame();\r
223 }\r
224\r
225 /**\r
226 This method initializes jContentPane\r
227 \r
228 @return javax.swing.JPanel\r
229 **/\r
230 private JPanel getJContentPane() {\r
231 if (jContentPane == null) {\r
232 jLabel = new JLabel();\r
233 jLabel.setBounds(new java.awt.Rectangle(11,20,143,22));\r
234 jLabel.setText("Msa File Path and Name");\r
235 jContentPane = new JPanel();\r
236 jContentPane.setLayout(null);\r
237 jContentPane.add(getJScrollPane(), null);\r
238 jContentPane.add(getJButtonAdd(), null);\r
239 jContentPane.add(getJButtonRemove(), null);\r
240 jContentPane.add(getJButtonClearAll(), null);\r
241 jContentPane.add(getJButtonCancel(), null);\r
242 jContentPane.add(getJButtonOk(), null);\r
243 jContentPane.add(jLabel, null);\r
244 jContentPane.add(getJTextField(), null);\r
245 jContentPane.add(getJButton(), null);\r
246 }\r
247 return jContentPane;\r
248 }\r
249\r
250 private void initFrame() {\r
251\r
252 }\r
253\r
254 public void actionPerformed(ActionEvent arg0) {\r
255 if (arg0.getSource() == jButtonOk) {\r
256 this.dispose();\r
257 this.save();\r
258 }\r
259 if (arg0.getSource() == jButtonCancel) {\r
260 this.dispose();\r
261 }\r
262\r
263 if (arg0.getSource() == jButtonAdd) {\r
264\r
265 listItem.addElement(jTextField.getText());\r
266 }\r
267\r
268 if (arg0.getSource() == jButtonRemove) {\r
269 int intSelected[] = jListLibraryClassDefinitions.getSelectedIndices();\r
270 if (intSelected.length > 0) {\r
271 for (int index = intSelected.length - 1; index > -1; index--) {\r
272 listItem.removeElementAt(intSelected[index]);\r
273 }\r
274 }\r
275 jListLibraryClassDefinitions.getSelectionModel().clearSelection();\r
276 }\r
277\r
278 if (arg0.getSource() == jButtonClearAll) {\r
279 listItem.removeAllElements();\r
280 }\r
281\r
282 }\r
283\r
284 protected void save() {\r
285 try {\r
286 int intLibraryCount = listItem.getSize();\r
287\r
288 if (intLibraryCount > 0) {\r
289\r
290 for (int index = 0; index < intLibraryCount; index++) {\r
291 String strAll = listItem.get(index).toString();\r
292 sfc.genSpdMsaFiles(strAll, null);\r
293 }\r
294 } else {\r
295\r
296 }\r
297\r
298 } catch (Exception e) {\r
299 System.out.println(e.toString());\r
300 }\r
301 }\r
302\r
303 /**\r
304 This method initializes jTextField \r
305 \r
306 @return javax.swing.JTextField \r
307 **/\r
308 private JTextField getJTextField() {\r
309 if (jTextField == null) {\r
310 jTextField = new JTextField();\r
311 jTextField.setBounds(new java.awt.Rectangle(11,44,349,21));\r
312 }\r
313 return jTextField;\r
314 }\r
315\r
316 /**\r
317 This method initializes jButton \r
318 \r
319 @return javax.swing.JButton \r
320 **/\r
321 private JButton getJButton() {\r
33f1b485 322 final FileFilter filter = new PkgFileFilter("msa");\r
323 \r
878ddf1f 324 if (jButton == null) {\r
325 jButton = new JButton();\r
326 jButton.setBounds(new java.awt.Rectangle(377,46,89,20));\r
327 jButton.setText("Browse");\r
328 jButton.setPreferredSize(new java.awt.Dimension(34,20));\r
329 jButton.addMouseListener(new java.awt.event.MouseAdapter() {\r
330 public void mouseClicked(java.awt.event.MouseEvent e) {\r
331 JFileChooser chooser = new JFileChooser(System.getenv("WORKSPACE"));\r
33f1b485 332 File theFile = null;\r
333 String msaDest = null;\r
878ddf1f 334 \r
335 chooser.setMultiSelectionEnabled(false);\r
336 chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);\r
33f1b485 337 chooser.setFileFilter(filter);\r
878ddf1f 338 int retval = chooser.showOpenDialog(frame);\r
339 if (retval == JFileChooser.APPROVE_OPTION) {\r
340\r
33f1b485 341 theFile = chooser.getSelectedFile();\r
878ddf1f 342 String file = theFile.getPath();\r
343 if (!file.startsWith(System.getenv("WORKSPACE"))) {\r
344 JOptionPane.showMessageDialog(frame, "You can only select files in current workspace!");\r
345 return;\r
346 }\r
878ddf1f 347 \r
348 }\r
33f1b485 349 else {\r
350 return;\r
351 }\r
352 \r
353 if (!theFile.getPath().startsWith(PackagingMain.dirForNewSpd)) {\r
354 //\r
355 //ToDo: copy elsewhere msa to new pkg dir, prompt user to chooser a location\r
356 //\r
357 JOptionPane.showMessageDialog(frame, "You must copy msa file into current package directory!");\r
358 return;\r
359 }\r
360 \r
361 msaDest = theFile.getPath();\r
362 int fileIndex = msaDest.indexOf(System.getProperty("file.separator"), PackagingMain.dirForNewSpd.length());\r
363 \r
364 jTextField.setText(msaDest.substring(fileIndex + 1).replace('\\', '/'));\r
878ddf1f 365 }\r
366 });\r
367 }\r
368 return jButton;\r
369 }\r
370\r
371}\r