KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > eclipse > team > internal > ccvs > ui > tags > SingleFolderTagSource


1 /*******************************************************************************
2  * Copyright (c) 2000, 2006 IBM Corporation and others.
3  * All rights reserved. This program and the accompanying materials
4  * are made available under the terms of the Eclipse Public License v1.0
5  * which accompanies this distribution, and is available at
6  * http://www.eclipse.org/legal/epl-v10.html
7  *
8  * Contributors:
9  * IBM Corporation - initial API and implementation
10  *******************************************************************************/

11 package org.eclipse.team.internal.ccvs.ui.tags;
12
13 import java.lang.reflect.InvocationTargetException JavaDoc;
14
15 import org.eclipse.core.runtime.IProgressMonitor;
16 import org.eclipse.jface.operation.IRunnableContext;
17 import org.eclipse.jface.operation.IRunnableWithProgress;
18 import org.eclipse.team.core.TeamException;
19 import org.eclipse.team.internal.ccvs.core.*;
20 import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
21 import org.eclipse.team.internal.ccvs.ui.repo.RepositoryManager;
22 import org.eclipse.ui.PlatformUI;
23
24 /**
25  * A tag source that returns the tags associated with a single remote folder
26  */

27 public class SingleFolderTagSource extends TagSource {
28
29     public static CVSTag[] getTags(ICVSFolder folder, int type) {
30         if (type == CVSTag.HEAD)
31             return new CVSTag[] { CVSTag.DEFAULT } ;
32         return CVSUIPlugin.getPlugin().getRepositoryManager().getKnownTags(folder, type);
33     }
34     
35     private ICVSFolder folder;
36     
37     /* package */ SingleFolderTagSource(ICVSFolder folder) {
38         this.folder = folder;
39     }
40
41     /* (non-Javadoc)
42      * @see org.eclipse.team.internal.ccvs.ui.merge.TagSource#getTags(int)
43      */

44     public CVSTag[] getTags(int type) {
45         if (type == CVSTag.HEAD || type == BASE) {
46             return super.getTags(type);
47         }
48         return getTags(getFolder(), type);
49     }
50
51     /**
52      * Return the folder the tags are obtained from
53      * @return the folder the tags are obtained from
54      */

55     public ICVSFolder getFolder() {
56          return folder;
57     }
58
59     /* (non-Javadoc)
60      * @see org.eclipse.team.internal.ccvs.ui.merge.TagSource#refresh(org.eclipse.core.runtime.IProgressMonitor)
61      */

62     public CVSTag[] refresh(boolean bestEffort, IProgressMonitor monitor) throws TeamException {
63         CVSTag[] tags = CVSUIPlugin.getPlugin().getRepositoryManager().refreshDefinedTags(getFolder(), bestEffort /* recurse */, true /* notify */, monitor);
64         fireChange();
65         return tags;
66     }
67
68     /* (non-Javadoc)
69      * @see org.eclipse.team.internal.ccvs.ui.merge.TagSource#getLocation()
70      */

71     public ICVSRepositoryLocation getLocation() {
72         RepositoryManager mgr = CVSUIPlugin.getPlugin().getRepositoryManager();
73         ICVSRepositoryLocation location = mgr.getRepositoryLocationFor(getFolder());
74         return location;
75     }
76
77     /* (non-Javadoc)
78      * @see org.eclipse.team.internal.ccvs.ui.merge.TagSource#getShortDescription()
79      */

80     public String JavaDoc getShortDescription() {
81         return getFolder().getName();
82     }
83
84     /* (non-Javadoc)
85      * @see org.eclipse.team.internal.ccvs.ui.merge.TagSource#commit(org.eclipse.team.internal.ccvs.core.CVSTag[], boolean, org.eclipse.core.runtime.IProgressMonitor)
86      */

87     public void commit(final CVSTag[] tags, final boolean replace, IProgressMonitor monitor) throws CVSException {
88         try {
89             final RepositoryManager manager = CVSUIPlugin.getPlugin().getRepositoryManager();
90             manager.run(new IRunnableWithProgress() {
91                 public void run(IProgressMonitor monitor) throws InvocationTargetException JavaDoc, InterruptedException JavaDoc {
92                     try {
93                         ICVSFolder folder = getFolder();
94                         if (replace) {
95                             CVSTag[] oldTags = manager.getKnownTags(folder);
96                             manager.removeTags(folder, oldTags);
97                         }
98                         manager.addTags(folder, tags);
99                     } catch (CVSException e) {
100                         throw new InvocationTargetException JavaDoc(e);
101                     }
102                 }
103             }, monitor);
104         } catch (InvocationTargetException JavaDoc e) {
105             throw CVSException.wrapException(e);
106         } catch (InterruptedException JavaDoc e) {
107             // Ignore
108
}
109         fireChange();
110     }
111
112     /* (non-Javadoc)
113      * @see org.eclipse.team.internal.ccvs.ui.tags.TagSource#getCVSResources()
114      */

115     public ICVSResource[] getCVSResources() {
116         final ICVSResource[][] resources = new ICVSResource[][] { null };
117         try {
118             getRunnableContext().run(true, true, new IRunnableWithProgress() {
119                 public void run(IProgressMonitor monitor) throws InvocationTargetException JavaDoc, InterruptedException JavaDoc {
120                     try {
121                         resources[0] = folder.fetchChildren(monitor);
122                     } catch (TeamException e) {
123                         throw new InvocationTargetException JavaDoc(e);
124                     } finally {
125                         monitor.done();
126                     }
127                 }
128             });
129             return resources[0];
130         } catch (InvocationTargetException JavaDoc e) {
131             CVSUIPlugin.log(CVSException.wrapException(e));
132         } catch (InterruptedException JavaDoc e) {
133             // Ignore
134
}
135         return new ICVSResource[] { folder };
136     }
137     
138     private IRunnableContext getRunnableContext() {
139         return PlatformUI.getWorkbench().getProgressService();
140     }
141
142 }
143
Popular Tags