Mercurial > repos > yufei-luo > s_mart
comparison SMART/Java/Installer/SmartInstaller.java @ 6:769e306b7933
Change the repository level.
author | yufei-luo |
---|---|
date | Fri, 18 Jan 2013 04:54:14 -0500 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
5:ea3082881bf8 | 6:769e306b7933 |
---|---|
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 } |