package com.google.code.joto.ui.filter; import java.awt.event.ActionEvent; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.WindowConstants; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.google.code.joto.util.ui.JButtonUtils; /** * helper class to store a JFrame for a RecordEventFilterFileTablePane, and reopen it on demand */ public class RecordEventFilterFileExternalFrameHolder { private static Logger log = LoggerFactory.getLogger(RecordEventFilterFileExternalFrameHolder.class); private RecordEventFilterFileTableModel filterTableModel; private RecordEventFilterFileTablePanel filtersPanel; private JFrame filtersFrame; // ------------------------------------------------------------------------ public RecordEventFilterFileExternalFrameHolder(RecordEventFilterFileTableModel filterTableModel) { this.filterTableModel = filterTableModel; } // ------------------------------------------------------------------------ public JButton createShowExternalFrameButton(String label) { if (label == null) { label = "open filters table view"; } return JButtonUtils.snew(label, this, "onButtonOpenExternalFilterTableFrame"); } /** called by introspectin, GUI callback */ public void onButtonOpenExternalFilterTableFrame(ActionEvent event) { showFilterFrame(); } public void showFilterFrame() { if (filtersFrame == null) { filtersFrame = new JFrame(); filtersPanel = new RecordEventFilterFileTablePanel(filterTableModel); filtersFrame.getContentPane().add(filtersPanel.getJComponent()); filtersFrame.pack(); filtersFrame.setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE); filtersFrame.setVisible(true); } else { if (!filtersFrame.isVisible()) { filtersFrame.setVisible(true); } } filtersFrame.requestFocus(); } public void dispose() { if (filtersFrame != null) { filtersPanel = null; try { filtersFrame.dispose(); } catch(Exception ex) { log.warn("Failed to dispose ... ignore", ex); } filtersFrame = null; } } }