Update of /cvsroot/eclipse-ccase/net.sourceforge.eclipseccase.ui/src/net/sourceforge/eclipseccase/ui/actions In directory sc8-pr-cvs17.sourceforge.net:/tmp/cvs-serv26669/src/net/sourceforge/eclipseccase/ui/actions Modified Files: CheckInAction.java ExternalUpdateAction.java CompareWithPredecessorAction.java CheckOutAction.java AddToClearcaseAction.java UpdateAction.java VersionTreeAction.java FindCheckOutsAction.java ClearcaseWorkspaceAction.java UndoCheckOutAction.java DeleteAction.java ClearcaseAction.java AssociateProjectAction.java ClearDlgHelper.java HistoryAction.java RefreshStateAction.java DissociateProjectAction.java Log Message: Merge from api_rework to HEAD. Index: CompareWithPredecessorAction.java =================================================================== RCS file: /cvsroot/eclipse-ccase/net.sourceforge.eclipseccase.ui/src/net/sourceforge/eclipseccase/ui/actions/CompareWithPredecessorAction.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** CompareWithPredecessorAction.java 20 Feb 2006 15:04:11 -0000 1.5 --- CompareWithPredecessorAction.java 19 Jan 2008 13:41:20 -0000 1.6 *************** *** 3,59 **** import java.io.IOException; import java.lang.reflect.InvocationTargetException; ! import net.sourceforge.clearcase.simple.ClearcaseUtil; import net.sourceforge.eclipseccase.ClearcasePlugin; import net.sourceforge.eclipseccase.ClearcaseProvider; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.jface.action.IAction; import org.eclipse.team.core.TeamException; import org.eclipse.ui.IActionDelegate; import org.eclipse.ui.actions.WorkspaceModifyOperation; /** ! * Pulls up the clearcase version tree for the element */ ! public class CompareWithPredecessorAction extends ClearcaseAction { ! /** ! * @see TeamAction#isEnabled() ! */ ! protected boolean isEnabled() throws TeamException { ! IResource[] resources = getSelectedResources(); ! if (resources.length == 0) ! return false; ! for (int i = 0; i < resources.length; i++) { ! IResource resource = resources[i]; ! ClearcaseProvider provider = ClearcaseProvider.getClearcaseProvider(resource); ! if (provider == null || provider.isUnknownState(resource) || provider.isIgnored(resource) || !provider.hasRemote(resource)) ! return false; ! } ! return true; ! } ! /** ! * @see IActionDelegate#run(IAction) ! */ ! public void run(IAction action) { ! run(new WorkspaceModifyOperation() { ! public void execute(IProgressMonitor monitor) throws InterruptedException, InvocationTargetException { ! try { ! IResource[] resources = getSelectedResources(); ! for (int i = 0; i < resources.length; i++) { ! IResource resource = resources[i]; ! String path = resource.getLocation().toOSString(); ! if (ClearcasePlugin.isUseCleartool()) ! ClearcasePlugin.getEngine().cleartool("diff -graphical -pred " + ClearcaseUtil.quote(path)); ! else ! Runtime.getRuntime().exec(new String[] { "cleardlg", "/diffpred", path }); ! } ! } catch (IOException ex) { ! throw new InvocationTargetException(ex); ! } ! } ! }, "Compare with predecessor", TeamAction.PROGRESS_BUSYCURSOR); ! } } \ No newline at end of file --- 3,80 ---- import java.io.IOException; import java.lang.reflect.InvocationTargetException; ! ! import net.sourceforge.clearcase.ClearcaseUtil; ! import net.sourceforge.clearcase.commandline.CleartoolCommandLine; ! import net.sourceforge.clearcase.commandline.CommandLauncher; import net.sourceforge.eclipseccase.ClearcasePlugin; import net.sourceforge.eclipseccase.ClearcaseProvider; + import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.jface.action.IAction; import org.eclipse.team.core.TeamException; + import org.eclipse.team.internal.ui.actions.TeamAction; import org.eclipse.ui.IActionDelegate; import org.eclipse.ui.actions.WorkspaceModifyOperation; /** ! * Pulls up the clearcase version tree for the element */ ! public class CompareWithPredecessorAction extends ClearcaseAction ! { ! /** ! * @see TeamAction#isEnabled() ! */ ! public boolean isEnabled() ! { ! IResource[] resources = getSelectedResources(); ! if (resources.length == 0) ! return false; ! for (int i = 0; i < resources.length; i++) ! { ! IResource resource = resources[i]; ! ClearcaseProvider provider = ClearcaseProvider.getClearcaseProvider(resource); ! if (provider == null || provider.isUnknownState(resource) || provider.isIgnored(resource) || !provider.hasRemote(resource)) ! return false; ! } ! return true; ! } ! /** ! * @see IActionDelegate#run(IAction) ! */ ! public void execute(IAction action) ! { ! run(new WorkspaceModifyOperation() ! { ! public void execute(IProgressMonitor monitor) ! throws InterruptedException, InvocationTargetException ! { ! try ! { ! IResource[] resources = getSelectedResources(); ! for (int i = 0; i < resources.length; i++) ! { ! IResource resource = resources[i]; ! String path = resource.getLocation().toOSString(); ! if (ClearcasePlugin.isUseCleartool()) ! { ! new CommandLauncher(new CleartoolCommandLine("diff").addOption("-graphical").addOption("-pred").addElement(path).create(),null,null,null); ! } ! else ! { ! Runtime.getRuntime().exec( ! new String[] { "cleardlg", "/diffpred", path }); ! } ! } ! } ! catch (IOException ex) ! { ! throw new InvocationTargetException(ex); ! } ! } ! }, "Compare with predecessor", TeamAction.PROGRESS_BUSYCURSOR); ! } } \ No newline at end of file Index: DeleteAction.java =================================================================== RCS file: /cvsroot/eclipse-ccase/net.sourceforge.eclipseccase.ui/src/net/sourceforge/eclipseccase/ui/actions/DeleteAction.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** DeleteAction.java 20 Feb 2006 15:04:11 -0000 1.5 --- DeleteAction.java 19 Jan 2008 13:41:20 -0000 1.6 *************** *** 1,5 **** --- 1,7 ---- + package net.sourceforge.eclipseccase.ui.actions; import net.sourceforge.eclipseccase.ClearcaseProvider; + import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.IWorkspaceRunnable; *************** *** 9,53 **** import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.team.core.TeamException; ! public class DeleteAction extends ClearcaseWorkspaceAction { ! public void run(IAction action) { ! boolean confirmed = MessageDialog.openConfirm(getShell(), "Confirm delete", "Are you sure you want to remove the selected elements from clearcase (rmname)?"); ! if (!confirmed) ! return; ! IWorkspaceRunnable runnable = new IWorkspaceRunnable() { ! public void run(IProgressMonitor monitor) throws CoreException { ! try { ! IResource[] resources = getSelectedResources(); ! beginTask(monitor, "Deleting...", resources.length); ! for (int i = 0; i < resources.length; i++) { ! IResource resource = resources[i]; ! ClearcaseProvider provider = ClearcaseProvider.getClearcaseProvider(resource); ! provider.delete(new IResource[] { resource }, subMonitor(monitor)); ! } ! } finally { ! monitor.done(); ! } ! } ! }; ! executeInForeground(runnable, TeamAction.PROGRESS_DIALOG, "Deleting resources from ClearCase"); ! } ! /** ! * @see TeamAction#isEnabled() ! */ ! protected boolean isEnabled() throws TeamException { ! IResource[] resources = getSelectedResources(); ! if (resources.length == 0) ! return false; ! for (int i = 0; i < resources.length; i++) { ! IResource resource = resources[i]; ! ClearcaseProvider provider = ClearcaseProvider.getClearcaseProvider(resource); ! if (provider == null || provider.isUnknownState(resource) || provider.isIgnored(resource) || !provider.hasRemote(resource)) ! return false; ! } ! return true; ! } } \ No newline at end of file --- 11,73 ---- import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.team.core.TeamException; + import org.eclipse.team.internal.ui.actions.TeamAction; ! public class DeleteAction extends ClearcaseWorkspaceAction ! { ! public void execute(IAction action) ! { ! boolean confirmed = MessageDialog ! .openConfirm( ! getShell(), ! "Confirm delete", ! "Are you sure you want to remove the selected elements from clearcase (rmname)?"); ! if (!confirmed) return; ! IWorkspaceRunnable runnable = new IWorkspaceRunnable() ! { ! public void run(IProgressMonitor monitor) throws CoreException ! { ! try ! { ! IResource[] resources = getSelectedResources(); ! beginTask(monitor, "Deleting...", resources.length); ! for (int i = 0; i < resources.length; i++) ! { ! IResource resource = resources[i]; ! ClearcaseProvider provider = ClearcaseProvider ! .getClearcaseProvider(resource); ! provider.delete(new IResource[]{resource}, ! subMonitor(monitor)); ! } ! } ! finally ! { ! monitor.done(); ! } ! } ! }; ! executeInForeground(runnable, TeamAction.PROGRESS_DIALOG, ! "Deleting resources from ClearCase"); ! } ! /** ! * @see TeamAction#isEnabled() ! */ ! public boolean isEnabled() ! { ! IResource[] resources = getSelectedResources(); ! if (resources.length == 0) return false; ! for (int i = 0; i < resources.length; i++) ! { ! IResource resource = resources[i]; ! ClearcaseProvider provider = ClearcaseProvider ! .getClearcaseProvider(resource); ! if (provider == null || provider.isUnknownState(resource) ! || provider.isIgnored(resource) ! || !provider.hasRemote(resource)) return false; ! } ! return true; ! } } \ No newline at end of file Index: HistoryAction.java =================================================================== RCS file: /cvsroot/eclipse-ccase/net.sourceforge.eclipseccase.ui/src/net/sourceforge/eclipseccase/ui/actions/HistoryAction.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** HistoryAction.java 20 Feb 2006 15:04:11 -0000 1.5 --- HistoryAction.java 19 Jan 2008 13:41:20 -0000 1.6 *************** *** 3,59 **** import java.io.IOException; import java.lang.reflect.InvocationTargetException; ! import net.sourceforge.clearcase.simple.ClearcaseUtil; import net.sourceforge.eclipseccase.ClearcasePlugin; import net.sourceforge.eclipseccase.ClearcaseProvider; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.jface.action.IAction; import org.eclipse.team.core.TeamException; import org.eclipse.ui.IActionDelegate; import org.eclipse.ui.actions.WorkspaceModifyOperation; /** ! * Pulls up the clearcase version tree for the element */ ! public class HistoryAction extends ClearcaseAction { ! /** ! * @see TeamAction#isEnabled() ! */ ! protected boolean isEnabled() throws TeamException { ! IResource[] resources = getSelectedResources(); ! if (resources.length == 0) ! return false; ! for (int i = 0; i < resources.length; i++) { ! IResource resource = resources[i]; ! ClearcaseProvider provider = ClearcaseProvider.getClearcaseProvider(resource); ! if (provider == null || provider.isUnknownState(resource) || provider.isIgnored(resource) || !provider.hasRemote(resource)) ! return false; ! } ! return true; ! } ! /** ! * @see IActionDelegate#run(IAction) ! */ ! public void run(IAction action) { ! run(new WorkspaceModifyOperation() { ! public void execute(IProgressMonitor monitor) throws InterruptedException, InvocationTargetException { ! try { ! IResource[] resources = getSelectedResources(); ! for (int i = 0; i < resources.length; i++) { ! IResource resource = resources[i]; ! String path = resource.getLocation().toOSString(); ! if (ClearcasePlugin.isUseCleartool()) ! ClearcasePlugin.getEngine().cleartool("lshistory -graphical " + ClearcaseUtil.quote(path)); ! else ! Runtime.getRuntime().exec(new String[] { "clearhistory", resource.getLocation().toOSString() }); ! } ! } catch (IOException ex) { ! throw new InvocationTargetException(ex); ! } ! } ! }, "History", TeamAction.PROGRESS_BUSYCURSOR); ! } } \ No newline at end of file --- 3,78 ---- import java.io.IOException; import java.lang.reflect.InvocationTargetException; ! ! import net.sourceforge.clearcase.commandline.CleartoolCommandLine; ! import net.sourceforge.clearcase.commandline.CommandLauncher; import net.sourceforge.eclipseccase.ClearcasePlugin; import net.sourceforge.eclipseccase.ClearcaseProvider; + import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.jface.action.IAction; import org.eclipse.team.core.TeamException; + import org.eclipse.team.internal.ui.actions.TeamAction; import org.eclipse.ui.IActionDelegate; import org.eclipse.ui.actions.WorkspaceModifyOperation; /** ! * Pulls up the clearcase version tree for the element */ ! public class HistoryAction extends ClearcaseAction ! { ! /** ! * @see TeamAction#isEnabled() ! */ ! public boolean isEnabled() ! { ! IResource[] resources = getSelectedResources(); ! if (resources.length == 0) ! return false; ! for (int i = 0; i < resources.length; i++) ! { ! IResource resource = resources[i]; ! ClearcaseProvider provider = ClearcaseProvider.getClearcaseProvider(resource); ! if (provider == null || provider.isUnknownState(resource) || provider.isIgnored(resource) || !provider.hasRemote(resource)) ! return false; ! } ! return true; ! } ! /** ! * @see IActionDelegate#run(IAction) ! */ ! public void execute(IAction action) ! { ! run(new WorkspaceModifyOperation() ! { ! public void execute(IProgressMonitor monitor) ! throws InterruptedException, InvocationTargetException ! { ! try ! { ! IResource[] resources = getSelectedResources(); ! for (int i = 0; i < resources.length; i++) ! { ! IResource resource = resources[i]; ! String path = resource.getLocation().toOSString(); ! if (ClearcasePlugin.isUseCleartool()) ! { ! new CommandLauncher(new CleartoolCommandLine("lshistory").addOption("-graphical").addElement(path).create(),null,null,null); ! } ! else ! { ! Runtime.getRuntime().exec(new String[] {"clearhistory", resource.getLocation().toOSString()}); ! } ! } ! } ! catch (IOException ex) ! { ! throw new InvocationTargetException(ex); ! } ! } ! }, "History", TeamAction.PROGRESS_BUSYCURSOR); ! } } \ No newline at end of file Index: ClearDlgHelper.java =================================================================== RCS file: /cvsroot/eclipse-ccase/net.sourceforge.eclipseccase.ui/src/net/sourceforge/eclipseccase/ui/actions/ClearDlgHelper.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** ClearDlgHelper.java 20 Feb 2006 15:04:11 -0000 1.5 --- ClearDlgHelper.java 19 Jan 2008 13:41:20 -0000 1.6 *************** *** 16,22 **** import java.util.ArrayList; import java.util.List; ! import net.sourceforge.clearcase.simple.ClearDlg; ! import net.sourceforge.eclipseccase.ClearcasePlugin; import net.sourceforge.eclipseccase.ClearcaseProvider; import org.eclipse.core.resources.IResource; import org.eclipse.team.core.TeamException; --- 16,25 ---- import java.util.ArrayList; import java.util.List; ! ! import net.sourceforge.clearcase.commandline.CleardlgCommandLine; ! import net.sourceforge.clearcase.commandline.CommandLauncher; ! import net.sourceforge.clearcase.commandline.CommandLine; import net.sourceforge.eclipseccase.ClearcaseProvider; + import org.eclipse.core.resources.IResource; import org.eclipse.team.core.TeamException; *************** *** 29,141 **** public class ClearDlgHelper { ! /** ! * "cleardlg" command line argument for preserving the time; ! */ ! private static final String PTIME = "/ptime"; //$NON-NLS-1$ ! ! private static final String UNCHECKOUT = "/uncheckout"; //$NON-NLS-1$ ! private static final String CHECKOUT = "/checkout"; //$NON-NLS-1$ ! private static final String CHECKIN = "/checkin"; //$NON-NLS-1$ ! private static final String ADDTOSRC = "/addtosrc"; //$NON-NLS-1$ ! /** ! * Adds the specified resources. ! * ! * @param resources ! * @throws TeamException ! */ ! public static void add(IResource[] resources) throws TeamException { ! // execute cleardlg ! perform(ADDTOSRC, resources); ! } ! /** ! * Checkin the specified resources. ! * ! * @param resources ! * @throws TeamException ! */ ! public static void checkin(IResource[] resources) throws TeamException { ! // execute cleardlg ! perform(CHECKIN, resources); ! } ! /** ! * Checkout the specified resources. ! * ! * @param resources ! * @throws TeamException ! */ ! public static void checkout(IResource[] resources) throws TeamException { ! // execute cleardlg ! perform(CHECKOUT, resources); ! } ! /** ! * Uncheckout the specified resources. ! * ! * @param resources ! * @throws TeamException ! */ ! public static void uncheckout(IResource[] resources) throws TeamException { ! // execute cleardlg ! perform(UNCHECKOUT, resources); ! } ! /** ! * Adds the specified resources. ! * ! * @param operation ! * @param resources ! * @throws TeamException ! */ ! public static void perform(String operation, IResource[] resources) throws TeamException { ! // prepare command ! List command = new ArrayList(1 + resources.length); ! command.add(operation); ! // append files ! for (int i = 0; i < resources.length; i++) { ! IResource resource = resources[i]; ! command.add(resource.getLocation().toOSString()); ! } ! // preserver time if enabled and allowed ! if (ClearcasePlugin.isPreserveTimes() && (CHECKOUT.equalsIgnoreCase(operation) || CHECKIN.equalsIgnoreCase(operation) || ADDTOSRC.equalsIgnoreCase(operation))) ! command.add(PTIME); ! // execute cleardlg ! ClearDlg clearDlg = new ClearDlg((String[]) command.toArray(new String[command.size()])); ! try { ! int success = clearDlg.execute(); ! if (0 != success && success != resources.length) ! throw new TeamException("Execution of cleardlg " + operation + " failed (process returned: " + clearDlg.getExitValue() + ")!"); ! } catch (IOException e) { ! throw new TeamException("Execution of cleardlg " + operation + " failed: " + e.getMessage(), e); ! } ! // refresh resources ! for (int i = 0; i < resources.length; i++) { ! IResource resource = resources[i]; ! ClearcaseProvider provider = ClearcaseProvider.getClearcaseProvider(resource); ! // refresh resource ! provider.refresh(resource); ! // also invalidate state of parent container ! // (some operations my checkout parent) ! provider.refresh(resource.getParent()); ! } ! } ! /** ! * No instance necessary. ! */ ! private ClearDlgHelper() { ! super(); ! } } \ No newline at end of file --- 32,138 ---- public class ClearDlgHelper { ! private static final String _UNCHECKOUT = "/uncheckout"; //$NON-NLS-1$ ! private static final String _CHECKOUT = "/checkout"; //$NON-NLS-1$ ! private static final String _CHECKIN = "/checkin"; //$NON-NLS-1$ ! private static final String _ADDTOSRC = "/addtosrc"; //$NON-NLS-1$ ! /** ! * Adds the specified resources. ! * ! * @param resources ! * @throws TeamException ! */ ! public static void add(IResource[] resources) throws TeamException { ! // execute cleardlg ! perform(_ADDTOSRC, resources); ! } ! /** ! * Checkin the specified resources. ! * ! * @param resources ! * @throws TeamException ! */ ! public static void checkin(IResource[] resources) throws TeamException { ! // execute cleardlg ! perform(_CHECKIN, resources); ! } ! /** ! * Checkout the specified resources. ! * ! * @param resources ! * @throws TeamException ! */ ! public static void checkout(IResource[] resources) throws TeamException { ! // execute cleardlg ! perform(_CHECKOUT, resources); ! } ! /** ! * Uncheckout the specified resources. ! * ! * @param resources ! * @throws TeamException ! */ ! public static void uncheckout(IResource[] resources) throws TeamException { ! // execute cleardlg ! perform(_UNCHECKOUT, resources); ! } ! /** ! * Adds the specified resources. ! * ! * @param operation ! * @param resources ! * @throws TeamException ! */ ! public static void perform(String operation, IResource[] resources) ! throws TeamException { ! // prepare command ! CommandLine cleardlg = new CleardlgCommandLine(operation); ! // append files ! for (int i = 0; i < resources.length; i++) { ! IResource resource = resources[i]; ! cleardlg.addElement(resource.getLocation().toOSString()); ! } ! // execute cleardlg ! CommandLauncher launcher = new CommandLauncher(cleardlg.create(), null, ! null, null); ! int returnValue = launcher.getExitValue(); ! if (0 != returnValue && returnValue != resources.length) ! throw new TeamException("Execution of cleardlg " ! + operation + " failed (process returned: " ! + returnValue + ")!"); ! // throw new TeamException("Execution of cleardlg " + operation ! // + " failed: " + e.getMessage(), e); ! // refresh resources ! for (int i = 0; i < resources.length; i++) { ! IResource resource = resources[i]; ! ClearcaseProvider provider = ClearcaseProvider ! .getClearcaseProvider(resource); ! // refresh resource ! provider.refresh(resource); ! // also invalidate state of parent container ! // (some operations my checkout parent) ! provider.refresh(resource.getParent()); ! } ! } ! /** ! * No instance necessary. ! */ ! private ClearDlgHelper() { ! super(); ! } } \ No newline at end of file Index: FindCheckOutsAction.java =================================================================== RCS file: /cvsroot/eclipse-ccase/net.sourceforge.eclipseccase.ui/src/net/sourceforge/eclipseccase/ui/actions/FindCheckOutsAction.java,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** FindCheckOutsAction.java 20 Feb 2006 15:04:11 -0000 1.6 --- FindCheckOutsAction.java 19 Jan 2008 13:41:20 -0000 1.7 *************** *** 3,67 **** import java.io.IOException; import java.lang.reflect.InvocationTargetException; ! import net.sourceforge.clearcase.simple.ClearcaseUtil; import net.sourceforge.eclipseccase.ClearcasePlugin; import net.sourceforge.eclipseccase.ClearcaseProvider; ! import org.apache.tools.ant.taskdefs.condition.Os; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.jface.action.IAction; import org.eclipse.team.core.TeamException; import org.eclipse.ui.IActionDelegate; import org.eclipse.ui.actions.WorkspaceModifyOperation; /** ! * Pulls up the clearcase version tree for the element */ ! public class FindCheckOutsAction extends ClearcaseAction { ! ! /** ! * @see TeamAction#isEnabled() ! */ ! protected boolean isEnabled() throws TeamException { ! // workaround for bug 960292 ! if (!Os.isFamily(Os.WINDOWS)) ! return false; ! IResource[] resources = getSelectedResources(); ! if (resources.length == 0) ! return false; ! for (int i = 0; i < resources.length; i++) { ! IResource resource = resources[i]; ! if (resource.getType() == IResource.FILE) ! return false; ! ClearcaseProvider provider = ClearcaseProvider.getClearcaseProvider(resource); ! if (provider == null || provider.isUnknownState(resource) || provider.isIgnored(resource)) ! return false; ! } ! return true; ! } ! /** ! * @see IActionDelegate#run(IAction) ! */ ! public void run(IAction action) { ! run(new WorkspaceModifyOperation() { ! public void execute(IProgressMonitor monitor) throws InterruptedException, InvocationTargetException { ! try { ! IResource[] resources = getSelectedResources(); ! for (int i = 0; i < resources.length; i++) { ! IResource resource = resources[i]; ! String path = resource.getLocation().toOSString(); ! if (ClearcasePlugin.isUseCleartool()) ! ClearcasePlugin.getEngine().cleartool("lscheckout -graphical " + ClearcaseUtil.quote(path)); ! else ! Runtime.getRuntime().exec(new String[] { "clearfindco", resource.getLocation().toOSString() }); ! } ! } catch (IOException ex) { ! throw new InvocationTargetException(ex); ! } ! } ! }, "Find checkouts", TeamAction.PROGRESS_BUSYCURSOR); ! } } \ No newline at end of file --- 3,86 ---- import java.io.IOException; import java.lang.reflect.InvocationTargetException; ! ! import net.sourceforge.clearcase.commandline.CleartoolCommandLine; ! import net.sourceforge.clearcase.commandline.CommandLauncher; import net.sourceforge.eclipseccase.ClearcasePlugin; import net.sourceforge.eclipseccase.ClearcaseProvider; ! import net.sourceforge.clearcase.utils.Os; ! //import org.apache.tools.ant.taskdefs.condition.Os; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.jface.action.IAction; import org.eclipse.team.core.TeamException; + import org.eclipse.team.internal.ui.actions.TeamAction; import org.eclipse.ui.IActionDelegate; import org.eclipse.ui.actions.WorkspaceModifyOperation; /** ! * Pulls up the clearcase version tree for the element */ ! public class FindCheckOutsAction extends ClearcaseAction ! { ! /** ! * @see TeamAction#isEnabled() ! */ ! public boolean isEnabled() ! { ! // workaround for bug 960292 ! if(!Os.isFamily(Os.WINDOWS)) ! return false; ! ! IResource[] resources = getSelectedResources(); ! if (resources.length == 0) ! return false; ! for (int i = 0; i < resources.length; i++) ! { ! IResource resource = resources[i]; ! if (resource.getType() == IResource.FILE) ! return false; ! ClearcaseProvider provider = ClearcaseProvider.getClearcaseProvider(resource); ! if (provider == null || provider.isUnknownState(resource) || provider.isIgnored(resource)) ! return false; ! } ! return true; ! } ! /** ! * @see IActionDelegate#run(IAction) ! */ ! public void execute(IAction action) ! { ! run(new WorkspaceModifyOperation() ! { ! public void execute(IProgressMonitor monitor) ! throws InterruptedException, InvocationTargetException ! { ! try ! { ! IResource[] resources = getSelectedResources(); ! for (int i = 0; i < resources.length; i++) ! { ! IResource resource = resources[i]; ! String path = resource.getLocation().toOSString(); ! if (ClearcasePlugin.isUseCleartool()) ! { ! new CommandLauncher(new CleartoolCommandLine("lscheckout").addOption("-graphical").addElement(path).create(),null,null,null); ! } ! else ! { ! Runtime.getRuntime().exec(new String[] {"clearfindco", resource.getLocation().toOSString()}); ! } ! } ! } ! catch (IOException ex) ! { ! throw new InvocationTargetException(ex); ! } ! } ! }, "Find checkouts", TeamAction.PROGRESS_BUSYCURSOR); ! } } \ No newline at end of file Index: UndoCheckOutAction.java =================================================================== RCS file: /cvsroot/eclipse-ccase/net.sourceforge.eclipseccase.ui/src/net/sourceforge/eclipseccase/ui/actions/UndoCheckOutAction.java,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** UndoCheckOutAction.java 20 Feb 2006 15:04:11 -0000 1.6 --- UndoCheckOutAction.java 19 Jan 2008 13:41:20 -0000 1.7 *************** *** 1,9 **** package net.sourceforge.eclipseccase.ui.actions; ! import java.util.*; import net.sourceforge.eclipseccase.ClearcasePlugin; import net.sourceforge.eclipseccase.ClearcaseProvider; - import net.sourceforge.eclipseccase.ui.ConfirmLostModifiedResourcesDialog; import net.sourceforge.eclipseccase.ui.DirectoryLastComparator; import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.IWorkspaceRunnable; --- 1,12 ---- package net.sourceforge.eclipseccase.ui.actions; ! import java.util.Arrays; ! import java.util.Collections; ! import java.util.List; ! import net.sourceforge.eclipseccase.ClearcasePlugin; import net.sourceforge.eclipseccase.ClearcaseProvider; import net.sourceforge.eclipseccase.ui.DirectoryLastComparator; + import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.IWorkspaceRunnable; *************** *** 11,16 **** import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.jface.action.IAction; - import org.eclipse.jface.dialogs.IDialogConstants; - import org.eclipse.swt.widgets.Display; import org.eclipse.team.core.TeamException; --- 14,17 ---- *************** *** 21,110 **** public class UndoCheckOutAction extends ClearcaseWorkspaceAction { ! public void run(IAction action) { ! ! // prompt for unsaved and modified files ! if (!ClearcasePlugin.isUseClearDlg()) { ! Set changedResources = new HashSet(Arrays.asList(getChangedResources())); ! changedResources.addAll(Arrays.asList(getUnsavedFiles())); ! if (!changedResources.isEmpty()) ! if (!confirmUncheckoutModifiedResources((IResource[]) changedResources.toArray(new IResource[changedResources.size()]))) ! return; ! } ! ! IWorkspaceRunnable runnable = new IWorkspaceRunnable() { ! ! public void run(IProgressMonitor monitor) throws CoreException { ! try { ! IResource[] resources = getSelectedResources(); ! beginTask(monitor, "Undoing checkout...", resources.length); ! ! if (ClearcasePlugin.isUseClearDlg()) { ! monitor.subTask("Executing ClearCase user interface..."); ! ClearDlgHelper.uncheckout(resources); ! } else { ! // Sort resources with directories last so that the ! // modification of a ! // directory doesn't abort the modification of files ! // within ! // it. ! List resList = Arrays.asList(resources); ! Collections.sort(resList, new DirectoryLastComparator()); ! ! for (int i = 0; i < resources.length; i++) { ! IResource resource = resources[i]; ! ClearcaseProvider provider = ClearcaseProvider.getClearcaseProvider(resource); ! provider.uncheckout(new IResource[] { resource }, IResource.DEPTH_ZERO, subMonitor(monitor)); ! } ! } ! } finally { ! monitor.done(); ! } ! } ! }; ! ! executeInBackground(runnable, "Uncheckout resources from ClearCase"); ! } ! protected boolean isEnabled() throws TeamException { ! IResource[] resources = getSelectedResources(); ! if (resources.length == 0) ! return false; ! for (int i = 0; i < resources.length; i++) { ! IResource resource = resources[i]; ! ClearcaseProvider provider = ClearcaseProvider.getClearcaseProvider(resource); ! if (provider == null || provider.isUnknownState(resource) || provider.isIgnored(resource) || !provider.hasRemote(resource)) ! return false; ! if (!provider.isCheckedOut(resource)) ! return false; ! } ! return true; ! } ! /** ! * Asks the user to confirm to uncheckout modified resources. ! * ! * @return true if user pressed OK. ! */ ! private boolean confirmUncheckoutModifiedResources(IResource[] changedResources) { ! if (changedResources == null || changedResources.length == 0) ! return true; ! // Get display for further UI operations ! Display display = getShell().getDisplay(); ! if (display == null || display.isDisposed()) ! return false; ! // Ask user to confirm saving of all files ! final ConfirmLostModifiedResourcesDialog dlg = new ConfirmLostModifiedResourcesDialog(getShell(), changedResources); ! final int[] intResult = new int[1]; ! Runnable runnable = new Runnable() { ! public void run() { ! intResult[0] = dlg.open(); ! } ! }; ! display.syncExec(runnable); ! return intResult[0] == IDialogConstants.OK_ID; ! } } \ No newline at end of file --- 22,78 ---- public class UndoCheckOutAction extends ClearcaseWorkspaceAction { ! public void execute(IAction action) { ! IWorkspaceRunnable runnable = new IWorkspaceRunnable() { ! public void run(IProgressMonitor monitor) throws CoreException { ! try { ! IResource[] resources = getSelectedResources(); ! beginTask(monitor, "Undoing checkout...", resources.length); ! if (ClearcasePlugin.isUseClearDlg()) { ! monitor ! .subTask("Executing ClearCase user interface..."); ! ClearDlgHelper.uncheckout(resources); ! } else { ! // Sort resources with directories last so that the ! // modification of a ! // directory doesn't abort the modification of files ! // within ! // it. ! List resList = Arrays.asList(resources); ! Collections ! .sort(resList, new DirectoryLastComparator()); ! for (int i = 0; i < resources.length; i++) { ! IResource resource = resources[i]; ! ClearcaseProvider provider = ClearcaseProvider ! .getClearcaseProvider(resource); ! provider.uncheckout(new IResource[] { resource }, ! IResource.DEPTH_ZERO, subMonitor(monitor)); ! } ! } ! } finally { ! monitor.done(); ! } ! } ! }; ! executeInBackground(runnable, "Uncheckout resources from ClearCase"); ! } ! public boolean isEnabled() { ! IResource[] resources = getSelectedResources(); ! if (resources.length == 0) return false; ! for (int i = 0; i < resources.length; i++) { ! IResource resource = resources[i]; ! ClearcaseProvider provider = ClearcaseProvider ! .getClearcaseProvider(resource); ! if (provider == null || provider.isUnknownState(resource) ! || provider.isIgnored(resource) ! || !provider.hasRemote(resource)) return false; ! if (!provider.isCheckedOut(resource)) return false; ! } ! return true; ! } } \ No newline at end of file Index: ClearcaseWorkspaceAction.java =================================================================== RCS file: /cvsroot/eclipse-ccase/net.sourceforge.eclipseccase.ui/src/net/sourceforge/eclipseccase/ui/actions/ClearcaseWorkspaceAction.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** ClearcaseWorkspaceAction.java 20 Feb 2006 15:04:11 -0000 1.3 --- ClearcaseWorkspaceAction.java 19 Jan 2008 13:41:20 -0000 1.4 *************** *** 1,7 **** --- 1,15 ---- + /* + * Copyright (c) 2004 Intershop (www.intershop.de) Created on Apr 8, 2004 + */ + package net.sourceforge.eclipseccase.ui.actions; import java.lang.reflect.InvocationTargetException; + import java.util.HashSet; + import net.sourceforge.eclipseccase.StateCacheFactory; import net.sourceforge.eclipseccase.ui.ClearCaseOperation; + + import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.IWorkspaceRunnable; *************** *** 15,30 **** * Base class for ClearCase actions that require some workspace locking. * ! * @author Gunnar Wagenknecht */ ! public abstract class ClearcaseWorkspaceAction extends ClearcaseAction { ! /** ! * Executes the specified runnable in the background. ! * ! * @param runnable ! * @param jobName ! * @param problemMessage ! */ ! protected void executeInBackground(IWorkspaceRunnable runnable, String jobName) { ! ClearCaseOperation operation = new ClearCaseOperation(getTargetPart(), getSchedulingRule(), runnable, true, jobName); try { operation.run(); --- 23,41 ---- * Base class for ClearCase actions that require some workspace locking. * ! * @author Gunnar Wagenknecht (g.w...@in...) */ ! public abstract class ClearcaseWorkspaceAction extends ClearcaseAction ! { ! /** ! * Executes the specified runnable in the background. ! * ! * @param runnable ! * @param jobName ! * @param problemMessage ! */ ! protected void executeInBackground(IWorkspaceRunnable runnable, ! String jobName) { ! ClearCaseOperation operation = new ClearCaseOperation(getTargetPart(), ! getSchedulingRule(), runnable, true, jobName); try { operation.run(); *************** *** 36,40 **** } ! /** * Executes the specified runnable in the background. * --- 47,51 ---- } ! /** * Executes the specified runnable in the background. * *************** *** 43,51 **** * @param problemMessage */ ! protected void executeInForeground(final IWorkspaceRunnable runnable, int progressKind, String problemMessage) { StateCacheFactory.getInstance().interruptPendingRefreshes(); run(new WorkspaceModifyOperation(getSchedulingRule()) { ! protected void execute(IProgressMonitor monitor) throws CoreException, InvocationTargetException, InterruptedException { runnable.run(monitor); } --- 54,65 ---- * @param problemMessage */ ! protected void executeInForeground(final IWorkspaceRunnable runnable, ! int progressKind, String problemMessage) { StateCacheFactory.getInstance().interruptPendingRefreshes(); run(new WorkspaceModifyOperation(getSchedulingRule()) { ! protected void execute(IProgressMonitor monitor) ! throws CoreException, InvocationTargetException, ! InterruptedException { runnable.run(monitor); } *************** *** 55,67 **** } ! /** ! * Returns the scheduling rule for this action. ! * <p> ! * The default implementations returns a rule containing all involved ! * projects. ! * </p> * ! * @param resources ! * @return the scheduling rule (maybe <code>null</code>) */ protected ISchedulingRule getSchedulingRule() { --- 69,77 ---- } ! /** ! * Returns the scheduling rule. * ! * ! * @return */ protected ISchedulingRule getSchedulingRule() { *************** *** 78,80 **** --- 88,91 ---- return rule; } + } \ No newline at end of file Index: UpdateAction.java =================================================================== RCS file: /cvsroot/eclipse-ccase/net.sourceforge.eclipseccase.ui/src/net/sourceforge/eclipseccase/ui/actions/UpdateAction.java,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** UpdateAction.java 20 Feb 2006 15:04:11 -0000 1.6 --- UpdateAction.java 19 Jan 2008 13:41:20 -0000 1.7 *************** *** 1,5 **** --- 1,7 ---- + package net.sourceforge.eclipseccase.ui.actions; import net.sourceforge.eclipseccase.ClearcaseProvider; + import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.IWorkspaceRunnable; *************** *** 9,52 **** import org.eclipse.team.core.TeamException; ! public class UpdateAction extends ClearcaseWorkspaceAction { ! public void run(IAction action) { ! IWorkspaceRunnable runnable = new IWorkspaceRunnable() { ! public void run(IProgressMonitor monitor) throws CoreException { ! try { ! IResource[] resources = getSelectedResources(); ! beginTask(monitor, "Updating...", resources.length); ! for (int i = 0; i < resources.length; i++) { ! IResource resource = resources[i]; ! ClearcaseProvider provider = ClearcaseProvider.getClearcaseProvider(resource); ! if (null != provider) ! provider.get(new IResource[] { resource }, IResource.DEPTH_ZERO, subMonitor(monitor)); ! } ! } finally { ! monitor.done(); ! } ! } ! }; ! executeInBackground(runnable, "Updating resources from ClearCase"); ! } ! /* ! * (non-Javadoc) ! * ! * @see org.eclipse.team.internal.ui.actions.TeamAction#isEnabled() ! */ ! protected boolean isEnabled() throws TeamException { ! IResource[] resources = getSelectedResources(); ! if (resources.length == 0) ! return false; ! for (int i = 0; i < resources.length; i++) { ! IResource resource = resources[i]; ! ClearcaseProvider provider = ClearcaseProvider.getClearcaseProvider(resource); ! if (provider == null || provider.isUnknownState(resource) || provider.isIgnored(resource) || !provider.hasRemote(resource)) ! return false; ! if (!provider.isSnapShot(resource)) ! return false; ! } ! return true; ! } } \ No newline at end of file --- 11,65 ---- import org.eclipse.team.core.TeamException; ! public class UpdateAction extends ClearcaseWorkspaceAction ! { ! public void execute(IAction action) ! { ! IWorkspaceRunnable runnable = new IWorkspaceRunnable() ! { ! public void run(IProgressMonitor monitor) throws CoreException ! { ! try ! { ! IResource[] resources = getSelectedResources(); ! beginTask(monitor, "Updating...", resources.length); ! for (int i = 0; i < resources.length; i++) ! { ! IResource resource = resources[i]; ! ClearcaseProvider provider = ClearcaseProvider ! .getClearcaseProvider(resource); ! provider.get(new IResource[]{resource}, ! IResource.DEPTH_ZERO, subMonitor(monitor)); ! } ! } ! finally ! { ! monitor.done(); ! } ! } ! }; ! executeInBackground(runnable, "Updating resources from ClearCase"); ! } ! /* ! * (non-Javadoc) ! * ! * @see org.eclipse.team.internal.ui.actions.TeamAction#isEnabled() ! */ ! public boolean isEnabled() ! { ! IResource[] resources = getSelectedResources(); ! if (resources.length == 0) return false; ! for (int i = 0; i < resources.length; i++) ! { ! IResource resource = resources[i]; ! ClearcaseProvider provider = ClearcaseProvider ! .getClearcaseProvider(resource); ! if (provider == null || provider.isUnknownState(resource) ! || provider.isIgnored(resource) ! || !provider.hasRemote(resource)) return false; ! if (!provider.isSnapShot(resource)) return false; ! } ! return true; ! } } \ No newline at end of file Index: AssociateProjectAction.java =================================================================== RCS file: /cvsroot/eclipse-ccase/net.sourceforge.eclipseccase.ui/src/net/sourceforge/eclipseccase/ui/actions/AssociateProjectAction.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** AssociateProjectAction.java 20 Feb 2006 15:04:11 -0000 1.5 --- AssociateProjectAction.java 19 Jan 2008 13:41:20 -0000 1.6 *************** *** 4,8 **** import net.sourceforge.eclipseccase.StateCacheFactory; import net.sourceforge.eclipseccase.ui.ClearcaseDecorator; ! import org.eclipse.core.resources.*; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; --- 4,12 ---- import net.sourceforge.eclipseccase.StateCacheFactory; import net.sourceforge.eclipseccase.ui.ClearcaseDecorator; ! ! import org.eclipse.core.resources.IProject; ! import org.eclipse.core.resources.IResource; ! import org.eclipse.core.resources.IWorkspaceRunnable; ! import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; *************** *** 11,15 **** import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.team.core.RepositoryProvider; - import org.eclipse.team.core.TeamException; import org.eclipse.ui.IDecoratorManager; import org.eclipse.ui.PlatformUI; --- 15,18 ---- *************** *** 17,99 **** public class AssociateProjectAction extends ClearcaseWorkspaceAction { ! /** ! * (non-Javadoc) Method declared on IDropActionDelegate ! */ ! public void run(IAction action) { ! final StringBuffer message = new StringBuffer(); ! ! IWorkspaceRunnable runnable = new IWorkspaceRunnable() { ! public void run(IProgressMonitor monitor) throws CoreException { ! try { ! IProject[] projects = getSelectedProjects(); ! monitor.beginTask("Associating with ClearCase", 10 * projects.length); ! if (projects.length == 1) ! message.append("Associated project "); ! else ! message.append("Associated projects: \n"); ! StateCacheFactory.getInstance().operationBegin(); ! for (int i = 0; i < projects.length; i++) { ! IProject project = projects[i]; ! RepositoryProvider.map(project, ClearcaseProvider.ID); ! StateCacheFactory.getInstance().remove(project); ! StateCacheFactory.getInstance().fireStateChanged(project); ! if (projects.length > 1) ! message.append("- "); ! message.append(project.getName()); ! if (projects.length > 1) ! message.append("\n"); ! monitor.worked(5); ! // refresh the decorator ! IDecoratorManager manager = PlatformUI.getWorkbench().getDecoratorManager(); ! if (manager.getEnabled(ClearcaseDecorator.ID)) { ! ClearcaseDecorator activeDecorator = (ClearcaseDecorator) manager.getBaseLabelProvider(ClearcaseDecorator.ID); ! if (activeDecorator != null) ! activeDecorator.refresh(project); ! } ! monitor.worked(5); ! } ! message.append(" with ClearCase"); ! } finally { ! StateCacheFactory.getInstance().operationEnd(); ! monitor.done(); ! } ! } ! }; ! executeInForeground(runnable, PROGRESS_DIALOG, "Associating with ClearCase"); ! MessageDialog.openInformation(shell, "Clearcase Plugin", message.toString()); ! } ! protected boolean isEnabled() throws TeamException { ! IProject[] projects = getSelectedProjects(); ! if (projects.length == 0) ! return false; ! for (int i = 0; i < projects.length; i++) { ! IResource resource = projects[i]; ! ClearcaseProvider provider = ClearcaseProvider.getClearcaseProvider(resource); ! if (provider != null) ! return false; ! } ! return true; ! } ! /* ! * (non-Javadoc) ! * ! * @see org.eclipse.team.internal.ui.actions.TeamAction#getSelectedProjects() ! */ ! protected IProject[] getSelectedProjects() { ! return super.getSelectedProjects(); ! } ! /* * (non-Javadoc) ! * * @see net.sourceforge.eclipseccase.ui.actions.ClearcaseWorkspaceAction#getSchedulingRule() */ --- 20,111 ---- public class AssociateProjectAction extends ClearcaseWorkspaceAction { ! /** ! * (non-Javadoc) Method declared on IDropActionDelegate ! */ ! public void execute(IAction action) { ! final StringBuffer message = new StringBuffer(); ! IWorkspaceRunnable runnable = new IWorkspaceRunnable() { ! public void run(IProgressMonitor monitor) throws CoreException { ! try { ! IProject[] projects = getSelectedProjects(); ! monitor.beginTask("Associating with ClearCase", ! 10 * projects.length); ! if (projects.length == 1) ! message.append("Associated project "); ! else ! message.append("Associated projects:\n"); ! StateCacheFactory.getInstance().operationBegin(); ! for (int i = 0; i < projects.length; i++) { ! IProject project = projects[i]; ! RepositoryProvider.map(project, ClearcaseProvider.ID); ! StateCacheFactory.getInstance().remove(project); ! StateCacheFactory.getInstance().fireStateChanged( ! project); ! ! if (projects.length > 1){ ! message.append("- "); ! } ! message.append(project.getName()); ! if (projects.length > 1){ ! message.append("\n"); ! } ! monitor.worked(5); ! // refresh the decorator ! IDecoratorManager manager = PlatformUI.getWorkbench() ! .getDecoratorManager(); ! if (manager.getEnabled(ClearcaseDecorator.ID)) { ! ClearcaseDecorator activeDecorator = (ClearcaseDecorator) manager ! .getBaseLabelProvider(ClearcaseDecorator.ID); ! if (activeDecorator != null) { ! activeDecorator.refresh(project); ! } ! } ! monitor.worked(5); ! } ! message.append(" with ClearCase"); ! } finally { ! StateCacheFactory.getInstance().operationEnd(); ! monitor.done(); ! } ! } ! }; ! executeInForeground(runnable, PROGRESS_DIALOG, ! "Associating with ClearCase"); ! MessageDialog.openInformation(getShell(), "Clearcase Plugin", message ! .toString()); ! } ! public boolean isEnabled(){ ! IProject[] projects = getSelectedProjects(); ! if (projects.length == 0) return false; ! for (int i = 0; i < projects.length; i++) { ! IResource resource = projects[i]; ! ClearcaseProvider provider = ClearcaseProvider ! .getClearcaseProvider(resource); ! if (provider != null) return false; ! } ! return true; ! } ! /* ! * (non-Javadoc) ! * ! * @see org.eclipse.team.internal.ui.actions.TeamAction#getSelectedProjects() ! */ ! protected IProject[] getSelectedProjects() { ! return super.getSelectedProjects(); ! } ! ! /* * (non-Javadoc) ! * * @see net.sourceforge.eclipseccase.ui.actions.ClearcaseWorkspaceAction#getSchedulingRule() */ *************** *** 102,104 **** --- 114,117 ---- return ResourcesPlugin.getWorkspace().getRoot(); } + } \ No newline at end of file Index: DissociateProjectAction.java =================================================================== RCS file: /cvsroot/eclipse-ccase/net.sourceforge.eclipseccase.ui/src/net/sourceforge/eclipseccase/ui/actions/DissociateProjectAction.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** DissociateProjectAction.java 20 Feb 2006 15:04:11 -0000 1.5 --- DissociateProjectAction.java 19 Jan 2008 13:41:20 -0000 1.6 *************** *** 4,8 **** import net.sourceforge.eclipseccase.StateCacheFactory; import net.sourceforge.eclipseccase.ui.ClearcaseDecorator; ! import org.eclipse.core.resources.*; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; --- 4,12 ---- import net.sourceforge.eclipseccase.StateCacheFactory; import net.sourceforge.eclipseccase.ui.ClearcaseDecorator; ! ! import org.eclipse.core.resources.IProject; ! import org.eclipse.core.resources.IResource; ! import org.eclipse.core.resources.IWorkspaceRunnable; ! import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; *************** *** 11,15 **** import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.team.core.RepositoryProvider; - import org.eclipse.team.core.TeamException; import org.eclipse.ui.IDecoratorManager; import org.eclipse.ui.PlatformUI; --- 15,18 ---- *************** *** 17,100 **** public class DissociateProjectAction extends ClearcaseWorkspaceAction { ! /** ! * (non-Javadoc) Method declared on IDropActionDelegate ! */ ! public void run(IAction action) { ! final StringBuffer message = new StringBuffer(); ! ! IWorkspaceRunnable runnable = new IWorkspaceRunnable() { ! public void run(IProgressMonitor monitor) throws CoreException { ! try { ! IProject[] projects = getSelectedProjects(); ! monitor.beginTask("Dissociating from ClearCase", 10 * projects.length); ! if (projects.length == 1) ! message.append("Dissociated project "); ! else ! message.append("Dissociated projects: \n"); ! StateCacheFactory.getInstance().operationBegin(); ! StateCacheFactory.getInstance().cancelPendingRefreshes(); ! for (int i = 0; i < projects.length; i++) { ! IProject project = projects[i]; ! RepositoryProvider.unmap(project); ! StateCacheFactory.getInstance().remove(project); ! StateCacheFactory.getInstance().fireStateChanged(project); ! if (projects.length > 1) ! message.append("- "); ! message.append(project.getName()); ! if (projects.length > 1) ! message.append("\n"); ! monitor.worked(5); ! // refresh the decorator ! IDecoratorManager manager = PlatformUI.getWorkbench().getDecoratorManager(); ! if (manager.getEnabled(ClearcaseDecorator.ID)) { ! ClearcaseDecorator activeDecorator = (ClearcaseDecorator) manager.getBaseLabelProvider(ClearcaseDecorator.ID); ! if (activeDecorator != null) ! activeDecorator.refresh(project); ! } ! monitor.worked(5); ! } ! message.append(" from ClearCase"); ! } finally { ! StateCacheFactory.getInstance().operationEnd(); ! monitor.done(); ! } ! } ! }; ! executeInForeground(runnable, PROGRESS_DIALOG, "Dissociating from ClearCase"); ! MessageDialog.openInformation(shell, "Clearcase Plugin", message.toString()); ! } ! protected boolean isEnabled() throws TeamException { ! IProject[] projects = getSelectedProjects(); ! if (projects.length == 0) ! return false; ! for (int i = 0; i < projects.length; i++) { ! IResource resource = projects[i]; ! ClearcaseProvider provider = ClearcaseProvider.getClearcaseProvider(resource); ! if (provider == null) ! return false; ! } ! return true; ! } ! /* ! * (non-Javadoc) ! * ! * @see org.eclipse.team.internal.ui.actions.TeamAction#getSelectedProjects() ! */ ! protected IProject[] getSelectedProjects() { ! return super.getSelectedProjects(); ! } ! /* * (non-Javadoc) ! * * @see net.sourceforge.eclipseccase.ui.actions.ClearcaseWorkspaceAction#getSchedulingRule() */ --- 20,109 ---- public class DissociateProjectAction extends ClearcaseWorkspaceAction { ! /** ! * (non-Javadoc) Method declared on IDropActionDelegate ! */ ! public void execute(IAction action) { ! final StringBuffer message = new StringBuffer(); ! IWorkspaceRunnable runnable = new IWorkspaceRunnable() { ! public void run(IProgressMonitor monitor) throws CoreException { ! try { ! IProject[] projects = getSelectedProjects(); ! monitor.beginTask("Dissociating from ClearCase", ! 10 * projects.length); ! if (projects.length == 1) ! message.append("Dissociated project "); ! else ! message.append("Dissociated projects: \n"); ! StateCacheFactory.getInstance().operationBegin(); ! StateCacheFactory.getInstance().cancelPendingRefreshes(); ! for (int i = 0; i < projects.length; i++) { ! IProject project = projects[i]; ! RepositoryProvider.unmap(project); ! StateCacheFactory.getInstance().remove(project); ! StateCacheFactory.getInstance().fireStateChanged( ! project); ! if (i > 1) message.append(", "); ! message.append(project.getName()); ! if(projects.length > 1){ ! message.append("\n"); ! } ! monitor.worked(5); ! // refresh the decorator ! IDecoratorManager manager = PlatformUI.getWorkbench() ! .getDecoratorManager(); ! if (manager.getEnabled(ClearcaseDecorator.ID)) { ! ClearcaseDecorator activeDecorator = (ClearcaseDecorator) manager !... [truncated message content] |