Removed use of Refreshable and replaced with several methods which update the GUI using SwingUtilities.invokeLater().

While not as clean as using ChangeListener, it completely decouples the Model and View aspects,
and also avoids the need to manually paint() a hierarchy of components (a task best handled by Swing/AWT).
This commit is contained in:
Woody Folsom
2012-04-04 17:15:21 -04:00
parent 0f616a3cc6
commit b8df412740
9 changed files with 112 additions and 192 deletions

View File

@@ -5,19 +5,18 @@ import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import javax.security.auth.RefreshFailedException;
import javax.security.auth.Refreshable;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import controller.PlayerController;
import controller.TSPMouseListener;
import model.Board.TileColor;
public class TileSelectionPanel extends JPanel implements Refreshable {
public class TileSelectionPanel extends JPanel {
private static final long serialVersionUID = 1L;
@@ -28,7 +27,7 @@ public class TileSelectionPanel extends JPanel implements Refreshable {
private final JLabel yellow = new JLabel(new ImageIcon(
BoardPanel.YELLOW_ICON));
private final PlayerController pc;
public TileSelectionPanel(PlayerController pc) {
this.pc = pc;
@@ -36,40 +35,34 @@ public class TileSelectionPanel extends JPanel implements Refreshable {
initActions();
}
@Override
public boolean isCurrent() {
return pc.isCurrent();
}
public void setCurrent(boolean current) {
pc.setCurrent(current);
}
public void updateBorders() {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
TileColor tile = pc.getColor();
@Override
public void refresh() throws RefreshFailedException {
TileColor tile = pc.getColor();
blue.setBorder(BorderFactory.createEmptyBorder(3, 3, 3, 3));
green.setBorder(BorderFactory.createEmptyBorder(3, 3, 3, 3));
red.setBorder(BorderFactory.createEmptyBorder(3, 3, 3, 3));
yellow.setBorder(BorderFactory.createEmptyBorder(3, 3, 3, 3));
blue.setBorder(BorderFactory.createEmptyBorder(3, 3, 3, 3));
green.setBorder(BorderFactory.createEmptyBorder(3, 3, 3, 3));
red.setBorder(BorderFactory.createEmptyBorder(3, 3, 3, 3));
yellow.setBorder(BorderFactory.createEmptyBorder(3, 3, 3, 3));
switch (tile) {
case GREEN:
green.setBorder(BorderFactory.createLineBorder(Color.RED, 3));
break;
case RED:
red.setBorder(BorderFactory.createLineBorder(Color.RED, 3));
break;
case YELLOW:
yellow.setBorder(BorderFactory.createLineBorder(Color.RED, 3));
break;
default:
blue.setBorder(BorderFactory.createLineBorder(Color.RED, 3));
break;
}
pc.setCurrent(true);
switch (tile) {
case GREEN:
green.setBorder(BorderFactory
.createLineBorder(Color.RED, 3));
break;
case RED:
red.setBorder(BorderFactory.createLineBorder(Color.RED, 3));
break;
case YELLOW:
yellow.setBorder(BorderFactory.createLineBorder(Color.RED,
3));
break;
default:
blue.setBorder(BorderFactory.createLineBorder(Color.RED, 3));
break;
}
}
});
}
private void initActions() {