diff options
Diffstat (limited to 'bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSDecoration.java')
-rw-r--r-- | bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSDecoration.java | 473 |
1 files changed, 0 insertions, 473 deletions
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSDecoration.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSDecoration.java deleted file mode 100644 index a5daba9b2..000000000 --- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSDecoration.java +++ /dev/null @@ -1,473 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2007 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.team.internal.ccvs.ui; - -import java.util.HashMap; -import java.util.Map; - -import org.eclipse.core.resources.IResource; -import org.eclipse.core.runtime.Assert; -import org.eclipse.core.runtime.Preferences; -import org.eclipse.jface.preference.IPreferenceStore; -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.jface.viewers.IDecoration; -import org.eclipse.swt.graphics.*; -import org.eclipse.team.core.diff.IThreeWayDiff; -import org.eclipse.team.internal.ccvs.core.ICVSRepositoryLocation; -import org.eclipse.team.internal.ccvs.ui.repo.RepositoryManager; -import org.eclipse.team.internal.ccvs.ui.repo.RepositoryRoot; -import org.eclipse.team.internal.ui.TeamUIPlugin; -import org.eclipse.team.ui.ISharedImages; -import org.eclipse.team.ui.synchronize.TeamStateDescription; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.themes.ITheme; - -/** - * A decoration describes the annotations to a user interface element. The - * annotations can apply to text (e.g. prefix, suffix, color, font) and to an - * image (e.g. overlays). - * <p> - * This class is derived from an internal workbench class - * <code>IDecoration</code> and is often used in conjunction with the label - * decoration APIs. As such a client can convert between them using helpers - * defined in this class. - * </p> - * TODO: - * profile - * add colors and fonts to preferences instead of being hard coded - * what to do with CVSDecorationConfiguration class? - * preference page externalizations - * preference page preview should update when theme changes - * - * @since 3.1 - */ -public class CVSDecoration { - - public static final int MODEL = 1000; - - // Decorations - private String prefix; - private String suffix; - private ImageDescriptor overlay; - private Color bkgColor; - private Color fgColor; - private Font font; - - // Properties - private int resourceType = IResource.FILE; - private boolean watchEditEnabled = false; - private boolean isDirty = false; - private boolean isIgnored = false; - private boolean isAdded = false; - private boolean isNewResource = false; - private boolean hasRemote = false; - private boolean readOnly = false; - private boolean needsMerge = false; - private boolean virtualFolder = false; - private String tag; - private String revision; - private String repository; - private ICVSRepositoryLocation location; - private String keywordSubstitution; - private int stateFlags; - - // Text formatters - private String fileFormatter; - private String folderFormatter; - private String projectFormatter; - - // Images cached for better performance - private static ImageDescriptor dirty; - private static ImageDescriptor checkedIn; - private static ImageDescriptor noRemoteDir; - private static ImageDescriptor added; - private static ImageDescriptor merged; - private static ImageDescriptor newResource; - private static ImageDescriptor edited; - - // List of preferences used to configure the decorations that - // are applied. - private Preferences preferences; - - /* - * Define a cached image descriptor which only creates the image data once - */ - public static class CachedImageDescriptor extends ImageDescriptor { - - ImageDescriptor descriptor; - ImageData data; - - public CachedImageDescriptor(ImageDescriptor descriptor) { - Assert.isNotNull(descriptor); - this.descriptor = descriptor; - } - - public ImageData getImageData() { - if (data == null) { - data = descriptor.getImageData(); - } - return data; - } - } - - static { - dirty = new CachedImageDescriptor(TeamUIPlugin.getImageDescriptor(ISharedImages.IMG_DIRTY_OVR)); - checkedIn = new CachedImageDescriptor(TeamUIPlugin.getImageDescriptor(ISharedImages.IMG_CHECKEDIN_OVR)); - added = new CachedImageDescriptor(TeamUIPlugin.getImageDescriptor(ISharedImages.IMG_CHECKEDIN_OVR)); - merged = new CachedImageDescriptor(CVSUIPlugin.getPlugin().getImageDescriptor(ICVSUIConstants.IMG_MERGED)); - newResource = new CachedImageDescriptor(CVSUIPlugin.getPlugin().getImageDescriptor(ICVSUIConstants.IMG_QUESTIONABLE)); - edited = new CachedImageDescriptor(CVSUIPlugin.getPlugin().getImageDescriptor(ICVSUIConstants.IMG_EDITED)); - noRemoteDir = new CachedImageDescriptor(CVSUIPlugin.getPlugin().getImageDescriptor(ICVSUIConstants.IMG_NO_REMOTEDIR)); - } - - /** - * Default constructor uses the plug-in's preferences to determine text decoration - * formatters and preferences. - */ - public CVSDecoration() { - // TODO: for efficiency don't look up a pref until its needed - IPreferenceStore store = getStore(); - Preferences prefs = new Preferences(); - - prefs.setValue(ICVSUIConstants.PREF_SHOW_DIRTY_DECORATION, store.getBoolean(ICVSUIConstants.PREF_SHOW_DIRTY_DECORATION)); - prefs.setValue(ICVSUIConstants.PREF_SHOW_ADDED_DECORATION, store.getBoolean(ICVSUIConstants.PREF_SHOW_ADDED_DECORATION)); - prefs.setValue(ICVSUIConstants.PREF_SHOW_HASREMOTE_DECORATION, store.getBoolean(ICVSUIConstants.PREF_SHOW_HASREMOTE_DECORATION)); - prefs.setValue(ICVSUIConstants.PREF_SHOW_NEWRESOURCE_DECORATION, store.getBoolean(ICVSUIConstants.PREF_SHOW_NEWRESOURCE_DECORATION)); - prefs.setValue(ICVSUIConstants.PREF_CALCULATE_DIRTY, store.getBoolean(ICVSUIConstants.PREF_CALCULATE_DIRTY)); - prefs.setValue(ICVSUIConstants.PREF_DIRTY_FLAG, store.getString(ICVSUIConstants.PREF_DIRTY_FLAG)); - prefs.setValue(ICVSUIConstants.PREF_ADDED_FLAG, store.getString(ICVSUIConstants.PREF_ADDED_FLAG)); - prefs.setValue(ICVSUIConstants.PREF_USE_FONT_DECORATORS, store.getString(ICVSUIConstants.PREF_USE_FONT_DECORATORS)); - - initialize(prefs, store.getString(ICVSUIConstants.PREF_FILETEXT_DECORATION), store.getString(ICVSUIConstants.PREF_FOLDERTEXT_DECORATION), store.getString(ICVSUIConstants.PREF_PROJECTTEXT_DECORATION)); - } - - public CVSDecoration(Preferences preferences, String fileFormater, String folderFormatter, String projectFormatter) { - initialize(preferences, fileFormater, folderFormatter, projectFormatter); - } - - private IPreferenceStore getStore() { - return CVSUIPlugin.getPlugin().getPreferenceStore(); - } - - private void initialize(Preferences preferences, String fileFormater, String folderFormatter, String projectFormatter) { - this.preferences = preferences; - this.fileFormatter = updateOldDirtyFlag(fileFormater); - this.folderFormatter = updateOldDirtyFlag(folderFormatter); - this.projectFormatter = updateOldDirtyFlag(projectFormatter); - } - - //see bug 110022 - public static String updateOldDirtyFlag(String param){ - return param.replaceAll(CVSDecoratorConfiguration.OLD_DIRTY_FLAG, - CVSDecoratorConfiguration.NEW_DIRTY_FLAG); - } - - public void addPrefix(String prefix) { - this.prefix = prefix; - } - - public void addSuffix(String suffix) { - this.suffix = suffix; - } - - public void setForegroundColor(Color fgColor) { - this.fgColor = fgColor; - } - - public void setBackgroundColor(Color bkgColor) { - this.bkgColor = bkgColor; - } - - public void setFont(Font font) { - this.font = font; - } - - public Color getBackgroundColor() { - return bkgColor; - } - - public Color getForegroundColor() { - return fgColor; - } - - public Font getFont() { - return font; - } - - public ImageDescriptor getOverlay() { - return overlay; - } - - public String getPrefix() { - return prefix; - } - - public String getSuffix() { - return suffix; - } - - public void setResourceType(int type) { - this.resourceType = type; - } - - public void apply(IDecoration decoration) { - compute(); - // apply changes - String suffix = getSuffix(); - if(suffix != null) - decoration.addSuffix(suffix); - String prefix = getPrefix(); - if(prefix != null) - decoration.addPrefix(prefix); - ImageDescriptor overlay = getOverlay(); - if(overlay != null) - decoration.addOverlay(overlay); - Color bc = getBackgroundColor(); - if(bc != null) - decoration.setBackgroundColor(bc); - Color fc = getForegroundColor(); - if(fc != null) - decoration.setForegroundColor(fc); - Font f = getFont(); - if(f != null) - decoration.setFont(f); - } - - public void compute() { - computeText(); - overlay = computeImage(); - computeColorsAndFonts(); - } - - private void computeText() { - if (isIgnored()) - return; - Map bindings = new HashMap(); - if (isDirty()) { - bindings.put(CVSDecoratorConfiguration.NEW_DIRTY_FLAG, preferences.getString(ICVSUIConstants.PREF_DIRTY_FLAG)); - } - if (isAdded()) { - bindings.put(CVSDecoratorConfiguration.ADDED_FLAG, preferences.getString(ICVSUIConstants.PREF_ADDED_FLAG)); - } else if(isHasRemote()){ - bindings.put(CVSDecoratorConfiguration.FILE_REVISION, getRevision()); - bindings.put(CVSDecoratorConfiguration.RESOURCE_TAG, getTag()); - } - bindings.put(CVSDecoratorConfiguration.FILE_KEYWORD, getKeywordSubstitution()); - if ((resourceType == IResource.FOLDER || resourceType == IResource.PROJECT) && location != null) { - bindings.put(CVSDecoratorConfiguration.REMOTELOCATION_HOST, location.getHost()); - bindings.put(CVSDecoratorConfiguration.REMOTELOCATION_METHOD, location.getMethod().getName()); - bindings.put(CVSDecoratorConfiguration.REMOTELOCATION_USER, location.getUsername()); - bindings.put(CVSDecoratorConfiguration.REMOTELOCATION_ROOT, location.getRootDirectory()); - bindings.put(CVSDecoratorConfiguration.REMOTELOCATION_REPOSITORY, repository); - - RepositoryManager repositoryManager = CVSUIPlugin.getPlugin().getRepositoryManager(); - RepositoryRoot root = repositoryManager.getRepositoryRootFor(location); - CVSUIPlugin.getPlugin().getRepositoryManager(); - String label = root.getName(); - if (label == null) { - label = location.getLocation(true); - } - bindings.put(CVSDecoratorConfiguration.REMOTELOCATION_LABEL, label); - } - CVSDecoratorConfiguration.decorate(this, getTextFormatter(), bindings); - } - - private ImageDescriptor computeImage() { - // show newResource icon - if (preferences.getBoolean(ICVSUIConstants.PREF_SHOW_NEWRESOURCE_DECORATION) && isNewResource()) { - return newResource; - } - // show dirty icon - if (preferences.getBoolean(ICVSUIConstants.PREF_SHOW_DIRTY_DECORATION) && isDirty()) { - return dirty; - } - // show added - if (preferences.getBoolean(ICVSUIConstants.PREF_SHOW_ADDED_DECORATION) && isAdded()) { - return added; - } - // show watch edit - if (isWatchEditEnabled() && resourceType == IResource.FILE && !isReadOnly() && isHasRemote()) { - return edited; - } - if (needsMerge) - return merged; - // show checked in - if (preferences.getBoolean(ICVSUIConstants.PREF_SHOW_HASREMOTE_DECORATION) && isHasRemote()) { - if ((resourceType == IResource.FOLDER || resourceType == IResource.PROJECT) && isVirtualFolder()) { - return noRemoteDir; - } - return checkedIn; - } - - //nothing matched - return null; - } - - private void computeColorsAndFonts() { - if (!preferences.getBoolean(ICVSUIConstants.PREF_USE_FONT_DECORATORS)) - return; - - ITheme current = PlatformUI.getWorkbench().getThemeManager().getCurrentTheme(); - if(isIgnored()) { - setBackgroundColor(current.getColorRegistry().get(CVSDecoratorConfiguration.IGNORED_BACKGROUND_COLOR)); - setForegroundColor(current.getColorRegistry().get(CVSDecoratorConfiguration.IGNORED_FOREGROUND_COLOR)); - setFont(current.getFontRegistry().get(CVSDecoratorConfiguration.IGNORED_FONT)); - } else if(isDirty()) { - setBackgroundColor(current.getColorRegistry().get(CVSDecoratorConfiguration.OUTGOING_CHANGE_BACKGROUND_COLOR)); - setForegroundColor(current.getColorRegistry().get(CVSDecoratorConfiguration.OUTGOING_CHANGE_FOREGROUND_COLOR)); - setFont(current.getFontRegistry().get(CVSDecoratorConfiguration.OUTGOING_CHANGE_FONT)); - } - } - - private String getTextFormatter() { - switch (resourceType) { - case IResource.FILE : - return fileFormatter; - case IResource.FOLDER : - return folderFormatter; - case IResource.PROJECT : - return projectFormatter; - case MODEL : - return folderFormatter; - } - return "no format specified"; //$NON-NLS-1$ - } - - public boolean isAdded() { - return isAdded; - } - - public void setAdded(boolean isAdded) { - this.isAdded = isAdded; - } - - public boolean isDirty() { - return isDirty; - } - - public void setDirty(boolean isDirty) { - this.isDirty = isDirty; - } - - public boolean isIgnored() { - return isIgnored; - } - - public void setIgnored(boolean isIgnored) { - this.isIgnored = isIgnored; - } - - public String getTag() { - return tag; - } - - public void setTag(String tag) { - this.tag = tag; - } - - public boolean isWatchEditEnabled() { - return watchEditEnabled; - } - - public void setWatchEditEnabled(boolean watchEditEnabled) { - this.watchEditEnabled = watchEditEnabled; - } - - public boolean isNewResource() { - return isNewResource; - } - - public void setNewResource(boolean isNewResource) { - this.isNewResource = isNewResource; - } - - public void setLocation(ICVSRepositoryLocation location) { - this.location = location; - } - - public String getRevision() { - return revision; - } - - public void setRevision(String revision) { - this.revision = revision; - } - - public String getKeywordSubstitution() { - return keywordSubstitution; - } - - public void setKeywordSubstitution(String keywordSubstitution) { - this.keywordSubstitution = keywordSubstitution; - } - - public void setNeedsMerge(boolean needsMerge) { - this.needsMerge = needsMerge; - } - - public boolean isHasRemote() { - return hasRemote; - } - - public void setHasRemote(boolean hasRemote) { - this.hasRemote = hasRemote; - } - - public void setRepository(String repository) { - this.repository = repository; - } - - public boolean isReadOnly() { - return readOnly; - } - - public void setReadOnly(boolean readOnly) { - this.readOnly = readOnly; - } - - public boolean isVirtualFolder() { - return virtualFolder; - } - - public void setVirtualFolder(boolean virtualFolder) { - this.virtualFolder = virtualFolder; - } - - public void setStateFlags(int stateFlags) { - this.stateFlags = stateFlags; - if ((stateFlags & IThreeWayDiff.OUTGOING) != 0) { - setDirty(true); - } - } - - public TeamStateDescription asTeamStateDescription(String[] properties) { - TeamStateDescription desc = new CVSTeamStateDescription(stateFlags); - Object o = computeImage(); - if (o != null && isRequestedProperty(properties, CVSTeamStateDescription.PROP_RESOURCE_STATE)) { - desc.setProperty(CVSTeamStateDescription.PROP_RESOURCE_STATE, o); - } - if (tag != null && isRequestedProperty(properties, CVSTeamStateDescription.PROP_TAG)) { - desc.setProperty(CVSTeamStateDescription.PROP_TAG, tag); - } - return desc; - } - - private boolean isRequestedProperty(String[] properties, String property) { - if (properties == null) - return true; - for (int i = 0; i < properties.length; i++) { - String string = properties[i]; - if (string.equals(property)) - return true; - } - return false; - } -} |