--- /dev/null
+/** @file\r
+\r
+ Copyright (c) 2006, Intel Corporation\r
+ All rights reserved. This program and the accompanying materials\r
+ are licensed and made available under the terms and conditions of the BSD License\r
+ which accompanies this distribution. The full text of the license may be found at\r
+ http://opensource.org/licenses/bsd-license.php\r
+ \r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+ \r
+ **/\r
+\r
+package org.tianocore.frameworkwizard.far.deleteui;\r
+\r
+import javax.swing.ImageIcon;\r
+import javax.swing.JPanel;\r
+import javax.swing.JButton;\r
+import javax.swing.JTextArea;\r
+import javax.swing.JLabel;\r
+import javax.swing.JScrollPane;\r
+\r
+import org.tianocore.frameworkwizard.common.ui.IDialog;\r
+import org.tianocore.frameworkwizard.common.ui.IFrame;\r
+import org.tianocore.frameworkwizard.far.AggregationOperation;\r
+import org.tianocore.frameworkwizard.far.FarIdentification;\r
+import org.tianocore.frameworkwizard.far.PackageQuery;\r
+import org.tianocore.frameworkwizard.far.PackageQueryInterface;\r
+import org.tianocore.frameworkwizard.packaging.PackageIdentification;\r
+import org.tianocore.frameworkwizard.platform.PlatformIdentification;\r
+import org.tianocore.frameworkwizard.workspace.WorkspaceTools;\r
+\r
+import java.awt.Color;\r
+import java.awt.Dimension;\r
+import java.awt.Toolkit;\r
+import java.awt.event.MouseEvent;\r
+import java.awt.event.MouseListener;\r
+import java.util.Iterator;\r
+import java.util.List;\r
+import java.util.Vector;\r
+\r
+import javax.swing.JList;\r
+import javax.swing.event.ListSelectionEvent;\r
+import javax.swing.event.ListSelectionListener;\r
+\r
+public class DeleteStepOne extends IDialog implements ListSelectionListener, MouseListener {\r
+\r
+ /**\r
+ * \r
+ */\r
+ private static final long serialVersionUID = 636773964435618476L;\r
+\r
+ private JPanel jContentPane = null;\r
+\r
+ private JButton jButtonCancel = null;\r
+\r
+ private JButton jButtonNext = null;\r
+\r
+ private JTextArea jTextAreaInstruction = null;\r
+\r
+ private JLabel jLabel = null;\r
+\r
+ private JScrollPane jScrollPane = null;\r
+\r
+ private JLabel jLabel2 = null;\r
+\r
+ private JLabel jLabel3 = null;\r
+\r
+ private JScrollPane jScrollPane1 = null;\r
+\r
+ private JScrollPane jScrollPane2 = null;\r
+\r
+ private JList jListPlatform = null;\r
+\r
+ private JList jListPackage = null;\r
+\r
+ private JLabel jLabel4 = null;\r
+\r
+ private JButton jButtonDetail = null;\r
+\r
+ private JList jListFar = null;\r
+\r
+ private JLabel jLabelImage = null;\r
+\r
+ private Vector<FarIdentification> farVector = null;\r
+\r
+ Vector<PackageIdentification> removePackages = null;\r
+\r
+ Vector<PlatformIdentification> removePlatforms = null;\r
+\r
+ private DeleteStepTwo stepTwo = null;\r
+\r
+ /**\r
+ * This method initializes jButtonCancel\r
+ * \r
+ * @return javax.swing.JButton\r
+ */\r
+ private JButton getJButtonCancel() {\r
+ if (jButtonCancel == null) {\r
+ jButtonCancel = new JButton();\r
+ jButtonCancel.setBounds(new java.awt.Rectangle(570, 330, 90, 20));\r
+ jButtonCancel.setText("Cancel");\r
+ jButtonCancel.addMouseListener(this);\r
+ }\r
+ return jButtonCancel;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jButtonFinish\r
+ * \r
+ * @return javax.swing.JButton\r
+ */\r
+ private JButton getJButtonNext() {\r
+ if (jButtonNext == null) {\r
+ jButtonNext = new JButton();\r
+ jButtonNext.setBounds(new java.awt.Rectangle(470, 330, 90, 20));\r
+ jButtonNext.setText("Next");\r
+ jButtonNext.setEnabled(false);\r
+ }\r
+ return jButtonNext;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jTextArea1\r
+ * \r
+ * @return javax.swing.JTextArea\r
+ */\r
+ private JTextArea getJTextArea1() {\r
+ if (jTextAreaInstruction == null) {\r
+ jTextAreaInstruction = new JTextArea();\r
+ jTextAreaInstruction.setBounds(new java.awt.Rectangle(30, 7, 642, 50));\r
+ jTextAreaInstruction.setText("Step 1: Choose FAR from framework database. \n");\r
+ jTextAreaInstruction.setCaretColor(Color.RED);\r
+ jTextAreaInstruction\r
+ .append("After choose FAR, the packages and platforms which belong to the FAR will display. \n");\r
+ jTextAreaInstruction.append("Picture \"Okay\" or \"No\" indicates whether FAR can be removed or not. ");\r
+ jTextAreaInstruction.setEditable(false);\r
+ }\r
+ return jTextAreaInstruction;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jScrollPane\r
+ * \r
+ * @return javax.swing.JScrollPane\r
+ */\r
+ private JScrollPane getJScrollPane() {\r
+ if (jScrollPane == null) {\r
+ jScrollPane = new JScrollPane();\r
+ jScrollPane.setBounds(new java.awt.Rectangle(139, 64, 500, 104));\r
+ jScrollPane.setViewportView(getJListFar());\r
+ }\r
+ return jScrollPane;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jScrollPane1\r
+ * \r
+ * @return javax.swing.JScrollPane\r
+ */\r
+ private JScrollPane getJScrollPane1() {\r
+ if (jScrollPane1 == null) {\r
+ jScrollPane1 = new JScrollPane();\r
+ jScrollPane1.setBounds(new java.awt.Rectangle(40, 195, 300, 115));\r
+ jScrollPane1.setViewportView(getJListPackage());\r
+ }\r
+ return jScrollPane1;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jScrollPane2\r
+ * \r
+ * @return javax.swing.JScrollPane\r
+ */\r
+ private JScrollPane getJScrollPane2() {\r
+ if (jScrollPane2 == null) {\r
+ jScrollPane2 = new JScrollPane();\r
+ jScrollPane2.setBounds(new java.awt.Rectangle(360, 195, 300, 115));\r
+ jScrollPane2.setViewportView(getJListPlatform());\r
+ }\r
+ return jScrollPane2;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jList\r
+ * \r
+ * @return javax.swing.JList\r
+ */\r
+ private JList getJListPlatform() {\r
+ if (jListPlatform == null) {\r
+ jListPlatform = new JList();\r
+ jListPlatform.setEnabled(false);\r
+ }\r
+ return jListPlatform;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jList1\r
+ * \r
+ * @return javax.swing.JList\r
+ */\r
+ private JList getJListPackage() {\r
+ if (jListPackage == null) {\r
+ jListPackage = new JList();\r
+ jListPackage.setEnabled(false);\r
+ }\r
+ return jListPackage;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jButtonDetail\r
+ * \r
+ * @return javax.swing.JButton\r
+ */\r
+ private JButton getJButtonDetail() {\r
+ if (jButtonDetail == null) {\r
+ jButtonDetail = new JButton();\r
+ jButtonDetail.setBounds(new java.awt.Rectangle(367, 325, 69, 20));\r
+ jButtonDetail.setText("Detail");\r
+ jButtonDetail.setVisible(false);\r
+ jButtonDetail.addMouseListener(this);\r
+ }\r
+ return jButtonDetail;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jListFar\r
+ * \r
+ * @return javax.swing.JList\r
+ */\r
+ private JList getJListFar() {\r
+ if (jListFar == null) {\r
+ jListFar = new JList();\r
+ WorkspaceTools wt = new WorkspaceTools();\r
+ farVector = wt.getAllFars();\r
+ jListFar.setListData(farVector);\r
+ jListFar.addListSelectionListener(this);\r
+ }\r
+ return jListFar;\r
+ }\r
+\r
+ /**\r
+ * This is the default constructor\r
+ */\r
+ public DeleteStepOne(IFrame iFrame, boolean modal) {\r
+ super(iFrame, modal);\r
+ initialize();\r
+ }\r
+\r
+ /**\r
+ * This method initializes this\r
+ * \r
+ * @return void\r
+ */\r
+ private void initialize() {\r
+ this.setSize(700, 400);\r
+ this.setContentPane(getJContentPane());\r
+ this.setTitle("Delete Framework Archive(FAR) - Step 1: Choose FAR from framework database");\r
+ Dimension d = Toolkit.getDefaultToolkit().getScreenSize();\r
+ this.setLocation((d.width - this.getSize().width) / 2, (d.height - this.getSize().height) / 2);\r
+ }\r
+\r
+ /**\r
+ * This method initializes jContentPane\r
+ * \r
+ * @return javax.swing.JPanel\r
+ */\r
+ private JPanel getJContentPane() {\r
+ if (jContentPane == null) {\r
+ jLabelImage = new JLabel();\r
+ jLabelImage.setBounds(new java.awt.Rectangle(30, 319, 36, 36));\r
+ jLabel4 = new JLabel();\r
+ jLabel4.setBounds(new java.awt.Rectangle(71, 325, 289, 20));\r
+ jLabel3 = new JLabel();\r
+ jLabel3.setBounds(new java.awt.Rectangle(360, 170, 113, 20));\r
+ jLabel3.setText("FAR's Platforms");\r
+ jLabel2 = new JLabel();\r
+ jLabel2.setBounds(new java.awt.Rectangle(40, 170, 113, 20));\r
+ jLabel2.setText("FAR's Packages");\r
+ jLabel = new JLabel();\r
+ jLabel.setBounds(new java.awt.Rectangle(30, 64, 100, 20));\r
+ jLabel.setText("Select one FAR: ");\r
+ jContentPane = new JPanel();\r
+ jContentPane.setLayout(null);\r
+ jContentPane.add(getJButtonCancel(), null);\r
+ jContentPane.add(getJButtonNext(), null);\r
+ jContentPane.add(getJTextArea1(), null);\r
+ jContentPane.add(jLabel, null);\r
+ jContentPane.add(getJScrollPane(), null);\r
+ jContentPane.add(jLabel2, null);\r
+ jContentPane.add(jLabel3, null);\r
+ jContentPane.add(getJScrollPane1(), null);\r
+ jContentPane.add(getJScrollPane2(), null);\r
+ jContentPane.add(jLabel4, null);\r
+ jContentPane.add(getJButtonDetail(), null);\r
+ jContentPane.add(jLabelImage, null);\r
+ }\r
+ return jContentPane;\r
+ }\r
+\r
+ public void valueChanged(ListSelectionEvent e) {\r
+ //\r
+ // Add logic for FAR list value changed\r
+ //\r
+ if (e.getSource() == jListFar) {\r
+ boolean flag = true;\r
+ FarIdentification far = (FarIdentification) jListFar.getSelectedValue();\r
+ WorkspaceTools wt = new WorkspaceTools();\r
+\r
+ removePackages = wt.getPackagesByFar(far);\r
+ jListPackage.setListData(removePackages);\r
+ removePlatforms = wt.getPlatformsByFar(far);\r
+ jListPlatform.setListData(removePlatforms);\r
+\r
+ //\r
+ // Get Dependencies Info for current FAR\r
+ //\r
+ List<PackageIdentification> allPackages = wt.getAllPackages();\r
+\r
+ //\r
+ // Remain packages\r
+ //\r
+ allPackages.removeAll(removePackages);\r
+\r
+ Iterator<PackageIdentification> iter = allPackages.iterator();\r
+\r
+ PackageQueryInterface pq = new PackageQuery();\r
+ while (iter.hasNext()) {\r
+ PackageIdentification item = iter.next();\r
+ List<PackageIdentification> list = pq.getPackageDependencies(item.getSpdFile());\r
+ List<PackageIdentification> result = AggregationOperation.minus(list, allPackages);\r
+ if (result.size() > 0) {\r
+ if (AggregationOperation.intersection(result, removePackages).size() > 0) {\r
+ flag = false;\r
+ break;\r
+ }\r
+ }\r
+ }\r
+\r
+ if (flag) {\r
+ jLabelImage.setIcon(new ImageIcon(getClass().getResource("/resources/images/Yes.JPG")));\r
+ jLabel4.setText("Without any remain packages depend on this FAR. ");\r
+ jButtonDetail.setVisible(false);\r
+ jButtonNext.setEnabled(true);\r
+ jButtonNext.addMouseListener(this);\r
+ } else {\r
+ jLabelImage.setIcon(new ImageIcon(getClass().getResource("/resources/images/No.JPG")));\r
+ jLabel4.setText("Some remain packages still depend on this FAR. ");\r
+ // jButtonDetail.setVisible(true);\r
+ jButtonNext.setEnabled(false);\r
+ jButtonNext.removeMouseListener(this);\r
+ }\r
+ }\r
+ }\r
+\r
+ public void mouseClicked(MouseEvent e) {\r
+ if (e.getSource() == jButtonCancel) {\r
+ this.setVisible(false);\r
+ } else if (e.getSource() == jButtonNext) {\r
+ //\r
+ // Add some logic process here\r
+ //\r
+\r
+ if (stepTwo == null) {\r
+ stepTwo = new DeleteStepTwo(this, true, this);\r
+ }\r
+ this.setVisible(false);\r
+ stepTwo.setVisible(true);\r
+ }\r
+ }\r
+\r
+ public void mousePressed(MouseEvent e) {\r
+ // TODO Auto-generated method stub\r
+\r
+ }\r
+\r
+ public void mouseReleased(MouseEvent e) {\r
+ // TODO Auto-generated method stub\r
+\r
+ }\r
+\r
+ public void mouseEntered(MouseEvent e) {\r
+ // TODO Auto-generated method stub\r
+\r
+ }\r
+\r
+ public void mouseExited(MouseEvent e) {\r
+ // TODO Auto-generated method stub\r
+\r
+ }\r
+\r
+ public FarIdentification getSelecedFar() {\r
+ return (FarIdentification) jListFar.getSelectedValue();\r
+ }\r
+\r
+}\r