]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/far/deleteui/DeleteStepOne.java
1. Support to Create/Update/Delete/Install far file
[mirror_edk2.git] / Tools / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / far / deleteui / DeleteStepOne.java
CommitLineData
5a24e806 1/** @file\r
2\r
3 Copyright (c) 2006, Intel Corporation\r
4 All rights reserved. This program and the accompanying materials\r
5 are licensed and made available under the terms and conditions of the BSD License\r
6 which accompanies this distribution. The full text of the license may be found at\r
7 http://opensource.org/licenses/bsd-license.php\r
8 \r
9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
11 \r
12 **/\r
13\r
14package org.tianocore.frameworkwizard.far.deleteui;\r
15\r
16import javax.swing.ImageIcon;\r
17import javax.swing.JPanel;\r
18import javax.swing.JButton;\r
19import javax.swing.JTextArea;\r
20import javax.swing.JLabel;\r
21import javax.swing.JScrollPane;\r
22\r
23import org.tianocore.frameworkwizard.common.ui.IDialog;\r
24import org.tianocore.frameworkwizard.common.ui.IFrame;\r
25import org.tianocore.frameworkwizard.far.AggregationOperation;\r
26import org.tianocore.frameworkwizard.far.FarIdentification;\r
27import org.tianocore.frameworkwizard.far.PackageQuery;\r
28import org.tianocore.frameworkwizard.far.PackageQueryInterface;\r
29import org.tianocore.frameworkwizard.packaging.PackageIdentification;\r
30import org.tianocore.frameworkwizard.platform.PlatformIdentification;\r
31import org.tianocore.frameworkwizard.workspace.WorkspaceTools;\r
32\r
33import java.awt.Color;\r
34import java.awt.Dimension;\r
35import java.awt.Toolkit;\r
36import java.awt.event.MouseEvent;\r
37import java.awt.event.MouseListener;\r
38import java.util.Iterator;\r
39import java.util.List;\r
40import java.util.Vector;\r
41\r
42import javax.swing.JList;\r
43import javax.swing.event.ListSelectionEvent;\r
44import javax.swing.event.ListSelectionListener;\r
45\r
46public class DeleteStepOne extends IDialog implements ListSelectionListener, MouseListener {\r
47\r
48 /**\r
49 * \r
50 */\r
51 private static final long serialVersionUID = 636773964435618476L;\r
52\r
53 private JPanel jContentPane = null;\r
54\r
55 private JButton jButtonCancel = null;\r
56\r
57 private JButton jButtonNext = null;\r
58\r
59 private JTextArea jTextAreaInstruction = null;\r
60\r
61 private JLabel jLabel = null;\r
62\r
63 private JScrollPane jScrollPane = null;\r
64\r
65 private JLabel jLabel2 = null;\r
66\r
67 private JLabel jLabel3 = null;\r
68\r
69 private JScrollPane jScrollPane1 = null;\r
70\r
71 private JScrollPane jScrollPane2 = null;\r
72\r
73 private JList jListPlatform = null;\r
74\r
75 private JList jListPackage = null;\r
76\r
77 private JLabel jLabel4 = null;\r
78\r
79 private JButton jButtonDetail = null;\r
80\r
81 private JList jListFar = null;\r
82\r
83 private JLabel jLabelImage = null;\r
84\r
85 private Vector<FarIdentification> farVector = null;\r
86\r
87 Vector<PackageIdentification> removePackages = null;\r
88\r
89 Vector<PlatformIdentification> removePlatforms = null;\r
90\r
91 private DeleteStepTwo stepTwo = null;\r
92\r
93 /**\r
94 * This method initializes jButtonCancel\r
95 * \r
96 * @return javax.swing.JButton\r
97 */\r
98 private JButton getJButtonCancel() {\r
99 if (jButtonCancel == null) {\r
100 jButtonCancel = new JButton();\r
101 jButtonCancel.setBounds(new java.awt.Rectangle(570, 330, 90, 20));\r
102 jButtonCancel.setText("Cancel");\r
103 jButtonCancel.addMouseListener(this);\r
104 }\r
105 return jButtonCancel;\r
106 }\r
107\r
108 /**\r
109 * This method initializes jButtonFinish\r
110 * \r
111 * @return javax.swing.JButton\r
112 */\r
113 private JButton getJButtonNext() {\r
114 if (jButtonNext == null) {\r
115 jButtonNext = new JButton();\r
116 jButtonNext.setBounds(new java.awt.Rectangle(470, 330, 90, 20));\r
117 jButtonNext.setText("Next");\r
118 jButtonNext.setEnabled(false);\r
119 }\r
120 return jButtonNext;\r
121 }\r
122\r
123 /**\r
124 * This method initializes jTextArea1\r
125 * \r
126 * @return javax.swing.JTextArea\r
127 */\r
128 private JTextArea getJTextArea1() {\r
129 if (jTextAreaInstruction == null) {\r
130 jTextAreaInstruction = new JTextArea();\r
131 jTextAreaInstruction.setBounds(new java.awt.Rectangle(30, 7, 642, 50));\r
132 jTextAreaInstruction.setText("Step 1: Choose FAR from framework database. \n");\r
133 jTextAreaInstruction.setCaretColor(Color.RED);\r
134 jTextAreaInstruction\r
135 .append("After choose FAR, the packages and platforms which belong to the FAR will display. \n");\r
136 jTextAreaInstruction.append("Picture \"Okay\" or \"No\" indicates whether FAR can be removed or not. ");\r
137 jTextAreaInstruction.setEditable(false);\r
138 }\r
139 return jTextAreaInstruction;\r
140 }\r
141\r
142 /**\r
143 * This method initializes jScrollPane\r
144 * \r
145 * @return javax.swing.JScrollPane\r
146 */\r
147 private JScrollPane getJScrollPane() {\r
148 if (jScrollPane == null) {\r
149 jScrollPane = new JScrollPane();\r
150 jScrollPane.setBounds(new java.awt.Rectangle(139, 64, 500, 104));\r
151 jScrollPane.setViewportView(getJListFar());\r
152 }\r
153 return jScrollPane;\r
154 }\r
155\r
156 /**\r
157 * This method initializes jScrollPane1\r
158 * \r
159 * @return javax.swing.JScrollPane\r
160 */\r
161 private JScrollPane getJScrollPane1() {\r
162 if (jScrollPane1 == null) {\r
163 jScrollPane1 = new JScrollPane();\r
164 jScrollPane1.setBounds(new java.awt.Rectangle(40, 195, 300, 115));\r
165 jScrollPane1.setViewportView(getJListPackage());\r
166 }\r
167 return jScrollPane1;\r
168 }\r
169\r
170 /**\r
171 * This method initializes jScrollPane2\r
172 * \r
173 * @return javax.swing.JScrollPane\r
174 */\r
175 private JScrollPane getJScrollPane2() {\r
176 if (jScrollPane2 == null) {\r
177 jScrollPane2 = new JScrollPane();\r
178 jScrollPane2.setBounds(new java.awt.Rectangle(360, 195, 300, 115));\r
179 jScrollPane2.setViewportView(getJListPlatform());\r
180 }\r
181 return jScrollPane2;\r
182 }\r
183\r
184 /**\r
185 * This method initializes jList\r
186 * \r
187 * @return javax.swing.JList\r
188 */\r
189 private JList getJListPlatform() {\r
190 if (jListPlatform == null) {\r
191 jListPlatform = new JList();\r
192 jListPlatform.setEnabled(false);\r
193 }\r
194 return jListPlatform;\r
195 }\r
196\r
197 /**\r
198 * This method initializes jList1\r
199 * \r
200 * @return javax.swing.JList\r
201 */\r
202 private JList getJListPackage() {\r
203 if (jListPackage == null) {\r
204 jListPackage = new JList();\r
205 jListPackage.setEnabled(false);\r
206 }\r
207 return jListPackage;\r
208 }\r
209\r
210 /**\r
211 * This method initializes jButtonDetail\r
212 * \r
213 * @return javax.swing.JButton\r
214 */\r
215 private JButton getJButtonDetail() {\r
216 if (jButtonDetail == null) {\r
217 jButtonDetail = new JButton();\r
218 jButtonDetail.setBounds(new java.awt.Rectangle(367, 325, 69, 20));\r
219 jButtonDetail.setText("Detail");\r
220 jButtonDetail.setVisible(false);\r
221 jButtonDetail.addMouseListener(this);\r
222 }\r
223 return jButtonDetail;\r
224 }\r
225\r
226 /**\r
227 * This method initializes jListFar\r
228 * \r
229 * @return javax.swing.JList\r
230 */\r
231 private JList getJListFar() {\r
232 if (jListFar == null) {\r
233 jListFar = new JList();\r
234 WorkspaceTools wt = new WorkspaceTools();\r
235 farVector = wt.getAllFars();\r
236 jListFar.setListData(farVector);\r
237 jListFar.addListSelectionListener(this);\r
238 }\r
239 return jListFar;\r
240 }\r
241\r
242 /**\r
243 * This is the default constructor\r
244 */\r
245 public DeleteStepOne(IFrame iFrame, boolean modal) {\r
246 super(iFrame, modal);\r
247 initialize();\r
248 }\r
249\r
250 /**\r
251 * This method initializes this\r
252 * \r
253 * @return void\r
254 */\r
255 private void initialize() {\r
256 this.setSize(700, 400);\r
257 this.setContentPane(getJContentPane());\r
258 this.setTitle("Delete Framework Archive(FAR) - Step 1: Choose FAR from framework database");\r
259 Dimension d = Toolkit.getDefaultToolkit().getScreenSize();\r
260 this.setLocation((d.width - this.getSize().width) / 2, (d.height - this.getSize().height) / 2);\r
261 }\r
262\r
263 /**\r
264 * This method initializes jContentPane\r
265 * \r
266 * @return javax.swing.JPanel\r
267 */\r
268 private JPanel getJContentPane() {\r
269 if (jContentPane == null) {\r
270 jLabelImage = new JLabel();\r
271 jLabelImage.setBounds(new java.awt.Rectangle(30, 319, 36, 36));\r
272 jLabel4 = new JLabel();\r
273 jLabel4.setBounds(new java.awt.Rectangle(71, 325, 289, 20));\r
274 jLabel3 = new JLabel();\r
275 jLabel3.setBounds(new java.awt.Rectangle(360, 170, 113, 20));\r
276 jLabel3.setText("FAR's Platforms");\r
277 jLabel2 = new JLabel();\r
278 jLabel2.setBounds(new java.awt.Rectangle(40, 170, 113, 20));\r
279 jLabel2.setText("FAR's Packages");\r
280 jLabel = new JLabel();\r
281 jLabel.setBounds(new java.awt.Rectangle(30, 64, 100, 20));\r
282 jLabel.setText("Select one FAR: ");\r
283 jContentPane = new JPanel();\r
284 jContentPane.setLayout(null);\r
285 jContentPane.add(getJButtonCancel(), null);\r
286 jContentPane.add(getJButtonNext(), null);\r
287 jContentPane.add(getJTextArea1(), null);\r
288 jContentPane.add(jLabel, null);\r
289 jContentPane.add(getJScrollPane(), null);\r
290 jContentPane.add(jLabel2, null);\r
291 jContentPane.add(jLabel3, null);\r
292 jContentPane.add(getJScrollPane1(), null);\r
293 jContentPane.add(getJScrollPane2(), null);\r
294 jContentPane.add(jLabel4, null);\r
295 jContentPane.add(getJButtonDetail(), null);\r
296 jContentPane.add(jLabelImage, null);\r
297 }\r
298 return jContentPane;\r
299 }\r
300\r
301 public void valueChanged(ListSelectionEvent e) {\r
302 //\r
303 // Add logic for FAR list value changed\r
304 //\r
305 if (e.getSource() == jListFar) {\r
306 boolean flag = true;\r
307 FarIdentification far = (FarIdentification) jListFar.getSelectedValue();\r
308 WorkspaceTools wt = new WorkspaceTools();\r
309\r
310 removePackages = wt.getPackagesByFar(far);\r
311 jListPackage.setListData(removePackages);\r
312 removePlatforms = wt.getPlatformsByFar(far);\r
313 jListPlatform.setListData(removePlatforms);\r
314\r
315 //\r
316 // Get Dependencies Info for current FAR\r
317 //\r
318 List<PackageIdentification> allPackages = wt.getAllPackages();\r
319\r
320 //\r
321 // Remain packages\r
322 //\r
323 allPackages.removeAll(removePackages);\r
324\r
325 Iterator<PackageIdentification> iter = allPackages.iterator();\r
326\r
327 PackageQueryInterface pq = new PackageQuery();\r
328 while (iter.hasNext()) {\r
329 PackageIdentification item = iter.next();\r
330 List<PackageIdentification> list = pq.getPackageDependencies(item.getSpdFile());\r
331 List<PackageIdentification> result = AggregationOperation.minus(list, allPackages);\r
332 if (result.size() > 0) {\r
333 if (AggregationOperation.intersection(result, removePackages).size() > 0) {\r
334 flag = false;\r
335 break;\r
336 }\r
337 }\r
338 }\r
339\r
340 if (flag) {\r
341 jLabelImage.setIcon(new ImageIcon(getClass().getResource("/resources/images/Yes.JPG")));\r
342 jLabel4.setText("Without any remain packages depend on this FAR. ");\r
343 jButtonDetail.setVisible(false);\r
344 jButtonNext.setEnabled(true);\r
345 jButtonNext.addMouseListener(this);\r
346 } else {\r
347 jLabelImage.setIcon(new ImageIcon(getClass().getResource("/resources/images/No.JPG")));\r
348 jLabel4.setText("Some remain packages still depend on this FAR. ");\r
349 // jButtonDetail.setVisible(true);\r
350 jButtonNext.setEnabled(false);\r
351 jButtonNext.removeMouseListener(this);\r
352 }\r
353 }\r
354 }\r
355\r
356 public void mouseClicked(MouseEvent e) {\r
357 if (e.getSource() == jButtonCancel) {\r
358 this.setVisible(false);\r
359 } else if (e.getSource() == jButtonNext) {\r
360 //\r
361 // Add some logic process here\r
362 //\r
363\r
364 if (stepTwo == null) {\r
365 stepTwo = new DeleteStepTwo(this, true, this);\r
366 }\r
367 this.setVisible(false);\r
368 stepTwo.setVisible(true);\r
369 }\r
370 }\r
371\r
372 public void mousePressed(MouseEvent e) {\r
373 // TODO Auto-generated method stub\r
374\r
375 }\r
376\r
377 public void mouseReleased(MouseEvent e) {\r
378 // TODO Auto-generated method stub\r
379\r
380 }\r
381\r
382 public void mouseEntered(MouseEvent e) {\r
383 // TODO Auto-generated method stub\r
384\r
385 }\r
386\r
387 public void mouseExited(MouseEvent e) {\r
388 // TODO Auto-generated method stub\r
389\r
390 }\r
391\r
392 public FarIdentification getSelecedFar() {\r
393 return (FarIdentification) jListFar.getSelectedValue();\r
394 }\r
395\r
396}\r