Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcletavernie2012-11-23 10:52:23 +0000
committercletavernie2012-11-23 10:52:23 +0000
commit6424abf6e7e922c90a56eec84fd3f9b2de9dfae5 (patch)
tree8d3239a03710422cba8493b4dbe9ee2bb9aeda71 /incoming
parentc7ed19562dfcf443385c0213765c98ffc841409f (diff)
downloadorg.eclipse.papyrus-6424abf6e7e922c90a56eec84fd3f9b2de9dfae5.tar.gz
org.eclipse.papyrus-6424abf6e7e922c90a56eec84fd3f9b2de9dfae5.tar.xz
org.eclipse.papyrus-6424abf6e7e922c90a56eec84fd3f9b2de9dfae5.zip
391945: [Refactoring] Part 2: Refactoring on Kepler (0.10)
https://bugs.eclipse.org/bugs/show_bug.cgi?id=391945
Diffstat (limited to 'incoming')
-rw-r--r--incoming/org.eclipse.papyrus.infra.services.labelprovider/META-INF/MANIFEST.MF1
-rw-r--r--incoming/org.eclipse.papyrus.infra.services.labelprovider/src/org/eclipse/papyrus/infra/services/labelprovider/service/ContextualLabelProvider.java31
-rw-r--r--incoming/org.eclipse.papyrus.infra.services.labelprovider/src/org/eclipse/papyrus/infra/services/labelprovider/service/ExtensibleLabelProvider.java116
-rw-r--r--incoming/org.eclipse.papyrus.infra.services.labelprovider/src/org/eclipse/papyrus/infra/services/labelprovider/service/IDetailLabelProvider.java20
-rw-r--r--incoming/org.eclipse.papyrus.infra.services.labelprovider/src/org/eclipse/papyrus/infra/services/labelprovider/service/IFilteredLabelProvider.java24
-rw-r--r--incoming/org.eclipse.papyrus.infra.services.labelprovider/src/org/eclipse/papyrus/infra/services/labelprovider/service/LabelProviderService.java25
-rw-r--r--incoming/org.eclipse.papyrus.infra.services.labelprovider/src/org/eclipse/papyrus/infra/services/labelprovider/service/impl/LabelProviderServiceImpl.java42
7 files changed, 256 insertions, 3 deletions
diff --git a/incoming/org.eclipse.papyrus.infra.services.labelprovider/META-INF/MANIFEST.MF b/incoming/org.eclipse.papyrus.infra.services.labelprovider/META-INF/MANIFEST.MF
index 9ca9e56279f..23a9e316165 100644
--- a/incoming/org.eclipse.papyrus.infra.services.labelprovider/META-INF/MANIFEST.MF
+++ b/incoming/org.eclipse.papyrus.infra.services.labelprovider/META-INF/MANIFEST.MF
@@ -8,7 +8,6 @@ Bundle-Vendor: Eclipse Modeling Project
Require-Bundle: org.eclipse.ui,
org.eclipse.core.runtime,
org.eclipse.papyrus.infra.core;bundle-version="0.10.0",
- org.eclipse.papyrus.infra.widgets;bundle-version="0.10.0",
org.eclipse.papyrus.infra.core.log;bundle-version="0.10.0"
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Bundle-ActivationPolicy: lazy
diff --git a/incoming/org.eclipse.papyrus.infra.services.labelprovider/src/org/eclipse/papyrus/infra/services/labelprovider/service/ContextualLabelProvider.java b/incoming/org.eclipse.papyrus.infra.services.labelprovider/src/org/eclipse/papyrus/infra/services/labelprovider/service/ContextualLabelProvider.java
new file mode 100644
index 00000000000..e99f7ab2779
--- /dev/null
+++ b/incoming/org.eclipse.papyrus.infra.services.labelprovider/src/org/eclipse/papyrus/infra/services/labelprovider/service/ContextualLabelProvider.java
@@ -0,0 +1,31 @@
+/*****************************************************************************
+ * Copyright (c) 2012 CEA LIST.
+ *
+ * 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:
+ * Camille Letavernier (CEA LIST) camille.letavernier@cea.fr - Initial API and implementation
+ *****************************************************************************/
+package org.eclipse.papyrus.infra.services.labelprovider.service;
+
+import org.eclipse.jface.viewers.ILabelProvider;
+
+/**
+ * A LabelProvider which may use a context element to compute its labels.
+ * It can be used to compute e.g. relative paths from a base namespace
+ *
+ * @author Camille Letavernier
+ */
+public interface ContextualLabelProvider extends ILabelProvider {
+
+ /**
+ * Sets the context element against which the labels will be computed
+ *
+ * @param contextElement
+ * the context element against which the labels will be computed (e.g. base namespace for relative paths)
+ */
+ public void setContext(Object contextElement);
+}
diff --git a/incoming/org.eclipse.papyrus.infra.services.labelprovider/src/org/eclipse/papyrus/infra/services/labelprovider/service/ExtensibleLabelProvider.java b/incoming/org.eclipse.papyrus.infra.services.labelprovider/src/org/eclipse/papyrus/infra/services/labelprovider/service/ExtensibleLabelProvider.java
new file mode 100644
index 00000000000..2412359ab9b
--- /dev/null
+++ b/incoming/org.eclipse.papyrus.infra.services.labelprovider/src/org/eclipse/papyrus/infra/services/labelprovider/service/ExtensibleLabelProvider.java
@@ -0,0 +1,116 @@
+/*****************************************************************************
+ * Copyright (c) 2012 CEA LIST.
+ *
+ * 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:
+ * Camille Letavernier (CEA LIST) camille.letavernier@cea.fr - Initial API and implementation
+ *****************************************************************************/
+package org.eclipse.papyrus.infra.services.labelprovider.service;
+
+import java.util.LinkedHashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Set;
+import java.util.SortedMap;
+import java.util.TreeMap;
+
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ILabelProviderListener;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.LabelProviderChangedEvent;
+import org.eclipse.swt.graphics.Image;
+
+/**
+ * An ExtensibleLabelProvider encapsulates a set of LabelProviders. Each LabelProvider handles only a few kind of elements.
+ * The ExtensibleLabelProvider retrieves the most appropriate LabelProvider for each object.
+ *
+ * When more than one LabelProvider match an element, the one with the smaller priority is used.
+ *
+ * @author Camille Letavernier
+ *
+ */
+public class ExtensibleLabelProvider implements ILabelProvider, ILabelProviderListener {
+
+ private final Set<ILabelProviderListener> listeners;
+
+ private final SortedMap<Integer, List<IFilteredLabelProvider>> providers;
+
+ private final ILabelProvider defaultProvider;
+
+ public ExtensibleLabelProvider() {
+ listeners = new LinkedHashSet<ILabelProviderListener>();
+ providers = new TreeMap<Integer, List<IFilteredLabelProvider>>();
+
+ defaultProvider = new LabelProvider();
+ }
+
+ public void addListener(ILabelProviderListener listener) {
+ listeners.add(listener);
+ }
+
+ public void dispose() {
+ listeners.clear();
+ for(List<IFilteredLabelProvider> filteredProviders : providers.values()) {
+ for(IFilteredLabelProvider provider : filteredProviders) {
+ provider.dispose();
+ }
+ }
+ providers.clear();
+ }
+
+ public boolean isLabelProperty(Object element, String property) {
+ return false;
+ }
+
+ public void removeListener(ILabelProviderListener listener) {
+ listeners.remove(listener);
+ }
+
+ public void registerProvider(int priority, IFilteredLabelProvider provider) {
+ getProviders(priority).add(provider);
+ provider.addListener(this);
+ }
+
+ public Image getImage(Object element) {
+ return getProvider(element).getImage(element);
+ }
+
+ public String getText(Object element) {
+ return getProvider(element).getText(element);
+ }
+
+ protected final ILabelProvider getProvider(Object element) {
+ for(List<IFilteredLabelProvider> filteredProviders : providers.values()) {
+ for(IFilteredLabelProvider provider : filteredProviders) {
+ if(provider.accept(element)) {
+ return provider;
+ }
+ }
+ }
+
+ return defaultProvider;
+ }
+
+ protected final List<IFilteredLabelProvider> getProviders(int priority) {
+ if(!providers.containsKey(priority)) {
+ providers.put(priority, new LinkedList<IFilteredLabelProvider>());
+ }
+
+ return providers.get(priority);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * Forwards the event to each listener
+ */
+ public void labelProviderChanged(LabelProviderChangedEvent event) {
+ for(ILabelProviderListener listener : listeners) {
+ listener.labelProviderChanged(event);
+ }
+ }
+}
diff --git a/incoming/org.eclipse.papyrus.infra.services.labelprovider/src/org/eclipse/papyrus/infra/services/labelprovider/service/IDetailLabelProvider.java b/incoming/org.eclipse.papyrus.infra.services.labelprovider/src/org/eclipse/papyrus/infra/services/labelprovider/service/IDetailLabelProvider.java
new file mode 100644
index 00000000000..f76e7743239
--- /dev/null
+++ b/incoming/org.eclipse.papyrus.infra.services.labelprovider/src/org/eclipse/papyrus/infra/services/labelprovider/service/IDetailLabelProvider.java
@@ -0,0 +1,20 @@
+/*****************************************************************************
+ * Copyright (c) 2011 CEA LIST.
+ *
+ * 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:
+ * Camille Letavernier (CEA LIST) camille.letavernier@cea.fr - Initial API and implementation
+ *****************************************************************************/
+package org.eclipse.papyrus.infra.services.labelprovider.service;
+
+import org.eclipse.jface.viewers.ILabelProvider;
+
+
+public interface IDetailLabelProvider extends ILabelProvider {
+
+ public String getDetail(Object object);
+}
diff --git a/incoming/org.eclipse.papyrus.infra.services.labelprovider/src/org/eclipse/papyrus/infra/services/labelprovider/service/IFilteredLabelProvider.java b/incoming/org.eclipse.papyrus.infra.services.labelprovider/src/org/eclipse/papyrus/infra/services/labelprovider/service/IFilteredLabelProvider.java
new file mode 100644
index 00000000000..d0f015c1f2d
--- /dev/null
+++ b/incoming/org.eclipse.papyrus.infra.services.labelprovider/src/org/eclipse/papyrus/infra/services/labelprovider/service/IFilteredLabelProvider.java
@@ -0,0 +1,24 @@
+/*****************************************************************************
+ * Copyright (c) 2011 CEA LIST.
+ *
+ * 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:
+ * Camille Letavernier (CEA LIST) camille.letavernier@cea.fr - Initial API and implementation
+ *****************************************************************************/
+package org.eclipse.papyrus.infra.services.labelprovider.service;
+
+import org.eclipse.jface.viewers.ILabelProvider;
+
+/**
+ * A LabelProvider which only accepts a specific set of objects
+ *
+ * @author Camille Letavernier
+ */
+public interface IFilteredLabelProvider extends ILabelProvider {
+
+ public boolean accept(Object element);
+}
diff --git a/incoming/org.eclipse.papyrus.infra.services.labelprovider/src/org/eclipse/papyrus/infra/services/labelprovider/service/LabelProviderService.java b/incoming/org.eclipse.papyrus.infra.services.labelprovider/src/org/eclipse/papyrus/infra/services/labelprovider/service/LabelProviderService.java
index e7f0240ae11..a0657f0cbce 100644
--- a/incoming/org.eclipse.papyrus.infra.services.labelprovider/src/org/eclipse/papyrus/infra/services/labelprovider/service/LabelProviderService.java
+++ b/incoming/org.eclipse.papyrus.infra.services.labelprovider/src/org/eclipse/papyrus/infra/services/labelprovider/service/LabelProviderService.java
@@ -57,4 +57,29 @@ public interface LabelProviderService extends IService {
*/
public ILabelProvider getLabelProvider(String context);
+ /**
+ * Retrieves the LabelProvider for the given context. The provider will return
+ * labels based on the contextElement
+ *
+ * @param context
+ * The context in which the ILabelProvider will be used. According to the context,
+ * a different implementation may be returned. If the context is unknown or null,
+ * the standard ILabelProvider will be returned
+ * @param contextElement
+ * The element against which the labels should be computed. It can for example
+ * be the base namespace to compute relative labels.
+ * @return
+ */
+ public ILabelProvider getLabelProvider(String context, Object contextElement);
+
+ /**
+ * Retrieves the default LabelProvider. The provider will return
+ * labels based on the contextElement
+ *
+ * @param contextElement
+ * The element against which the labels should be computed. It can for example
+ * be the base namespace to compute relative labels.
+ */
+ public ILabelProvider getLabelProvider(Object contextElement);
+
}
diff --git a/incoming/org.eclipse.papyrus.infra.services.labelprovider/src/org/eclipse/papyrus/infra/services/labelprovider/service/impl/LabelProviderServiceImpl.java b/incoming/org.eclipse.papyrus.infra.services.labelprovider/src/org/eclipse/papyrus/infra/services/labelprovider/service/impl/LabelProviderServiceImpl.java
index 062029c33da..2a069b13a04 100644
--- a/incoming/org.eclipse.papyrus.infra.services.labelprovider/src/org/eclipse/papyrus/infra/services/labelprovider/service/impl/LabelProviderServiceImpl.java
+++ b/incoming/org.eclipse.papyrus.infra.services.labelprovider/src/org/eclipse/papyrus/infra/services/labelprovider/service/impl/LabelProviderServiceImpl.java
@@ -20,9 +20,10 @@ import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.papyrus.infra.core.services.ServiceException;
import org.eclipse.papyrus.infra.core.services.ServicesRegistry;
import org.eclipse.papyrus.infra.services.labelprovider.Activator;
+import org.eclipse.papyrus.infra.services.labelprovider.service.ContextualLabelProvider;
+import org.eclipse.papyrus.infra.services.labelprovider.service.ExtensibleLabelProvider;
+import org.eclipse.papyrus.infra.services.labelprovider.service.IFilteredLabelProvider;
import org.eclipse.papyrus.infra.services.labelprovider.service.LabelProviderService;
-import org.eclipse.papyrus.infra.widgets.providers.ExtensibleLabelProvider;
-import org.eclipse.papyrus.infra.widgets.providers.IFilteredLabelProvider;
/**
* Default implementation for the LabelProviderService
@@ -56,6 +57,12 @@ public class LabelProviderServiceImpl implements LabelProviderService {
readLabelProviders(config);
}
+ /**
+ * Parses the available contexts from the extension point
+ *
+ * @param config
+ * The extension point IConfigurationElements
+ */
private void readContexts(IConfigurationElement[] config) {
for(IConfigurationElement e : config) {
try {
@@ -87,6 +94,12 @@ public class LabelProviderServiceImpl implements LabelProviderService {
}
}
+ /**
+ * Parses the available label providers from the extension point
+ *
+ * @param config
+ * The extension point IConfigurationElements
+ */
private void readLabelProviders(IConfigurationElement[] config) {
for(IConfigurationElement e : config) {
try {
@@ -163,6 +176,9 @@ public class LabelProviderServiceImpl implements LabelProviderService {
return labelProviders.get(context);
}
+ /**
+ * {@inheritDoc}
+ */
private class SharedExtensibleLabelProvider extends ExtensibleLabelProvider {
@Override
@@ -177,4 +193,26 @@ public class LabelProviderServiceImpl implements LabelProviderService {
}
}
+ /**
+ * {@inheritDoc}
+ */
+ public ILabelProvider getLabelProvider(String context, Object contextElement) {
+ ILabelProvider provider = getLabelProvider(context);
+ if(provider instanceof ContextualLabelProvider) {
+ ((ContextualLabelProvider)provider).setContext(contextElement);
+ }
+ return provider;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public ILabelProvider getLabelProvider(Object contextElement) {
+ ILabelProvider provider = getLabelProvider();
+ if(provider instanceof ContextualLabelProvider) {
+ ((ContextualLabelProvider)provider).setContext(contextElement);
+ }
+ return provider;
+ }
+
}

Back to the top