Mercurial > repos > timpalpant > java_genomics_toolkit
diff java-genomics-toolkit/gui/edu/unc/genomics/AssemblyManagerDialog.java @ 0:1daf3026d231
Upload alpha version
author | timpalpant |
---|---|
date | Mon, 13 Feb 2012 21:55:55 -0500 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/java-genomics-toolkit/gui/edu/unc/genomics/AssemblyManagerDialog.java Mon Feb 13 21:55:55 2012 -0500 @@ -0,0 +1,135 @@ +package edu.unc.genomics; + +import java.awt.BorderLayout; +import java.awt.FlowLayout; + +import javax.swing.JButton; +import javax.swing.JDialog; +import javax.swing.JFileChooser; +import javax.swing.JFrame; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JTable; +import javax.swing.border.EmptyBorder; + +import org.apache.log4j.Logger; + +import java.awt.event.ActionListener; +import java.awt.event.ActionEvent; +import java.io.IOException; +import java.nio.file.Path; +import java.util.zip.DataFormatException; + +/** + * View for AssemblyManager + * + * @author timpalpant + * + */ +public class AssemblyManagerDialog extends JDialog { + + public static final int DEFAULT_WIDTH = 400; + public static final int DEFAULT_HEIGHT = 500; + + private static final long serialVersionUID = -1461628562713621064L; + private static final Logger log = Logger.getLogger(AssemblyManagerDialog.class); + + private final JPanel contentPanel = new JPanel(); + private final JFileChooser fcCustomAssembly = new JFileChooser(); + private final JTable assembliesTable = new JTable(); + + private AssemblyTableModel model; + + /** + * Create the dialog. + */ + public AssemblyManagerDialog(JFrame parent) { + super(parent, "Assembly Manager", true); + + setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT); + int centeredX = parent.getX() + (parent.getWidth()-getWidth()) / 2; + int centeredY = parent.getY() + (parent.getHeight()-getHeight()) / 2; + setLocation(centeredX, centeredY); + + getContentPane().setLayout(new BorderLayout()); + contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5)); + getContentPane().add(contentPanel, BorderLayout.CENTER); + contentPanel.setLayout(new BorderLayout(0, 0)); + + // Initialize the assemblies list + model = new AssemblyTableModel(AssemblyManager.getAvailableAssemblies()); + assembliesTable.setModel(model); + assembliesTable.setRowSelectionAllowed(true); + JScrollPane scrollPane = new JScrollPane(assembliesTable); + assembliesTable.setFillsViewportHeight(true); + contentPanel.add(scrollPane); + + JPanel buttonPane = new JPanel(); + buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT)); + getContentPane().add(buttonPane, BorderLayout.SOUTH); + + JButton removeAssemblyButton = new JButton("Remove"); + removeAssemblyButton.setActionCommand("RemoveAssembly"); + removeAssemblyButton.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + removeCustomAssembly(); + } + }); + buttonPane.add(removeAssemblyButton); + + JButton loadAssemblyButton = new JButton("Load Custom Assembly"); + loadAssemblyButton.setActionCommand("LoadAssembly"); + loadAssemblyButton.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + loadCustomAssembly(); + } + }); + buttonPane.add(loadAssemblyButton); + + JButton doneButton = new JButton("Done"); + doneButton.setActionCommand("Done"); + doneButton.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + closeDialog(); + } + }); + buttonPane.add(doneButton); + getRootPane().setDefaultButton(doneButton); + } + + private void removeCustomAssembly() { + for (int row : assembliesTable.getSelectedRows()) { + try { + Assembly a = model.getRow(row); + AssemblyManager.deleteAssembly(a); + model.removeRow(row); + } catch (IOException e) { + log.error("Error deleting Assembly"); + e.printStackTrace(); + JOptionPane.showMessageDialog(this, "Error deleting assembly", "Assembly Manager Error", JOptionPane.ERROR_MESSAGE); + } + } + } + + private void loadCustomAssembly() { + int returnVal = fcCustomAssembly.showOpenDialog(this); + if (returnVal == JFileChooser.APPROVE_OPTION) { + Path assemblyFile = fcCustomAssembly.getSelectedFile().toPath(); + try { + Assembly a = AssemblyManager.loadCustomAssembly(assemblyFile); + // Add it to the assemblies list model + model.addAssembly(a); + } catch (IOException | DataFormatException e) { + log.error("Error loading custom assembly: " + assemblyFile); + e.printStackTrace(); + JOptionPane.showMessageDialog(this, "Error loading custom assembly", "Assembly Manager Error", JOptionPane.ERROR_MESSAGE); + } + } + } + + private void closeDialog() { + this.dispose(); + } + +}