diff options
Diffstat (limited to 'bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/mappings/CompareSubscriberContext.java')
-rw-r--r-- | bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/mappings/CompareSubscriberContext.java | 47 |
1 files changed, 36 insertions, 11 deletions
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/mappings/CompareSubscriberContext.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/mappings/CompareSubscriberContext.java index 20e1eab55..f5a0631b4 100644 --- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/mappings/CompareSubscriberContext.java +++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/mappings/CompareSubscriberContext.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006 IBM Corporation and others. + * Copyright (c) 2006, 2011 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 @@ -10,17 +10,21 @@ *******************************************************************************/ package org.eclipse.team.internal.ccvs.ui.mappings; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.*; +import org.eclipse.core.runtime.Preferences.IPropertyChangeListener; +import org.eclipse.core.runtime.Preferences.PropertyChangeEvent; import org.eclipse.team.core.diff.DiffFilter; import org.eclipse.team.core.diff.IDiff; import org.eclipse.team.core.mapping.ISynchronizationScopeManager; import org.eclipse.team.core.mapping.provider.SynchronizationContext; import org.eclipse.team.core.subscribers.Subscriber; import org.eclipse.team.internal.ccvs.core.CVSCompareSubscriber; +import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin; +import org.eclipse.team.internal.ccvs.ui.ICVSUIConstants; import org.eclipse.team.internal.core.subscribers.ContentComparisonDiffFilter; +import org.eclipse.team.internal.core.subscribers.SubscriberDiffTreeEventHandler; -public class CompareSubscriberContext extends CVSSubscriberMergeContext { +public class CompareSubscriberContext extends CVSSubscriberMergeContext implements IPropertyChangeListener { public static SynchronizationContext createContext(ISynchronizationScopeManager manager, CVSCompareSubscriber subscriber) { CompareSubscriberContext mergeContext = new CompareSubscriberContext(subscriber, manager); @@ -30,6 +34,15 @@ public class CompareSubscriberContext extends CVSSubscriberMergeContext { protected CompareSubscriberContext(Subscriber subscriber, ISynchronizationScopeManager manager) { super(subscriber, manager); + CVSUIPlugin.getPlugin().getPluginPreferences().addPropertyChangeListener(this); + } + + /* (non-Javadoc) + * @see org.eclipse.team.core.subscribers.SubscriberMergeContext#dispose() + */ + public void dispose() { + super.dispose(); + CVSUIPlugin.getPlugin().getPluginPreferences().removePropertyChangeListener(this); } /* (non-Javadoc) @@ -44,13 +57,25 @@ public class CompareSubscriberContext extends CVSSubscriberMergeContext { * @see org.eclipse.team.core.subscribers.SubscriberMergeContext#getDiffFilter() */ protected DiffFilter getDiffFilter() { - // Return a filter that selects any diffs whose contents are not equal - final DiffFilter contentsEqual = new ContentComparisonDiffFilter(false); - return new DiffFilter() { - public boolean select(IDiff diff, IProgressMonitor monitor) { - return !contentsEqual.select(diff, monitor); - } - }; + if (CVSUIPlugin.getPlugin().getPluginPreferences().getBoolean(ICVSUIConstants.PREF_CONSIDER_CONTENTS)) { + // Return a filter that selects any diffs whose contents are not equal + final DiffFilter contentsEqual = new ContentComparisonDiffFilter(false); + return new DiffFilter() { + public boolean select(IDiff diff, IProgressMonitor monitor) { + return !contentsEqual.select(diff, monitor); + } + }; + } + return null; } + public void propertyChange(PropertyChangeEvent event) { + if (event.getProperty().equals(ICVSUIConstants.PREF_CONSIDER_CONTENTS)) { + SubscriberDiffTreeEventHandler handler = getHandler(); + if (handler != null) { + handler.setFilter(getDiffFilter()); + handler.reset(); + } + } + } } |