diff options
author | Christian W. Damus | 2016-12-03 16:10:18 +0000 |
---|---|---|
committer | Christian W. Damus | 2016-12-03 16:22:22 +0000 |
commit | d166f6032ea983c2f4b639dd6e728d26c7afd712 (patch) | |
tree | d41d572de6b9a1a7286e7ab782a09f51a4937e65 /plugins/infra/properties | |
parent | 4cc473a354549001b380ac6fb963d16f05ffa953 (diff) | |
download | org.eclipse.papyrus-d166f6032ea983c2f4b639dd6e728d26c7afd712.tar.gz org.eclipse.papyrus-d166f6032ea983c2f4b639dd6e728d26c7afd712.tar.xz org.eclipse.papyrus-d166f6032ea983c2f4b639dd6e728d26c7afd712.zip |
Bug 508629: [Label Provider Service] Label providers do not notify
Fix gaps in the propagation of label updates from EMF item provider
adapters through label-providers that delegate to them and the
label-provider service that delegates to those, in turn.
Add JUnit tests covering various affected label providers, including
a new tests plug-in for the Properties UI in the Infra layer.
https://bugs.eclipse.org/bugs/show_bug.cgi?id=508629
(🍒-picked from streams/2.0-maintenance)
Change-Id: I2e0301db72064fe6899c4d92252d93d9051943f0
Diffstat (limited to 'plugins/infra/properties')
-rw-r--r-- | plugins/infra/properties/org.eclipse.papyrus.infra.properties.ui/src/org/eclipse/papyrus/infra/properties/ui/providers/PropertiesHeaderLabelProvider.java | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/plugins/infra/properties/org.eclipse.papyrus.infra.properties.ui/src/org/eclipse/papyrus/infra/properties/ui/providers/PropertiesHeaderLabelProvider.java b/plugins/infra/properties/org.eclipse.papyrus.infra.properties.ui/src/org/eclipse/papyrus/infra/properties/ui/providers/PropertiesHeaderLabelProvider.java index e65df2d93d1..7e0911868f8 100644 --- a/plugins/infra/properties/org.eclipse.papyrus.infra.properties.ui/src/org/eclipse/papyrus/infra/properties/ui/providers/PropertiesHeaderLabelProvider.java +++ b/plugins/infra/properties/org.eclipse.papyrus.infra.properties.ui/src/org/eclipse/papyrus/infra/properties/ui/providers/PropertiesHeaderLabelProvider.java @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2013 CEA LIST. + * Copyright (c) 2013, 2016 CEA LIST, Christian W. Damus, and others. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 @@ -8,11 +8,14 @@ * * Contributors: * Camille Letavernier (CEA LIST) camille.letavernier@cea.fr - Initial API and implementation + * Christian W. Damus - bug 508629 *****************************************************************************/ package org.eclipse.papyrus.infra.properties.ui.providers; 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.papyrus.infra.services.labelprovider.service.LabelProviderService; import org.eclipse.papyrus.infra.services.labelprovider.service.impl.LabelProviderServiceImpl; import org.eclipse.swt.graphics.Image; @@ -28,6 +31,8 @@ public class PropertiesHeaderLabelProvider extends LabelProvider { private final ILabelProvider delegate; + private final ILabelProviderListener forwardingListener; + /** * The {@link LabelProviderService} Context */ @@ -36,6 +41,9 @@ public class PropertiesHeaderLabelProvider extends LabelProvider { public PropertiesHeaderLabelProvider() { LabelProviderService labelProviderService = new LabelProviderServiceImpl(); delegate = labelProviderService.getLabelProvider(PROPERTIES_HEADER_CONTEXT); + + forwardingListener = this::forwardLabelChange; + delegate.addListener(forwardingListener); } @Override @@ -48,8 +56,13 @@ public class PropertiesHeaderLabelProvider extends LabelProvider { return delegate.getImage(element); } + private void forwardLabelChange(LabelProviderChangedEvent event) { + fireLabelProviderChanged(new LabelProviderChangedEvent(this, event.getElements())); + } + @Override public void dispose() { + delegate.removeListener(forwardingListener); delegate.dispose(); } } |