package org.atdl4j.ui.swing.app.impl;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.TitledBorder;
import org.atdl4j.config.Atdl4jOptions;
import org.atdl4j.ui.app.impl.AbstractFixMsgLoadPanel;
/**
* Represents the Swing-specific tester's "Load Message" button and text field GUI component.
*
* @author Scott Atwell
* @version 1.0, October 5, 2010
*/
public class SwingFixMsgLoadPanel extends AbstractFixMsgLoadPanel
{
Container parentContainer;
// JPanel as we need TitledBorder private Container container;
JTextField fixMsgText;
JButton loadFixMsgButton;
public Object buildFixMsgLoadPanel(Object parentOrShell, Atdl4jOptions atdl4jOptions)
{
return buildFixMsgLoadPanel( (JPanel) parentOrShell, atdl4jOptions );
}
public JPanel buildFixMsgLoadPanel(Container aParentContainer, Atdl4jOptions atdl4jOptions)
{
setAtdl4jOptions( atdl4jOptions );
setParentContainer( aParentContainer );
JPanel tempContainer = new JPanel(new BorderLayout());
tempContainer.setBorder( new TitledBorder( "Pre-populate with FIX Message Fragment (tag=value syntax)" ) );
loadFixMsgButton = new JButton("Load Message");
tempContainer.add( loadFixMsgButton, BorderLayout.WEST );
loadFixMsgButton.addActionListener( new ActionListener()
{
@Override
public void actionPerformed(ActionEvent aE)
{
loadFixMessage();
}
} );
fixMsgText = new JTextField(10);
tempContainer.add( fixMsgText, BorderLayout.CENTER );
// -- Handle Enter key within Text field --
fixMsgText.addKeyListener( new KeyAdapter()
{
@Override
public void keyPressed(KeyEvent aE) {
if ( aE.getKeyCode() == KeyEvent.VK_ENTER ){
loadFixMessage();
}
}
});
return tempContainer;
}
private void loadFixMessage()
{
fireFixMsgLoadSelectedEvent( fixMsgText.getText() );
}
/* (non-Javadoc)
* @see org.atdl4j.ui.app.FixMsgLoadPanel#selectFilename(java.lang.String)
*/
@Override
public void setFixMsg(String aFixMsg)
{
if ( fixMsgText != null )
{
fixMsgText.setText( aFixMsg );
fireFixMsgLoadSelectedEvent( aFixMsg );
}
}
/**
* @return the parentContainer
*/
private Container getParentContainer()
{
return this.parentContainer;
}
/**
* @param aParentContainer the parentContainer to set
*/
private void setParentContainer(Container aParentContainer)
{
this.parentContainer = aParentContainer;
}
}