package org.atdl4j.ui.swt.app.impl;
import org.apache.log4j.Logger;
import org.atdl4j.config.Atdl4jConfig;
import org.atdl4j.config.Atdl4jOptions;
import org.atdl4j.ui.app.Atdl4jUserMessageHandler;
import org.atdl4j.ui.app.impl.AbstractAtdl4jInputAndFilterDataSelectionPanel;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Shell;
/**
* Represents the SWT-specific GUI component used to invoke Atdl4jInputAndFilterData pop-up.
*
* @author Scott Atwell
* @version 1.0, Mar 1, 2010
*/
public class SWTAtdl4jInputAndFilterDataSelectionPanel
extends AbstractAtdl4jInputAndFilterDataSelectionPanel
{
public final Logger logger = Logger.getLogger(SWTAtdl4jInputAndFilterDataSelectionPanel.class);
private Composite parentComposite;
private Button atdl4jInputAndFilterDataPanelButton;
private Shell atdl4jInputAndFilterDataPanelShell;
private Button debugModeButton;
public Object buildAtdl4jInputAndFilterDataSelectionPanel(Object aParentOrShell, Atdl4jOptions aAtdl4jOptions, Atdl4jUserMessageHandler aAtdl4jUserMessageHandler)
{
return buildAtdl4jInputAndFilterDataSelectionPanel( (Composite) aParentOrShell, aAtdl4jOptions, aAtdl4jUserMessageHandler );
}
public Composite buildAtdl4jInputAndFilterDataSelectionPanel(Composite aParentOrShell, Atdl4jOptions aAtdl4jOptions, Atdl4jUserMessageHandler aAtdl4jUserMessageHandler)
{
parentComposite = (Composite) aParentOrShell;
// -- Delegate back to AbstractAtdl4jInputAndFilterDataSelectionPanel --
init( aParentOrShell, aAtdl4jOptions, aAtdl4jUserMessageHandler );
atdl4jInputAndFilterDataPanelButton = new Button( aParentOrShell, SWT.PUSH );
atdl4jInputAndFilterDataPanelButton.setText( "Input And Filter Data" );
atdl4jInputAndFilterDataPanelButton.addSelectionListener(new SelectionAdapter()
{
public void widgetSelected(SelectionEvent e)
{
buttonInputAndFilterDataSelected();
}
});
return parentComposite;
}
private void closeAtdl4jInputAndFilterDataPanelShell()
{
if ( ( atdl4jInputAndFilterDataPanelShell != null ) &&
( ! atdl4jInputAndFilterDataPanelShell.isDisposed() ) )
{
atdl4jInputAndFilterDataPanelShell.close();
}
}
private void buttonInputAndFilterDataSelected()
{
if ( ( atdl4jInputAndFilterDataPanelShell == null ) ||
( atdl4jInputAndFilterDataPanelShell.isDisposed() ) )
{
atdl4jInputAndFilterDataPanelShell = createAtdl4jInputAndFilterDataPanelShell();
}
getAtdl4jInputAndFilterDataPanel().loadScreenWithAtdl4jOptions();
getDebugModeButton().setSelection( Atdl4jConfig.getConfig().isDebugLoggingLevel() );
// -- Open/Pop-up the dialog window --
atdl4jInputAndFilterDataPanelShell.open();
}
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() );
closeAtdl4jInputAndFilterDataPanelShell();
}
private void buttonCancelSelected()
{
closeAtdl4jInputAndFilterDataPanelShell();
}
private Shell createAtdl4jInputAndFilterDataPanelShell()
{
Shell tempAtdl4jInputAndFilterDataPanelShell = new Shell( ( (Composite) getParentOrShell()).getDisplay(), SWT.APPLICATION_MODAL | SWT.TITLE | SWT.RESIZE );
tempAtdl4jInputAndFilterDataPanelShell.setText( "atdl4j Input and Filter Data / Configuration Settings" );
tempAtdl4jInputAndFilterDataPanelShell.setLayout( new GridLayout() );
getAtdl4jInputAndFilterDataPanel().buildAtdl4jInputAndFilterDataPanel( tempAtdl4jInputAndFilterDataPanelShell, getAtdl4jOptions() );
Composite tempFooter = new Composite( tempAtdl4jInputAndFilterDataPanelShell, SWT.NONE );
tempFooter.setLayout( new FillLayout( SWT.HORIZONTAL ) );
Button tempOkButton = new Button ( tempFooter, SWT.PUSH );
tempOkButton.setText( "OK" );
tempOkButton.addSelectionListener(new SelectionAdapter()
{
public void widgetSelected(SelectionEvent e)
{
buttonOkSelected();
}
} );
Button tempCancelButton = new Button ( tempFooter, SWT.PUSH );
tempCancelButton.setText( "Cancel" );
tempCancelButton.addSelectionListener(new SelectionAdapter()
{
public void widgetSelected(SelectionEvent e)
{
buttonCancelSelected();
}
} );
//blank button used as spacer
Button tempBlankButton = new Button(tempFooter, SWT.NONE);
tempBlankButton.setVisible(false);
setDebugModeButton( new Button(tempFooter, SWT.CHECK) );
getDebugModeButton().setText("Debug Mode");
getDebugModeButton().addSelectionListener(new SelectionAdapter()
{
public void widgetSelected(SelectionEvent e)
{
Atdl4jConfig.getConfig().setDebugLoggingLevel( getDebugModeButton().getSelection() );
}
});
tempAtdl4jInputAndFilterDataPanelShell.layout( true );
tempAtdl4jInputAndFilterDataPanelShell.pack();
return tempAtdl4jInputAndFilterDataPanelShell;
}
/**
* @return the debugModeButton
*/
public Button getDebugModeButton()
{
return this.debugModeButton;
}
/**
* @param aDebugModeButton the debugModeButton to set
*/
public void setDebugModeButton(Button aDebugModeButton)
{
this.debugModeButton = aDebugModeButton;
}
}