From 6a94b3aeb6b24496cd4d8db3bd88eee9531e99ce Mon Sep 17 00:00:00 2001 From: David Dykstal Date: Fri, 16 May 2008 18:57:41 +0000 Subject: [PATCH] [213353] Wrong Enablement of Move Up/Down on Filter Pools https://bugs.eclipse.org/bugs/show_bug.cgi?id=213353 --- .../filters/SystemFilterPoolReferenceManager.java | 9 +++++++-- .../SystemPersistableReferenceManager.java | 13 ++++++++++--- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/rse/plugins/org.eclipse.rse.core/src/org/eclipse/rse/internal/core/filters/SystemFilterPoolReferenceManager.java b/rse/plugins/org.eclipse.rse.core/src/org/eclipse/rse/internal/core/filters/SystemFilterPoolReferenceManager.java index e76da2e9b01..41126e1ee1a 100644 --- a/rse/plugins/org.eclipse.rse.core/src/org/eclipse/rse/internal/core/filters/SystemFilterPoolReferenceManager.java +++ b/rse/plugins/org.eclipse.rse.core/src/org/eclipse/rse/internal/core/filters/SystemFilterPoolReferenceManager.java @@ -13,6 +13,7 @@ * * Contributors: * David Dykstal (IBM) - [197036] fixed parent references and names so that delete references would function correctly + * David Dykstal (IBM) - [213353] fix move of filter pool references *******************************************************************************/ package org.eclipse.rse.internal.core.filters; @@ -29,6 +30,7 @@ import org.eclipse.rse.core.filters.ISystemFilterPoolReference; import org.eclipse.rse.core.filters.ISystemFilterPoolReferenceManager; import org.eclipse.rse.core.filters.ISystemFilterPoolReferenceManagerProvider; import org.eclipse.rse.core.filters.ISystemFilterReference; +import org.eclipse.rse.core.model.IRSEPersistableContainer; import org.eclipse.rse.core.references.IRSEBasePersistableReferencingObject; import org.eclipse.rse.core.subsystems.ISubSystem; import org.eclipse.rse.internal.references.SystemPersistableReferenceManager; @@ -384,14 +386,17 @@ public class SystemFilterPoolReferenceManager extends SystemPersistableReference * moved up in the list. */ public void moveSystemFilterPoolReference(ISystemFilterPoolReference filterPoolRef, int pos) { - int oldPos = super.getReferencingObjectPosition(filterPoolRef); - super.moveReferencingObjectPosition(pos, filterPoolRef); + int oldPos = getReferencingObjectPosition(filterPoolRef); + moveReferencingObjectPosition(pos, filterPoolRef); invalidateFilterPoolReferencesCache(); if (fireEvents && (caller != null) && !noEvents) { ISystemFilterPoolReference[] refs = new ISystemFilterPoolReference[1]; refs[0] = filterPoolRef; caller.filterEventFilterPoolReferencesRePositioned(refs, pos - oldPos); } + if (caller instanceof IRSEPersistableContainer) { + ((IRSEPersistableContainer) caller).setDirty(true); + } } /** diff --git a/rse/plugins/org.eclipse.rse.core/src/org/eclipse/rse/internal/references/SystemPersistableReferenceManager.java b/rse/plugins/org.eclipse.rse.core/src/org/eclipse/rse/internal/references/SystemPersistableReferenceManager.java index 0a47039687a..8f0c80b3d34 100644 --- a/rse/plugins/org.eclipse.rse.core/src/org/eclipse/rse/internal/references/SystemPersistableReferenceManager.java +++ b/rse/plugins/org.eclipse.rse.core/src/org/eclipse/rse/internal/references/SystemPersistableReferenceManager.java @@ -12,7 +12,7 @@ * Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley. * * Contributors: - * {Name} (company) - description of contribution. + * David Dykstal (IBM) - [213353] fix move of filter pool references within its container *******************************************************************************/ package org.eclipse.rse.internal.references; @@ -207,12 +207,19 @@ public class SystemPersistableReferenceManager implements IRSEBasePersistableRef /** * Move the given referencing object to a new zero-based position in the list. + * This does not call back or send any events nor does it mark anything dirty. * @param newPosition New zero-based position * @param object The referencing object to move */ public void moveReferencingObjectPosition(int newPosition, IRSEBasePersistableReferencingObject object) { - // List list = internalGetList(); - //FIXME list.move(newPosition, object); + int oldPosition = referencingObjectList.indexOf(object); + if (oldPosition >= 0) { + if (oldPosition != newPosition) { + referencingObjectList.remove(oldPosition); + referencingObjectList.add(newPosition, object); + invalidateCache(); + } + } } /**