View | Details | Raw Unified | Return to bug 224588 | Differences between
and this patch

Collapse All | Expand All

(-)compare/org/eclipse/compare/internal/ComparePreferencePage.java (-18 / +72 lines)
Lines 10-39 Link Here
10
 *******************************************************************************/
10
 *******************************************************************************/
11
package org.eclipse.compare.internal;
11
package org.eclipse.compare.internal;
12
12
13
import java.io.*;
13
import java.io.ByteArrayInputStream;
14
import java.io.InputStream;
14
import java.util.HashMap;
15
import java.util.HashMap;
15
import java.util.Iterator;
16
import java.util.Iterator;
16
import java.util.Map;
17
import java.util.Map;
17
18
18
import org.eclipse.ui.*;
19
import org.eclipse.compare.CompareConfiguration;
20
import org.eclipse.compare.IEncodedStreamContentAccessor;
21
import org.eclipse.compare.ITypedElement;
22
import org.eclipse.compare.contentmergeviewer.TextMergeViewer;
23
import org.eclipse.compare.structuremergeviewer.DiffNode;
24
import org.eclipse.compare.structuremergeviewer.Differencer;
25
import org.eclipse.jface.dialogs.Dialog;
26
import org.eclipse.jface.preference.IPreferenceStore;
27
import org.eclipse.jface.preference.PreferencePage;
28
import org.eclipse.jface.preference.RadioGroupFieldEditor;
29
import org.eclipse.jface.util.IPropertyChangeListener;
30
import org.eclipse.jface.util.PropertyChangeEvent;
31
import org.eclipse.swt.SWT;
32
import org.eclipse.swt.events.DisposeEvent;
33
import org.eclipse.swt.events.DisposeListener;
34
import org.eclipse.swt.events.ModifyEvent;
35
import org.eclipse.swt.events.ModifyListener;
36
import org.eclipse.swt.events.SelectionAdapter;
37
import org.eclipse.swt.events.SelectionEvent;
38
import org.eclipse.swt.events.SelectionListener;
39
import org.eclipse.swt.graphics.Image;
40
import org.eclipse.swt.layout.GridData;
41
import org.eclipse.swt.layout.GridLayout;
42
import org.eclipse.swt.widgets.Button;
43
import org.eclipse.swt.widgets.Composite;
44
import org.eclipse.swt.widgets.Control;
45
import org.eclipse.swt.widgets.Label;
46
import org.eclipse.swt.widgets.TabFolder;
47
import org.eclipse.swt.widgets.TabItem;
48
import org.eclipse.swt.widgets.Text;
49
import org.eclipse.ui.IWorkbench;
50
import org.eclipse.ui.IWorkbenchPreferencePage;
51
import org.eclipse.ui.PlatformUI;
19
import org.eclipse.ui.dialogs.PreferenceLinkArea;
52
import org.eclipse.ui.dialogs.PreferenceLinkArea;
20
import org.eclipse.ui.preferences.IWorkbenchPreferenceContainer;
53
import org.eclipse.ui.preferences.IWorkbenchPreferenceContainer;
21
import org.eclipse.ui.texteditor.AbstractTextEditor;
54
import org.eclipse.ui.texteditor.AbstractTextEditor;
22
55
23
import org.eclipse.swt.SWT;
24
import org.eclipse.swt.events.*;
25
import org.eclipse.swt.graphics.Image;
26
import org.eclipse.swt.layout.*;
27
import org.eclipse.swt.widgets.*;
28
29
import org.eclipse.jface.dialogs.Dialog;
30
import org.eclipse.jface.preference.*;
31
import org.eclipse.jface.util.*;
32
33
import org.eclipse.compare.*;
34
import org.eclipse.compare.contentmergeviewer.TextMergeViewer;
35
import org.eclipse.compare.structuremergeviewer.*;
36
37
56
38
public class ComparePreferencePage extends PreferencePage implements IWorkbenchPreferencePage {
57
public class ComparePreferencePage extends PreferencePage implements IWorkbenchPreferencePage {
39
	
58
	
Lines 76-81 Link Here
76
	public static final String HIGHLIGHT_TOKEN_CHANGES= PREFIX + "HighlightTokenChanges"; //$NON-NLS-1$
95
	public static final String HIGHLIGHT_TOKEN_CHANGES= PREFIX + "HighlightTokenChanges"; //$NON-NLS-1$
77
	//public static final String USE_RESOLVE_UI= PREFIX + "UseResolveUI"; //$NON-NLS-1$
96
	//public static final String USE_RESOLVE_UI= PREFIX + "UseResolveUI"; //$NON-NLS-1$
78
	public static final String PATH_FILTER= PREFIX + "PathFilter"; //$NON-NLS-1$
97
	public static final String PATH_FILTER= PREFIX + "PathFilter"; //$NON-NLS-1$
98
	public static final String ADDED_LINES_REGEX= PREFIX + "AddedLinesRegex"; //$NON-NLS-1$
99
	public static final String REMOVED_LINES_REGEX= PREFIX + "RemovedLinesRegex"; //$NON-NLS-1$
79
	
100
	
80
	
101
	
81
	private TextMergeViewer fPreviewViewer;
102
	private TextMergeViewer fPreviewViewer;
Lines 84-89 Link Here
84
	private OverlayPreferenceStore fOverlayStore;
105
	private OverlayPreferenceStore fOverlayStore;
85
	private Map fCheckBoxes= new HashMap();
106
	private Map fCheckBoxes= new HashMap();
86
	private Text fFilters;
107
	private Text fFilters;
108
	private Text addedLinesRegex;
109
	private Text removeLinesRegex;
87
	private SelectionListener fCheckBoxListener;
110
	private SelectionListener fCheckBoxListener;
88
111
89
112
Lines 96-101 Link Here
96
		new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, SHOW_MORE_INFO),
119
		new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, SHOW_MORE_INFO),
97
		new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, IGNORE_WHITESPACE),
120
		new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, IGNORE_WHITESPACE),
98
		new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, PREF_SAVE_ALL_EDITORS),
121
		new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, PREF_SAVE_ALL_EDITORS),
122
		new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, ADDED_LINES_REGEX),
123
		new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, REMOVED_LINES_REGEX),
99
		
124
		
100
		new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, AbstractTextEditor.PREFERENCE_COLOR_BACKGROUND),
125
		new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, AbstractTextEditor.PREFERENCE_COLOR_BACKGROUND),
101
		new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, AbstractTextEditor.PREFERENCE_COLOR_BACKGROUND_SYSTEM_DEFAULT),
126
		new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, AbstractTextEditor.PREFERENCE_COLOR_BACKGROUND_SYSTEM_DEFAULT),
Lines 118-123 Link Here
118
		store.setDefault(SHOW_MORE_INFO, false);
143
		store.setDefault(SHOW_MORE_INFO, false);
119
		store.setDefault(IGNORE_WHITESPACE, false);
144
		store.setDefault(IGNORE_WHITESPACE, false);
120
		store.setDefault(PREF_SAVE_ALL_EDITORS, false);
145
		store.setDefault(PREF_SAVE_ALL_EDITORS, false);
146
		store.setDefault(ADDED_LINES_REGEX, ""); //$NON-NLS-1$
147
		store.setDefault(REMOVED_LINES_REGEX, ""); //$NON-NLS-1$
121
		//store.setDefault(USE_SPLINES, false);
148
		//store.setDefault(USE_SPLINES, false);
122
		store.setDefault(USE_SINGLE_LINE, true);
149
		store.setDefault(USE_SINGLE_LINE, true);
123
		store.setDefault(HIGHLIGHT_TOKEN_CHANGES, true);
150
		store.setDefault(HIGHLIGHT_TOKEN_CHANGES, true);
Lines 158-163 Link Here
158
	 * @see PreferencePage#performOk()
185
	 * @see PreferencePage#performOk()
159
	 */
186
	 */
160
	public boolean performOk() {
187
	public boolean performOk() {
188
		fOverlayStore.setValue(ADDED_LINES_REGEX, addedLinesRegex.getText());
189
		fOverlayStore.setValue(REMOVED_LINES_REGEX, removeLinesRegex.getText());
190
		
161
		fOverlayStore.propagate();
191
		fOverlayStore.propagate();
162
		editor.store();
192
		editor.store();
163
		return true;
193
		return true;
Lines 250-256 Link Here
250
		new Label(composite, SWT.NONE);
280
		new Label(composite, SWT.NONE);
251
		
281
		
252
		Label l= new Label(composite, SWT.WRAP);
282
		Label l= new Label(composite, SWT.WRAP);
253
		l.setText(Utilities.getString("ComparePreferencePage.filter.description")); //$NON-NLS-1$
283
		l.setText(Utilities.getString("ComparePreferencePage.regex.description")); //$NON-NLS-1$
254
		
284
		
255
		Composite c2= new Composite(composite, SWT.NONE);
285
		Composite c2= new Composite(composite, SWT.NONE);
256
		c2.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
286
		c2.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
Lines 259-267 Link Here
259
		c2.setLayout(layout);
289
		c2.setLayout(layout);
260
		
290
		
261
		l= new Label(c2, SWT.NONE);
291
		l= new Label(c2, SWT.NONE);
292
		l.setText(Utilities.getString("ComparePreferencePage.regexAdded.label")); //$NON-NLS-1$
293
		addedLinesRegex = new Text(c2, SWT.BORDER);
294
		addedLinesRegex.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
295
		addedLinesRegex.setText(fOverlayStore.getString(ADDED_LINES_REGEX));
296
		
297
		l= new Label(c2, SWT.NONE);
298
		l.setText(Utilities.getString("ComparePreferencePage.regexRemoved.label")); //$NON-NLS-1$
299
		removeLinesRegex = new Text(c2, SWT.BORDER);
300
		removeLinesRegex.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
301
		removeLinesRegex.setText(fOverlayStore.getString(REMOVED_LINES_REGEX));
302
303
		// a spacer
304
		new Label(composite, SWT.NONE);
305
		
306
		l= new Label(composite, SWT.WRAP);
307
		l.setText(Utilities.getString("ComparePreferencePage.filter.description")); //$NON-NLS-1$
308
		
309
		Composite c3= new Composite(composite, SWT.NONE);
310
		c3.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
311
		layout= new GridLayout(2, false);
312
		layout.marginWidth= 0;
313
		c3.setLayout(layout);
314
		
315
		l= new Label(c3, SWT.NONE);
262
		l.setText(Utilities.getString("ComparePreferencePage.filter.label")); //$NON-NLS-1$
316
		l.setText(Utilities.getString("ComparePreferencePage.filter.label")); //$NON-NLS-1$
263
		
317
		
264
		fFilters= new Text(c2, SWT.BORDER);
318
		fFilters= new Text(c3, SWT.BORDER);
265
		fFilters.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
319
		fFilters.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
266
		fFilters.setText(fOverlayStore.getString(PATH_FILTER));
320
		fFilters.setText(fOverlayStore.getString(PATH_FILTER));
267
		fFilters.addModifyListener(
321
		fFilters.addModifyListener(
(-)compare/org/eclipse/compare/internal/patch/PatchMessages.properties (+1 lines)
Lines 102-107 Link Here
102
PreviewPatchPage_FuzzUsed=(fuzz factor used: {0})
102
PreviewPatchPage_FuzzUsed=(fuzz factor used: {0})
103
PreviewPatchPage_AllContextIgnored=(fuzz factor used: {0}, all context lines ignored)
103
PreviewPatchPage_AllContextIgnored=(fuzz factor used: {0}, all context lines ignored)
104
PreviewPatchPage2_ShowMatched=Show &matched hunks
104
PreviewPatchPage2_ShowMatched=Show &matched hunks
105
PreviewPatchPage2_AddedRemovedLines=Patch contains {0} added and {1} removed lines.
105
PreviewPatchLabelDecorator_ProjectDoesNotExist=(Project does not exist in workspace)
106
PreviewPatchLabelDecorator_ProjectDoesNotExist=(Project does not exist in workspace)
106
107
107
#
108
#
(-)compare/org/eclipse/compare/internal/patch/PatchMessages.java (+1 lines)
Lines 105-110 Link Here
105
	public static String PreviewPatchPage2_RetargetAction;
105
	public static String PreviewPatchPage2_RetargetAction;
106
	public static String PreviewPatchPage2_RetargetTooltip;
106
	public static String PreviewPatchPage2_RetargetTooltip;
107
	public static String PreviewPatchPage2_ShowMatched;
107
	public static String PreviewPatchPage2_ShowMatched;
108
	public static String PreviewPatchPage2_AddedRemovedLines;
108
	public static String RetargetPatchElementDialog_0;
109
	public static String RetargetPatchElementDialog_0;
109
	public static String RetargetPatchElementDialog_1;
110
	public static String RetargetPatchElementDialog_1;
110
}
111
}
(-)compare/org/eclipse/compare/internal/patch/PreviewPatchPage2.java (-1 / +46 lines)
Lines 12-20 Link Here
12
12
13
import java.lang.reflect.InvocationTargetException;
13
import java.lang.reflect.InvocationTargetException;
14
import java.util.Iterator;
14
import java.util.Iterator;
15
import java.util.regex.Pattern;
15
16
16
import org.eclipse.compare.CompareConfiguration;
17
import org.eclipse.compare.CompareConfiguration;
17
import org.eclipse.compare.CompareUI;
18
import org.eclipse.compare.CompareUI;
19
import org.eclipse.compare.internal.ComparePreferencePage;
18
import org.eclipse.compare.internal.CompareUIPlugin;
20
import org.eclipse.compare.internal.CompareUIPlugin;
19
import org.eclipse.compare.internal.ICompareUIConstants;
21
import org.eclipse.compare.internal.ICompareUIConstants;
20
import org.eclipse.core.runtime.Assert;
22
import org.eclipse.core.runtime.Assert;
Lines 27-32 Link Here
27
import org.eclipse.jface.dialogs.IDialogConstants;
29
import org.eclipse.jface.dialogs.IDialogConstants;
28
import org.eclipse.jface.dialogs.IDialogSettings;
30
import org.eclipse.jface.dialogs.IDialogSettings;
29
import org.eclipse.jface.operation.IRunnableWithProgress;
31
import org.eclipse.jface.operation.IRunnableWithProgress;
32
import org.eclipse.jface.preference.IPreferenceStore;
30
import org.eclipse.jface.resource.JFaceResources;
33
import org.eclipse.jface.resource.JFaceResources;
31
import org.eclipse.jface.util.IPropertyChangeListener;
34
import org.eclipse.jface.util.IPropertyChangeListener;
32
import org.eclipse.jface.util.PropertyChangeEvent;
35
import org.eclipse.jface.util.PropertyChangeEvent;
Lines 37-42 Link Here
37
import org.eclipse.jface.viewers.TreeSelection;
40
import org.eclipse.jface.viewers.TreeSelection;
38
import org.eclipse.jface.window.Window;
41
import org.eclipse.jface.window.Window;
39
import org.eclipse.jface.wizard.WizardPage;
42
import org.eclipse.jface.wizard.WizardPage;
43
import org.eclipse.osgi.util.NLS;
40
import org.eclipse.swt.SWT;
44
import org.eclipse.swt.SWT;
41
import org.eclipse.swt.events.ModifyEvent;
45
import org.eclipse.swt.events.ModifyEvent;
42
import org.eclipse.swt.events.ModifyListener;
46
import org.eclipse.swt.events.ModifyListener;
Lines 148-154 Link Here
148
			}});
152
			}});
149
153
150
		c.setLayoutData(new GridData(GridData.FILL_BOTH));
154
		c.setLayoutData(new GridData(GridData.FILL_BOTH));
151
	
155
		
156
		String text = calculateLines();
157
		if (text != null) {
158
			Label l = new Label(composite, SWT.NONE);
159
			l.setText(text);
160
			GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING	| GridData.GRAB_HORIZONTAL);
161
			l.setLayoutData(gd);
162
		}
152
		setControl(composite);
163
		setControl(composite);
153
		
164
		
154
		restoreWidgetValues();
165
		restoreWidgetValues();
Lines 670-675 Link Here
670
	void saveWidgetValues() {
681
	void saveWidgetValues() {
671
		settings.put(EXPAND_PATCH_OPTIONS, patchOptions.isExpanded());
682
		settings.put(EXPAND_PATCH_OPTIONS, patchOptions.isExpanded());
672
	}
683
	}
684
	
685
	private String calculateLines() {
686
		int added = 0, removed = 0;
687
		
688
		IPreferenceStore store = CompareUIPlugin.getDefault().getPreferenceStore();
689
		String addedLinesRegex = store.getString(ComparePreferencePage.ADDED_LINES_REGEX);
690
		String removedLinesRegex = store.getString(ComparePreferencePage.REMOVED_LINES_REGEX);
691
		
692
		if ((addedLinesRegex == null || "".equals(addedLinesRegex)) //$NON-NLS-1$
693
				&& (removedLinesRegex == null || "".equals(removedLinesRegex))) { //$NON-NLS-1$
694
			return null;
695
		}
696
		
697
		Pattern addedPattern = Pattern.compile(addedLinesRegex);
698
		Pattern removedPattern = Pattern.compile(removedLinesRegex);
699
		
700
		FileDiff[] fileDiffs = fPatcher.getDiffs();
701
		for (int i = 0; i < fileDiffs.length; i++) {
702
			Hunk[] hunks = fileDiffs[i].getHunks();
703
			for (int j = 0; j < hunks.length; j++) {
704
				String[] lines = hunks[j].getLines();
705
				for (int k = 0; k < lines.length; k++) {
706
					String line = lines[k];
707
					if (addedPattern.matcher(line).find())
708
						added++;
709
					if (removedPattern.matcher(line).find())
710
						removed++;
711
				}
712
			}
713
		}
714
		
715
		return NLS.bind(PatchMessages.PreviewPatchPage2_AddedRemovedLines,
716
				new String[] { added + "", removed + "" }); //$NON-NLS-1$ //$NON-NLS-2$
717
	}
673
718
674
719
675
}
720
}
(-)plugin.properties (+4 lines)
Lines 110-115 Link Here
110
ComparePreferencePage.ignoreWhitespace.label= Ignore &white space
110
ComparePreferencePage.ignoreWhitespace.label= Ignore &white space
111
ComparePreferencePage.saveBeforePatching.label= A&utomatically save dirty editors before browsing patches
111
ComparePreferencePage.saveBeforePatching.label= A&utomatically save dirty editors before browsing patches
112
112
113
ComparePreferencePage.regex.description=Enter regular expressions used to identify an added or removed line in a patch\n(e.g. '^\\+\\s*\\S' for an added line with at least one word character). 
114
ComparePreferencePage.regexAdded.label=Added lines
115
ComparePreferencePage.regexRemoved.label=Removed lines
116
113
ComparePreferencePage.filter.description= Enter member names that should be excluded from 'Compare With Each Other'.\nList is comma separated (e.g. '*.class, .project, bin/')
117
ComparePreferencePage.filter.description= Enter member names that should be excluded from 'Compare With Each Other'.\nList is comma separated (e.g. '*.class, .project, bin/')
114
ComparePreferencePage.filter.label= &Filtered Members:
118
ComparePreferencePage.filter.label= &Filtered Members:
115
ComparePreferencePage.filter.invalidsegment.error= Filter is invalid: {0}
119
ComparePreferencePage.filter.invalidsegment.error= Filter is invalid: {0}

Return to bug 224588