Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.net4j.buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/views/BuddiesView.java')
-rw-r--r--plugins/org.eclipse.net4j.buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/views/BuddiesView.java49
1 files changed, 29 insertions, 20 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 03192488ca..0794851e0a 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
@@ -18,6 +18,7 @@ import org.eclipse.net4j.util.container.IPluginContainer;
import org.eclipse.net4j.util.event.IEvent;
import org.eclipse.net4j.util.event.IListener;
import org.eclipse.net4j.util.lifecycle.ILifecycleEvent;
+import org.eclipse.net4j.util.lifecycle.LifecycleUtil;
import org.eclipse.net4j.util.ui.actions.SafeAction;
import org.eclipse.net4j.util.ui.views.ContainerItemProvider;
import org.eclipse.net4j.util.ui.views.ContainerView;
@@ -75,30 +76,38 @@ public class BuddiesView extends ContainerView implements IListener
throw new IllegalStateException("connector == null");
}
- String userID = OM.PREF_USER_ID.getValue();
- String password = OM.PREF_PASSWORD.getValue();
- session = BuddiesUtil.openSession(connector, userID, password, 5000L);
- if (session != null)
+ boolean connected = connector.waitForConnection(5000L);
+ if (connected)
{
- if (connecting)
+ String userID = OM.PREF_USER_ID.getValue();
+ String password = OM.PREF_PASSWORD.getValue();
+ session = BuddiesUtil.openSession(connector, userID, password, 5000L);
+ if (session != null)
{
- resetInput();
- 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);
- session.addListener(BuddiesView.this);
- }
- else
- {
- session.close();
- session = null;
+ if (connecting)
+ {
+ resetInput();
+ 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);
+ session.addListener(BuddiesView.this);
+ }
+ else
+ {
+ session.close();
+ session = null;
+ }
}
}
+ else
+ {
+ LifecycleUtil.deactivate(connector);
+ }
}
}
finally

Back to the top