diff options
author | Jean Michel-Lemieux | 2004-10-19 13:05:45 +0000 |
---|---|---|
committer | Jean Michel-Lemieux | 2004-10-19 13:05:45 +0000 |
commit | ec202b0f8c6b253cfa2e2bdd53486f5589b16021 (patch) | |
tree | 3e8b58d0107ba8b845987ff60ddef5f0b73314e5 | |
parent | 3de143efa44ae58e735514e92248a2196e639d41 (diff) | |
download | eclipse.platform.team-ec202b0f8c6b253cfa2e2bdd53486f5589b16021.tar.gz eclipse.platform.team-ec202b0f8c6b253cfa2e2bdd53486f5589b16021.tar.xz eclipse.platform.team-ec202b0f8c6b253cfa2e2bdd53486f5589b16021.zip |
*** empty log message ***
7 files changed, 236 insertions, 110 deletions
diff --git a/bundles/org.eclipse.team.core/src/org/eclipse/team/core/traversals/IModelElement.java b/bundles/org.eclipse.team.core/src/org/eclipse/team/core/traversals/IModelElement.java index 843800051..45d76ca98 100644 --- a/bundles/org.eclipse.team.core/src/org/eclipse/team/core/traversals/IModelElement.java +++ b/bundles/org.eclipse.team.core/src/org/eclipse/team/core/traversals/IModelElement.java @@ -11,6 +11,7 @@ package org.eclipse.team.core.traversals; import org.eclipse.core.resources.IResource; +import org.eclipse.core.runtime.*; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; @@ -27,7 +28,7 @@ import org.eclipse.core.runtime.IProgressMonitor; * @see IResource * @since 3.1 */ -public interface IModelElement { +public interface IModelElement extends IAdaptable { /** * Returns one or more traversals that can be used to access all the diff --git a/bundles/org.eclipse.team.cvs.ui/plugin.xml b/bundles/org.eclipse.team.cvs.ui/plugin.xml index 713e4a784..2138bfd3d 100644 --- a/bundles/org.eclipse.team.cvs.ui/plugin.xml +++ b/bundles/org.eclipse.team.cvs.ui/plugin.xml @@ -176,24 +176,16 @@ value="org.eclipse.team.core.repository=org.eclipse.team.cvs.core.cvsnature"> </filter> <action - label="%IgnoreAction.label" - helpContextId="org.eclipse.team.cvs.ui.team_ignore_action_context" - tooltip="%IgnoreAction.tooltip" - class="org.eclipse.team.internal.ccvs.ui.actions.IgnoreAction" - menubarPath="team.main/group3" - id="org.eclipse.team.ccvs.ui.ignore"> - </action> - <action - label="%AddAction.label" - helpContextId="org.eclipse.team.cvs.ui.team_add_action_context" - tooltip="%AddAction.tooltip" - class="org.eclipse.team.internal.ccvs.ui.actions.AddAction" - menubarPath="team.main/group3" - id="org.eclipse.team.ccvs.ui.add"> + label="%ShowEditorsAction.label" + helpContextId="org.eclipse.team.cvs.ui.team_show_editors_action_context" + tooltip="%ShowEditorsAction.tooltip" + class="org.eclipse.team.internal.ccvs.ui.actions.ShowEditorsAction" + menubarPath="team.main/group4" + id="org.eclipse.team.ccvs.ui.showeditors"> </action> <action label="%ShowHistoryAction.label" - icon="icons/full/ctool16/history.gif" + icon="icons/full/etool16/history.gif" helpContextId="org.eclipse.team.cvs.ui.show_in_history_action_context" tooltip="%ShowHistoryAction.tooltip" class="org.eclipse.team.internal.ccvs.ui.actions.ShowResourceInHistoryAction" @@ -202,7 +194,7 @@ </action> <action label="%ShowAnnotationAction.label" - icon="icons/full/ctool16/annotate.gif" + icon="icons/full/etool16/annotate.gif" helpContextId="org.eclipse.team.cvs.ui.get_annotate_action_context" tooltip="%ShowAnnotationAction.tooltip" class="org.eclipse.team.internal.ccvs.ui.actions.ShowAnnotationAction" @@ -243,9 +235,9 @@ </action> </objectContribution> <objectContribution - objectClass="org.eclipse.core.resources.IResource" + objectClass="org.eclipse.team.core.traversals.IModelElement" adaptable="true" - id="org.eclipse.team.ccvs.ui.ResourceContributions"> + id="org.eclipse.team.ccvs.ui.ModelElementContributions"> <filter name="projectPersistentProperty" value="org.eclipse.team.core.repository=org.eclipse.team.cvs.core.cvsnature"> @@ -353,51 +345,7 @@ menubarPath="team.main/group1" id="org.eclipse.team.ccvs.ui.sync"> </action> - </objectContribution> - <objectContribution - objectClass="org.eclipse.core.resources.IResource" - adaptable="true" - id="org.eclipse.team.ccvs.ui.ResourceContributions"> - <filter - name="projectPersistentProperty" - value="org.eclipse.team.core.repository=org.eclipse.team.cvs.core.cvsnature"> - </filter> - <action - label="%ShowEditorsAction.label" - helpContextId="org.eclipse.team.cvs.ui.team_show_editors_action_context" - tooltip="%ShowEditorsAction.tooltip" - class="org.eclipse.team.internal.ccvs.ui.actions.ShowEditorsAction" - menubarPath="team.main/group4" - id="org.eclipse.team.ccvs.ui.showeditors"> - </action> - </objectContribution> -<!-- ************** Project Menu *************** --> - <objectContribution - objectClass="org.eclipse.core.resources.IProject" - adaptable="true" - id="org.eclipse.team.ccvs.ui.IProjectContributions"> - <filter - name="projectPersistentProperty" - value="org.eclipse.team.core.repository=org.eclipse.team.cvs.core.cvsnature"> - </filter> - <action - label="%UnmanageFolder.label" - helpContextId="org.eclipse.team.cvs.ui.team_disconnect_action_context" - tooltip="%UnmanageFolder.tooltip" - class="org.eclipse.team.internal.ccvs.ui.actions.UnmanageAction" - menubarPath="team.main/projectGroup" - id="org.eclipse.team.ccvs.ui.unmanage"> - </action> - </objectContribution> - <objectContribution - objectClass="org.eclipse.core.resources.IContainer" - adaptable="true" - id="org.eclipse.team.ccvs.ui.IContainerContributions"> - <filter - name="projectPersistentProperty" - value="org.eclipse.team.core.repository=org.eclipse.team.cvs.core.cvsnature"> - </filter> - <action + <action label="%RestoreFromRepositoryAction.label" helpContextId="org.eclipse.team.cvs.ui.team_restore_from_repository_action_context" tooltip="%RestoreFromRepositoryAction.tooltip" @@ -405,15 +353,6 @@ menubarPath="team.main/group4" id="org.eclipse.team.ccvs.ui.restoreFromRepository"> </action> - </objectContribution> - <objectContribution - objectClass="org.eclipse.core.resources.IFolder" - adaptable="true" - id="org.eclipse.team.ccvs.ui.IFolderContributions"> - <filter - name="projectPersistentProperty" - value="org.eclipse.team.core.repository=org.eclipse.team.cvs.core.cvsnature"> - </filter> <action label="%IgnoreAction.label" helpContextId="org.eclipse.team.cvs.ui.team_ignore_action_context" @@ -431,6 +370,24 @@ id="org.eclipse.team.ccvs.ui.add"> </action> </objectContribution> +<!-- ************** Project Menu *************** --> + <objectContribution + objectClass="org.eclipse.core.resources.IProject" + adaptable="true" + id="org.eclipse.team.ccvs.ui.IProjectContributions"> + <filter + name="projectPersistentProperty" + value="org.eclipse.team.core.repository=org.eclipse.team.cvs.core.cvsnature"> + </filter> + <action + label="%UnmanageFolder.label" + helpContextId="org.eclipse.team.cvs.ui.team_disconnect_action_context" + tooltip="%UnmanageFolder.tooltip" + class="org.eclipse.team.internal.ccvs.ui.actions.UnmanageAction" + menubarPath="team.main/projectGroup" + id="org.eclipse.team.ccvs.ui.unmanage"> + </action> + </objectContribution> <objectContribution objectClass="org.eclipse.team.internal.ccvs.core.ICVSRemoteFolder" id="org.eclipse.team.ccvs.ui.RemoteFolderContributions"> @@ -643,28 +600,6 @@ </extension> <!-- ************** Model Element Contributions ********************** --> - <extension - point="org.eclipse.ui.popupMenus"> - <objectContribution - objectClass="org.eclipse.core.resources.IResource" - adaptable="true" - id="org.eclipse.team.ccvs.ui.ModelElementContributions"> - <filter - name="projectPersistentProperty" - value="org.eclipse.team.core.repository=org.eclipse.team.cvs.core.cvsnature"> - </filter> - <action - label="Commit (Model Element)" - tooltip="Commit (Model Element)" - class="org.eclipse.team.internal.ccvs.ui.actions.CommitAction" - menubarPath="team.main/group1" - id="org.eclipse.team.ccvs.ui.commit2"> - <enablement> - <adapt type="org.eclipse.team.core.traversals.IModelElement" /> - </enablement> - </action> - </objectContribution> - </extension> <!-- ************** Views ********************** --> <extension diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CommitAction2.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CommitAction2.java new file mode 100644 index 000000000..8e988c5e2 --- /dev/null +++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CommitAction2.java @@ -0,0 +1,76 @@ +/******************************************************************************* + * Copyright (c) 2000, 2004 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +package org.eclipse.team.internal.ccvs.ui.actions; + +import java.lang.reflect.InvocationTargetException; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.operation.IRunnableWithProgress; +import org.eclipse.team.core.TeamException; +import org.eclipse.team.core.traversals.ITraversal; +import org.eclipse.team.internal.ccvs.core.CVSException; +import org.eclipse.team.internal.ccvs.core.CVSProviderPlugin; +import org.eclipse.team.internal.ccvs.ui.Policy; +import org.eclipse.team.internal.ccvs.ui.operations.CommitOperation; + +/** + * Action for checking in files to a CVS provider. + * Prompts the user for a release comment. + */ +public class CommitAction2 extends WorkspaceAction { + + /* + * @see CVSAction#execute(IAction) + */ + public void execute(IAction action) throws InvocationTargetException, InterruptedException { + + try { + ITraversal[] traversals = getSelectedTraversals(CVSProviderPlugin.getTypeId()); + } catch (TeamException e1) { + e1.printStackTrace(); + } + + final CommitOperation operation = new CommitOperation(getTargetPart(), getSelectedResources(), null); + final boolean[] retVal = {true}; + run(new IRunnableWithProgress() { + public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException { + try { + retVal[0] = operation.performPrompting(monitor); + } catch (CVSException e) { + new InvocationTargetException(e); + } + } + }, false, PROGRESS_BUSYCURSOR); + if(retVal[0]) + operation.run(); + } + + /** + * @see org.eclipse.team.internal.ccvs.ui.actions.CVSAction#getErrorTitle() + */ + protected String getErrorTitle() { + return Policy.bind("CommitAction.commitFailed"); //$NON-NLS-1$ + } + + /** + * @see org.eclipse.team.internal.ccvs.ui.actions.WorkspaceAction#isEnabledForUnmanagedResources() + */ + protected boolean isEnabledForUnmanagedResources() { + return true; + } + + /* (non-Javadoc) + * @see org.eclipse.team.internal.ccvs.ui.actions.WorkspaceAction#isEnabledForNonExistantResources() + */ + protected boolean isEnabledForNonExistantResources() { + return true; + } +} diff --git a/bundles/org.eclipse.team.ui/plugin.xml b/bundles/org.eclipse.team.ui/plugin.xml index 525e2c4b0..fb63687d1 100644 --- a/bundles/org.eclipse.team.ui/plugin.xml +++ b/bundles/org.eclipse.team.ui/plugin.xml @@ -295,7 +295,12 @@ point="org.eclipse.core.runtime.adapters"> <factory class="org.eclipse.team.internal.ui.ModelElementlJavaFactory" - adaptableType="org.eclipse.jdt.core.IPackageFragment"> + adaptableType="org.eclipse.jdt.core.IJavaElement"> + <adapter type="org.eclipse.team.core.traversals.IModelElement"/> + </factory> + <factory + class="org.eclipse.team.internal.ui.ModelElementlJavaFactory" + adaptableType="org.eclipse.core.resources.IResource"> <adapter type="org.eclipse.team.core.traversals.IModelElement"/> </factory> </extension> diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/ModelElementlJavaFactory.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/ModelElementlJavaFactory.java index 0d75d7752..eecf02239 100644 --- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/ModelElementlJavaFactory.java +++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/ModelElementlJavaFactory.java @@ -13,17 +13,21 @@ package org.eclipse.team.internal.ui; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.*; -import org.eclipse.jdt.core.IPackageFragment; +import org.eclipse.jdt.core.IJavaElement; +import org.eclipse.jdt.internal.ui.JavaWorkbenchAdapter; +import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.team.core.traversals.*; +import org.eclipse.ui.internal.ide.model.WorkbenchFolder; +import org.eclipse.ui.model.IWorkbenchAdapter; public class ModelElementlJavaFactory implements IAdapterFactory { - private static class JavaPackageFragmentModelElement implements IModelElement { + private static class JavaModelElement extends PlatformObject implements IModelElement{ - private final IPackageFragment fragment; + private final IJavaElement fragment; private ITraversal[] traversals; - public JavaPackageFragmentModelElement(IPackageFragment fragment) { + public JavaModelElement(IJavaElement fragment) { this.fragment = fragment; } @@ -50,17 +54,82 @@ public class ModelElementlJavaFactory implements IAdapterFactory { } } + private static class JavaModelElementWorkbenchAdapter implements IWorkbenchAdapter { + private final IJavaElement element; + private final IWorkbenchAdapter adapter = new JavaWorkbenchAdapter(); + + public JavaModelElementWorkbenchAdapter(IJavaElement element) { + this.element = element; + } + + public Object[] getChildren(Object o) { + return adapter.getChildren(element); + } + + public ImageDescriptor getImageDescriptor(Object object) { + return adapter.getImageDescriptor(element); + } + + public String getLabel(Object o) { + return adapter.getLabel(element); + } + + public Object getParent(Object o) { + return adapter.getParent(element); + } + } + + private static class ResourceModelElement extends PlatformObject implements IModelElement { + + private final IResource resource; + private ITraversal[] traversals; + + public ResourceModelElement(IResource resource) { + this.resource = resource; + } + + public ITraversal[] getTraversals(IModelContext context, IProgressMonitor monitor) throws CoreException { + if(traversals == null) { + traversals = new ITraversal[]{ + new ITraversal() { + + public IProject getProject() { + return resource.getProject(); + } + + public IResource[] getResources() { + return new IResource[]{resource}; + } + + public int getDepth() { + return IResource.DEPTH_INFINITE; + } + } + }; + } + return traversals; + } + } + + + public Object getAdapter(final Object o, Class adapterType) { if (adapterType.isInstance(o)) { return o; } - if (adapterType == IModelElement.class && o instanceof IPackageFragment) { - return new JavaPackageFragmentModelElement((IPackageFragment)o); + if (adapterType == IModelElement.class && o instanceof IJavaElement) { + return new JavaModelElement((IJavaElement)o); + } else if(adapterType == IModelElement.class && o instanceof IResource) { + return new ResourceModelElement((IResource)o); + } else if(adapterType == IWorkbenchAdapter.class && o instanceof JavaModelElement) { + return new JavaWorkbenchAdapter(); + } else if(adapterType == IWorkbenchAdapter.class && o instanceof ResourceModelElement) { + return new WorkbenchFolder(); } return null; } public Class[] getAdapterList() { - return new Class[]{IModelElement.class}; + return new Class[]{IModelElement.class, IWorkbenchAdapter.class}; } } diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/actions/LogicalResourceAction.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/actions/LogicalResourceAction.java new file mode 100644 index 000000000..b6334fd27 --- /dev/null +++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/actions/LogicalResourceAction.java @@ -0,0 +1,38 @@ +/******************************************************************************* + * Copyright (c) 2000, 2003 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +package org.eclipse.team.internal.ui.actions; + +import java.util.ArrayList; +import java.util.List; +import org.eclipse.core.runtime.IAdapterManager; +import org.eclipse.core.runtime.Platform; +import org.eclipse.jface.action.IAction; +import org.eclipse.team.core.TeamException; +import org.eclipse.team.core.traversals.IModelElement; +import org.eclipse.ui.model.IWorkbenchAdapter; + + +public class LogicalResourceAction extends TeamAction { + + public void run(IAction action) { + IAdapterManager adapterManager = Platform.getAdapterManager(); + Object[] elements = getSelectedAdaptables(selection, IModelElement.class); + List uiAdapters = new ArrayList(); + for (int i = 0; i < elements.length; i++) { + IModelElement element = (IModelElement)elements[i]; + IWorkbenchAdapter adapter = (IWorkbenchAdapter)adapterManager.getAdapter(element, IWorkbenchAdapter.class); + } + } + + protected boolean isEnabled() throws TeamException { + return true; + } +} diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/actions/TeamAction.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/actions/TeamAction.java index 7a60faf52..b17ac03b6 100644 --- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/actions/TeamAction.java +++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/actions/TeamAction.java @@ -169,9 +169,9 @@ public abstract class TeamAction extends ActionDelegate implements IObjectAction * * @return the selected resources based on the available traversals. */ - protected ITraversal[] getSelectedTraversals(String providerId) throws TeamException { + public ITraversal[] getSelectedTraversals(String providerId) throws TeamException { try { - Object[] elements = getSelectedResources(IModelElement.class); + Object[] elements = getSelectedAdaptables(selection, IModelElement.class); ArrayList providerTraversals = new ArrayList(); if(elements.length > 0) { for (int i = 0; i < elements.length; i++) { @@ -179,15 +179,17 @@ public abstract class TeamAction extends ActionDelegate implements IObjectAction ITraversal[] traversals = element.getTraversals(getModelContext(), null); for (int j = 0; j < traversals.length; j++) { ITraversal traversal = traversals[j]; - RepositoryProvider provider = RepositoryProvider.getProvider(traversal.getProject()); - if (providerId != null && provider.getID().equals(providerId)) { + boolean addIt = true; + if(providerId != null) { + RepositoryProvider provider = RepositoryProvider.getProvider(traversal.getProject()); + addIt = (providerId != null && provider.getID().equals(providerId)); + } + if(addIt) providerTraversals.add(traversal); - } else { - throw new TeamException("Cannot operate on resources from different repository provider."); } } } - } + return (ITraversal[]) providerTraversals.toArray(new ITraversal[providerTraversals.size()]); } catch (CoreException e) { throw TeamException.asTeamException(e); |