mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-09 18:15:23 +02:00
Bug 163565: Multiple files are not deleted when one of them fails to be deleted
This commit is contained in:
parent
c5f7fa5afd
commit
e9720fe010
2 changed files with 64 additions and 8 deletions
|
@ -73,7 +73,6 @@ import org.eclipse.rse.core.model.ISystemMessageObject;
|
||||||
import org.eclipse.rse.core.model.ISystemRegistry;
|
import org.eclipse.rse.core.model.ISystemRegistry;
|
||||||
import org.eclipse.rse.core.references.IRSEBaseReferencingObject;
|
import org.eclipse.rse.core.references.IRSEBaseReferencingObject;
|
||||||
import org.eclipse.rse.core.subsystems.ISubSystem;
|
import org.eclipse.rse.core.subsystems.ISubSystem;
|
||||||
import org.eclipse.rse.core.subsystems.SubSystem;
|
|
||||||
import org.eclipse.rse.model.ISystemPromptableObject;
|
import org.eclipse.rse.model.ISystemPromptableObject;
|
||||||
import org.eclipse.rse.model.ISystemRemoteChangeEvent;
|
import org.eclipse.rse.model.ISystemRemoteChangeEvent;
|
||||||
import org.eclipse.rse.model.ISystemRemoteChangeEvents;
|
import org.eclipse.rse.model.ISystemRemoteChangeEvents;
|
||||||
|
@ -83,6 +82,7 @@ import org.eclipse.rse.model.ISystemResourceChangeEvents;
|
||||||
import org.eclipse.rse.model.ISystemResourceChangeListener;
|
import org.eclipse.rse.model.ISystemResourceChangeListener;
|
||||||
import org.eclipse.rse.model.SystemRegistry;
|
import org.eclipse.rse.model.SystemRegistry;
|
||||||
import org.eclipse.rse.model.SystemRemoteElementResourceSet;
|
import org.eclipse.rse.model.SystemRemoteElementResourceSet;
|
||||||
|
import org.eclipse.rse.model.SystemResourceChangeEvent;
|
||||||
import org.eclipse.rse.services.clientserver.messages.SystemMessageException;
|
import org.eclipse.rse.services.clientserver.messages.SystemMessageException;
|
||||||
import org.eclipse.rse.ui.ISystemContextMenuConstants;
|
import org.eclipse.rse.ui.ISystemContextMenuConstants;
|
||||||
import org.eclipse.rse.ui.ISystemDeleteTarget;
|
import org.eclipse.rse.ui.ISystemDeleteTarget;
|
||||||
|
@ -121,7 +121,6 @@ import org.eclipse.swt.events.TreeEvent;
|
||||||
import org.eclipse.swt.graphics.Cursor;
|
import org.eclipse.swt.graphics.Cursor;
|
||||||
import org.eclipse.swt.widgets.Composite;
|
import org.eclipse.swt.widgets.Composite;
|
||||||
import org.eclipse.swt.widgets.Control;
|
import org.eclipse.swt.widgets.Control;
|
||||||
import org.eclipse.swt.widgets.Display;
|
|
||||||
import org.eclipse.swt.widgets.Item;
|
import org.eclipse.swt.widgets.Item;
|
||||||
import org.eclipse.swt.widgets.Menu;
|
import org.eclipse.swt.widgets.Menu;
|
||||||
import org.eclipse.swt.widgets.Shell;
|
import org.eclipse.swt.widgets.Shell;
|
||||||
|
@ -4338,6 +4337,8 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour
|
||||||
boolean ok = true;
|
boolean ok = true;
|
||||||
boolean anyOk = false;
|
boolean anyOk = false;
|
||||||
Vector deletedVector = new Vector();
|
Vector deletedVector = new Vector();
|
||||||
|
SystemRemoteElementResourceSet set = null;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
while (ok && elements.hasNext()) {
|
while (ok && elements.hasNext()) {
|
||||||
element = elements.next();
|
element = elements.next();
|
||||||
|
@ -4353,7 +4354,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour
|
||||||
// now we have things divided into sets
|
// now we have things divided into sets
|
||||||
// delete 1 set at a time
|
// delete 1 set at a time
|
||||||
for (int s = 0; s < _setList.size() && ok; s++) {
|
for (int s = 0; s < _setList.size() && ok; s++) {
|
||||||
SystemRemoteElementResourceSet set = (SystemRemoteElementResourceSet) _setList.get(s);
|
set = (SystemRemoteElementResourceSet) _setList.get(s);
|
||||||
ISubSystem srcSubSystem = set.getSubSystem();
|
ISubSystem srcSubSystem = set.getSubSystem();
|
||||||
ISystemViewElementAdapter srcAdapter = set.getAdapter();
|
ISystemViewElementAdapter srcAdapter = set.getAdapter();
|
||||||
|
|
||||||
|
@ -4369,10 +4370,37 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour
|
||||||
SystemMessageDialog.displayErrorMessage(getShell(), exc.getSystemMessage());
|
SystemMessageDialog.displayErrorMessage(getShell(), exc.getSystemMessage());
|
||||||
ok = false;
|
ok = false;
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
exc.printStackTrace();
|
|
||||||
String msg = exc.getMessage();
|
String msg = exc.getMessage();
|
||||||
if ((msg == null) || (exc instanceof ClassCastException)) msg = exc.getClass().getName();
|
if ((msg == null) || (exc instanceof ClassCastException)) msg = exc.getClass().getName();
|
||||||
SystemMessageDialog.displayErrorMessage(getShell(), RSEUIPlugin.getPluginMessage(ISystemMessages.MSG_EXCEPTION_DELETING).makeSubstitution(element, msg));
|
SystemMessageDialog.displayErrorMessage(getShell(), RSEUIPlugin.getPluginMessage(ISystemMessages.MSG_EXCEPTION_DELETING).makeSubstitution(element, msg));
|
||||||
|
|
||||||
|
// refresh all parents if selection is remote objects
|
||||||
|
if (selectionIsRemoteObject) {
|
||||||
|
|
||||||
|
if (set != null) {
|
||||||
|
List list = set.getResourceSet();
|
||||||
|
|
||||||
|
if (list != null && list.size() > 0) {
|
||||||
|
|
||||||
|
Iterator iter = list.iterator();
|
||||||
|
|
||||||
|
Vector refreshedList = new Vector();
|
||||||
|
|
||||||
|
while (iter.hasNext()) {
|
||||||
|
Object obj = iter.next();
|
||||||
|
ISystemViewElementAdapter adp = getAdapter(obj);
|
||||||
|
Object parent = adp.getParent(obj);
|
||||||
|
|
||||||
|
if ((parent != null) && !(refreshedList.contains(parent))) {
|
||||||
|
SystemResourceChangeEvent event = new SystemResourceChangeEvent(parent, ISystemResourceChangeEvents.EVENT_REFRESH_REMOTE, null);
|
||||||
|
sr.fireEvent(event);
|
||||||
|
refreshedList.add(parent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ok = false;
|
ok = false;
|
||||||
}
|
}
|
||||||
//System.out.println("in doDelete. Any ok? " + anyOk + ", selectionIsRemoteObject? " + selectionIsRemoteObject);
|
//System.out.println("in doDelete. Any ok? " + anyOk + ", selectionIsRemoteObject? " + selectionIsRemoteObject);
|
||||||
|
|
|
@ -73,7 +73,6 @@ import org.eclipse.rse.core.model.ISystemMessageObject;
|
||||||
import org.eclipse.rse.core.model.ISystemRegistry;
|
import org.eclipse.rse.core.model.ISystemRegistry;
|
||||||
import org.eclipse.rse.core.references.IRSEBaseReferencingObject;
|
import org.eclipse.rse.core.references.IRSEBaseReferencingObject;
|
||||||
import org.eclipse.rse.core.subsystems.ISubSystem;
|
import org.eclipse.rse.core.subsystems.ISubSystem;
|
||||||
import org.eclipse.rse.core.subsystems.SubSystem;
|
|
||||||
import org.eclipse.rse.model.ISystemPromptableObject;
|
import org.eclipse.rse.model.ISystemPromptableObject;
|
||||||
import org.eclipse.rse.model.ISystemRemoteChangeEvent;
|
import org.eclipse.rse.model.ISystemRemoteChangeEvent;
|
||||||
import org.eclipse.rse.model.ISystemRemoteChangeEvents;
|
import org.eclipse.rse.model.ISystemRemoteChangeEvents;
|
||||||
|
@ -83,6 +82,7 @@ import org.eclipse.rse.model.ISystemResourceChangeEvents;
|
||||||
import org.eclipse.rse.model.ISystemResourceChangeListener;
|
import org.eclipse.rse.model.ISystemResourceChangeListener;
|
||||||
import org.eclipse.rse.model.SystemRegistry;
|
import org.eclipse.rse.model.SystemRegistry;
|
||||||
import org.eclipse.rse.model.SystemRemoteElementResourceSet;
|
import org.eclipse.rse.model.SystemRemoteElementResourceSet;
|
||||||
|
import org.eclipse.rse.model.SystemResourceChangeEvent;
|
||||||
import org.eclipse.rse.services.clientserver.messages.SystemMessageException;
|
import org.eclipse.rse.services.clientserver.messages.SystemMessageException;
|
||||||
import org.eclipse.rse.ui.ISystemContextMenuConstants;
|
import org.eclipse.rse.ui.ISystemContextMenuConstants;
|
||||||
import org.eclipse.rse.ui.ISystemDeleteTarget;
|
import org.eclipse.rse.ui.ISystemDeleteTarget;
|
||||||
|
@ -121,7 +121,6 @@ import org.eclipse.swt.events.TreeEvent;
|
||||||
import org.eclipse.swt.graphics.Cursor;
|
import org.eclipse.swt.graphics.Cursor;
|
||||||
import org.eclipse.swt.widgets.Composite;
|
import org.eclipse.swt.widgets.Composite;
|
||||||
import org.eclipse.swt.widgets.Control;
|
import org.eclipse.swt.widgets.Control;
|
||||||
import org.eclipse.swt.widgets.Display;
|
|
||||||
import org.eclipse.swt.widgets.Item;
|
import org.eclipse.swt.widgets.Item;
|
||||||
import org.eclipse.swt.widgets.Menu;
|
import org.eclipse.swt.widgets.Menu;
|
||||||
import org.eclipse.swt.widgets.Shell;
|
import org.eclipse.swt.widgets.Shell;
|
||||||
|
@ -4338,6 +4337,8 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour
|
||||||
boolean ok = true;
|
boolean ok = true;
|
||||||
boolean anyOk = false;
|
boolean anyOk = false;
|
||||||
Vector deletedVector = new Vector();
|
Vector deletedVector = new Vector();
|
||||||
|
SystemRemoteElementResourceSet set = null;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
while (ok && elements.hasNext()) {
|
while (ok && elements.hasNext()) {
|
||||||
element = elements.next();
|
element = elements.next();
|
||||||
|
@ -4353,7 +4354,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour
|
||||||
// now we have things divided into sets
|
// now we have things divided into sets
|
||||||
// delete 1 set at a time
|
// delete 1 set at a time
|
||||||
for (int s = 0; s < _setList.size() && ok; s++) {
|
for (int s = 0; s < _setList.size() && ok; s++) {
|
||||||
SystemRemoteElementResourceSet set = (SystemRemoteElementResourceSet) _setList.get(s);
|
set = (SystemRemoteElementResourceSet) _setList.get(s);
|
||||||
ISubSystem srcSubSystem = set.getSubSystem();
|
ISubSystem srcSubSystem = set.getSubSystem();
|
||||||
ISystemViewElementAdapter srcAdapter = set.getAdapter();
|
ISystemViewElementAdapter srcAdapter = set.getAdapter();
|
||||||
|
|
||||||
|
@ -4369,10 +4370,37 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour
|
||||||
SystemMessageDialog.displayErrorMessage(getShell(), exc.getSystemMessage());
|
SystemMessageDialog.displayErrorMessage(getShell(), exc.getSystemMessage());
|
||||||
ok = false;
|
ok = false;
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
exc.printStackTrace();
|
|
||||||
String msg = exc.getMessage();
|
String msg = exc.getMessage();
|
||||||
if ((msg == null) || (exc instanceof ClassCastException)) msg = exc.getClass().getName();
|
if ((msg == null) || (exc instanceof ClassCastException)) msg = exc.getClass().getName();
|
||||||
SystemMessageDialog.displayErrorMessage(getShell(), RSEUIPlugin.getPluginMessage(ISystemMessages.MSG_EXCEPTION_DELETING).makeSubstitution(element, msg));
|
SystemMessageDialog.displayErrorMessage(getShell(), RSEUIPlugin.getPluginMessage(ISystemMessages.MSG_EXCEPTION_DELETING).makeSubstitution(element, msg));
|
||||||
|
|
||||||
|
// refresh all parents if selection is remote objects
|
||||||
|
if (selectionIsRemoteObject) {
|
||||||
|
|
||||||
|
if (set != null) {
|
||||||
|
List list = set.getResourceSet();
|
||||||
|
|
||||||
|
if (list != null && list.size() > 0) {
|
||||||
|
|
||||||
|
Iterator iter = list.iterator();
|
||||||
|
|
||||||
|
Vector refreshedList = new Vector();
|
||||||
|
|
||||||
|
while (iter.hasNext()) {
|
||||||
|
Object obj = iter.next();
|
||||||
|
ISystemViewElementAdapter adp = getAdapter(obj);
|
||||||
|
Object parent = adp.getParent(obj);
|
||||||
|
|
||||||
|
if ((parent != null) && !(refreshedList.contains(parent))) {
|
||||||
|
SystemResourceChangeEvent event = new SystemResourceChangeEvent(parent, ISystemResourceChangeEvents.EVENT_REFRESH_REMOTE, null);
|
||||||
|
sr.fireEvent(event);
|
||||||
|
refreshedList.add(parent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ok = false;
|
ok = false;
|
||||||
}
|
}
|
||||||
//System.out.println("in doDelete. Any ok? " + anyOk + ", selectionIsRemoteObject? " + selectionIsRemoteObject);
|
//System.out.println("in doDelete. Any ok? " + anyOk + ", selectionIsRemoteObject? " + selectionIsRemoteObject);
|
||||||
|
|
Loading…
Add table
Reference in a new issue