annotate gui/edu/unc/genomics/ToolRunnerFrame.java @ 2:e16016635b2a

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