annotate java-genomics-toolkit/gui/edu/unc/genomics/ToolRunnerFrame.java @ 0:1daf3026d231

Upload alpha version
author timpalpant
date Mon, 13 Feb 2012 21:55:55 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
1 package edu.unc.genomics;
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
2
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
3 import java.awt.BorderLayout;
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
4 import java.awt.Color;
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
5 import java.awt.Component;
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
6 import java.awt.Container;
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
7 import java.awt.Dimension;
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
8 import java.awt.Font;
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
9
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
10 import javax.swing.JFrame;
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
11 import javax.swing.JPanel;
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
12
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
13 import javax.swing.BorderFactory;
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
14 import javax.swing.JComponent;
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
15 import javax.swing.JLabel;
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
16 import javax.swing.JList;
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
17 import javax.swing.JMenuBar;
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
18 import javax.swing.JMenu;
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
19 import javax.swing.JMenuItem;
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
20 import javax.swing.JButton;
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
21 import javax.swing.JOptionPane;
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
22 import javax.swing.JPopupMenu;
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
23 import javax.swing.JScrollPane;
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
24 import javax.swing.SwingConstants;
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
25
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
26 import javax.swing.JProgressBar;
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
27 import javax.swing.JSplitPane;
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
28 import javax.swing.BoxLayout;
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
29 import javax.swing.JTabbedPane;
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
30 import javax.swing.JTextPane;
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
31
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
32 import javax.swing.event.TreeSelectionListener;
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
33 import javax.swing.event.TreeSelectionEvent;
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
34 import javax.xml.parsers.ParserConfigurationException;
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
35
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
36 import org.apache.log4j.Logger;
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
37 import org.simplericity.macify.eawt.Application;
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
38 import org.simplericity.macify.eawt.ApplicationEvent;
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
39 import org.simplericity.macify.eawt.ApplicationListener;
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
40 import org.simplericity.macify.eawt.DefaultApplication;
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
41 import org.xml.sax.SAXException;
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
42
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
43 import com.beust.jcommander.JCommander;
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
44
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
45 import java.awt.event.ActionListener;
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
46 import java.awt.event.ActionEvent;
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
47 import java.io.IOException;
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
48
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
49 /**
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
50 * The main ToolRunner window
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
51 * and controller for creating, running, and managing Jobs
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
52 *
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
53 * @author timpalpant
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
54 *
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
55 */
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
56 public class ToolRunnerFrame extends JFrame implements ApplicationListener {
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
57
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
58 private static final long serialVersionUID = 6454774196137357898L;
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
59 private static final Logger log = Logger.getLogger(ToolRunnerFrame.class);
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
60
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
61 private final Application application = new DefaultApplication();
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
62
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
63 private final JPanel contentPane = new JPanel();
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
64 private final JSplitPane splitPane = new JSplitPane();
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
65 private final JPanel mainPane = new JPanel();
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
66 private final JProgressBar progressBar = new JProgressBar();
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
67 private final JTabbedPane tabbedPane = new JTabbedPane(SwingConstants.TOP);
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
68 private final JobConfigPanel configurationPanel = new JobConfigPanel();
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
69 private final JTextPane helpTextPanel = new JTextPane();
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
70 private final ToolsTree toolsTree = new ToolsTree();
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
71
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
72 private final JobQueue queue = new JobQueue();
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
73 private final JobQueueManager queueManager = new JobQueueManager(queue);
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
74 private final JList<SubmittedJob> queueList = new JList<>(queue);
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
75
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
76 /**
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
77 * Create the frame.
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
78 */
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
79 public ToolRunnerFrame() {
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
80 //application.addPreferencesMenuItem();
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
81 //application.setEnabledPreferencesMenu(true);
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
82 application.addApplicationListener(this);
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
83
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
84 // set OS X-specific properties
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
85 if (application.isMac()) {
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
86 setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
87 //toolsTree.putClientProperty("Quaqua.Tree.style", "sourceList");
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
88 } else {
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
89 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
90 }
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
91 setTitle("Genomics Toolkit Tool Runner");
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
92 setBounds(100, 100, 1000, 600);
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
93
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
94 contentPane.setBorder(BorderFactory.createEmptyBorder());
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
95 contentPane.setLayout(new BorderLayout(0, 0));
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
96 setContentPane(contentPane);
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
97
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
98 initializeChildren();
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
99 initializeMenuBar();
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
100 }
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
101
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
102 private void initializeChildren() {
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
103 splitPane.setBorder(BorderFactory.createEmptyBorder());
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
104 contentPane.add(splitPane, BorderLayout.CENTER);
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
105
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
106 initializeQueuePanel();
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
107 initializeToolsTree();
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
108
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
109 mainPane.setLayout(new BorderLayout(0, 0));
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
110 mainPane.setBorder(BorderFactory.createLineBorder(Color.LIGHT_GRAY));
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
111 mainPane.add(tabbedPane, BorderLayout.CENTER);
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
112
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
113 JPanel runPanel = new JPanel();
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
114 runPanel.setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 0));
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
115 runPanel.setLayout(new BoxLayout(runPanel, BoxLayout.X_AXIS));
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
116 runPanel.add(progressBar);
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
117 JButton btnRun = new JButton("Run");
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
118 btnRun.addActionListener(new ActionListener() {
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
119 public void actionPerformed(ActionEvent e) {
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
120 addJobToQueue();
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
121 }
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
122 });
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
123 runPanel.add(btnRun);
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
124 mainPane.add(runPanel, BorderLayout.SOUTH);
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
125 splitPane.setRightComponent(mainPane);
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
126
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
127 initializeConfigurationPanel();
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
128 initializeHelpPanel();
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
129 }
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
130
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
131 private void initializeMenuBar() {
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
132 JMenuBar menuBar = new JMenuBar();
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
133 setJMenuBar(menuBar);
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
134
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
135 JMenu mnFileMenu = new JMenu("File");
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
136 menuBar.add(mnFileMenu);
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
137
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
138 JMenuItem mntmAssemblyManager = new JMenuItem("Assembly manager");
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
139 mntmAssemblyManager.addActionListener(new ActionListener() {
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
140 public void actionPerformed(ActionEvent e) {
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
141 JMenuItem menuItem = (JMenuItem) e.getSource();
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
142 JPopupMenu popupMenu = (JPopupMenu) menuItem.getParent();
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
143 Component invoker = popupMenu.getInvoker(); //this is the JMenu (in my code)
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
144 JComponent invokerAsJComponent = (JComponent) invoker;
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
145 Container topLevel = invokerAsJComponent.getTopLevelAncestor();
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
146 AssemblyManagerDialog dialog = new AssemblyManagerDialog((JFrame) topLevel);
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
147 //dialog.getRootPane().putClientProperty("Window.style", "small");
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
148 dialog.setVisible(true);
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
149 }
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
150 });
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
151 mnFileMenu.add(mntmAssemblyManager);
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
152
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
153 JMenu mnHelpMenu = new JMenu("Help");
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
154 menuBar.add(mnHelpMenu);
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
155
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
156 JMenuItem mntmHelpContents = new JMenuItem("Help Contents");
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
157 mnHelpMenu.add(mntmHelpContents);
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
158
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
159 if (!application.isMac()) {
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
160 JMenuItem mntmAbout = new JMenuItem("About");
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
161 mnHelpMenu.add(mntmAbout);
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
162 mnHelpMenu.addActionListener(new ActionListener() {
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
163 public void actionPerformed(ActionEvent e) {
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
164 handleAbout(null);
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
165 }
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
166 });
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
167 }
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
168 }
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
169
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
170 private void initializeQueuePanel() {
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
171 JPanel queuePanel = new JPanel();
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
172 queuePanel.setLayout(new BoxLayout(queuePanel, BoxLayout.PAGE_AXIS));
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
173 queuePanel.setBorder(BorderFactory.createEmptyBorder());
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
174 contentPane.add(queuePanel, BorderLayout.EAST);
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
175
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
176 JLabel queueLabel = new JLabel("Job Queue");
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
177 queueLabel.setBorder(BorderFactory.createEmptyBorder(5, 0, 5, 0));
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
178 queueLabel.setAlignmentX(JLabel.CENTER_ALIGNMENT);
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
179 queuePanel.add(queueLabel);
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
180
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
181 queueList.setBackground(contentPane.getBackground());
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
182 queueList.setCellRenderer(new JobQueueCellRenderer());
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
183 JScrollPane queueListScrollPane = new JScrollPane(queueList);
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
184 queueListScrollPane.setBorder(BorderFactory.createEmptyBorder());
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
185 queueListScrollPane.setBackground(contentPane.getBackground());
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
186 queueListScrollPane.setPreferredSize(new Dimension(200, Integer.MAX_VALUE));
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
187 queuePanel.add(queueListScrollPane);
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
188 }
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
189
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
190 private void initializeConfigurationPanel() {
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
191 JScrollPane configScrollPane = new JScrollPane(configurationPanel);
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
192 configScrollPane.setBorder(BorderFactory.createEmptyBorder());
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
193 tabbedPane.addTab("Tool Configuration", null, configScrollPane, "Configure tool");
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
194 }
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
195
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
196 private void initializeHelpPanel() {
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
197 JPanel helpPanel = new JPanel();
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
198 tabbedPane.addTab("Help", null, helpPanel, null);
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
199 helpPanel.setLayout(new BorderLayout(0, 0));
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
200
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
201 helpTextPanel.setEditable(false);
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
202 helpTextPanel.setBackground(tabbedPane.getBackground());
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
203 Font mono = new Font("Monospaced", helpTextPanel.getFont().getStyle(), helpTextPanel.getFont().getSize());
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
204 helpTextPanel.setFont(mono);
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
205 JScrollPane helpScrollPane = new JScrollPane(helpTextPanel);
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
206 helpScrollPane.setBorder(BorderFactory.createEmptyBorder());
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
207 helpPanel.add(helpScrollPane);
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
208 }
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
209
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
210 private void initializeToolsTree() {
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
211 try {
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
212 ToolsTreeModel model = ToolsTreeModel.loadDefaultConfig();
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
213 toolsTree.setModel(model);
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
214 } catch (ParserConfigurationException | SAXException | IOException e1) {
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
215 log.error("Error loading tool configuration file");
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
216 e1.printStackTrace();
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
217 System.exit(-1);
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
218 } catch (ClassNotFoundException e) {
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
219 log.error("Error loading tool: " + e.getMessage());
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
220 e.printStackTrace();
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
221 System.exit(-1);
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
222 }
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
223
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
224 toolsTree.addTreeSelectionListener(new TreeSelectionListener() {
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
225 public void valueChanged(TreeSelectionEvent e) {
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
226 changeTool();
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
227 }
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
228 });
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
229
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
230 JScrollPane toolsTreeScrollPane = new JScrollPane(toolsTree);
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
231 toolsTreeScrollPane.setBorder(BorderFactory.createMatteBorder(0, 0, 0, 1, Color.LIGHT_GRAY));
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
232 splitPane.setLeftComponent(toolsTreeScrollPane);
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
233 }
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
234
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
235 /**
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
236 * Change the configuration panel to the currently selected tool
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
237 * to configure a new Job
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
238 */
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
239 private void changeTool() {
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
240 // Returns the last path element of the selection.
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
241 Object node = toolsTree.getLastSelectedPathComponent();
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
242 // Nothing is selected
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
243 if (node == null) {
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
244 return;
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
245 }
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
246
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
247 if (node instanceof ToolsTreeNode) {
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
248 ToolsTreeNode toolNode = (ToolsTreeNode) node;
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
249 try {
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
250 Class<? extends CommandLineTool> tool = toolNode.getClazz();
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
251
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
252 // Set up the configuration panel to configure this tool
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
253 Job job = new Job(tool);
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
254 configurationPanel.setJob(job);
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
255 // Set the help text to the usage
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
256 helpTextPanel.setText(job.getUsageText());
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
257 } catch (InstantiationException | IllegalAccessException e) {
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
258 log.error("Error initializing Job");
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
259 e.printStackTrace();
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
260 JOptionPane.showMessageDialog(this, "Error initializing job", "Job Initialization Error", JOptionPane.ERROR_MESSAGE);
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
261 }
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
262
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
263 }
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
264 }
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
265
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
266 private void addJobToQueue() {
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
267 Job currentJob = configurationPanel.getJob();
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
268 if (currentJob == null) return;
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
269
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
270 // Validate the required parameters
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
271 log.info("Validating parameters for tool");
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
272 if (!currentJob.validateArguments()) {
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
273 configurationPanel.highlightInvalidArguments();
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
274 return;
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
275 }
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
276
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
277 // Add the job to the queue
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
278 try {
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
279 queueManager.submitJob(currentJob);
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
280 configurationPanel.setJob(null);
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
281 } catch (JobException e) {
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
282 log.error("Error adding Job to queue");
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
283 e.printStackTrace();
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
284 JOptionPane.showMessageDialog(this, "Error adding job to queue", "Job Queue Error", JOptionPane.ERROR_MESSAGE);
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
285 }
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
286 }
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
287
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
288 public void handleAbout(ApplicationEvent event) {
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
289 JOptionPane.showMessageDialog(this, "Java Genomics Toolkit v1.0");
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
290 if (event != null) {
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
291 event.setHandled(true);
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
292 }
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
293 }
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
294
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
295 public void handleOpenApplication(ApplicationEvent event) {
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
296 // Application was opened
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
297 }
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
298
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
299 public void handleOpenFile(ApplicationEvent event) {
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
300 //JOptionPane.showMessageDialog(frmToolRunner, "OS X told us to open " + event.getFilename());
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
301 }
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
302
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
303 public void handlePreferences(ApplicationEvent event) {
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
304 //JOptionPane.showMessageDialog(frmToolRunner, "No preferences available");
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
305 }
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
306
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
307 public void handlePrintFile(ApplicationEvent event) {
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
308 //JOptionPane.showMessageDialog(frmToolRunner, "OS X told us to print " + event.getFilename());
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
309 }
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
310
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
311 public void handleQuit(ApplicationEvent event) {
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
312 boolean confirm = true;
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
313 if (queueManager.isRunning()) {
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
314 int result = JOptionPane.showConfirmDialog(this, "Jobs are currently running. Are you sure you want to quit?", "Confirm Quit", JOptionPane.OK_CANCEL_OPTION);
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
315 confirm = (result == JOptionPane.OK_OPTION);
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
316 }
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
317
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
318 if (confirm) {
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
319 dispose();
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
320 System.exit(0);
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
321 }
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
322 }
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
323
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
324 public void handleReOpenApplication(ApplicationEvent event) {
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
325 //JOptionPane.showMessageDialog(frmToolRunner, "OS X told the application was reopened");
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
326 setVisible(true);
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
327 }
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
328 }