Skip to content

Commit 02409eb

Browse files
committed
Cleanup page listener removal on dispose()
Follow up on 1ac91ea. Replaced indirect access from the page to the model on dispose() with direct access to it during page creation / attaching to model, so the listeners are always removed independently when dispose() is called.
1 parent 1ac91ea commit 02409eb

14 files changed

Lines changed: 23 additions & 87 deletions

ds/org.eclipse.pde.ds.ui/src/org/eclipse/pde/internal/ds/ui/editor/sections/DSPropertiesSection.java

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -157,19 +157,12 @@ protected void createClient(Section section, FormToolkit toolkit) {
157157
if (model != null) {
158158
fPropertiesTable.setInput(model);
159159
model.addModelChangedListener(this);
160+
section.addDisposeListener(e -> model.removeModelChangedListener(DSPropertiesSection.this));
160161
}
161162
toolkit.paintBordersFor(container);
162163
section.setClient(container);
163164
}
164165

165-
@Override
166-
public void dispose() {
167-
IDSModel model = getDSModel();
168-
if (model != null) {
169-
model.removeModelChangedListener(this);
170-
}
171-
}
172-
173166
@Override
174167
public void refresh() {
175168
fPropertiesTable.refresh();

ds/org.eclipse.pde.ds.ui/src/org/eclipse/pde/internal/ds/ui/editor/sections/DSProvideSection.java

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -127,20 +127,13 @@ protected void createClient(Section section, FormToolkit toolkit) {
127127
if (model != null) {
128128
fProvidesTable.setInput(model);
129129
model.addModelChangedListener(this);
130+
section.addDisposeListener(e -> model.removeModelChangedListener(DSProvideSection.this));
130131
}
131132
toolkit.paintBordersFor(container);
132133
section.setClient(container);
133134
updateTitle();
134135
}
135136

136-
@Override
137-
public void dispose() {
138-
IDSModel model = getDSModel();
139-
if (model != null) {
140-
model.removeModelChangedListener(this);
141-
}
142-
}
143-
144137
@Override
145138
public void refresh() {
146139
fProvidesTable.refresh();

ds/org.eclipse.pde.ds.ui/src/org/eclipse/pde/internal/ds/ui/editor/sections/DSReferenceSection.java

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -172,20 +172,13 @@ protected void createClient(Section section, FormToolkit toolkit) {
172172
if (model != null) {
173173
fReferencesTable.setInput(model);
174174
model.addModelChangedListener(this);
175+
section.addDisposeListener(e -> model.removeModelChangedListener(DSReferenceSection.this));
175176
}
176177
toolkit.paintBordersFor(container);
177178
section.setClient(container);
178179
updateTitle();
179180
}
180181

181-
@Override
182-
public void dispose() {
183-
IDSModel model = getDSModel();
184-
if (model != null) {
185-
model.removeModelChangedListener(this);
186-
}
187-
}
188-
189182
@Override
190183
public void refresh() {
191184
fReferencesTable.refresh();

ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/build/BuildClasspathSection.java

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,9 @@ private IBuildModel getBuildModel() {
171171
}
172172

173173
public void initialize() {
174-
getBuildModel().addModelChangedListener(this);
174+
IBuildModel model = getBuildModel();
175+
model.addModelChangedListener(this);
176+
getSection().addDisposeListener(e -> model.removeModelChangedListener(BuildClasspathSection.this));
175177
getSection().setExpanded(true);
176178
}
177179

@@ -226,15 +228,6 @@ public void run() {
226228
getPage().getPDEEditor().getContributor().contextMenuAboutToShow(manager, false);
227229
}
228230

229-
@Override
230-
public void dispose() {
231-
IBuildModel model = getBuildModel();
232-
if (model != null) {
233-
model.removeModelChangedListener(this);
234-
}
235-
super.dispose();
236-
}
237-
238231
@Override
239232
public void refresh() {
240233
fTableViewer.refresh();

ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/build/BuildContentsSection.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -440,11 +440,11 @@ public void initialize() {
440440
fTreeViewer.setInput(fBundleRoot);
441441
}
442442
fBuildModel.addModelChangedListener(this);
443+
getSection().addDisposeListener(e -> fBuildModel.removeModelChangedListener(BuildContentsSection.this));
443444
}
444445

445446
@Override
446447
public void dispose() {
447-
fBuildModel.removeModelChangedListener(this);
448448
PDEPlugin.getWorkspace().removeResourceChangeListener(this);
449449
super.dispose();
450450
}

ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/build/RuntimeInfoSection.java

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,9 @@ public RuntimeInfoSection(PDEFormPage page, Composite parent) {
225225
super(page, parent, Section.DESCRIPTION);
226226
getSection().setText(PDEUIMessages.BuildEditor_RuntimeInfoSection_title);
227227
getSection().setDescription(PDEUIMessages.BuildEditor_RuntimeInfoSection_desc);
228-
getBuildModel().addModelChangedListener(this);
228+
IBuildModel model = getBuildModel();
229+
model.addModelChangedListener(this);
230+
getSection().addDisposeListener(e -> model.removeModelChangedListener(RuntimeInfoSection.this));
229231
createClient(getSection(), page.getManagedForm().getToolkit());
230232
}
231233

@@ -575,15 +577,6 @@ private void doRename() {
575577
}
576578
}
577579

578-
@Override
579-
public void dispose() {
580-
IBuildModel buildModel = getBuildModel();
581-
if (buildModel != null) {
582-
buildModel.removeModelChangedListener(this);
583-
}
584-
super.dispose();
585-
}
586-
587580
private void refreshOutputKeys() {
588581
if (!isJavaProject()) {
589582
return;

ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/DependencyManagementSection.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -306,6 +306,8 @@ private void initialize() {
306306
IBuildModel build = getBuildModel(false);
307307
if (build != null) {
308308
build.addModelChangedListener(this);
309+
getSection()
310+
.addDisposeListener(e -> build.removeModelChangedListener(DependencyManagementSection.this));
309311
}
310312

311313
IResource resource = model.getUnderlyingResource();
@@ -641,10 +643,6 @@ protected void doAddDependencies() {
641643

642644
@Override
643645
public void dispose() {
644-
IPluginModelBase model = (IPluginModelBase) getPage().getModel();
645-
if (model != null) {
646-
model.removeModelChangedListener(this);
647-
}
648646
PDECore.getDefault().getModelManager().removePluginModelListener(this);
649647
super.dispose();
650648
}

ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/ExecutionEnvironmentSection.java

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,7 @@ protected void createClient(Section section, FormToolkit toolkit) {
184184
if (model != null) {
185185
fEETable.setInput(model);
186186
model.addModelChangedListener(this);
187+
section.addDisposeListener(e -> model.removeModelChangedListener(ExecutionEnvironmentSection.this));
187188
}
188189
toolkit.paintBordersFor(container);
189190
section.setClient(container);
@@ -202,13 +203,6 @@ private void updateClasspathSettings(IProject project) {
202203
} catch (CoreException e1) {
203204
}
204205
}
205-
@Override
206-
public void dispose() {
207-
IBundleModel model = getBundleModel();
208-
if (model != null) {
209-
model.removeModelChangedListener(this);
210-
}
211-
}
212206

213207
@Override
214208
public void refresh() {

ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/ExportPackageSection.java

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,7 @@ public int compare(Viewer viewer, Object e1, Object e2) {
164164
IBundleModel model = getBundleModel();
165165
fPackageViewer.setInput(model);
166166
model.addModelChangedListener(this);
167+
section.addDisposeListener(e -> model.removeModelChangedListener(ExportPackageSection.this));
167168
updateButtons();
168169
}
169170

@@ -191,15 +192,6 @@ public boolean doGlobalAction(String actionId) {
191192
return super.doGlobalAction(actionId);
192193
}
193194

194-
@Override
195-
public void dispose() {
196-
IBundleModel model = getBundleModel();
197-
if (model != null) {
198-
model.removeModelChangedListener(this);
199-
}
200-
super.dispose();
201-
}
202-
203195
@Override
204196
protected boolean canPaste(Object targetObject, Object[] sourceObjects) {
205197
Map<String, IPackageFragment> currentPackageFragments = null;

ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/ExportPackageVisibilitySection.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,8 @@ public void createClient(Section section, FormToolkit toolkit) {
145145
fImage = PDEPluginImages.DESC_PLUGIN_OBJ.createImage();
146146
update(null);
147147
getBundleModel().addModelChangedListener(this);
148+
section.addDisposeListener(
149+
e -> getBundleModel().removeModelChangedListener(ExportPackageVisibilitySection.this));
148150

149151
section.setLayout(FormLayoutFactory.createClearGridLayout(false, 1));
150152
section.setLayoutData(new GridData(GridData.FILL_BOTH));
@@ -257,10 +259,6 @@ protected void doPaste(Object targetObject, Object[] sourceObjects) {
257259

258260
@Override
259261
public void dispose() {
260-
IBundleModel model = getBundleModel();
261-
if (model != null) {
262-
model.removeModelChangedListener(this);
263-
}
264262
if (fImage != null) {
265263
fImage.dispose();
266264
}

0 commit comments

Comments
 (0)