+++ /dev/null
-/** @file\r
- \r
- The file is used to show a Select Destination Directory page in\r
- the process of setup\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.packaging.workspace.ui;\r
-\r
-import java.awt.event.ActionEvent;\r
-import java.awt.event.ActionListener;\r
-import java.awt.event.WindowEvent;\r
-\r
-import javax.swing.JButton;\r
-import javax.swing.JFileChooser;\r
-import javax.swing.JLabel;\r
-import javax.swing.JOptionPane;\r
-import javax.swing.JPanel;\r
-import javax.swing.JTextArea;\r
-import javax.swing.JTextField;\r
-\r
-import org.tianocore.common.Log;\r
-import org.tianocore.packaging.common.ui.IFrame;\r
-import org.tianocore.packaging.workspace.command.InstallWorkspace;\r
-\r
-/**\r
- The class is used to show a Select Destination Directory page in\r
- the process of setup\r
- \r
- @since CreateMdkPkg 1.0\r
-\r
- **/\r
-public class SelectDestinationDirectory extends IFrame implements ActionListener {\r
-\r
- ///\r
- /// Define class Serial Version UID\r
- ///\r
- private static final long serialVersionUID = -2924500118774744205L;\r
-\r
- //\r
- // Define class members\r
- //\r
- private JPanel jContentPane = null;\r
-\r
- private JTextArea jTextArea = null;\r
-\r
- private JTextArea jTextArea1 = null;\r
-\r
- private JPanel jPanel = null;\r
-\r
- private JButton jButtonBack = null;\r
-\r
- private JButton jButtonNext = null;\r
-\r
- private JButton jButtonCancel = null;\r
-\r
- private JLabel jLabel = null;\r
-\r
- private JLabel jLabel1 = null;\r
-\r
- private JTextField jTextFieldInstallDir = null;\r
-\r
- private JButton jButtonBrowse = null;\r
-\r
- private JLabel jLabel2 = null;\r
-\r
- private LicenseAgreement la = null;\r
-\r
- /**\r
- This method initializes jTextArea \r
- \r
- @return javax.swing.JTextArea jTextArea\r
- \r
- **/\r
- private JTextArea getJTextArea() {\r
- if (jTextArea == null) {\r
- jTextArea = new JTextArea();\r
- jTextArea.setLocation(new java.awt.Point(0, 0));\r
- jTextArea.setText(" Select Destination Directory");\r
- jTextArea.setFont(new java.awt.Font("Dialog", java.awt.Font.BOLD, 14));\r
- jTextArea.setEditable(false);\r
- jTextArea.setSize(new java.awt.Dimension(495, 20));\r
- }\r
- return jTextArea;\r
- }\r
-\r
- /**\r
- This method initializes jTextArea1 \r
- \r
- @return javax.swing.JTextArea jTextArea1\r
- \r
- **/\r
- private JTextArea getJTextArea1() {\r
- if (jTextArea1 == null) {\r
- jTextArea1 = new JTextArea();\r
- jTextArea1.setLocation(new java.awt.Point(0, 20));\r
- jTextArea1.setText(" Where should MDK package be installed?");\r
- jTextArea1.setEditable(false);\r
- jTextArea1.setSize(new java.awt.Dimension(495, 35));\r
- }\r
- return jTextArea1;\r
- }\r
-\r
- /**\r
- This method initializes jPanel \r
- \r
- @return javax.swing.JPanel jPanel\r
- \r
- **/\r
- private JPanel getJPanel() {\r
- if (jPanel == null) {\r
- jLabel2 = new JLabel();\r
- jLabel2.setText("At least 10 MB of free disk space is required");\r
- jLabel2.setLocation(new java.awt.Point(30, 225));\r
- jLabel2.setSize(new java.awt.Dimension(290, 20));\r
- jLabel1 = new JLabel();\r
- jLabel1.setText("To continue, click Next. If you wuold like to select different folder, click Browse.");\r
- jLabel1.setLocation(new java.awt.Point(30, 55));\r
- jLabel1.setSize(new java.awt.Dimension(435, 20));\r
- jLabel = new JLabel();\r
- jLabel.setText("Setup will install MDK package into the following folders:");\r
- jLabel.setLocation(new java.awt.Point(30, 15));\r
- jLabel.setSize(new java.awt.Dimension(435, 20));\r
- jPanel = new JPanel();\r
- jPanel.setLayout(null);\r
- jPanel.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.LOWERED));\r
- jPanel.setSize(new java.awt.Dimension(494, 251));\r
- jPanel.setLocation(new java.awt.Point(0, 55));\r
- jPanel.add(jLabel, null);\r
- jPanel.add(jLabel1, null);\r
- jPanel.add(getJTextField(), null);\r
- jPanel.add(getJButtonBrowse(), null);\r
- jPanel.add(jLabel2, null);\r
- }\r
- return jPanel;\r
- }\r
-\r
- /**\r
- This method initializes jButtonBack \r
- \r
- @return javax.swing.JButton jButtonBack\r
- \r
- **/\r
- private JButton getJButtonBack() {\r
- if (jButtonBack == null) {\r
- jButtonBack = new JButton();\r
- jButtonBack.setText("Back");\r
- jButtonBack.setSize(new java.awt.Dimension(90, 20));\r
- jButtonBack.setLocation(new java.awt.Point(200, 315));\r
- jButtonBack.setMnemonic('B');\r
- jButtonBack.addActionListener(this);\r
- }\r
- return jButtonBack;\r
- }\r
-\r
- /**\r
- This method initializes jButtonNext \r
- \r
- @return javax.swing.JButton jButtonNext\r
- \r
- **/\r
- private JButton getJButtonNext() {\r
- if (jButtonNext == null) {\r
- jButtonNext = new JButton();\r
- jButtonNext.setText("Next");\r
- jButtonNext.setBounds(new java.awt.Rectangle(292, 315, 90, 20));\r
- jButtonNext.setEnabled(true);\r
- jButtonNext.setMnemonic('N');\r
- jButtonNext.addActionListener(this);\r
- }\r
- return jButtonNext;\r
- }\r
-\r
- /**\r
- This method initializes jButtonCancel \r
- \r
- @return javax.swing.JButton jButtonCancel\r
- \r
- **/\r
- private JButton getJButtonCancel() {\r
- if (jButtonCancel == null) {\r
- jButtonCancel = new JButton();\r
- jButtonCancel.setText("Cancel");\r
- jButtonCancel.setBounds(new java.awt.Rectangle(390, 315, 90, 20));\r
- jButtonCancel.setMnemonic('C');\r
- jButtonCancel.addActionListener(this);\r
- }\r
- return jButtonCancel;\r
- }\r
-\r
- /**\r
- This method initializes jTextFieldInstallDir \r
- \r
- @return javax.swing.JTextField jTextFieldInstallDir\r
- \r
- **/\r
- private JTextField getJTextField() {\r
- if (jTextFieldInstallDir == null) {\r
- jTextFieldInstallDir = new JTextField();\r
- jTextFieldInstallDir.setLocation(new java.awt.Point(30, 90));\r
- jTextFieldInstallDir.setSize(new java.awt.Dimension(320, 20));\r
- jTextFieldInstallDir.setText("C:\\MyWorkspace");\r
- }\r
- return jTextFieldInstallDir;\r
- }\r
-\r
- /**\r
- This method initializes jButtonBrowse \r
- \r
- @return javax.swing.JButton jButtonBrowse\r
- \r
- **/\r
- private JButton getJButtonBrowse() {\r
- if (jButtonBrowse == null) {\r
- jButtonBrowse = new JButton();\r
- jButtonBrowse.setText("Browse");\r
- jButtonBrowse.setSize(new java.awt.Dimension(90, 20));\r
- jButtonBrowse.setLocation(new java.awt.Point(370, 90));\r
- jButtonBrowse.addActionListener(this);\r
- }\r
- return jButtonBrowse;\r
- }\r
-\r
- /**\r
- Main class, used for test\r
- \r
- @param args\r
- \r
- **/\r
- public static void main(String[] args) {\r
- SelectDestinationDirectory sdd = new SelectDestinationDirectory();\r
- sdd.setVisible(true);\r
- }\r
-\r
- /**\r
- This is the default constructor\r
- \r
- **/\r
- public SelectDestinationDirectory() {\r
- super();\r
- init();\r
- }\r
-\r
- /**\r
- This is the override constructor\r
- \r
- @param licenseagreement The input data of licenseagreement\r
- \r
- **/\r
- public SelectDestinationDirectory(LicenseAgreement licenseagreement) {\r
- super();\r
- init();\r
- la = licenseagreement;\r
- }\r
-\r
- /**\r
- This method initializes this\r
- \r
- **/\r
- private void init() {\r
- this.setSize(500, 390);\r
- this.setTitle("Setup - Select Destination Directory");\r
- this.setContentPane(getJContentPane());\r
- this.centerWindow();\r
- this.getRootPane().setDefaultButton(jButtonNext);\r
- }\r
-\r
- /**\r
- This method initializes jContentPane\r
- \r
- @return javax.swing.JPanel jContentPane\r
- \r
- **/\r
- private JPanel getJContentPane() {\r
- if (jContentPane == null) {\r
- jContentPane = new JPanel();\r
- jContentPane.setLayout(null);\r
- jContentPane.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));\r
- jContentPane.add(getJTextArea(), null);\r
- jContentPane.add(getJTextArea1(), null);\r
- jContentPane.add(getJPanel(), null);\r
- jContentPane.add(getJButtonBack(), null);\r
- jContentPane.add(getJButtonNext(), null);\r
- jContentPane.add(getJButtonCancel(), null);\r
- }\r
- return jContentPane;\r
- }\r
-\r
- /* (non-Javadoc)\r
- * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)\r
- * \r
- * Override actionPerformed to listen all actions\r
- * \r
- */\r
- public void actionPerformed(ActionEvent arg0) {\r
- Object obj = arg0.getSource();\r
-\r
- if (obj == jButtonBack) {\r
- this.setVisible(false);\r
- la.setVisible(true);\r
- }\r
-\r
- //\r
- // Show next page if click button Next\r
- //\r
- if (obj == jButtonNext) {\r
- if (createWorkspace(jTextFieldInstallDir.getText())) {\r
- if (initWorkspace(jTextFieldInstallDir.getText())) {\r
- this.setVisible(false);\r
- Finish f = new Finish(jTextFieldInstallDir.getText());\r
- f.setVisible(true);\r
- }\r
- }\r
- }\r
-\r
- if (obj == jButtonCancel) {\r
- this.onExit();\r
- }\r
-\r
- if (obj == jButtonBrowse) {\r
- JFileChooser fc = new JFileChooser();\r
- fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);\r
- int result = fc.showOpenDialog(new JPanel());\r
- if (result == JFileChooser.APPROVE_OPTION) {\r
- jTextFieldInstallDir.setText(fc.getCurrentDirectory().toString() + System.getProperty("file.separator")\r
- + fc.getSelectedFile().getName());\r
- }\r
- }\r
- }\r
-\r
- /**\r
- Create workspace to target dir\r
- \r
- @param strInstallDir The install target dir\r
- @retval true - Create success\r
- @retval false - Create fail\r
- \r
- **/\r
- private boolean createWorkspace(String strInstallDir) {\r
- boolean bolCreateDirectory = true;\r
- int intResult;\r
-\r
- //\r
- //Check if the Install Dir exists\r
- //\r
- Log.log("is Exist Install Dir");\r
- if (InstallWorkspace.isExistInstallDir(strInstallDir)) {\r
- intResult = JOptionPane.showConfirmDialog(null, strInstallDir + " already exists, continue anyway?",\r
- "Override", JOptionPane.YES_NO_OPTION);\r
- if (intResult != JOptionPane.YES_OPTION) {\r
- return false;\r
- } else {\r
- bolCreateDirectory = false;\r
- }\r
- }\r
-\r
- //\r
- //Create the directory\r
- //\r
- Log.log("Create Directory");\r
- if (bolCreateDirectory) {\r
- if (!InstallWorkspace.createInstallDir(strInstallDir)) {\r
- intResult = JOptionPane.showConfirmDialog(null, "Cannot create direcotry " + strInstallDir\r
- + " in system. Click OK to exist.", "Error",\r
- JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE);\r
- return false;\r
- }\r
- }\r
- return true;\r
- }\r
-\r
- /**\r
- Init created workspace\r
- \r
- @param strInstallDir The dir of workspace\r
- @retval true - Init Success\r
- @retval false - Init fail\r
- \r
- **/\r
- private boolean initWorkspace(String strInstallDir) {\r
- String strJarFile = System.getProperty("user.dir") + System.getProperty("file.separator") + "CreateMdkPkg.jar";\r
-\r
- //\r
- //Install package\r
- //\r
- Log.log("Install Package");\r
- try {\r
- if (!InstallWorkspace.installPackage(strInstallDir, strJarFile)) {\r
- JOptionPane.showConfirmDialog(null, "Cannot intall package in system. Click OK to exist.", "Error",\r
- JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE);\r
- return false;\r
- }\r
- } catch (Exception e) {\r
- e.printStackTrace();\r
- }\r
-\r
- //\r
- //Update framework database\r
- //\r
- Log.log("Set Framework Database");\r
- if (!InstallWorkspace.setFrameworkDatabase()) {\r
- JOptionPane.showConfirmDialog(null, "Cannot create workspace database in system. Click OK to exist.",\r
- "Error", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE);\r
- return false;\r
- }\r
-\r
- //\r
- //Set System Environment\r
- //\r
- Log.log("Set System Environment");\r
- if (!InstallWorkspace.setSystemEnvironment()) {\r
- JOptionPane.showConfirmDialog(null, "Cannot set WORKSPACE variable in system. Click OK to exist.", "Error",\r
- JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE);\r
- return false;\r
- }\r
-\r
- //\r
- //Set Tool Chain Path\r
- //\r
- Log.log("Set Tool Chain Path");\r
- if (!InstallWorkspace.setToolChainPath()) {\r
- JOptionPane.showConfirmDialog(null, "Cannot set Tool Chain path variable in system. Click OK to exist.",\r
- "Error", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE);\r
- return false;\r
- }\r
-\r
- //\r
- //Install tool chain\r
- //\r
- Log.log("Set Tool Chain");\r
- if (!InstallWorkspace.setToolChain()) {\r
- JOptionPane.showConfirmDialog(null, "Cannot set Tool Chain in system. Click OK to exist.", "Error",\r
- JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE);\r
- return false;\r
- }\r
-\r
- //\r
- //Delete setup files\r
- //\r
- Log.log("Delete Setup Files");\r
- try {\r
- InstallWorkspace.delSetupPackage(strInstallDir + System.getProperty("file.separator") + "org");\r
- } catch (Exception e) {\r
- e.printStackTrace();\r
- Log.log(e.getMessage());\r
- }\r
-\r
- return true;\r
- }\r
-\r
- /* (non-Javadoc)\r
- * @see java.awt.event.WindowListener#windowClosing(java.awt.event.WindowEvent)\r
- * \r
- * Override windowClosing to show confirm quit dialog\r
- * \r
- */\r
- public void windowClosing(WindowEvent arg0) {\r
- this.onExit();\r
- }\r
-}\r