Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/actions/SystemCommonDeleteAction.java')
-rw-r--r--rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/actions/SystemCommonDeleteAction.java408
1 files changed, 0 insertions, 408 deletions
diff --git a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/actions/SystemCommonDeleteAction.java b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/actions/SystemCommonDeleteAction.java
deleted file mode 100644
index 2645eb373..000000000
--- a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/actions/SystemCommonDeleteAction.java
+++ /dev/null
@@ -1,408 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2002, 2008 IBM Corporation and others. All rights reserved.
- * This program and the accompanying materials are made available under the terms
- * of the Eclipse Public License v1.0 which accompanies this distribution, and is
- * available at http://www.eclipse.org/legal/epl-v10.html
- *
- * Initial Contributors:
- * The following IBM employees contributed to the Remote System Explorer
- * component that contains this file: David McKnight, Kushal Munir,
- * Michael Berger, David Dykstal, Phil Coulthard, Don Yantzi, Eric Simpson,
- * Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley.
- *
- * Contributors:
- * Martin Oberhuber (Wind River) - [186773] split ISystemRegistryUI from ISystemRegistry
- * Kevin Doyle (IBM) - [188637] Handle the caught exception in DeleteJob.run when file fails to be deleted
- * Kevin Doyle (IBM) - [196582] ClassCastException when doing copy/paste with Remote Search view open
- * Xuan Chen (IBM) - [160775] [api] rename (at least within a zip) blocks UI thread
- * Xuan Chen (IBM) - [209827] Update DStore command implementation to enable cancelation of archive operations
- * David McKnight (IBM) - [226143] [api][breaking] Make RSE rename/delete dialogs internal
- * David McKnight (IBM) - [234030] SystemCommonDeleteAction should not fire delete event if deleting is failed
- ********************************************************************************/
-
-package org.eclipse.rse.internal.ui.actions;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Vector;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.ProgressMonitorDialog;
-import org.eclipse.jface.operation.IRunnableContext;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.rse.core.RSECorePlugin;
-import org.eclipse.rse.core.events.ISystemRemoteChangeEvents;
-import org.eclipse.rse.core.events.ISystemResourceChangeEvents;
-import org.eclipse.rse.core.model.ISystemRegistry;
-import org.eclipse.rse.core.subsystems.ISubSystem;
-import org.eclipse.rse.internal.ui.SystemResources;
-import org.eclipse.rse.internal.ui.dialogs.SystemDeleteDialog;
-import org.eclipse.rse.services.clientserver.messages.SystemMessage;
-import org.eclipse.rse.services.clientserver.messages.SystemMessageException;
-import org.eclipse.rse.ui.ISystemContextMenuConstants;
-import org.eclipse.rse.ui.ISystemDeleteTarget;
-import org.eclipse.rse.ui.ISystemMessages;
-import org.eclipse.rse.ui.RSEUIPlugin;
-import org.eclipse.rse.ui.SystemBasePlugin;
-import org.eclipse.rse.ui.actions.SystemBaseDialogAction;
-import org.eclipse.rse.ui.messages.SystemMessageDialog;
-import org.eclipse.rse.ui.model.SystemRemoteElementResourceSet;
-import org.eclipse.rse.ui.view.ISystemRemoteElementAdapter;
-import org.eclipse.rse.ui.view.ISystemViewElementAdapter;
-import org.eclipse.rse.ui.view.SystemAdapterHelpers;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.PlatformUI;
-
-
-/**
- * The action that displays the Delete confirmation dialog.There are two ways to use this action:
- * <ol>
- * <li>When invoking from a class that implements ISystemDeleteTarget. In this case, that class
- * will be called back to determine if this action is to be enabled or not, and to do the actual delete for
- * each selected object, after the dialog is dismissed.
- * <li>When used without an ISystemDeleteTarget, in which case you need to call wasCancelled() after
- * running the action, and then do your own delete.
- * </ol>
- * <p>
- *
- * @see org.eclipse.rse.internal.ui.dialogs.SystemDeleteDialog
- */
-public class SystemCommonDeleteAction
- extends SystemBaseDialogAction
-{
- public class DeleteEventRunnable implements Runnable
- {
- private List _localDeletedResources;
- private List _remoteDeletedResources;
- public DeleteEventRunnable(List localDeletedResources, List remoteDeletedResources)
- {
- _localDeletedResources = localDeletedResources;
- _remoteDeletedResources = remoteDeletedResources;
- }
-
- public void run()
- {
- ISystemRegistry sr = RSECorePlugin.getTheSystemRegistry();
-
- if (_remoteDeletedResources.size() > 0)
- {
- sr.fireRemoteResourceChangeEvent(ISystemRemoteChangeEvents.SYSTEM_REMOTE_RESOURCE_DELETED, _remoteDeletedResources, null, null, null);
- }
- if (_localDeletedResources.size() > 0)
- {
- Object[] localDeleted = _localDeletedResources.toArray();
- sr.fireEvent(new org.eclipse.rse.core.events.SystemResourceChangeEvent(localDeleted, ISystemResourceChangeEvents.EVENT_DELETE_MANY, null/*(getSelectedParent())*/));
- }
- }
- }
-
-
- public class DeleteJob extends Job
- {
- private List _localResources;
- private List _remoteSets;
- public DeleteJob(List localResources, List remoteSets)
- {
- super(SystemResources.ACTION_DELETE_LABEL);
- _localResources = localResources;
- _remoteSets = remoteSets;
- setUser(true);
- }
-
- public IStatus run(IProgressMonitor monitor)
- {
- boolean ok = true;
- List localDeletedObjects = new Vector();
- List remoteDeletedObjects = new Vector();
- HashMap objectsToDelete = new HashMap();
-
- // local delete is pretty straight-forward
- for (int l = 0; l < _localResources.size() && ok; l++)
- {
- Object element = _localResources.get(l);
- ISystemViewElementAdapter adapter = getViewAdapter(element);
- try
- {
- ok = adapter.doDelete(getShell(), element, monitor);
- if (ok)
- {
- localDeletedObjects.add(element);
- }
- }
- catch (Exception e)
- {
- SystemBasePlugin.logError(e.getMessage(), e);
- }
- }
- SystemMessageException exception = null;
-
-
- // remote delete is not as straight-forward
- for (int r = 0; r < _remoteSets.size() && ok; r++)
- {
- SystemRemoteElementResourceSet set = (SystemRemoteElementResourceSet)_remoteSets.get(r);
- ISystemViewElementAdapter adapter = set.getViewAdapter();
- try
- {
- for (int i = 0; i < set.size(); i++)
- {
- Object thisObject = set.get(i);
- String objectName = adapter.getName(thisObject);
- objectsToDelete.put(thisObject, objectName);
- remoteDeletedObjects.add(thisObject);
- }
- ok = adapter.doDeleteBatch(getShell(), set.getResourceSet(), monitor);
- }
- catch (SystemMessageException e)
- {
- exception = e;
- ok = false;
- }
- catch (Exception e)
- {
- SystemMessageDialog.displayExceptionMessage(getShell(), e);
- return Status.CANCEL_STATUS;
- }
-
- if (!ok){
- remoteDeletedObjects.clear();
- if (monitor.isCanceled() && set.size() > 1)
- {
- for (int i = 0; i < set.size(); i++)
- {
- Object thisObject = set.get(i);
- if (!(adapter.exists(thisObject)))
- {
- //This object has been deleted
- remoteDeletedObjects.add(thisObject);
- }
- }
- if (remoteDeletedObjects.size() > 0)
- {
- //Get the moved file names
- Object thisObject = remoteDeletedObjects.get(0);
- String deletedFileNames = null;
- //We could not use adapter.getName(thisObject) here since in dstore case, this name has
- //already been changed to "deleted". So we need to remember the object and name map, and
- //find the object name in the map here.
- deletedFileNames = (String)objectsToDelete.get(thisObject);
- for (int i=1; i<(remoteDeletedObjects.size()); i++)
- {
- thisObject = remoteDeletedObjects.get(i);
- deletedFileNames = deletedFileNames + "\n" + (String)objectsToDelete.get(thisObject); //$NON-NLS-1$
- }
- SystemMessage thisMessage = RSEUIPlugin.getPluginMessage(ISystemMessages.FILEMSG_DELETE_INTERRUPTED);
- thisMessage.makeSubstitution(deletedFileNames);
- SystemMessageDialog.displayErrorMessage(shell, thisMessage);
- }
- }
- else
- {
- SystemMessageDialog.displayMessage(exception);
- }
- }
-
- }
-
- // start a runnable to do the action refresh events
- DeleteEventRunnable fireEvents = new DeleteEventRunnable(localDeletedObjects, remoteDeletedObjects);
- Display.getDefault().asyncExec(fireEvents);
-
- if (ok)
- return Status.OK_STATUS;
- else
- return Status.CANCEL_STATUS;
- }
-
- }
-
- private String promptLabel;
- private List _setList;
-
- /**
- * Constructor for SystemDeleteAction when using a delete target
- * @param parent The Shell of the parent UI for this dialog
- * @param deleteTarget The UI part that has selectable and deletable parts.
- */
- public SystemCommonDeleteAction(Shell parent, ISystemDeleteTarget deleteTarget)
- {
- super(SystemResources.ACTION_DELETE_LABEL, SystemResources.ACTION_DELETE_TOOLTIP,
- PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(ISharedImages.IMG_TOOL_DELETE)
- , parent);
- setSelectionProvider(deleteTarget);
- allowOnMultipleSelection(true);
- setProcessAllSelections(true);
- setContextMenuGroup(ISystemContextMenuConstants.GROUP_REORGANIZE);
- setHelp(RSEUIPlugin.HELPPREFIX+"actn0021"); //$NON-NLS-1$
- _setList = new Vector();
- }
-
- /**
- * Constructor for SystemDeleteAction when not using a delete target
- * @param parent The Shell of the parent UI for this dialog
- */
- public SystemCommonDeleteAction(Shell parent)
- {
- this(parent, null);
- }
-
- /**
- * Specify the text to show for the label prompt. The default is
- * "Delete selected resources?"
- */
- public void setPromptLabel(String text)
- {
- this.promptLabel = text;
- }
-
- private ISystemDeleteTarget getDeleteTarget()
- {
- return (ISystemDeleteTarget)getSelectionProvider();
- }
-
- /**
- * Called by SystemBaseAction when selection is set.
- * Our opportunity to verify we are allowed for this selected type.
- */
- public boolean updateSelection(IStructuredSelection selection)
- {
- _setList.clear();
- ISystemDeleteTarget deleteTarget = getDeleteTarget();
- if (deleteTarget == null)
- return true;
- else
- return deleteTarget.showDelete() && getDeleteTarget().canDelete();
- }
-
- /**
- * If you decide to use the supplied run method as is,
- * then you must override this method to create and return
- * the dialog that is displayed by the default run method
- * implementation.
- * <p>
- * If you override run with your own, then
- * simply implement this to return null as it won't be used.
- * @see #run()
- */
- protected Dialog createDialog(Shell shell)
- {
- Object firstSelection = getFirstSelection();
- if (firstSelection != null)
- {
- SystemDeleteDialog dlg = new SystemDeleteDialog(shell);
- if (promptLabel != null)
- dlg.setPromptLabel(promptLabel);
-
- if (getRemoteAdapter(firstSelection) != null)
- {
- String warningMsg = null;
- String warningTip = null;
-
- warningMsg = SystemResources.RESID_DELETE_WARNING_LABEL;
- warningTip = SystemResources.RESID_DELETE_WARNING_TOOLTIP;
- dlg.setWarningMessage(warningMsg,warningTip);
- }
- return dlg;
- }
- else
- {
- return null;
- }
- }
-
-
- /**
- * New method of doing delete where the physical deletion occurs in a job whereas the refresh is done in a runnable
- */
- protected Object getDialogValue(Dialog dlg)
- {
- if (!((SystemDeleteDialog)dlg).wasCancelled() && (getDeleteTarget() != null))
- {
- ISystemDeleteTarget target = getDeleteTarget();
- ISelection selection = target.getSelection();
-
- if (selection instanceof IStructuredSelection)
- {
- // keep track of the current set
- List localSet = new Vector();
-
- // divide up all objects to delete
- IStructuredSelection ssel = (IStructuredSelection)selection;
- Iterator iter = ssel.iterator();
- while (iter.hasNext())
- {
- Object object = iter.next();
- ISystemViewElementAdapter adapter = SystemAdapterHelpers.getViewAdapter(object);
- if (getRemoteAdapter(object) != null)
- {
- ISubSystem subSystem = adapter.getSubSystem(object);
- // a remote object so add to remote set
- SystemRemoteElementResourceSet set = getSetFor(subSystem, adapter);
- set.addResource(object);
- }
- else
- {
- localSet.add(object);
- }
- }
-
- // do delete for each set
- DeleteJob job = new DeleteJob(localSet, _setList);
- job.schedule();
- }
-
- }
- return null;
- }
-
-
-
-
- protected SystemRemoteElementResourceSet getSetFor(ISubSystem subSystem, ISystemViewElementAdapter adapter) {
- for (int i = 0; i < _setList.size(); i++) {
- SystemRemoteElementResourceSet set = (SystemRemoteElementResourceSet) _setList.get(i);
- if (set.getViewAdapter() == adapter && set.getSubSystem() == subSystem) {
- return set;
- }
- }
-
- // no existing set - create one
- SystemRemoteElementResourceSet newSet = new SystemRemoteElementResourceSet(subSystem, adapter);
- _setList.add(newSet);
- return newSet;
- }
-
-
-
- protected IRunnableContext getRunnableContext(Shell shell)
- {
- IRunnableContext irc = RSEUIPlugin.getTheSystemRegistryUI().getRunnableContext();
- if (irc != null)
- {
- return irc;
- }
- else
- {
- irc = new ProgressMonitorDialog(shell);
- RSEUIPlugin.getTheSystemRegistryUI().setRunnableContext(shell, irc);
- return irc;
- }
- }
-
- /**
- * Returns the implementation of ISystemRemoteElement for the given
- * object. Returns null if this object does not adaptable to this.
- */
- protected ISystemRemoteElementAdapter getRemoteAdapter(Object o)
- {
- return SystemAdapterHelpers.getRemoteAdapter(o);
- }
-
-} \ No newline at end of file

Back to the top