added reset and exit button, moved status label down

git-svn-id: svn://anubis/gvsu@92 45c1a28c-8058-47b2-ae61-ca45b979098e
This commit is contained in:
josh 2008-03-29 00:14:57 +00:00
parent 80ee38a8cb
commit 0ec7c4f53f

View File

@ -18,19 +18,23 @@ public class KnightsTour extends JFrame
private JTextField m_startYField;
private JButton m_startButton;
private JButton m_cancelButton;
private JButton m_exitButton;
private JButton m_resetButton;
private JPanel m_mainPanel;
private JPanel m_boardPanel;
private JLabel m_statusLabel;
public KnightsTour()
{
super("Josh's Knights Tour project for CS621");
super("Josh's Knight's Tour project for CS621");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(500, 600);
/* set up the main window contents */
getContentPane().add(m_mainPanel = new JPanel(new BorderLayout()) {{
setBorder(BorderFactory.createEmptyBorder(9, 9, 9, 9));
add(new JPanel() {{
setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
add(new JPanel() {{
setLayout(new BoxLayout(this, BoxLayout.X_AXIS));
setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 7));
@ -63,24 +67,34 @@ public class KnightsTour extends JFrame
new Dimension(5, 0),
new Dimension(5, 0)));
add(new JPanel() {{ /* start button panel */
setBorder(BorderFactory.createTitledBorder("Start"));
setBorder(BorderFactory.createTitledBorder(
"Control Knight's Tour"));
add(new JPanel() {{
setBorder(BorderFactory.createEmptyBorder());
setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
add(m_startButton = new JButton("Start Knight's Tour"));
setLayout(new GridLayout(2, 2, 5, 5));
add(m_startButton = new JButton("Start"));
m_startButton.addActionListener(m_handler);
add(m_cancelButton = new JButton("Cancel Knight's Tour"));
add(m_resetButton = new JButton("Reset"));
m_resetButton.addActionListener(m_handler);
m_resetButton.setEnabled(false);
add(m_cancelButton = new JButton("Cancel"));
m_cancelButton.addActionListener(m_handler);
m_cancelButton.setVisible(false);
add(new Box.Filler(new Dimension(0, 4),
new Dimension(0, 4),
new Dimension(0, 4)));
add(m_statusLabel = new JLabel());
m_cancelButton.setEnabled(false);
add(m_exitButton = new JButton("Exit"));
m_exitButton.addActionListener(m_handler);
}});
}});
add(new Box.Filler(new Dimension(0, 0),
new Dimension(Short.MAX_VALUE, 0),
new Dimension(10000, 10000)));
}});
add(new JPanel() {{
setLayout(new BoxLayout(this, BoxLayout.X_AXIS));
add(m_statusLabel = new JLabel("Ready."));
add(new Box.Filler(new Dimension(0, 0),
new Dimension(10000, 0),
new Dimension(10000, 10000)));
}});
}}, BorderLayout.NORTH);
}});
@ -124,8 +138,33 @@ public class KnightsTour extends JFrame
{
if (e.getSource() == m_startButton)
{
m_statusLabel.setText("Running...");
setUpTour(true);
}
else if (e.getSource() == m_cancelButton)
{
if (m_tourThread != null)
{
m_tourThread.stop();
m_tourThread = null;
m_startButton.setEnabled(true);
m_cancelButton.setEnabled(false);
m_resetButton.setEnabled(true);
m_statusLabel.setText("Cancelled.");
}
}
else if (e.getSource() == m_resetButton)
{
setUpTour(false);
}
else if (e.getSource() == m_exitButton)
{
System.exit(0);
}
}
}
private void setUpTour(boolean runit)
{
/* first validate input text fields */
int width, height, startx, starty;
try
@ -151,24 +190,20 @@ public class KnightsTour extends JFrame
m_ktBoard = new KnightsTourBoard(width, height);
createBoardPanel();
if (runit)
{
/* run the tour in a separate thread */
m_startButton.setVisible(false);
m_cancelButton.setVisible(true);
m_startButton.setEnabled(false);
m_cancelButton.setEnabled(true);
m_resetButton.setEnabled(false);
m_statusLabel.setText("Running...");
m_tourThread = new Thread(new TourThread(startx, starty));
m_tourThread.start();
}
else if (e.getSource() == m_cancelButton)
else
{
if (m_tourThread != null)
{
m_tourThread.stop();
m_tourThread = null;
m_startButton.setVisible(true);
m_cancelButton.setVisible(false);
m_statusLabel.setText("Cancelled.");
}
}
m_statusLabel.setText("Reset.");
}
}
@ -191,8 +226,9 @@ public class KnightsTour extends JFrame
{
createBoardPanel();
m_statusLabel.setText("Finished.");
m_startButton.setVisible(true);
m_cancelButton.setVisible(false);
m_startButton.setEnabled(true);
m_cancelButton.setEnabled(false);
m_resetButton.setEnabled(true);
}
});
}
@ -203,8 +239,9 @@ public class KnightsTour extends JFrame
{
createBoardPanel();
m_statusLabel.setText("Solution not found!");
m_startButton.setVisible(true);
m_cancelButton.setVisible(false);
m_startButton.setEnabled(true);
m_cancelButton.setEnabled(false);
m_resetButton.setEnabled(true);
}
});
}