Added Event handling to buttons
git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@16 72836036-5685-4462-b002-a69064685172
This commit is contained in:
parent
5a0be3261a
commit
839e020f4b
9 changed files with 135 additions and 0 deletions
23
src/jrummikub/util/Event.java
Normal file
23
src/jrummikub/util/Event.java
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
package jrummikub.util;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
|
|
||||||
|
public class Event implements IEvent {
|
||||||
|
private HashSet<IListener> listeners = new HashSet<IListener>();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void add(IListener listener) {
|
||||||
|
listeners.add(listener);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void remove(IListener listener) {
|
||||||
|
listeners.remove(listener);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void fire() {
|
||||||
|
for (IListener listener : listeners) {
|
||||||
|
listener.fire();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
23
src/jrummikub/util/Event1.java
Normal file
23
src/jrummikub/util/Event1.java
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
package jrummikub.util;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
|
|
||||||
|
public class Event1<T> implements IEvent1<T> {
|
||||||
|
private HashSet<IListener1<T>> listeners = new HashSet<IListener1<T>>();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void add(IListener1<T> listener) {
|
||||||
|
listeners.add(listener);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void remove(IListener1<T> listener) {
|
||||||
|
listeners.remove(listener);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void fire(T value) {
|
||||||
|
for (IListener1<T> listener : listeners) {
|
||||||
|
listener.fire(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
6
src/jrummikub/util/IEvent.java
Normal file
6
src/jrummikub/util/IEvent.java
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
package jrummikub.util;
|
||||||
|
|
||||||
|
public interface IEvent {
|
||||||
|
public void add(IListener listener);
|
||||||
|
public void remove(IListener listener);
|
||||||
|
}
|
6
src/jrummikub/util/IEvent1.java
Normal file
6
src/jrummikub/util/IEvent1.java
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
package jrummikub.util;
|
||||||
|
|
||||||
|
public interface IEvent1<T> {
|
||||||
|
public void add(IListener1<T> listener);
|
||||||
|
public void remove(IListener1<T> listener);
|
||||||
|
}
|
5
src/jrummikub/util/IListener.java
Normal file
5
src/jrummikub/util/IListener.java
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
package jrummikub.util;
|
||||||
|
|
||||||
|
public interface IListener {
|
||||||
|
public void fire();
|
||||||
|
}
|
5
src/jrummikub/util/IListener1.java
Normal file
5
src/jrummikub/util/IListener1.java
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
package jrummikub.util;
|
||||||
|
|
||||||
|
public interface IListener1<T> {
|
||||||
|
public void fire(T value);
|
||||||
|
}
|
|
@ -1,8 +1,14 @@
|
||||||
package jrummikub.view;
|
package jrummikub.view;
|
||||||
|
|
||||||
|
import jrummikub.util.IEvent;
|
||||||
|
|
||||||
public interface IPlayerPanel {
|
public interface IPlayerPanel {
|
||||||
public IBoard getBoard();
|
public IBoard getBoard();
|
||||||
|
|
||||||
public void setCurrentPlayerName(String playerName);
|
public void setCurrentPlayerName(String playerName);
|
||||||
public void setTimeLeft(int time);
|
public void setTimeLeft(int time);
|
||||||
|
|
||||||
|
public IEvent getSortByNumberEvent();
|
||||||
|
public IEvent getSortByColorEvent();
|
||||||
|
public IEvent getEndTurnEvent();
|
||||||
}
|
}
|
|
@ -5,6 +5,8 @@ import java.awt.Dimension;
|
||||||
import java.awt.GridBagConstraints;
|
import java.awt.GridBagConstraints;
|
||||||
import java.awt.GridBagLayout;
|
import java.awt.GridBagLayout;
|
||||||
import java.awt.Insets;
|
import java.awt.Insets;
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
import java.text.DecimalFormat;
|
import java.text.DecimalFormat;
|
||||||
|
|
||||||
import javax.swing.JButton;
|
import javax.swing.JButton;
|
||||||
|
@ -12,6 +14,9 @@ import javax.swing.JLabel;
|
||||||
import javax.swing.JPanel;
|
import javax.swing.JPanel;
|
||||||
import javax.swing.JProgressBar;
|
import javax.swing.JProgressBar;
|
||||||
|
|
||||||
|
import jrummikub.util.Event;
|
||||||
|
import jrummikub.util.IEvent;
|
||||||
|
|
||||||
@SuppressWarnings("serial")
|
@SuppressWarnings("serial")
|
||||||
public class PlayerPanel extends JPanel implements IPlayerPanel {
|
public class PlayerPanel extends JPanel implements IPlayerPanel {
|
||||||
private final static DecimalFormat secondFormat = new DecimalFormat("00");
|
private final static DecimalFormat secondFormat = new DecimalFormat("00");
|
||||||
|
@ -24,6 +29,10 @@ public class PlayerPanel extends JPanel implements IPlayerPanel {
|
||||||
private JProgressBar timeBar;
|
private JProgressBar timeBar;
|
||||||
private JButton endTurnButton;
|
private JButton endTurnButton;
|
||||||
|
|
||||||
|
private Event sortByNumberEvent = new Event();
|
||||||
|
private Event sortByColorEvent = new Event();
|
||||||
|
private Event endTurnEvent = new Event();
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IBoard getBoard() {
|
public IBoard getBoard() {
|
||||||
|
@ -42,6 +51,21 @@ public class PlayerPanel extends JPanel implements IPlayerPanel {
|
||||||
timeBar.setString(Integer.toString(time/60) + ":" + secondFormat.format(time%60));
|
timeBar.setString(Integer.toString(time/60) + ":" + secondFormat.format(time%60));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IEvent getSortByNumberEvent() {
|
||||||
|
return sortByNumberEvent;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IEvent getSortByColorEvent() {
|
||||||
|
return sortByColorEvent;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IEvent getEndTurnEvent() {
|
||||||
|
return endTurnEvent;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
JPanel createLeftPanel() {
|
JPanel createLeftPanel() {
|
||||||
JPanel panel = new JPanel();
|
JPanel panel = new JPanel();
|
||||||
|
@ -67,6 +91,12 @@ public class PlayerPanel extends JPanel implements IPlayerPanel {
|
||||||
|
|
||||||
sortByNumberButton = new JButton("<html><center>Sort by<br>number");
|
sortByNumberButton = new JButton("<html><center>Sort by<br>number");
|
||||||
sortByNumberButton.setPreferredSize(new Dimension(85, 50));
|
sortByNumberButton.setPreferredSize(new Dimension(85, 50));
|
||||||
|
sortByNumberButton.addActionListener(new ActionListener() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent arg0) {
|
||||||
|
sortByNumberEvent.fire();
|
||||||
|
}});
|
||||||
|
|
||||||
c.gridwidth = GridBagConstraints.RELATIVE;
|
c.gridwidth = GridBagConstraints.RELATIVE;
|
||||||
c.gridheight = GridBagConstraints.REMAINDER;
|
c.gridheight = GridBagConstraints.REMAINDER;
|
||||||
c.insets = new Insets(15, 0, 20, 5);
|
c.insets = new Insets(15, 0, 20, 5);
|
||||||
|
@ -75,6 +105,12 @@ public class PlayerPanel extends JPanel implements IPlayerPanel {
|
||||||
|
|
||||||
sortByColorButton = new JButton("<html><center>Sort by<br>color");
|
sortByColorButton = new JButton("<html><center>Sort by<br>color");
|
||||||
sortByColorButton.setPreferredSize(new Dimension(85, 50));
|
sortByColorButton.setPreferredSize(new Dimension(85, 50));
|
||||||
|
sortByColorButton.addActionListener(new ActionListener() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent arg0) {
|
||||||
|
sortByColorEvent.fire();
|
||||||
|
}});
|
||||||
|
|
||||||
c.gridwidth = GridBagConstraints.REMAINDER;
|
c.gridwidth = GridBagConstraints.REMAINDER;
|
||||||
c.insets = new Insets(15, 5, 20, 0);
|
c.insets = new Insets(15, 5, 20, 0);
|
||||||
layout.setConstraints(sortByColorButton, c);
|
layout.setConstraints(sortByColorButton, c);
|
||||||
|
@ -103,6 +139,12 @@ public class PlayerPanel extends JPanel implements IPlayerPanel {
|
||||||
|
|
||||||
endTurnButton = new JButton("End turn");
|
endTurnButton = new JButton("End turn");
|
||||||
endTurnButton.setPreferredSize(new Dimension(180, 50));
|
endTurnButton.setPreferredSize(new Dimension(180, 50));
|
||||||
|
endTurnButton.addActionListener(new ActionListener() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent arg0) {
|
||||||
|
endTurnEvent.fire();
|
||||||
|
}});
|
||||||
|
|
||||||
c.gridheight = GridBagConstraints.REMAINDER;
|
c.gridheight = GridBagConstraints.REMAINDER;
|
||||||
c.insets = new Insets(15, 0, 20, 0);
|
c.insets = new Insets(15, 0, 20, 0);
|
||||||
layout.setConstraints(endTurnButton, c);
|
layout.setConstraints(endTurnButton, c);
|
||||||
|
|
|
@ -7,6 +7,8 @@ import java.awt.Dimension;
|
||||||
import javax.swing.JFrame;
|
import javax.swing.JFrame;
|
||||||
import javax.swing.UIManager;
|
import javax.swing.UIManager;
|
||||||
|
|
||||||
|
import jrummikub.util.IListener;
|
||||||
|
|
||||||
@SuppressWarnings("serial")
|
@SuppressWarnings("serial")
|
||||||
public class View extends JFrame implements IView {
|
public class View extends JFrame implements IView {
|
||||||
private Table table;
|
private Table table;
|
||||||
|
@ -45,6 +47,7 @@ public class View extends JFrame implements IView {
|
||||||
* @param args
|
* @param args
|
||||||
*/
|
*/
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
|
// FIXME Only test main for GUI preview
|
||||||
String nativeLF = UIManager.getSystemLookAndFeelClassName();
|
String nativeLF = UIManager.getSystemLookAndFeelClassName();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
@ -60,6 +63,22 @@ public class View extends JFrame implements IView {
|
||||||
view.getTable().setTopPlayerName("Player 3");
|
view.getTable().setTopPlayerName("Player 3");
|
||||||
view.getTable().setRightPlayerName("Player 4");
|
view.getTable().setRightPlayerName("Player 4");
|
||||||
|
|
||||||
|
view.getPlayerPanel().getSortByNumberEvent().add(new IListener() {
|
||||||
|
@Override
|
||||||
|
public void fire() {
|
||||||
|
System.out.println("'Sort by number' fired");
|
||||||
|
}});
|
||||||
|
view.getPlayerPanel().getSortByColorEvent().add(new IListener() {
|
||||||
|
@Override
|
||||||
|
public void fire() {
|
||||||
|
System.out.println("'Sort by color' fired");
|
||||||
|
}});
|
||||||
|
view.getPlayerPanel().getEndTurnEvent().add(new IListener() {
|
||||||
|
@Override
|
||||||
|
public void fire() {
|
||||||
|
System.out.println("'End turn' fired");
|
||||||
|
}});
|
||||||
|
|
||||||
view.setVisible(true);
|
view.setVisible(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Reference in a new issue