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