Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--plugins/org.eclipse.net4j.buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/views/BuddiesView.java56
-rw-r--r--plugins/org.eclipse.net4j.buddies/src/org/eclipse/net4j/internal/buddies/Buddy.java4
-rw-r--r--plugins/org.eclipse.net4j.buddies/src/org/eclipse/net4j/internal/buddies/BuddySession.java4
3 files changed, 51 insertions, 13 deletions
diff --git a/plugins/org.eclipse.net4j.buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/views/BuddiesView.java b/plugins/org.eclipse.net4j.buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/views/BuddiesView.java
index 532a6d455f..e347461350 100644
--- a/plugins/org.eclipse.net4j.buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/views/BuddiesView.java
+++ b/plugins/org.eclipse.net4j.buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/views/BuddiesView.java
@@ -4,7 +4,11 @@ import org.eclipse.net4j.IConnector;
import org.eclipse.net4j.Net4jUtil;
import org.eclipse.net4j.buddies.BuddiesUtil;
import org.eclipse.net4j.buddies.IBuddySession;
+import org.eclipse.net4j.buddies.internal.ui.SharedIcons;
import org.eclipse.net4j.buddies.internal.ui.bundle.OM;
+import org.eclipse.net4j.buddies.protocol.IBuddy;
+import org.eclipse.net4j.buddies.protocol.IBuddy.State;
+import org.eclipse.net4j.internal.buddies.Self;
import org.eclipse.net4j.util.container.IContainer;
import org.eclipse.net4j.util.container.IPluginContainer;
import org.eclipse.net4j.util.event.IEvent;
@@ -15,6 +19,7 @@ import org.eclipse.net4j.util.ui.views.ContainerItemProvider;
import org.eclipse.net4j.util.ui.views.ContainerView;
import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.Separator;
public class BuddiesView extends ContainerView implements IListener
{
@@ -22,6 +27,13 @@ public class BuddiesView extends ContainerView implements IListener
private DisconnectAction disconnectAction = new DisconnectAction();
+ private StateAction availableAction = new StateAction("Available", State.AVAILABLE, SharedIcons.OBJ_BUDDY);
+
+ private StateAction awayAction = new StateAction("Away", State.AWAY, SharedIcons.OBJ_BUDDY_AWAY);
+
+ private StateAction doNotDisturbAction = new StateAction("Do Not Disturb", State.DO_NOT_DISTURB,
+ SharedIcons.OBJ_BUDDY_DO_NOT_DISTURB);
+
private IBuddySession session;
private boolean connecting;
@@ -68,6 +80,12 @@ public class BuddiesView extends ContainerView implements IListener
session.addListener(BuddiesView.this);
connectAction.setEnabled(false);
disconnectAction.setEnabled(true);
+ availableAction.setEnabled(true);
+ availableAction.setChecked(session.getSelf().getState() == IBuddy.State.AVAILABLE);
+ awayAction.setEnabled(true);
+ awayAction.setChecked(session.getSelf().getState() == IBuddy.State.AWAY);
+ doNotDisturbAction.setEnabled(true);
+ doNotDisturbAction.setChecked(session.getSelf().getState() == IBuddy.State.DO_NOT_DISTURB);
}
else
{
@@ -93,6 +111,9 @@ public class BuddiesView extends ContainerView implements IListener
connecting = false;
connectAction.setEnabled(true);
disconnectAction.setEnabled(false);
+ availableAction.setEnabled(false);
+ awayAction.setEnabled(false);
+ doNotDisturbAction.setEnabled(false);
}
@Override
@@ -160,13 +181,10 @@ public class BuddiesView extends ContainerView implements IListener
{
manager.add(connectAction);
manager.add(disconnectAction);
- if (session == null && !connecting)
- {
- }
- else
- {
- }
-
+ manager.add(new Separator());
+ manager.add(availableAction);
+ manager.add(awayAction);
+ manager.add(doNotDisturbAction);
super.fillLocalPullDown(manager);
}
@@ -203,4 +221,28 @@ public class BuddiesView extends ContainerView implements IListener
disconnect();
}
}
+
+ /**
+ * @author Eike Stepper
+ */
+ private final class StateAction extends SafeAction
+ {
+ private State state;
+
+ private StateAction(String text, State state, String key)
+ {
+ super(text, "Set own state to '" + text.toLowerCase() + "'", SharedIcons.getDescriptor(key));
+ this.state = state;
+ }
+
+ @Override
+ protected void safeRun() throws Exception
+ {
+ if (session != null)
+ {
+ Self self = (Self)session.getSelf();
+ self.setState(state);
+ }
+ }
+ }
} \ No newline at end of file
diff --git a/plugins/org.eclipse.net4j.buddies/src/org/eclipse/net4j/internal/buddies/Buddy.java b/plugins/org.eclipse.net4j.buddies/src/org/eclipse/net4j/internal/buddies/Buddy.java
index 1228c27163..aa237d3dc8 100644
--- a/plugins/org.eclipse.net4j.buddies/src/org/eclipse/net4j/internal/buddies/Buddy.java
+++ b/plugins/org.eclipse.net4j.buddies/src/org/eclipse/net4j/internal/buddies/Buddy.java
@@ -30,10 +30,6 @@ public class Buddy extends AbstractBuddy
this.userID = userID;
}
- protected Buddy(BuddySession session, IBuddyAccount account)
- {
- }
-
public BuddySession getSession()
{
return session;
diff --git a/plugins/org.eclipse.net4j.buddies/src/org/eclipse/net4j/internal/buddies/BuddySession.java b/plugins/org.eclipse.net4j.buddies/src/org/eclipse/net4j/internal/buddies/BuddySession.java
index 9a3c718568..45b6d1a3d2 100644
--- a/plugins/org.eclipse.net4j.buddies/src/org/eclipse/net4j/internal/buddies/BuddySession.java
+++ b/plugins/org.eclipse.net4j.buddies/src/org/eclipse/net4j/internal/buddies/BuddySession.java
@@ -32,7 +32,7 @@ public class BuddySession extends Lifecycle implements IBuddySession, IListener
{
private IChannel channel;
- private IBuddy self;
+ private Self self;
private Map<String, IBuddy> buddies = new HashMap<String, IBuddy>();
@@ -53,7 +53,7 @@ public class BuddySession extends Lifecycle implements IBuddySession, IListener
public void setSelf(IBuddyAccount account)
{
- this.self = new Buddy(this, account);
+ this.self = new Self(this, account);
}
public IBuddy addBuddy(String userID)

Back to the top