Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Valenta2004-11-19 21:39:28 +0000
committerMichael Valenta2004-11-19 21:39:28 +0000
commit1613f5d0a5b09ac5c50438cec7eb6c50d87b2025 (patch)
tree6428d9c5388136b8d71ca86b981f6bed9507b8be
parentf71a29cb9c3374f7bd79d5eb0a03be40da90ad6b (diff)
downloadeclipse.platform.team-1613f5d0a5b09ac5c50438cec7eb6c50d87b2025.tar.gz
eclipse.platform.team-1613f5d0a5b09ac5c50438cec7eb6c50d87b2025.tar.xz
eclipse.platform.team-1613f5d0a5b09ac5c50438cec7eb6c50d87b2025.zip
*** empty log message ***
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/SingleFolderTagSource.java3
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/TagConfigurationDialog.java3
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/TagContentAssistProcessor.java40
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/TagElement.java20
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/TagSource.java38
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/MergeWizardPage.java21
6 files changed, 102 insertions, 23 deletions
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/SingleFolderTagSource.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/SingleFolderTagSource.java
index baa6fd701..1c6bb08a8 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/SingleFolderTagSource.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/SingleFolderTagSource.java
@@ -42,6 +42,9 @@ public class SingleFolderTagSource extends TagSource {
* @see org.eclipse.team.internal.ccvs.ui.merge.TagSource#getTags(int)
*/
public CVSTag[] getTags(int type) {
+ if (type == CVSTag.HEAD || type == BASE) {
+ return super.getTags(type);
+ }
return getTags(getFolder(), type);
}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/TagConfigurationDialog.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/TagConfigurationDialog.java
index f85a5fe26..ff636fabf 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/TagConfigurationDialog.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/TagConfigurationDialog.java
@@ -116,6 +116,9 @@ public class TagConfigurationDialog extends Dialog {
* @see org.eclipse.team.internal.ccvs.ui.merge.TagSource#getTags(int)
*/
public CVSTag[] getTags(int type) {
+ if (type == CVSTag.HEAD || type == BASE) {
+ return super.getTags(type);
+ }
List list = getTagList(type);
if (list != null)
return (CVSTag[]) list.toArray(new CVSTag[list.size()]);
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/TagContentAssistProcessor.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/TagContentAssistProcessor.java
index 086e1c0e0..9b8ee483e 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/TagContentAssistProcessor.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/TagContentAssistProcessor.java
@@ -10,28 +10,40 @@
*******************************************************************************/
package org.eclipse.team.internal.ccvs.ui.tags;
-import java.util.ArrayList;
+import java.util.*;
import java.util.List;
import org.eclipse.jface.contentassist.*;
+import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.text.*;
import org.eclipse.jface.text.contentassist.*;
+import org.eclipse.swt.events.DisposeEvent;
+import org.eclipse.swt.events.DisposeListener;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.*;
import org.eclipse.team.internal.ccvs.core.CVSTag;
import org.eclipse.ui.contentassist.ContentAssistHandler;
-
+/**
+ * A content assist processor for tags for use with Text widgets.
+ */
public class TagContentAssistProcessor implements ISubjectControlContentAssistProcessor {
private FilteredTagList tags;
private String lastError;
+ private Map images = new HashMap();
public static void createContentAssistant(Text text, TagSource tagSource, int includeFlags) {
- ContentAssistHandler.createHandlerForText(text, createSubjectContentAssistant(new TagContentAssistProcessor(tagSource, includeFlags)));
+ final TagContentAssistProcessor tagContentAssistProcessor = new TagContentAssistProcessor(tagSource, includeFlags);
+ text.addDisposeListener(new DisposeListener() {
+ public void widgetDisposed(DisposeEvent e) {
+ tagContentAssistProcessor.dispose();
+ }
+ });
+ ContentAssistHandler.createHandlerForText(text, createSubjectContentAssistant(tagContentAssistProcessor));
}
-
- public static SubjectControlContentAssistant createSubjectContentAssistant(IContentAssistProcessor processor) {
+
+ private static SubjectControlContentAssistant createSubjectContentAssistant(IContentAssistProcessor processor) {
final SubjectControlContentAssistant contentAssistant= new SubjectControlContentAssistant();
contentAssistant.setContentAssistProcessor(processor, IDocument.DEFAULT_CONTENT_TYPE);
@@ -68,7 +80,15 @@ public class TagContentAssistProcessor implements ISubjectControlContentAssistPr
for (int i = 0; i < matching.length; i++) {
CVSTag tag = matching[i];
String name = tag.getName();
+ ImageDescriptor desc = TagElement.getImageDescriptor(tag);
Image image = null;
+ if (desc != null) {
+ image = (Image)images.get(desc);
+ if (image == null) {
+ image = desc.createImage();
+ images.put(desc, image);
+ }
+ }
CompletionProposal proposal = new CompletionProposal(name, 0, docLength, name.length(), image, name, null, null);
proposals.add(proposal);
}
@@ -130,4 +150,14 @@ public class TagContentAssistProcessor implements ISubjectControlContentAssistPr
return null;
}
+ /**
+ * Dispose of any images created by the assistant
+ */
+ public void dispose() {
+ for (Iterator iter = images.values().iterator(); iter.hasNext();) {
+ Image image = (Image) iter.next();
+ image.dispose();
+ }
+ }
+
} \ No newline at end of file
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/TagElement.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/TagElement.java
index 512a62ce2..139144450 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/TagElement.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/TagElement.java
@@ -23,6 +23,16 @@ public class TagElement implements IWorkbenchAdapter, IAdaptable {
Object parent;
CVSTag tag;
+ public static ImageDescriptor getImageDescriptor(CVSTag tag) {
+ if (tag.getType() == CVSTag.BRANCH || tag.equals(CVSTag.DEFAULT)) {
+ return CVSUIPlugin.getPlugin().getImageDescriptor(ICVSUIConstants.IMG_TAG);
+ } else if (tag.getType() == CVSTag.DATE){
+ return CVSUIPlugin.getPlugin().getImageDescriptor(ICVSUIConstants.IMG_DATE);
+ }else {
+ return CVSUIPlugin.getPlugin().getImageDescriptor(ICVSUIConstants.IMG_PROJECT_VERSION);
+ }
+ }
+
/**
* @deprecated
* @param tag
@@ -42,15 +52,9 @@ public class TagElement implements IWorkbenchAdapter, IAdaptable {
return null;
}
public ImageDescriptor getImageDescriptor(Object object) {
- if (tag.getType() == CVSTag.BRANCH || tag == CVSTag.DEFAULT) {
- return CVSUIPlugin.getPlugin().getImageDescriptor(ICVSUIConstants.IMG_TAG);
- } else if (tag.getType() == CVSTag.DATE){
- return CVSUIPlugin.getPlugin().getImageDescriptor(ICVSUIConstants.IMG_DATE);
- }else {
- return CVSUIPlugin.getPlugin().getImageDescriptor(ICVSUIConstants.IMG_PROJECT_VERSION);
- }
+ return getImageDescriptor(tag);
}
- public String getLabel(Object o) {
+ public String getLabel(Object o) {
if(tag.getType() == CVSTag.DATE){
Date date = tag.asDate();
if (date != null){
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/TagSource.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/TagSource.java
index d3a761461..4c9595fc0 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/TagSource.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/tags/TagSource.java
@@ -24,6 +24,11 @@ import org.eclipse.team.internal.ccvs.core.resources.CVSWorkspaceRoot;
*/
public abstract class TagSource {
+ /*
+ * Special constant representing the BASE tag
+ */
+ public static final int BASE = -1;
+
public static final TagSource EMPTY = new TagSource() {
public void commit(CVSTag[] tags, boolean replace, IProgressMonitor monitor) throws CVSException {
// No-op
@@ -57,14 +62,23 @@ public abstract class TagSource {
}
public static int[] convertIncludeFlaqsToTagTypes(int includeFlags) {
- if ((includeFlags & TagSelectionArea.INCLUDE_BRANCHES) > 0 && (includeFlags & TagSelectionArea.INCLUDE_VERSIONS) > 0) {
- return new int [] { CVSTag.VERSION, CVSTag.BRANCH };
- } else if ((includeFlags & (TagSelectionArea.INCLUDE_BRANCHES)) > 0) {
- return new int [] { CVSTag.BRANCH };
- } else if ((includeFlags & (TagSelectionArea.INCLUDE_VERSIONS)) > 0) {
- return new int [] { CVSTag.VERSION };
+ List types = new ArrayList();
+ if ((includeFlags & TagSelectionArea.INCLUDE_BRANCHES) > 0)
+ types.add(new Integer(CVSTag.BRANCH));
+ if ((includeFlags & TagSelectionArea.INCLUDE_VERSIONS) > 0)
+ types.add(new Integer(CVSTag.VERSION));
+ if ((includeFlags & (TagSelectionArea.INCLUDE_HEAD_TAG)) > 0)
+ types.add(new Integer(CVSTag.HEAD));
+ if ((includeFlags & (TagSelectionArea.INCLUDE_DATES)) > 0)
+ types.add(new Integer(CVSTag.DATE));
+ if ((includeFlags & (TagSelectionArea.INCLUDE_BASE_TAG)) > 0)
+ types.add(new Integer(BASE));
+ int[] result = new int[types.size()];
+ for (int i = 0; i < result.length; i++) {
+ result[i] = ((Integer)types.get(i)).intValue();
+
}
- return new int[] { };
+ return result;
}
/**
@@ -136,7 +150,15 @@ public abstract class TagSource {
}
}
- public abstract CVSTag[] getTags(int type);
+ public CVSTag[] getTags(int type) {
+ switch (type) {
+ case BASE:
+ return new CVSTag[] { CVSTag.BASE };
+ case CVSTag.HEAD:
+ return new CVSTag[] { CVSTag.DEFAULT };
+ }
+ return new CVSTag[0];
+ }
public CVSTag[] getTags(int[] types) {
if (types.length == 0) {
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/MergeWizardPage.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/MergeWizardPage.java
index 1ec2c8edc..dda9b8e06 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/MergeWizardPage.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/MergeWizardPage.java
@@ -128,11 +128,11 @@ public class MergeWizardPage extends CVSWizardPage {
}
private CVSTag getTagFor(String text, boolean versionsOnly) {
- if (text == CVSTag.DEFAULT.getName()) {
+ if (text.equals(CVSTag.DEFAULT.getName())) {
if (versionsOnly) return null;
return CVSTag.DEFAULT;
}
- if (text == CVSTag.BASE.getName()) {
+ if (text.equals(CVSTag.BASE.getName())) {
if (versionsOnly) return null;
return CVSTag.BASE;
}
@@ -156,6 +156,12 @@ public class MergeWizardPage extends CVSWizardPage {
endTag = selectedTag;
if (endTagField != null) {
endTagField.setText(endTag.getName());
+ if (startTag == null && endTag.getType() == CVSTag.BRANCH) {
+ CVSTag tag = findCommonBaseTag(endTag);
+ if (tag != null) {
+ setStartTag(tag);
+ }
+ }
}
updateEnablements();
}
@@ -171,6 +177,17 @@ public class MergeWizardPage extends CVSWizardPage {
}
}
+ private CVSTag findCommonBaseTag(CVSTag tag) {
+ CVSTag[] tags = tagSource.getTags(CVSTag.VERSION);
+ for (int i = 0; i < tags.length; i++) {
+ CVSTag potentialMatch = tags[i];
+ if (potentialMatch.getName().indexOf(tag.getName()) != -1) {
+ return potentialMatch;
+ }
+ }
+ return null;
+ }
+
private void updateEnablements() {
if (endTag == null && endTagField.getText().length() > 0) {
setErrorMessage("The specified end tag is not known to exist. Either enter a different tag or refresh the known tags.");

Back to the top