Added LogInOutDecorator for EMFStore
diff --git a/ECP2/org.eclipse.emf.ecp.emfstore.ui/icons/bullet_delete.png b/ECP2/org.eclipse.emf.ecp.emfstore.ui/icons/bullet_delete.png
new file mode 100644
index 0000000..2ea8d97
--- /dev/null
+++ b/ECP2/org.eclipse.emf.ecp.emfstore.ui/icons/bullet_delete.png
Binary files differ
diff --git a/ECP2/org.eclipse.emf.ecp.emfstore.ui/icons/bullet_green.png b/ECP2/org.eclipse.emf.ecp.emfstore.ui/icons/bullet_green.png
new file mode 100644
index 0000000..76b9b2b
--- /dev/null
+++ b/ECP2/org.eclipse.emf.ecp.emfstore.ui/icons/bullet_green.png
Binary files differ
diff --git a/ECP2/org.eclipse.emf.ecp.emfstore.ui/plugin.xml b/ECP2/org.eclipse.emf.ecp.emfstore.ui/plugin.xml
index 8468d9e..b32294e 100644
--- a/ECP2/org.eclipse.emf.ecp.emfstore.ui/plugin.xml
+++ b/ECP2/org.eclipse.emf.ecp.emfstore.ui/plugin.xml
@@ -238,6 +238,19 @@
If the porject has local changes.
</description>
</decorator>
+ <decorator
+ adaptable="true"
+ class="org.eclipse.emf.ecp.emfstore.internal.ui.decorator.ESBrowserLabelDecorator"
+ id="org.eclipse.emf.ecp.emfstore.ui.decorators.LoginDecorator"
+ label="Login Decorator"
+ lightweight="true"
+ state="true">
+ <enablement>
+ <objectClass
+ name="org.eclipse.emf.ecp.core.ECPRepository">
+ </objectClass>
+ </enablement>
+ </decorator>
</extension>
<extension
point="org.eclipse.core.expressions.propertyTesters">
@@ -249,5 +262,16 @@
type="org.eclipse.emf.ecp.core.ECPRepository">
</propertyTester>
</extension>
-
+ <extension
+ point="org.eclipse.emf.emfstore.client.loginObserver">
+ <observer
+ loginObserver="org.eclipse.emf.ecp.emfstore.internal.ui.decorator.ESBrowserLabelDecorator">
+ </observer>
+ </extension>
+ <extension
+ point="org.eclipse.emf.emfstore.client.logoutObserver">
+ <observer
+ logoutObserver="org.eclipse.emf.ecp.emfstore.internal.ui.decorator.ESBrowserLabelDecorator">
+ </observer>
+ </extension>
</plugin>
diff --git a/ECP2/org.eclipse.emf.ecp.emfstore.ui/src/org/eclipse/emf/ecp/emfstore/internal/ui/decorator/EMFStoreDirtyDecorator.java b/ECP2/org.eclipse.emf.ecp.emfstore.ui/src/org/eclipse/emf/ecp/emfstore/internal/ui/decorator/EMFStoreDirtyDecorator.java
index f18f471..5847bd1 100644
--- a/ECP2/org.eclipse.emf.ecp.emfstore.ui/src/org/eclipse/emf/ecp/emfstore/internal/ui/decorator/EMFStoreDirtyDecorator.java
+++ b/ECP2/org.eclipse.emf.ecp.emfstore.ui/src/org/eclipse/emf/ecp/emfstore/internal/ui/decorator/EMFStoreDirtyDecorator.java
@@ -19,8 +19,6 @@
public class EMFStoreDirtyDecorator implements ILightweightLabelDecorator
{
- private String providerLabel = "org.eclipse.emf.ecp.emfstore.provider";
-
private String dirtyPath = "icons/dirty.png";
/**
@@ -44,7 +42,7 @@
{
ECPProject project = (ECPProject)element;
ECPProvider provider = project.getProvider();
- if (provider != null && providerLabel.equalsIgnoreCase(provider.getName())
+ if (provider != null && EMFStoreProvider.NAME.equalsIgnoreCase(provider.getName())
&& EMFStoreProvider.getProjectSpace((InternalProject)project).isDirty())
{
decoration.addOverlay(Activator.getImageDescriptor(dirtyPath), IDecoration.BOTTOM_LEFT);
diff --git a/ECP2/org.eclipse.emf.ecp.emfstore.ui/src/org/eclipse/emf/ecp/emfstore/internal/ui/decorator/ESBrowserLabelDecorator.java b/ECP2/org.eclipse.emf.ecp.emfstore.ui/src/org/eclipse/emf/ecp/emfstore/internal/ui/decorator/ESBrowserLabelDecorator.java
new file mode 100644
index 0000000..55d93a9
--- /dev/null
+++ b/ECP2/org.eclipse.emf.ecp.emfstore.ui/src/org/eclipse/emf/ecp/emfstore/internal/ui/decorator/ESBrowserLabelDecorator.java
@@ -0,0 +1,132 @@
+/*******************************************************************************
+ * Copyright (c) 2008-2011 Chair for Applied Software Engineering,
+ * Technische Universitaet Muenchen.
+ * 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:
+ ******************************************************************************/
+package org.eclipse.emf.ecp.emfstore.internal.ui.decorator;
+
+import org.eclipse.emf.ecp.core.ECPProvider;
+import org.eclipse.emf.ecp.core.ECPRepository;
+import org.eclipse.emf.ecp.emfstore.core.internal.EMFStoreProvider;
+import org.eclipse.emf.ecp.emfstore.internal.ui.Activator;
+import org.eclipse.emf.ecp.spi.core.InternalRepository;
+import org.eclipse.emf.emfstore.client.model.ServerInfo;
+import org.eclipse.emf.emfstore.client.model.Usersession;
+import org.eclipse.emf.emfstore.client.model.observers.LoginObserver;
+import org.eclipse.emf.emfstore.client.model.observers.LogoutObserver;
+
+import org.eclipse.jface.viewers.IDecoration;
+import org.eclipse.jface.viewers.ILabelProviderListener;
+import org.eclipse.jface.viewers.ILightweightLabelDecorator;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.PlatformUI;
+
+/**
+ * @see ILightweightLabelDecorator
+ */
+public class ESBrowserLabelDecorator extends LabelProvider implements ILightweightLabelDecorator, LoginObserver,
+ LogoutObserver
+{
+
+ /**
+ * {@inheritDoc} Decorates the label of a {@link ServerInfo} object according to its login state.
+ */
+ public void decorate(Object element, IDecoration decoration)
+ {
+ if (element instanceof ECPRepository)
+ {
+ InternalRepository repository = (InternalRepository)element;
+ ECPProvider provider = repository.getProvider();
+
+ if (provider != null && EMFStoreProvider.NAME.equalsIgnoreCase(provider.getName()))
+ {
+ ServerInfo server = EMFStoreProvider.getServerInfo(repository);
+ if (server.getLastUsersession() != null && server.getLastUsersession().isLoggedIn())
+ {
+ decoration.addOverlay(Activator.getImageDescriptor("icons/bullet_green.png"), IDecoration.BOTTOM_RIGHT);
+ }
+ else
+ {
+ decoration.addOverlay(Activator.getImageDescriptor("icons/bullet_delete.png"), IDecoration.BOTTOM_RIGHT);
+ }
+ }
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.jface.viewers.BaseLabelProvider#addListener(org.eclipse.jface.viewers.ILabelProviderListener)
+ */
+ @Override
+ public void addListener(ILabelProviderListener listener)
+ {
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.jface.viewers.BaseLabelProvider#dispose()
+ */
+ @Override
+ public void dispose()
+ {
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public boolean isLabelProperty(Object element, String property)
+ {
+ return false;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.jface.viewers.BaseLabelProvider#removeListener(org.eclipse.jface.viewers.ILabelProviderListener)
+ */
+ @Override
+ public void removeListener(ILabelProviderListener listener)
+ {
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.emf.emfstore.client.model.observers.LoginObserver#loginCompleted(org.eclipse.emf.emfstore.client.model.Usersession)
+ */
+ public void loginCompleted(Usersession session)
+ {
+ update();
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.emf.emfstore.client.model.observers.LogoutObserver#logoutCompleted(org.eclipse.emf.emfstore.client.model.Usersession)
+ */
+ public void logoutCompleted(Usersession session)
+ {
+ update();
+ }
+
+ private void update()
+ {
+ Display.getDefault().asyncExec(new Runnable()
+ {
+ public void run()
+ {
+ PlatformUI.getWorkbench().getDecoratorManager()
+ .update("org.eclipse.emf.ecp.emfstore.ui.decorators.LoginDecorator");
+ }
+ });
+ }
+}