package com.illumina.basespace.igv.ui.tree; import java.awt.BorderLayout; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.util.List; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import com.illumina.basespace.igv.ui.BusyGlassPaneRenderer; import com.illumina.basespace.igv.ui.ImageProvider; import com.illumina.basespace.igv.ui.ProgressReport; public class BrowserDialog extends JDialog { private static final BrowserDialog INSTANCE = new BrowserDialog(); private final JPanel contentPanel = new JPanel(); private BrowserPanel browserPanel; private BusyGlassPaneRenderer busy; private JButton okButton; private BrowserDialog() { super(new DummyFrame("BaseSpace Browser")); browserPanel = new BrowserPanel(); addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { getOwner().dispose(); } }); setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE); initialize(); contentPanel.removeAll(); contentPanel.add(browserPanel); contentPanel.invalidate(); } public static BrowserDialog instance() { return INSTANCE; } public BrowserPanel getBrowserPanel() { return browserPanel; } public void workInit(double max) { busy = new BusyGlassPaneRenderer(contentPanel, max); } public void workStart() { okButton.setEnabled(false); busy.showHint(); } public void setWorkMax(int max) { busy.setProgressMax(max); } public void workProgress(List<ProgressReport> chunks) { busy.process(chunks); } public void workDone() { busy.dispose(); okButton.setEnabled(true); } private void initialize() { setTitle("BaseSpace Browser"); setBounds(100, 100, 450, 300); getContentPane().setLayout(new BorderLayout()); contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5)); getContentPane().add(contentPanel, BorderLayout.CENTER); contentPanel.setLayout(new BorderLayout(0, 0)); { JPanel buttonPane = new JPanel(); buttonPane.setLayout(new FlowLayout(FlowLayout.CENTER)); getContentPane().add(buttonPane, BorderLayout.SOUTH); { okButton = new JButton("Close"); okButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { setVisible(false); //getOwner().dispose(); //dispose(); } }); buttonPane.add(okButton); getRootPane().setDefaultButton(okButton); } } this.setIconImage(ImageProvider.instance().getImage("igv-icon-16px.png")); } }