summaryrefslogtreecommitdiffstats
path: root/src/jrummikub/control/LoginControl.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/jrummikub/control/LoginControl.java')
-rw-r--r--src/jrummikub/control/LoginControl.java61
1 files changed, 61 insertions, 0 deletions
diff --git a/src/jrummikub/control/LoginControl.java b/src/jrummikub/control/LoginControl.java
new file mode 100644
index 0000000..233a2d3
--- /dev/null
+++ b/src/jrummikub/control/LoginControl.java
@@ -0,0 +1,61 @@
+package jrummikub.control;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import jrummikub.util.Connection;
+import jrummikub.util.Event;
+import jrummikub.util.Event3;
+import jrummikub.util.IEvent;
+import jrummikub.util.IEvent3;
+import jrummikub.util.IListener;
+import jrummikub.util.IListener3;
+import jrummikub.view.IView;
+
+public class LoginControl {
+ private IView view;
+ private Event3<String, String, String> loginEvent = new Event3<String, String, String>();
+ private Event cancelEvent = new Event();
+ private List<Connection> connections = new ArrayList<Connection>();
+
+ public LoginControl(final IView view) {
+ this.view = view;
+ connections.add(view.getLoginPanel().getLoginEvent()
+ .add(new IListener3<String, String, String>() {
+ @Override
+ public void handle(String userName, String password,
+ String channelName) {
+ abort();
+ loginEvent.emit(userName, password, channelName);
+ }
+ }));
+
+ connections.add(view.getLoginPanel().getCancelEvent().add(new IListener() {
+ @Override
+ public void handle() {
+ abort();
+ cancelEvent.emit();
+ }
+ }));
+ }
+
+ public void startLogin() {
+ view.showLoginPanel(true);
+ }
+
+ public IEvent3<String, String, String> getLoginEvent() {
+ return loginEvent;
+ }
+
+ public IEvent getCancelEvent() {
+ return cancelEvent;
+ }
+
+ public void abort() {
+ view.showLoginPanel(false);
+ for (Connection c : connections) {
+ c.remove();
+ }
+ }
+
+}