diff options
author | kmoore | 2009-05-19 00:29:18 +0000 |
---|---|---|
committer | kmoore | 2009-05-19 00:29:18 +0000 |
commit | e1e99ca95f1d83c82043533357d5c1c0cdf278b6 (patch) | |
tree | b5e5e8dbc89924d24caa6261b9c586662b1f18c9 | |
parent | 2671ada902d4f72607ce31d28c51515b1753172b (diff) | |
download | webtools.dali-e1e99ca95f1d83c82043533357d5c1c0cdf278b6.tar.gz webtools.dali-e1e99ca95f1d83c82043533357d5c1c0cdf278b6.tar.xz webtools.dali-e1e99ca95f1d83c82043533357d5c1c0cdf278b6.zip |
276761 - listener not registered exception updating jpa project
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); } } |