package mapmaker;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class LinkerDialog extends StandardDialog
{
JLabel mAreaNameLabel = new JLabel("Area Name: ");
JTextField mAreaNameField = new JTextField();
JLabel mDynamicPrepositionLabel = new JLabel("Dynamic Preposition: ");
JTextField mDynamicPrepositionField = new JTextField();
JLabel mStaticPrepositionLabel = new JLabel("Static Preposition: ");
JTextField mStaticPrepositionField = new JTextField();
JLabel mColorLabel = new JLabel("Colour: ");
ColorComboBox mColorComboBox = new ColorComboBox();
Linker mLinker;
public LinkerDialog(JFrame aFrame)
{
super(aFrame, "Linker");
DialogPanel dialogPanel = (DialogPanel)getContentPane();
int prefHeight = mDynamicPrepositionField.getPreferredSize().height;
mDynamicPrepositionField.setPreferredSize(new Dimension(40, prefHeight));
mStaticPrepositionField.setPreferredSize(new Dimension(40, prefHeight));
dialogPanel.addComponentPair(mAreaNameLabel, mAreaNameField);
dialogPanel.addTripleComponentPair(mDynamicPrepositionLabel,
mDynamicPrepositionField, mStaticPrepositionLabel,
mStaticPrepositionField, mColorLabel, mColorComboBox);
LinkerOkayAction linkerOkayAction = new LinkerOkayAction();
mAreaNameField.addActionListener(linkerOkayAction);
mDynamicPrepositionField.addActionListener(linkerOkayAction);
mStaticPrepositionField.addActionListener(linkerOkayAction);
setOkayAction(linkerOkayAction);
pack();
setLocationRelativeTo(aFrame);
}
public void setLinker(Linker aLinker)
{
mLinker = aLinker;
}
public Linker getLinker()
{
if (mLinker == null)
{
mLinker = new Linker();
}
mLinker.setAreaName(mAreaNameField.getText());
mLinker.setDynamicPrep(mDynamicPrepositionField.getText());
mLinker.setStaticPrep(mStaticPrepositionField.getText());
mLinker.setColor((Color)mColorComboBox.getSelectedItem());
return mLinker;
}
class LinkerOkayAction extends OkayAction
{
public void actionPerformed(ActionEvent e)
{
if (!Utils.isFilledIn(mAreaNameField))
{
JOptionPane.showMessageDialog(LinkerDialog.this,
"Please enter an area name for this linker in the "
+ "area name field.\n",
"Error", JOptionPane.ERROR_MESSAGE);
return;
}
if (!Utils.isFilledIn(mDynamicPrepositionField))
{
JOptionPane.showMessageDialog(LinkerDialog.this,
"Please enter a dynamic preposition for this linker in the "
+ "dynamic preposition field.\n",
"Error", JOptionPane.ERROR_MESSAGE);
return;
}
if (!Utils.isFilledIn(mDynamicPrepositionField))
{
JOptionPane.showMessageDialog(LinkerDialog.this,
"Please enter a static preposition for this linker in the "
+ "static preposition field.\n",
"Error", JOptionPane.ERROR_MESSAGE);
return;
}
super.actionPerformed(e);
}
}
public static Linker showNewDialog(JFrame aFrame)
{
LinkerDialog linkerDialog = new LinkerDialog(aFrame);
linkerDialog.setVisible(true);
if (linkerDialog.isOkay())
{
return linkerDialog.getLinker();
}
return null;
}
public static Linker showEditDialog(JFrame aFrame, Linker aLinker)
{
LinkerDialog linkerDialog = new LinkerDialog(aFrame);
linkerDialog.setLinker(aLinker);
if (aLinker != null)
{
linkerDialog.mAreaNameField.setText(aLinker.getAreaName());
linkerDialog.mColorComboBox.setSelectedItem(aLinker.getColor());
linkerDialog.mDynamicPrepositionField.setText(aLinker.getDynamicPrep());
linkerDialog.mStaticPrepositionField.setText(aLinker.getStaticPrep());
}
linkerDialog.setVisible(true);
if (linkerDialog.isOkay())
{
return linkerDialog.getLinker();
}
return null;
}
}