package org.atdl4j.ui.swing.app.impl; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JDialog; import javax.swing.JPanel; import org.atdl4j.config.Atdl4jConfig; import org.atdl4j.config.Atdl4jOptions; import org.atdl4j.ui.app.Atdl4jUserMessageHandler; import org.atdl4j.ui.app.impl.AbstractAtdl4jInputAndFilterDataSelectionPanel; /** * Represents the Swing-specific GUI component used to invoke Atdl4jInputAndFilterData pop-up. * */ public class SwingAtdl4jInputAndFilterDataSelectionPanel extends AbstractAtdl4jInputAndFilterDataSelectionPanel { private JPanel parentPanel; private JButton atdl4jInputAndFilterDataPanelButton; private JDialog atdl4jInputAndFilterDataPanelDialog; private JCheckBox debugModeButton; /* (non-Javadoc) * @see org.atdl4j.ui.app.Atdl4jInputAndFilterDataSelectionPanel#buildAtdl4jInputAndFilterDataSelectionPanel(java.lang.Object, org.atdl4j.config.Atdl4jOptions, org.atdl4j.ui.app.Atdl4jUserMessageHandler) */ @Override public Object buildAtdl4jInputAndFilterDataSelectionPanel(Object aParentOrShell, Atdl4jOptions aAtdl4jOptions, Atdl4jUserMessageHandler aAtdl4jUserMessageHandler) { return buildAtdl4jInputAndFilterDataSelectionPanel( (JPanel) aParentOrShell, aAtdl4jOptions, aAtdl4jUserMessageHandler); } public JPanel buildAtdl4jInputAndFilterDataSelectionPanel(JPanel aParentOrShell, Atdl4jOptions aAtdl4jOptions, Atdl4jUserMessageHandler aAtdl4jUserMessageHandler) { parentPanel = (JPanel) aParentOrShell; // -- Delegate back to AbstractAtdl4jInputAndFilterDataSelectionPanel -- init (aParentOrShell, aAtdl4jOptions, aAtdl4jUserMessageHandler); JPanel panel = new JPanel(new BorderLayout()); atdl4jInputAndFilterDataPanelButton = new JButton("Input And Filter Data"); atdl4jInputAndFilterDataPanelButton.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent aE) { buttonInputAndFilterDataSelected(); } } ); panel.add(atdl4jInputAndFilterDataPanelButton, BorderLayout.CENTER); return panel; } private void closeAtdl4jInputAndFilterDataPanelDialog() { if (atdl4jInputAndFilterDataPanelDialog != null) { atdl4jInputAndFilterDataPanelDialog.setVisible(false); } } private void buttonInputAndFilterDataSelected() { if (atdl4jInputAndFilterDataPanelDialog == null) { atdl4jInputAndFilterDataPanelDialog = createAtdl4jInputAndFilterDataPanelDialog(); } getAtdl4jInputAndFilterDataPanel().loadScreenWithAtdl4jOptions(); getDebugModeButton().setSelected( Atdl4jConfig.getConfig().isDebugLoggingLevel() ); atdl4jInputAndFilterDataPanelDialog.setVisible(true); } private void buttonOkSelected() { // -- Atdl4jInputAndFilterDataPanel.extractAtdl4jOptionsFromScreen() populates/overlays data members within our Atdl4jOptions -- if ( ! getAtdl4jInputAndFilterDataPanel().extractAtdl4jOptionsFromScreen() ) { getAtdl4jUserMessageHandler().displayMessage( "Error", "Error extracting Atdl4jOptions extracted from screen" ); return; } fireInputAndFilterDataSpecifiedEvent( getAtdl4jOptions().getInputAndFilterData() ); closeAtdl4jInputAndFilterDataPanelDialog(); } private void buttonCancelSelected() { closeAtdl4jInputAndFilterDataPanelDialog(); } private JDialog createAtdl4jInputAndFilterDataPanelDialog() { JDialog tempDialog = new JDialog(); tempDialog.setTitle( "atdl4j Input and Filter Data / Configuration Settings" ); tempDialog.setModal(true); getAtdl4jInputAndFilterDataPanel().buildAtdl4jInputAndFilterDataPanel(tempDialog, getAtdl4jOptions()); JPanel footerPanel = new JPanel(); tempDialog.getContentPane().add(footerPanel, BorderLayout.SOUTH); JButton okButton = new JButton("OK"); okButton.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { buttonOkSelected(); } } ); footerPanel.add(okButton); JButton cancelButton = new JButton("Cancel"); cancelButton.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { buttonCancelSelected(); } } ); footerPanel.add(cancelButton); setDebugModeButton(new JCheckBox("Debug Mode")); getDebugModeButton().addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { Atdl4jConfig.getConfig().setDebugLoggingLevel( getDebugModeButton().isSelected() ); } } ); footerPanel.add(getDebugModeButton()); tempDialog.pack(); return tempDialog; } public JCheckBox getDebugModeButton() { return debugModeButton; } public void setDebugModeButton(JCheckBox debugModeButton) { this.debugModeButton = debugModeButton; } }