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

Collapse All | Expand All

(-)compare/org/eclipse/compare/internal/GenerateDiffFileWizard.java (-4 / +90 lines)
Lines 21-27 Link Here
21
import java.util.Iterator;
21
import java.util.Iterator;
22
import java.util.List;
22
import java.util.List;
23
23
24
import org.eclipse.compare.CompareEditorInput;
25
import org.eclipse.compare.ITypedElement;
26
import org.eclipse.compare.ResourceNode;
24
import org.eclipse.compare.internal.merge.DocumentMerger;
27
import org.eclipse.compare.internal.merge.DocumentMerger;
28
import org.eclipse.compare.structuremergeviewer.DiffNode;
29
import org.eclipse.compare.structuremergeviewer.ICompareInput;
25
import org.eclipse.core.resources.IContainer;
30
import org.eclipse.core.resources.IContainer;
26
import org.eclipse.core.resources.IFile;
31
import org.eclipse.core.resources.IFile;
27
import org.eclipse.core.resources.IProject;
32
import org.eclipse.core.resources.IProject;
Lines 39-44 Link Here
39
import org.eclipse.jface.dialogs.TitleAreaDialog;
44
import org.eclipse.jface.dialogs.TitleAreaDialog;
40
import org.eclipse.jface.resource.ImageDescriptor;
45
import org.eclipse.jface.resource.ImageDescriptor;
41
import org.eclipse.jface.text.IDocument;
46
import org.eclipse.jface.text.IDocument;
47
import org.eclipse.jface.viewers.CheckboxTreeViewer;
42
import org.eclipse.jface.viewers.DoubleClickEvent;
48
import org.eclipse.jface.viewers.DoubleClickEvent;
43
import org.eclipse.jface.viewers.IDoubleClickListener;
49
import org.eclipse.jface.viewers.IDoubleClickListener;
44
import org.eclipse.jface.viewers.ISelection;
50
import org.eclipse.jface.viewers.ISelection;
Lines 69-74 Link Here
69
import org.eclipse.swt.widgets.Listener;
75
import org.eclipse.swt.widgets.Listener;
70
import org.eclipse.swt.widgets.Shell;
76
import org.eclipse.swt.widgets.Shell;
71
import org.eclipse.swt.widgets.Text;
77
import org.eclipse.swt.widgets.Text;
78
import org.eclipse.ui.IWorkbenchPart;
72
import org.eclipse.ui.model.BaseWorkbenchContentProvider;
79
import org.eclipse.ui.model.BaseWorkbenchContentProvider;
73
import org.eclipse.ui.model.WorkbenchLabelProvider;
80
import org.eclipse.ui.model.WorkbenchLabelProvider;
74
import org.eclipse.ui.views.navigator.ResourceComparator;
81
import org.eclipse.ui.views.navigator.ResourceComparator;
Lines 91-96 Link Here
91
		dialog.setMinimumPageSize(INITIAL_WIDTH, INITIAL_HEIGHT);
98
		dialog.setMinimumPageSize(INITIAL_WIDTH, INITIAL_HEIGHT);
92
		dialog.open();
99
		dialog.open();
93
	}
100
	}
101
	public static void run(DiffNode diff, Shell shell) {
102
		final String title = CompareMessages.GenerateLocalDiff_title;
103
		final GenerateDiffFileWizard wizard = new GenerateDiffFileWizard(diff);
104
		wizard.setWindowTitle(title);
105
		WizardDialog dialog = new WizardDialog(shell, wizard);
106
		dialog.setMinimumPageSize(INITIAL_WIDTH, INITIAL_HEIGHT);
107
		dialog.setBlockOnOpen(false);
108
		dialog.open();
109
		
110
	}
94
111
95
	protected class DirectionSelectionPage extends WizardPage {
112
	protected class DirectionSelectionPage extends WizardPage {
96
113
Lines 213-218 Link Here
213
		 * The default values store used to initialize the selections.
230
		 * The default values store used to initialize the selections.
214
		 */
231
		 */
215
		private final DefaultValuesStore store;
232
		private final DefaultValuesStore store;
233
//		private LocalPatchParticipant fParticipant;
216
234
217
235
218
		class LocationPageContentProvider extends BaseWorkbenchContentProvider {
236
		class LocationPageContentProvider extends BaseWorkbenchContentProvider {
Lines 623-629 Link Here
623
		public void createControl(Composite parent) {
641
		public void createControl(Composite parent) {
624
642
625
			final Composite composite= new Composite(parent, SWT.NULL);
643
			final Composite composite= new Composite(parent, SWT.NULL);
626
			composite.setLayout(new GridLayout());
644
			GridLayout lay = new GridLayout();
645
			lay.verticalSpacing = 15;
646
			composite.setLayout(lay);
627
			setControl(composite);
647
			setControl(composite);
628
			initializeDialogUnits(composite);
648
			initializeDialogUnits(composite);
629
649
Lines 632-640 Link Here
632
652
633
			//Create a location group
653
			//Create a location group
634
			setupLocationControls(composite);
654
			setupLocationControls(composite);
635
655
			
636
			initializeDefaultValues();
656
			initializeDefaultValues();
637
657
			
658
			
659
			if(startNode != null) {
660
				if(directionSelectionPage.isRightToLeft()) {
661
					CheckboxTreeViewer viewer = new CheckboxTreeViewer(composite, SWT.CHECK | SWT.H_SCROLL
662
							  | SWT.V_SCROLL | SWT.BORDER | SWT.HORIZONTAL);
663
					
664
					viewer.getControl().setLayoutData(new GridData(GridData.FILL_BOTH));
665
					viewer.setContentProvider(new LocalChangesContentProvider(leftResource));
666
					viewer.setLabelProvider(new LocalChangesLabelProvider());
667
					viewer.setInput(leftResource.getWorkspace().getRoot());
668
				} else {
669
					CheckboxTreeViewer viewer = new CheckboxTreeViewer(composite, SWT.CHECK | SWT.H_SCROLL
670
							  | SWT.V_SCROLL | SWT.BORDER | SWT.HORIZONTAL);
671
					viewer.getControl().setLayoutData(new GridData(GridData.FILL_BOTH));
672
					viewer.setContentProvider(new LocalChangesContentProvider(rightResource));
673
					viewer.setLabelProvider(new LocalChangesLabelProvider());
674
					viewer.setInput(leftResource.getWorkspace().getRoot());
675
				}					
676
			}
677
			
638
			Dialog.applyDialogFont(parent);
678
			Dialog.applyDialogFont(parent);
639
679
640
			validatePage();
680
			validatePage();
Lines 642-648 Link Here
642
			updateEnablements();
682
			updateEnablements();
643
			setupListeners();
683
			setupListeners();
644
		}
684
		}
645
685
		
686
		
646
		/**
687
		/**
647
		 * Setup the controls for the location.
688
		 * Setup the controls for the location.
648
		 */
689
		 */
Lines 1209-1214 Link Here
1209
	private Text unified_customRelativeText;
1250
	private Text unified_customRelativeText;
1210
	private Button unified_customRelativeOption;
1251
	private Button unified_customRelativeOption;
1211
1252
1253
	private IResource rightResource;
1254
	private IResource leftResource;
1255
	
1212
	public GenerateDiffFileWizard() {
1256
	public GenerateDiffFileWizard() {
1213
		super();
1257
		super();
1214
		setWindowTitle(CompareMessages.GenerateLocalDiff_title);
1258
		setWindowTitle(CompareMessages.GenerateLocalDiff_title);
Lines 1216-1221 Link Here
1216
		defaultValuesStore = new DefaultValuesStore();
1260
		defaultValuesStore = new DefaultValuesStore();
1217
	}
1261
	}
1218
1262
1263
	private DiffNode startNode;
1264
	
1265
	public GenerateDiffFileWizard(DiffNode diff) {
1266
		this();
1267
		startNode = diff;
1268
		ITypedElement left= diff.getLeft();
1269
		if (left instanceof BufferedResourceNode) {
1270
		    BufferedResourceNode bn= (BufferedResourceNode) left;
1271
		        IResource resource= bn.getResource();
1272
		        leftResource = resource;
1273
		        leftPath = resource.getFullPath().toString();
1274
		}
1275
		ITypedElement right= diff.getRight();
1276
		if (right instanceof BufferedResourceNode) {
1277
		    BufferedResourceNode bn= (BufferedResourceNode) right;
1278
		        IResource resource= bn.getResource();
1279
		        rightResource = resource;
1280
		        rightPath = resource.getFullPath().toString();
1281
		}
1282
		
1283
	}
1284
	
1219
	public GenerateDiffFileWizard(DocumentMerger merger, boolean rightToLeft) {
1285
	public GenerateDiffFileWizard(DocumentMerger merger, boolean rightToLeft) {
1220
		this();
1286
		this();
1221
		this.merger = merger;
1287
		this.merger = merger;
Lines 1224-1229 Link Here
1224
		this.leftPath = merger.getCompareConfiguration().getLeftLabel(leftDoc);
1290
		this.leftPath = merger.getCompareConfiguration().getLeftLabel(leftDoc);
1225
		this.rightPath = merger.getCompareConfiguration().getRightLabel(rightDoc);
1291
		this.rightPath = merger.getCompareConfiguration().getRightLabel(rightDoc);
1226
		this.rightToLeft = rightToLeft;
1292
		this.rightToLeft = rightToLeft;
1293
		IWorkbenchPart workbenchPart = merger.getCompareConfiguration().getContainer().getWorkbenchPart();
1294
		
1295
		if(workbenchPart instanceof CompareEditor) {
1296
						
1297
			CompareEditor editor = (CompareEditor)workbenchPart;
1298
			
1299
			CompareEditorInput input = (CompareEditorInput)editor.getEditorInput();
1300
			input.getCompareResult();
1301
			if(input.getCompareResult() instanceof ICompareInput) {
1302
				ICompareInput node = (ICompareInput)input.getCompareResult();
1303
//				ResourceNode leftResNode = (ResourceNode)node.getLeft();
1304
//				ResourceNode rightResNode = (ResourceNode)node.getRight();		
1305
				
1306
				leftResource = ((ResourceNode)node.getLeft()).getResource();
1307
				rightResource = ((ResourceNode)node.getRight()).getResource();
1308
			}
1309
			
1310
		}
1227
	}
1311
	}
1228
1312
1229
	public void addPages() {
1313
	public void addPages() {
Lines 1644-1647 Link Here
1644
		}
1728
		}
1645
	}
1729
	}
1646
1730
1731
1732
1647
}
1733
}
(-)compare/org/eclipse/compare/internal/CompareMessages.properties (-1 / +2 lines)
Lines 145-150 Link Here
145
CompareWithOtherResourceDialog_workspaceMainButton=Browse...
145
CompareWithOtherResourceDialog_workspaceMainButton=Browse...
146
CompareWithOtherResourceDialog_workspaceRadioButton=Workspace
146
CompareWithOtherResourceDialog_workspaceRadioButton=Workspace
147
147
148
CreatePatchActionTitle=Create Patch...
148
WorkspacePatchDialogTitle=Set a Patch Location
149
WorkspacePatchDialogTitle=Set a Patch Location
149
WorkspacePatchDialogDescription=Select a folder in the workspace and enter a name for the patch.
150
WorkspacePatchDialogDescription=Select a folder in the workspace and enter a name for the patch.
150
Save_To_Clipboard_2=&Clipboard
151
Save_To_Clipboard_2=&Clipboard
Lines 188-194 Link Here
188
GenerateDiffFileWizard_13=Use only &file path:
189
GenerateDiffFileWizard_13=Use only &file path:
189
GenerateDiffFileWizard_Left=&Left:
190
GenerateDiffFileWizard_Left=&Left:
190
GenerateDiffFileWizard_Right=&Right:
191
GenerateDiffFileWizard_Right=&Right:
191
CreatePatchActionTitle=Create Patch...
192
CreatePatchActionTitle=Create Patch
192
WorkspacePatchDialogTitle=Set a Patch Location
193
WorkspacePatchDialogTitle=Set a Patch Location
193
WorkspacePatchDialogDescription=Select a folder in the workspace and enter a name for the patch.
194
WorkspacePatchDialogDescription=Select a folder in the workspace and enter a name for the patch.
194
Save_To_Clipboard_2=&Clipboard
195
Save_To_Clipboard_2=&Clipboard
(-)compare/org/eclipse/compare/internal/ResourceCompareInput.java (+5 lines)
Lines 129-134 Link Here
129
	ResourceCompareInput(CompareConfiguration config) {
129
	ResourceCompareInput(CompareConfiguration config) {
130
		super(config);
130
		super(config);
131
	}
131
	}
132
	
133
	public Object createDiff(){
134
		Differencer dif = new Differencer();
135
		return dif.findDifferences(false, null, null, null, fLeft, fRight);
136
	}
132
			
137
			
133
	public Viewer createDiffViewer(Composite parent) {
138
	public Viewer createDiffViewer(Composite parent) {
134
		fDiffViewer= new DiffTreeViewer(parent, getCompareConfiguration()) {
139
		fDiffViewer= new DiffTreeViewer(parent, getCompareConfiguration()) {
(-).settings/org.eclipse.jdt.core.prefs (-2 / +3 lines)
Lines 1-10 Link Here
1
#Wed Nov 15 09:22:56 EST 2006
1
#Tue Feb 17 23:31:01 CET 2009
2
eclipse.preferences.version=1
2
eclipse.preferences.version=1
3
org.eclipse.jdt.core.builder.cleanOutputFolder=clean
3
org.eclipse.jdt.core.builder.cleanOutputFolder=clean
4
org.eclipse.jdt.core.builder.duplicateResourceTask=warning
4
org.eclipse.jdt.core.builder.duplicateResourceTask=warning
5
org.eclipse.jdt.core.builder.invalidClasspath=abort
5
org.eclipse.jdt.core.builder.invalidClasspath=abort
6
org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
6
org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch
7
org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch
7
org.eclipse.jdt.core.circularClasspath=error
8
org.eclipse.jdt.core.circularClasspath=warning
8
org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
9
org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
9
org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
10
org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
10
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled
11
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled
(-).classpath (-1 / +1 lines)
Lines 1-6 Link Here
1
<?xml version="1.0" encoding="UTF-8"?>
1
<?xml version="1.0" encoding="UTF-8"?>
2
<classpath>
2
<classpath>
3
	<classpathentry kind="src" path="compare/"/>
3
	<classpathentry excluding="participant/" kind="src" path="compare"/>
4
	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.4"/>
4
	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.4"/>
5
	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
5
	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
6
	<classpathentry kind="output" path="bin"/>
6
	<classpathentry kind="output" path="bin"/>
(-)plugin.xml (+23 lines)
Lines 192-197 Link Here
192
               id="compareWithMenu">
192
               id="compareWithMenu">
193
            <separator
193
            <separator
194
                  name="compareWithGroup">
194
                  name="compareWithGroup">
195
	    </separator>
196
            <separator
197
                  name="localPatchGroup">
195
            </separator>
198
            </separator>
196
         </menu>
199
         </menu>
197
      </objectContribution>
200
      </objectContribution>
Lines 280-285 Link Here
280
               id="addFromHistoryAction">
283
               id="addFromHistoryAction">
281
         </action>
284
         </action>
282
      </objectContribution>
285
      </objectContribution>
286
      <objectContribution
287
            adaptable="true"
288
            id="org.eclipse.compare.GenerateDiffAction"
289
            objectClass="org.eclipse.core.resources.IResource">
290
         <action
291
         	   label="%CreateLocalPatch.label"	
292
         	   tooltip="%CreateLocalPatch.tooltip"
293
               class="org.eclipse.compare.internal.GenerateDiffAction"
294
               enablesFor="2"
295
               id="generateDiff"
296
               menubarPath="compareWithMenu/localPatchGroup">
297
         </action>
298
         <menu
299
               id="creatLocalPatch"
300
               label="%CreateLocalPatch.label">
301
            <separator
302
                  name="org.eclipse.compare.generateDiffSeparator">
303
            </separator>
304
         </menu>
305
      </objectContribution>
283
   </extension>
306
   </extension>
284
   
307
   
285
   <extension
308
   <extension
(-)plugin.properties (+3 lines)
Lines 91-96 Link Here
91
CompareWithHistoryAction.label= &Local History...
91
CompareWithHistoryAction.label= &Local History...
92
CompareWithHistoryAction.tooltip= Compare the Selected Resource with Local History
92
CompareWithHistoryAction.tooltip= Compare the Selected Resource with Local History
93
93
94
CreateLocalPatch.label= &Create Local Patch
95
CreateLocalPatch.tooltip= Create Patch from the Selected Resource
96
94
ReplaceWithMenu.label= Rep&lace With
97
ReplaceWithMenu.label= Rep&lace With
95
98
96
ReplaceFromHistoryAction.label= &Local History...
99
ReplaceFromHistoryAction.label= &Local History...
(-)compare/org/eclipse/compare/contentmergeviewer/TextMergeViewer.java (-1 / +1 lines)
Lines 2544-2550 Link Here
2544
	}
2544
	}
2545
2545
2546
	private void contributeChangeEncodingAction(MergeSourceViewer viewer) {
2546
	private void contributeChangeEncodingAction(MergeSourceViewer viewer) {
2547
		IAction action = new ChangeEncodingAction(getTextEditorAdapter());
2547
		IAction action = new ChangeEncodingAction(null, null, getTextEditorAdapter());
2548
		viewer.addAction(MergeSourceViewer.CHANGE_ENCODING_ID, action);
2548
		viewer.addAction(MergeSourceViewer.CHANGE_ENCODING_ID, action);
2549
	}
2549
	}
2550
2550
(-)META-INF/MANIFEST.MF (-2 / +2 lines)
Lines 25-30 Link Here
25
 org.eclipse.ui.forms;bundle-version="[3.2.0,4.0.0)",
25
 org.eclipse.ui.forms;bundle-version="[3.2.0,4.0.0)",
26
 org.eclipse.compare.core;bundle-version="[1.0.0,2.0.0)";visibility:=reexport
26
 org.eclipse.compare.core;bundle-version="[1.0.0,2.0.0)";visibility:=reexport
27
Bundle-ActivationPolicy: lazy
27
Bundle-ActivationPolicy: lazy
28
Import-Package: com.ibm.icu.util,
28
Import-Package: com.ibm.icu.text,
29
 com.ibm.icu.text
29
 com.ibm.icu.util
30
Bundle-RequiredExecutionEnvironment: J2SE-1.4
30
Bundle-RequiredExecutionEnvironment: J2SE-1.4
(-)compare/org/eclipse/compare/internal/LocalChangesLabelProvider.java (+53 lines)
Added Link Here
1
package org.eclipse.compare.internal;
2
3
import org.eclipse.core.internal.resources.File;
4
import org.eclipse.core.internal.resources.Folder;
5
import org.eclipse.core.resources.IResource;
6
import org.eclipse.jface.viewers.ILabelProvider;
7
import org.eclipse.jface.viewers.ILabelProviderListener;
8
import org.eclipse.swt.graphics.Image;
9
import org.eclipse.ui.ISharedImages;
10
import org.eclipse.ui.PlatformUI;
11
12
public class LocalChangesLabelProvider implements ILabelProvider {
13
14
	public Image getImage(Object element) {
15
		if(element instanceof File) {
16
			return PlatformUI.getWorkbench().getSharedImages().getImage(
17
					  ISharedImages.IMG_OBJ_FILE);	
18
		} else if(element instanceof Folder) {
19
			return PlatformUI.getWorkbench().getSharedImages().getImage(
20
					  ISharedImages.IMG_OBJ_FOLDER);	
21
		}
22
		return PlatformUI.getWorkbench().getSharedImages().getImage(
23
				  ISharedImages.IMG_OBJ_ELEMENT);	
24
		
25
	}
26
27
	public String getText(Object element) {
28
		 if (element instanceof IResource)
29
			  return ((IResource)element).getProjectRelativePath().toString();
30
		 return null;
31
	}
32
33
	public void addListener(ILabelProviderListener listener) {
34
		// TODO Auto-generated method stub
35
		
36
	}
37
38
	public void dispose() {
39
		// TODO Auto-generated method stub
40
		
41
	}
42
43
	public boolean isLabelProperty(Object element, String property) {
44
		// TODO Auto-generated method stub
45
		return false;
46
	}
47
48
	public void removeListener(ILabelProviderListener listener) {
49
		// TODO Auto-generated method stub
50
		
51
	}
52
53
}
(-)compare/org/eclipse/compare/internal/LocalChangesContentProvider.java (+66 lines)
Added Link Here
1
package org.eclipse.compare.internal;
2
3
import org.eclipse.core.internal.resources.File;
4
import org.eclipse.core.resources.IContainer;
5
import org.eclipse.core.resources.IResource;
6
import org.eclipse.core.runtime.CoreException;
7
import org.eclipse.jface.viewers.ITreeContentProvider;
8
import org.eclipse.jface.viewers.Viewer;
9
10
public class LocalChangesContentProvider implements ITreeContentProvider {
11
12
	private IResource resource;
13
	
14
	public LocalChangesContentProvider(IResource resource) {
15
		super();
16
		this.resource = resource;
17
	}
18
	
19
	public Object[] getElements(Object inputElement) {
20
//		try {
21
//			return ((IContainer)inputElement).members();
22
			return new Object[] {resource};
23
//		} catch (CoreException e) {
24
//			// TODO Auto-generated catch block
25
//			e.printStackTrace();
26
//		}
27
//		return null;
28
	}
29
30
	public void dispose() {
31
		// TODO Auto-generated method stub
32
		
33
	}
34
35
	public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
36
		// TODO Auto-generated method stub
37
		
38
	}
39
40
	public Object[] getChildren(Object parentElement) {
41
		try {
42
			return ((IContainer)parentElement).members();
43
		} catch (CoreException e) {
44
			// TODO Auto-generated catch block
45
			e.printStackTrace();
46
		}
47
		return null;
48
	}
49
50
	public Object getParent(Object element) {
51
		return ((IResource)element).getParent();
52
	}
53
54
	public boolean hasChildren(Object element) {
55
		if(element instanceof File) 
56
			return false;
57
		try {
58
			return ((IContainer)element).members().length > 0;
59
		} catch (CoreException e) {
60
			// TODO Auto-generated catch block
61
			e.printStackTrace();
62
		}
63
		return false;
64
	}
65
66
}
(-)compare/org/eclipse/compare/internal/GenerateDiffAction.java (+143 lines)
Added Link Here
1
/*******************************************************************************
2
 * Copyright (c) 2008 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
 *     Krzysztof Poglodzinski (intuicje@gmail.com) - initial API and implementation
10
 *     Mariusz Tanski (mariusztanski@gmail.com) - initial API and implementation
11
 *     Kacper Zdanowicz (kacper.zdanowicz@gmail.com) - initial API and implementation
12
 *******************************************************************************/
13
package org.eclipse.compare.internal;
14
15
//import java.io.InputStream;
16
//import java.util.ArrayList;
17
18
import org.eclipse.compare.CompareConfiguration;
19
import org.eclipse.compare.contentmergeviewer.ITokenComparator;
20
import org.eclipse.compare.contentmergeviewer.TokenComparator;
21
import org.eclipse.compare.internal.merge.DocumentMerger.IDocumentMergerInput;
22
import org.eclipse.compare.structuremergeviewer.DiffNode;
23
import org.eclipse.core.resources.IResource;
24
import org.eclipse.jface.action.IAction;
25
import org.eclipse.jface.text.IDocument;
26
import org.eclipse.jface.text.Position;
27
import org.eclipse.jface.viewers.ISelection;
28
import org.eclipse.swt.widgets.Shell;
29
import org.eclipse.ui.IObjectActionDelegate;
30
import org.eclipse.ui.IWorkbenchPage;
31
import org.eclipse.ui.IWorkbenchPart;
32
33
34
/*
35
 * The "Generate diff" action
36
 */
37
public class GenerateDiffAction extends BaseCompareAction implements IObjectActionDelegate {
38
39
	protected ResourceCompareInput fInput;
40
	protected IWorkbenchPage fWorkbenchPage;
41
	protected boolean showSelectAncestorDialog = true;
42
	
43
	public void run(ISelection selection) {
44
		
45
		IResource[] ir = Utilities.getResources(selection);
46
		Shell shell = fWorkbenchPage.getWorkbenchWindow().getShell();
47
		boolean ok = fInput.setSelection(selection,shell, showSelectAncestorDialog);
48
		if (!ok) return;
49
		
50
		Object rootDiffNode = fInput.createDiff();
51
		DiffNode diff;
52
		if (rootDiffNode instanceof DiffNode){
53
			diff = (DiffNode) rootDiffNode;
54
			GenerateDiffFileWizard.run(diff, shell);
55
		}
56
57
	}
58
59
	protected boolean isEnabled(ISelection selection) {
60
		if (fInput == null) {
61
			CompareConfiguration cc= new CompareConfiguration();
62
			cc.setProperty(CompareEditor.CONFIRM_SAVE_PROPERTY, new Boolean(false));											
63
			fInput= new ResourceCompareInput(cc);
64
		}
65
		return fInput.isEnabled(selection);
66
	}
67
68
	public void setActivePart(IAction action, IWorkbenchPart targetPart) {
69
		fWorkbenchPage= targetPart.getSite().getPage();
70
	}
71
	
72
	
73
		class LocalDiffMergerInput implements IDocumentMergerInput {
74
		        
75
			private IDocument leftDoc;
76
			private IDocument rightDoc;
77
			
78
			public LocalDiffMergerInput(IDocument leftDoc, IDocument rightDoc) {
79
				this.leftDoc = leftDoc ;
80
				this.rightDoc= rightDoc;
81
			}
82
				
83
			public ITokenComparator createTokenComparator(String line) {
84
		            return new TokenComparator(line);
85
		    }
86
		    public CompareConfiguration getCompareConfiguration() {
87
		            return new CompareConfiguration();
88
		    }
89
		    public IDocument getDocument(char contributor) {
90
		            switch (contributor) {
91
		            case MergeViewerContentProvider.LEFT_CONTRIBUTOR:
92
		                    return leftDoc;
93
		            case MergeViewerContentProvider.RIGHT_CONTRIBUTOR:
94
		                    return rightDoc;
95
		            case MergeViewerContentProvider.ANCESTOR_CONTRIBUTOR: 
96
		                    return null;
97
		            }
98
		            return null;
99
		    }
100
		    public int getHunkStart() {
101
		            return 0;
102
		    }
103
		    public Position getRegion(char contributor) {
104
		            switch (contributor) {
105
		            case MergeViewerContentProvider.LEFT_CONTRIBUTOR:
106
		                    return new Position(0, leftDoc.getLength());
107
		            case MergeViewerContentProvider.RIGHT_CONTRIBUTOR:
108
		                    return new Position(0, rightDoc.getLength());
109
		            case MergeViewerContentProvider.ANCESTOR_CONTRIBUTOR:
110
		                    return new Position(0, 0);
111
		            }
112
		            return null;
113
		    }
114
		    public boolean isHunkOnLeft() {
115
		//            ITypedElement left = ((ICompareInput)getInput()).getRight();
116
		//            return left != null && Utilities.getAdapter(left, IHunk.class) != null;
117
		    	return false;
118
		    }
119
		    public boolean isIgnoreAncestor() {
120
		//            return TextMergeViewer.this.isIgnoreAncestor();
121
		    	return true;
122
		    }
123
		    public boolean isPatchHunk() {
124
		//            return TextMergeViewer.this.isPatchHunk();
125
		    	return false;
126
		    }
127
		
128
		    public boolean isShowPseudoConflicts() {
129
		//            return fShowPseudoConflicts;
130
		    	return false;
131
		    }
132
		    public boolean isThreeWay() {
133
		//            return TextMergeViewer.this.isThreeWay();
134
		    	return false;
135
		    }
136
		    public boolean isPatchHunkOk() {
137
		//            return TextMergeViewer.this.isPatchHunkOk();
138
		    	return false;
139
		    }
140
		    
141
		}
142
}
143
(-).settings/org.eclipse.jdt.launching.prefs (+3 lines)
Added Link Here
1
#Mon Feb 09 18:54:36 CET 2009
2
eclipse.preferences.version=1
3
org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=warning

Return to bug 71374