Mercurial > repos > yufei-luo > s_mart
comparison smart_toolShed/SMART/Java/Installer/SmartInstaller.java @ 0:e0f8dcca02ed
Uploaded S-MART tool. A toolbox manages RNA-Seq and ChIP-Seq data.
| author | yufei-luo |
|---|---|
| date | Thu, 17 Jan 2013 10:52:14 -0500 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:e0f8dcca02ed |
|---|---|
| 1 import java.util.*; | |
| 2 import java.awt.*; | |
| 3 import java.awt.event.ActionEvent; | |
| 4 import java.awt.event.ActionListener; | |
| 5 import java.io.*; | |
| 6 import javax.swing.*; | |
| 7 import javax.swing.filechooser.*; | |
| 8 import javax.swing.border.*; | |
| 9 import javax.swing.SwingUtilities; | |
| 10 import java.net.*; | |
| 11 | |
| 12 public class SmartInstaller extends JPanel implements ActionListener { | |
| 13 int BUFFER = 1024; | |
| 14 | |
| 15 JFrame mainFrame; | |
| 16 JTextArea logArea; | |
| 17 | |
| 18 // configuration chooser buttons | |
| 19 String configurations[] = {"32 bits", "64 bits"}; | |
| 20 JRadioButton configurationButtons[]; | |
| 21 | |
| 22 // program chooser buttons | |
| 23 String programChoosers[] = {"R", "R Color Brewer Package", "R HMisc Package", "Python 2.6", "S-MART"}; | |
| 24 JCheckBox programChooserButtons[]; | |
| 25 | |
| 26 JButton goButton; | |
| 27 | |
| 28 // install directory | |
| 29 JButton installDirectoryChooserButton; | |
| 30 JTextField installDirectoryChooserTextField; | |
| 31 | |
| 32 | |
| 33 public SmartInstaller() { | |
| 34 super(); | |
| 35 | |
| 36 Box box = Box.createVerticalBox(); | |
| 37 | |
| 38 // Header | |
| 39 JPanel headerPanel = new JPanel(false); | |
| 40 JTextArea headerArea = new JTextArea("This is the S-MART installation tool.\r\nIt will download and install the needed softwares, as well as S-MART itself.\r\nYou can unselect the software that you already have installed.\r\nDuring the installation, accept all the default parameters."); | |
| 41 TitledBorder headerBorder = BorderFactory.createTitledBorder("Welcome to the S-MART installer!"); | |
| 42 headerArea.setEditable(false); | |
| 43 headerArea.setBackground(headerPanel.getBackground()); | |
| 44 headerPanel.add(headerArea); | |
| 45 headerPanel.setBorder(headerBorder); | |
| 46 | |
| 47 | |
| 48 // Configuration | |
| 49 JPanel configurationPanel = new JPanel(false); | |
| 50 configurationPanel.setLayout(new GridLayout(1, 0)); | |
| 51 configurationButtons = new JRadioButton[configurations.length]; | |
| 52 ButtonGroup configurationGroup = new ButtonGroup(); | |
| 53 for (int i = 0; i < configurations.length; i++) { | |
| 54 JRadioButton button = new JRadioButton(configurations[i]); | |
| 55 configurationPanel.add(button); | |
| 56 configurationButtons[i] = button; | |
| 57 configurationGroup.add(button); | |
| 58 } | |
| 59 configurationButtons[0].setSelected(true); | |
| 60 TitledBorder configurationBorder = BorderFactory.createTitledBorder("Configuration"); | |
| 61 configurationPanel.setBorder(configurationBorder); | |
| 62 | |
| 63 | |
| 64 // Program chooser panel | |
| 65 JPanel programPanel = new JPanel(false); | |
| 66 programPanel.setLayout(new GridLayout(0, 1)); | |
| 67 | |
| 68 JLabel programLabel = new JLabel("Choose which programs to install:"); | |
| 69 programPanel.add(programLabel); | |
| 70 programChooserButtons = new JCheckBox[programChoosers.length]; | |
| 71 for (int i = 0; i < programChoosers.length; i++) { | |
| 72 JCheckBox button = new JCheckBox(programChoosers[i]); | |
| 73 button.setSelected(true); | |
| 74 programPanel.add(button); | |
| 75 programChooserButtons[i] = button; | |
| 76 } | |
| 77 TitledBorder programBorder = BorderFactory.createTitledBorder("Programs"); | |
| 78 programPanel.setBorder(programBorder); | |
| 79 | |
| 80 // Install directory chooser | |
| 81 JPanel installDirectoryChooserPanel = new JPanel(false); | |
| 82 installDirectoryChooserPanel.setLayout(new GridLayout(1, 0)); | |
| 83 JLabel installDirectoryChooserLabel = new JLabel("Choose a directory to install S-MART: "); | |
| 84 installDirectoryChooserTextField = new JTextField(); | |
| 85 installDirectoryChooserButton = new JButton("Open..."); | |
| 86 installDirectoryChooserButton.addActionListener(this); | |
| 87 | |
| 88 installDirectoryChooserPanel.add(installDirectoryChooserLabel); | |
| 89 installDirectoryChooserPanel.add(installDirectoryChooserTextField); | |
| 90 installDirectoryChooserPanel.add(installDirectoryChooserButton); | |
| 91 TitledBorder installDirectoryChooserBorder = BorderFactory.createTitledBorder("Installation directory"); | |
| 92 installDirectoryChooserPanel.setBorder(installDirectoryChooserBorder); | |
| 93 | |
| 94 // GO! | |
| 95 JPanel goPanel = new JPanel(false); | |
| 96 goButton = new JButton("GO!"); | |
| 97 goButton.addActionListener(this); | |
| 98 goButton.setSelected(true); | |
| 99 goPanel.add(goButton); | |
| 100 TitledBorder goBorder = BorderFactory.createTitledBorder("Start install"); | |
| 101 goPanel.setBorder(goBorder); | |
| 102 | |
| 103 // Log | |
| 104 logArea = new JTextArea(10, 120); | |
| 105 logArea.setFont(new Font("Monospaced", logArea.getFont().getStyle(), logArea.getFont().getSize())); | |
| 106 JScrollPane logScroll = new JScrollPane(logArea, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); | |
| 107 TitledBorder logBorder = BorderFactory.createTitledBorder("Log"); | |
| 108 logScroll.setBorder(logBorder); | |
| 109 | |
| 110 GridLayout horizontalLayout = new GridLayout(1, 0); | |
| 111 | |
| 112 box.add(headerPanel); | |
| 113 box.add(configurationPanel); | |
| 114 box.add(programPanel); | |
| 115 box.add(installDirectoryChooserPanel); | |
| 116 box.add(goPanel); | |
| 117 box.add(logScroll); | |
| 118 | |
| 119 add(box); | |
| 120 } | |
| 121 | |
| 122 | |
| 123 public void actionPerformed(ActionEvent e) { | |
| 124 | |
| 125 // Install directories chooser | |
| 126 if (e.getSource() == goButton) { | |
| 127 boolean[] selectedPrograms = new boolean[programChoosers.length]; | |
| 128 for (int i = 0; i < programChoosers.length; i++) { | |
| 129 selectedPrograms[i] = programChooserButtons[i].isSelected(); | |
| 130 } | |
| 131 SmartInstallerTask task = new SmartInstallerTask(logArea, selectedPrograms, installDirectoryChooserTextField.getText(), (configurationButtons[0].isSelected())? 0: 1); | |
| 132 task.execute(); | |
| 133 } | |
| 134 // Install directories chooser | |
| 135 else if (e.getSource() == installDirectoryChooserButton) { | |
| 136 JFileChooser chooser = new JFileChooser(); | |
| 137 chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); | |
| 138 if (chooser.showOpenDialog(mainFrame) == JFileChooser.APPROVE_OPTION) { | |
| 139 installDirectoryChooserTextField.setText(chooser.getSelectedFile().getPath()); | |
| 140 } | |
| 141 } | |
| 142 } | |
| 143 | |
| 144 private static void createAndShowGUI() { | |
| 145 // Create and set up the window. | |
| 146 JFrame mainFrame = new JFrame("S-Mart Installer"); | |
| 147 mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); | |
| 148 | |
| 149 //Create and set up the content pane. | |
| 150 JComponent newContentPane = new SmartInstaller(); | |
| 151 newContentPane.setOpaque(true); | |
| 152 mainFrame.setContentPane(newContentPane); | |
| 153 | |
| 154 // Display the window. | |
| 155 mainFrame.pack(); | |
| 156 mainFrame.setVisible(true); | |
| 157 } | |
| 158 | |
| 159 | |
| 160 public static void main(String[] args) { | |
| 161 javax.swing.SwingUtilities.invokeLater(new Runnable() { | |
| 162 public void run() { | |
| 163 createAndShowGUI(); | |
| 164 } | |
| 165 }); | |
| 166 } | |
| 167 } |
