1 /******************************************************************************* 2 * Copyright (c) 2000, 2006 IBM Corporation and others. 3 * 4 * This program and the accompanying materials 5 * are made available under the terms of the Eclipse Public License 2.0 6 * which accompanies this distribution, and is available at 7 * https://www.eclipse.org/legal/epl-2.0/ 8 * 9 * SPDX-License-Identifier: EPL-2.0 10 * 11 * Contributors: 12 * IBM Corporation - initial API and implementation 13 *******************************************************************************/ 14 package org.eclipse.team.internal.ccvs.ui.actions; 15 16 import java.lang.reflect.InvocationTargetException; 17 18 import org.eclipse.core.resources.IResource; 19 import org.eclipse.core.runtime.IProgressMonitor; 20 import org.eclipse.core.runtime.IStatus; 21 import org.eclipse.jface.action.IAction; 22 import org.eclipse.jface.dialogs.MessageDialog; 23 import org.eclipse.team.core.Team; 24 import org.eclipse.team.internal.ccvs.core.*; 25 import org.eclipse.team.internal.ccvs.ui.CVSUIMessages; 26 import org.eclipse.ui.actions.WorkspaceModifyOperation; 27 28 public class UneditAction extends WorkspaceAction { 29 30 @Override execute(IAction action)31 protected void execute(IAction action) throws InvocationTargetException, InterruptedException { 32 33 if(! MessageDialog.openConfirm(getShell(), CVSUIMessages.Uneditaction_confirmTitle, CVSUIMessages.Uneditaction_confirmMessage)) { // 34 return; 35 } 36 37 run(new WorkspaceModifyOperation(null) { 38 @Override 39 public void execute(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException { 40 executeProviderAction(new IProviderAction() { 41 @Override 42 public IStatus execute(CVSTeamProvider provider, IResource[] resources, IProgressMonitor monitor) throws CVSException { 43 provider.unedit(resources, false /* recurse */, true /* notify server */, monitor); 44 return Team.OK_STATUS; 45 } 46 }, monitor); 47 } 48 }, true /* cancelable */, PROGRESS_DIALOG); 49 } 50 51 @Override isEnabledForAddedResources()52 protected boolean isEnabledForAddedResources() { 53 return false; 54 } 55 56 @Override isEnabledForNonExistantResources()57 protected boolean isEnabledForNonExistantResources() { 58 return true; 59 } 60 61 @Override isEnabledForCVSResource(ICVSResource cvsResource)62 protected boolean isEnabledForCVSResource(ICVSResource cvsResource) throws CVSException { 63 if (cvsResource.isFolder()) return false; 64 if (super.isEnabledForCVSResource(cvsResource)) { 65 return !((ICVSFile)cvsResource).isReadOnly() && ((ICVSFile)cvsResource).isEdited(); 66 } else { 67 return false; 68 } 69 } 70 71 72 } 73