Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkmoore2009-05-19 00:29:18 +0000
committerkmoore2009-05-19 00:29:18 +0000
commite1e99ca95f1d83c82043533357d5c1c0cdf278b6 (patch)
treeb5e5e8dbc89924d24caa6261b9c586662b1f18c9
parent2671ada902d4f72607ce31d28c51515b1753172b (diff)
downloadwebtools.dali-e1e99ca95f1d83c82043533357d5c1c0cdf278b6.tar.gz
webtools.dali-e1e99ca95f1d83c82043533357d5c1c0cdf278b6.tar.xz
webtools.dali-e1e99ca95f1d83c82043533357d5c1c0cdf278b6.zip
276761 - listener not registered exception updating jpa project
-rw-r--r--jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jface/AbstractItemLabelProvider.java44
-rw-r--r--jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jface/AbstractTreeItemContentProvider.java16
2 files changed, 40 insertions, 20 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jface/AbstractItemLabelProvider.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jface/AbstractItemLabelProvider.java
index 219d586425..6d87b33462 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jface/AbstractItemLabelProvider.java
+++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jface/AbstractItemLabelProvider.java
@@ -74,7 +74,7 @@ public abstract class AbstractItemLabelProvider implements ItemLabelProvider
* Return the image value model
* (lazy and just-in-time initialized)
*/
- protected PropertyValueModel<Image> imageModel() {
+ protected synchronized PropertyValueModel<Image> imageModel() {
if (imageModel == null) {
imageModel = buildImageModel();
engageImageModel();
@@ -100,16 +100,14 @@ public abstract class AbstractItemLabelProvider implements ItemLabelProvider
* subclass logic
*/
protected void disengageImageModel() {
- if (imageModel != null) {
- imageModel.removePropertyChangeListener(PropertyValueModel.VALUE, labelChangeListener);
- }
+ imageModel.removePropertyChangeListener(PropertyValueModel.VALUE, labelChangeListener);
}
/**
* Return the text value model
* (lazy and just-in-time initialized)
*/
- protected PropertyValueModel<String> textModel() {
+ protected synchronized PropertyValueModel<String> textModel() {
if (textModel == null) {
textModel = buildTextModel();
engageTextModel();
@@ -135,16 +133,14 @@ public abstract class AbstractItemLabelProvider implements ItemLabelProvider
* subclass logic
*/
protected void disengageTextModel() {
- if (textModel != null) {
- textModel.removePropertyChangeListener(PropertyValueModel.VALUE, labelChangeListener);
- }
+ textModel.removePropertyChangeListener(PropertyValueModel.VALUE, labelChangeListener);
}
/**
* Return the description value model
* (lazy and just-in-time initialized)
*/
- protected PropertyValueModel<String> descriptionModel() {
+ protected synchronized PropertyValueModel<String> descriptionModel() {
if (descriptionModel == null) {
descriptionModel = buildDescriptionModel();
engageDescriptionModel();
@@ -170,9 +166,7 @@ public abstract class AbstractItemLabelProvider implements ItemLabelProvider
* subclass logic
*/
protected void disengageDescriptionModel() {
- if (descriptionModel != null) {
- descriptionModel.removePropertyChangeListener(PropertyValueModel.VALUE, labelChangeListener);
- }
+ descriptionModel.removePropertyChangeListener(PropertyValueModel.VALUE, labelChangeListener);
}
/**
@@ -202,7 +196,29 @@ public abstract class AbstractItemLabelProvider implements ItemLabelProvider
}
public void dispose() {
- disengageTextModel();
- disengageImageModel();
+ disposeTextModel();
+ disposeImageModel();
+ disposeDescriptionModel();
+ }
+
+ protected synchronized void disposeTextModel() {
+ if (this.textModel != null) {
+ disengageTextModel();
+ this.textModel = null;
+ }
+ }
+
+ protected synchronized void disposeImageModel() {
+ if (this.imageModel != null) {
+ disengageImageModel();
+ this.imageModel = null;
+ }
+ }
+
+ protected synchronized void disposeDescriptionModel() {
+ if (this.descriptionModel != null) {
+ disengageDescriptionModel();
+ this.descriptionModel = null;
+ }
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jface/AbstractTreeItemContentProvider.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jface/AbstractTreeItemContentProvider.java
index 50bba359a8..6514b47dd4 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jface/AbstractTreeItemContentProvider.java
+++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jface/AbstractTreeItemContentProvider.java
@@ -99,7 +99,7 @@ public abstract class AbstractTreeItemContentProvider<E>
* Return the children model
* (lazy and just-in-time initialized)
*/
- protected Iterator<E> childrenModel() {
+ protected synchronized Iterator<E> childrenModel() {
if (this.childrenModel == null) {
this.childrenModel = buildChildrenModel();
engageChildren();
@@ -174,7 +174,7 @@ public abstract class AbstractTreeItemContentProvider<E>
for (Object child : getChildren()) {
getTreeContentProvider().dispose(child);
}
- disengageChildren();
+ disposeChildrenModel();
}
/**
@@ -185,13 +185,17 @@ public abstract class AbstractTreeItemContentProvider<E>
this.childrenModel.addCollectionChangeListener(CollectionValueModel.VALUES, this.childrenListener);
}
+ protected synchronized void disposeChildrenModel() {
+ if (this.childrenModel != null) {
+ this.disengageChildrenModel();
+ this.childrenModel = null;
+ }
+ }
/**
* Should only be overridden with a call to super.disengageChildren() after
* subclass logic
*/
- protected void disengageChildren() {
- if (this.childrenModel != null) {
- this.childrenModel.removeCollectionChangeListener(CollectionValueModel.VALUES, this.childrenListener);
- }
+ protected void disengageChildrenModel() {
+ this.childrenModel.removeCollectionChangeListener(CollectionValueModel.VALUES, this.childrenListener);
}
}

Back to the top