Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.net4j.examples.installer/examples/org.eclipse.net4j.buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/views/SessionManagerView.java')
-rw-r--r--plugins/org.eclipse.net4j.examples.installer/examples/org.eclipse.net4j.buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/views/SessionManagerView.java153
1 files changed, 153 insertions, 0 deletions
diff --git a/plugins/org.eclipse.net4j.examples.installer/examples/org.eclipse.net4j.buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/views/SessionManagerView.java b/plugins/org.eclipse.net4j.examples.installer/examples/org.eclipse.net4j.buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/views/SessionManagerView.java
new file mode 100644
index 0000000000..1162a5e3a7
--- /dev/null
+++ b/plugins/org.eclipse.net4j.examples.installer/examples/org.eclipse.net4j.buddies.ui/src/org/eclipse/net4j/buddies/internal/ui/views/SessionManagerView.java
@@ -0,0 +1,153 @@
+/*
+ * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.net4j.buddies.internal.ui.views;
+
+import org.eclipse.net4j.buddies.IBuddySession;
+import org.eclipse.net4j.buddies.ISessionManager;
+import org.eclipse.net4j.buddies.ISessionManagerEvent;
+import org.eclipse.net4j.buddies.common.IBuddyStateEvent;
+import org.eclipse.net4j.buddies.internal.ui.BuddiesItemProvider;
+import org.eclipse.net4j.buddies.internal.ui.actions.ConnectAction;
+import org.eclipse.net4j.buddies.internal.ui.actions.DisconnectAction;
+import org.eclipse.net4j.buddies.internal.ui.actions.FlashAction;
+import org.eclipse.net4j.buddies.internal.ui.actions.ReconnectAction;
+import org.eclipse.net4j.buddies.internal.ui.actions.StateAction.DropDownAction;
+import org.eclipse.net4j.util.container.IContainer;
+import org.eclipse.net4j.util.event.IEvent;
+import org.eclipse.net4j.util.event.IListener;
+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.IToolBarManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+
+public abstract class SessionManagerView extends ContainerView implements IListener
+{
+ private IBuddySession session;
+
+ private ConnectAction connectAction = new ConnectAction();
+
+ private DisconnectAction disconnectAction = new DisconnectAction();
+
+ private ReconnectAction reconnectAction = new ReconnectAction();
+
+ private FlashAction flashAction = new FlashAction();
+
+ private DropDownAction dropDownAction = new DropDownAction();
+
+ private Control control;
+
+ public SessionManagerView()
+ {
+ }
+
+ public IBuddySession getSession()
+ {
+ return session;
+ }
+
+ @Override
+ public void dispose()
+ {
+ ISessionManager.INSTANCE.removeListener(this);
+ session = null;
+ super.dispose();
+ }
+
+ public void notifyEvent(IEvent event)
+ {
+ if (event instanceof ISessionManagerEvent)
+ {
+ queryBuddiesManager();
+ }
+ else if (event instanceof IBuddyStateEvent)
+ {
+ if (session != null && event.getSource() == session.getSelf())
+ {
+ updateState();
+ }
+ }
+ }
+
+ @Override
+ protected final Control createUI(Composite parent)
+ {
+ control = createControl(parent);
+ queryBuddiesManager();
+ ISessionManager.INSTANCE.addListener(this);
+ return control;
+ }
+
+ protected Control createControl(Composite parent)
+ {
+ return super.createUI(parent);
+ }
+
+ @Override
+ protected ContainerItemProvider<IContainer<Object>> createContainerItemProvider()
+ {
+ return new BuddiesItemProvider();
+ }
+
+ @Override
+ protected void fillLocalToolBar(IToolBarManager manager)
+ {
+ super.fillLocalToolBar(manager);
+ manager.add(dropDownAction);
+ }
+
+ @Override
+ protected void fillLocalPullDown(IMenuManager manager)
+ {
+ manager.add(connectAction);
+ manager.add(disconnectAction);
+ manager.add(reconnectAction);
+ manager.add(new Separator());
+ manager.add(flashAction);
+ super.fillLocalPullDown(manager);
+ }
+
+ protected void queryBuddiesManager()
+ {
+ IBuddySession oldSession = session;
+ session = ISessionManager.INSTANCE.getSession();
+ if (oldSession != session)
+ {
+ if (oldSession != null)
+ {
+ oldSession.removeListener(this);
+ oldSession.getSelf().removeListener(this);
+ }
+
+ if (session != null)
+ {
+ session.addListener(this);
+ session.getSelf().addListener(this);
+ }
+ }
+
+ resetInput();
+ updateState();
+ }
+
+ protected void updateState()
+ {
+ connectAction.setEnabled(session == null);
+ disconnectAction.setEnabled(session != null);
+ reconnectAction.setEnabled(session != null);
+ flashAction.setEnabled(session != null && !ISessionManager.INSTANCE.isFlashing());
+ dropDownAction.updateState();
+ // control.setEnabled(session != null);
+ }
+}

Back to the top