]> git.proxmox.com Git - mirror_edk2.git/blobdiff - 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
diff --git a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/far/deleteui/DeleteStepOne.java b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/far/deleteui/DeleteStepOne.java
new file mode 100644 (file)
index 0000000..ecb71c3
--- /dev/null
@@ -0,0 +1,396 @@
+/** @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