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

Collapse All | Expand All

(-)ui/org/eclipse/jdt/internal/ui/compare/JavaMergeViewer.java (+75 lines)
Lines 13-28 Link Here
13
import java.util.ArrayList;
13
import java.util.ArrayList;
14
import java.util.Iterator;
14
import java.util.Iterator;
15
15
16
import org.eclipse.team.ui.synchronize.SyncInfoCompareInput;
17
16
import org.eclipse.swt.SWT;
18
import org.eclipse.swt.SWT;
17
import org.eclipse.swt.events.DisposeEvent;
19
import org.eclipse.swt.events.DisposeEvent;
18
import org.eclipse.swt.widgets.Composite;
20
import org.eclipse.swt.widgets.Composite;
19
21
22
import org.eclipse.core.resources.IFile;
20
import org.eclipse.core.resources.IResource;
23
import org.eclipse.core.resources.IResource;
21
import org.eclipse.core.resources.ProjectScope;
24
import org.eclipse.core.resources.ProjectScope;
22
25
26
import org.eclipse.jface.action.IAction;
23
import org.eclipse.jface.preference.IPreferenceStore;
27
import org.eclipse.jface.preference.IPreferenceStore;
24
import org.eclipse.jface.util.IPropertyChangeListener;
28
import org.eclipse.jface.util.IPropertyChangeListener;
25
import org.eclipse.jface.util.PropertyChangeEvent;
29
import org.eclipse.jface.util.PropertyChangeEvent;
30
import org.eclipse.jface.viewers.ISelectionProvider;
26
31
27
import org.eclipse.jface.text.BadLocationException;
32
import org.eclipse.jface.text.BadLocationException;
28
import org.eclipse.jface.text.IDocument;
33
import org.eclipse.jface.text.IDocument;
Lines 31-37 Link Here
31
import org.eclipse.jface.text.TextViewer;
36
import org.eclipse.jface.text.TextViewer;
32
import org.eclipse.jface.text.source.SourceViewer;
37
import org.eclipse.jface.text.source.SourceViewer;
33
38
39
import org.eclipse.ui.IEditorInput;
40
import org.eclipse.ui.IEditorSite;
41
import org.eclipse.ui.IWorkbenchPartSite;
42
import org.eclipse.ui.part.FileEditorInput;
43
34
import org.eclipse.ui.texteditor.ChainedPreferenceStore;
44
import org.eclipse.ui.texteditor.ChainedPreferenceStore;
45
import org.eclipse.ui.texteditor.ITextEditor;
35
46
36
import org.eclipse.ui.editors.text.EditorsUI;
47
import org.eclipse.ui.editors.text.EditorsUI;
37
48
Lines 48-59 Link Here
48
import org.eclipse.jdt.core.IJavaProject;
59
import org.eclipse.jdt.core.IJavaProject;
49
import org.eclipse.jdt.core.JavaCore;
60
import org.eclipse.jdt.core.JavaCore;
50
61
62
import org.eclipse.jdt.ui.actions.IJavaEditorActionDefinitionIds;
63
import org.eclipse.jdt.ui.actions.OpenAction;
64
import org.eclipse.jdt.ui.actions.OpenTypeHierarchyAction;
51
import org.eclipse.jdt.ui.text.IJavaPartitions;
65
import org.eclipse.jdt.ui.text.IJavaPartitions;
52
import org.eclipse.jdt.ui.text.JavaSourceViewerConfiguration;
66
import org.eclipse.jdt.ui.text.JavaSourceViewerConfiguration;
53
import org.eclipse.jdt.ui.text.JavaTextTools;
67
import org.eclipse.jdt.ui.text.JavaTextTools;
54
68
55
import org.eclipse.jdt.internal.ui.JavaPlugin;
69
import org.eclipse.jdt.internal.ui.JavaPlugin;
56
import org.eclipse.jdt.internal.ui.compare.JavaTokenComparator.ITokenComparatorFactory;
70
import org.eclipse.jdt.internal.ui.compare.JavaTokenComparator.ITokenComparatorFactory;
71
import org.eclipse.jdt.internal.ui.javaeditor.JavaEditor;
57
import org.eclipse.jdt.internal.ui.text.PreferencesAdapter;
72
import org.eclipse.jdt.internal.ui.text.PreferencesAdapter;
58
73
59
74
Lines 369-372 Link Here
369
			fPreferenceStore.addPropertyChangeListener(fPreferenceChangeListener);
384
			fPreferenceStore.addPropertyChangeListener(fPreferenceChangeListener);
370
		}
385
		}
371
	}
386
	}
387
	
388
	protected IAction contributeActionHook(ITextEditor textEditor) {
389
		OpenAction action= new OpenAction(new JavaEditorAdapter(textEditor));
390
		action.setActionDefinitionId(IJavaEditorActionDefinitionIds.OPEN_EDITOR);
391
		return action;
392
	}
393
	
394
	protected IAction contributeActionHook2(ITextEditor textEditor) {
395
		OpenTypeHierarchyAction action= new OpenTypeHierarchyAction(new JavaEditorAdapter(textEditor));
396
		action.setActionDefinitionId(IJavaEditorActionDefinitionIds.OPEN_HIERARCHY);
397
		return action;
398
	}
399
	
400
	private class JavaEditorAdapter extends JavaEditor {
401
402
		ITextEditor fTextEditor;
403
404
		public JavaEditorAdapter(ITextEditor textEditor) {
405
			fTextEditor = textEditor;
406
		}
407
		
408
		public IEditorSite getEditorSite() {
409
			/* 
410
			 * IWorkbenchSite returned by org.eclipse.compare.internal.MergeSourceViewer.TextEditorAdapter
411
			 * (fTextEditor) is an instance of IEditorSite since 
412
			 * org.eclipse.compare.internal.CompareEditor.EditorCompareContainer (ICompareContainer)
413
			 * we're referring to returns CompareEditor.this (IEditorSite) when asked for WorkbenchPart 
414
			 */
415
			return (IEditorSite) fTextEditor.getSite();
416
		}
417
		
418
		public IEditorInput getEditorInput() {
419
			IEditorInput input= fTextEditor.getEditorInput();
420
			// TODO: use something more reliable and/or general
421
			if (input instanceof SyncInfoCompareInput) {
422
				SyncInfoCompareInput sici = (SyncInfoCompareInput) input;
423
				return new FileEditorInput((IFile)sici.getAdapter(IFile.class));
424
			}
425
			return null;
426
		}
427
		
428
		public IWorkbenchPartSite getSite() {
429
			return fTextEditor.getSite();
430
		}
431
		
432
		public ISelectionProvider getSelectionProvider() {
433
			return fTextEditor.getSelectionProvider();
434
		}
435
		
436
		protected IJavaElement getCorrespondingElement(IJavaElement element) {
437
			// defining interface method
438
			return null;
439
		}
440
441
		protected IJavaElement getElementAt(int offset) {
442
			// defining interface method
443
			return null;
444
		}
445
	}
446
	
372
}
447
}
(-)compare/org/eclipse/compare/internal/MergeSourceViewer.java (-1 / +8 lines)
Lines 99-104 Link Here
99
	public static final String SAVE_ID= "save"; //$NON-NLS-1$
99
	public static final String SAVE_ID= "save"; //$NON-NLS-1$
100
	public static final String FIND_ID= "find"; //$NON-NLS-1$
100
	public static final String FIND_ID= "find"; //$NON-NLS-1$
101
	public static final String GOTO_LINE_ID= "gotoLine"; //$NON-NLS-1$
101
	public static final String GOTO_LINE_ID= "gotoLine"; //$NON-NLS-1$
102
	// Java only
103
	public static final String OPEN_DECLARATION_ID= "openDeclaration"; //$NON-NLS-1$
104
	public static final String OPEN_TYPE_HIERARCHY_ID= "openTypeHierarchy"; //$NON-NLS-1$
102
105
103
	class TextOperationAction extends MergeViewerAction {
106
	class TextOperationAction extends MergeViewerAction {
104
		
107
		
Lines 326-331 Link Here
326
			return false;
329
			return false;
327
		}
330
		}
328
331
332
		// returns an instance of CompareEditorInput or null
329
		public IEditorInput getEditorInput() {
333
		public IEditorInput getEditorInput() {
330
			if (MergeSourceViewer.this.fContainer.getWorkbenchPart() instanceof IEditorPart)
334
			if (MergeSourceViewer.this.fContainer.getWorkbenchPart() instanceof IEditorPart)
331
				return ((IEditorPart) MergeSourceViewer.this.fContainer.getWorkbenchPart()).getEditorInput();
335
				return ((IEditorPart) MergeSourceViewer.this.fContainer.getWorkbenchPart()).getEditorInput();
Lines 780-786 Link Here
780
		if (fAddSaveAction)
784
		if (fAddSaveAction)
781
			addMenu(menu, SAVE_ID);
785
			addMenu(menu, SAVE_ID);
782
		menu.add(new Separator("file")); //$NON-NLS-1$
786
		menu.add(new Separator("file")); //$NON-NLS-1$
783
	
787
		// TODO: add what?
788
		addMenu(menu, OPEN_DECLARATION_ID);
789
		addMenu(menu, OPEN_TYPE_HIERARCHY_ID);
790
784
		menu.add(new Separator("ccp")); //$NON-NLS-1$
791
		menu.add(new Separator("ccp")); //$NON-NLS-1$
785
		addMenu(menu, CUT_ID);
792
		addMenu(menu, CUT_ID);
786
		addMenu(menu, COPY_ID);
793
		addMenu(menu, COPY_ID);
(-)compare/org/eclipse/compare/contentmergeviewer/TextMergeViewer.java (-2 / +34 lines)
Lines 160-165 Link Here
160
import org.eclipse.ui.texteditor.IDocumentProvider;
160
import org.eclipse.ui.texteditor.IDocumentProvider;
161
import org.eclipse.ui.texteditor.IDocumentProviderExtension;
161
import org.eclipse.ui.texteditor.IDocumentProviderExtension;
162
import org.eclipse.ui.texteditor.IElementStateListener;
162
import org.eclipse.ui.texteditor.IElementStateListener;
163
import org.eclipse.ui.texteditor.ITextEditor;
163
import org.eclipse.ui.texteditor.ITextEditorActionDefinitionIds;
164
import org.eclipse.ui.texteditor.ITextEditorActionDefinitionIds;
164
import org.eclipse.ui.texteditor.IWorkbenchActionDefinitionIds;
165
import org.eclipse.ui.texteditor.IWorkbenchActionDefinitionIds;
165
166
Lines 235-241 Link Here
235
		ActionFactory.SELECT_ALL.getId(),
236
		ActionFactory.SELECT_ALL.getId(),
236
		ActionFactory.SAVE.getId(),
237
		ActionFactory.SAVE.getId(),
237
		ActionFactory.FIND.getId(),
238
		ActionFactory.FIND.getId(),
238
		ITextEditorActionDefinitionIds.LINE_GOTO
239
		ITextEditorActionDefinitionIds.LINE_GOTO,
240
		// IJavaEditorActionDefinitionIds.OPEN_EDITOR
241
		"org.eclipse.jdt.ui.edit.text.java.open.editor", //$NON-NLS-1$
242
		// IJavaEditorActionDefinitionIds.OPEN_HIERARCHY
243
		"org.eclipse.jdt.ui.edit.text.java.open.type.hierarchy" //$NON-NLS-1$
244
		
239
	};
245
	};
240
	private static final String[] TEXT_ACTIONS= {
246
	private static final String[] TEXT_ACTIONS= {
241
		MergeSourceViewer.UNDO_ID,
247
		MergeSourceViewer.UNDO_ID,
Lines 247-253 Link Here
247
		MergeSourceViewer.SELECT_ALL_ID,
253
		MergeSourceViewer.SELECT_ALL_ID,
248
		MergeSourceViewer.SAVE_ID,
254
		MergeSourceViewer.SAVE_ID,
249
		MergeSourceViewer.FIND_ID, 
255
		MergeSourceViewer.FIND_ID, 
250
		MergeSourceViewer.GOTO_LINE_ID
256
		MergeSourceViewer.GOTO_LINE_ID,
257
		MergeSourceViewer.OPEN_DECLARATION_ID,
258
		MergeSourceViewer.OPEN_TYPE_HIERARCHY_ID
251
	};
259
	};
252
					
260
					
253
	private static final String BUNDLE_NAME= "org.eclipse.compare.contentmergeviewer.TextMergeViewerResources"; //$NON-NLS-1$
261
	private static final String BUNDLE_NAME= "org.eclipse.compare.contentmergeviewer.TextMergeViewerResources"; //$NON-NLS-1$
Lines 2283-2288 Link Here
2283
2291
2284
		configureTextViewer(part);
2292
		configureTextViewer(part);
2285
		
2293
		
2294
		contributeAction(part);
2295
2286
		return part;
2296
		return part;
2287
	}
2297
	}
2288
2298
Lines 2302-2307 Link Here
2302
		action.setActionDefinitionId(ITextEditorActionDefinitionIds.LINE_GOTO);
2312
		action.setActionDefinitionId(ITextEditorActionDefinitionIds.LINE_GOTO);
2303
		viewer.addAction(MergeSourceViewer.GOTO_LINE_ID, action);
2313
		viewer.addAction(MergeSourceViewer.GOTO_LINE_ID, action);
2304
	}
2314
	}
2315
	
2316
	// TODO: ugly
2317
	private void contributeAction(MergeSourceViewer viewer) {
2318
		IAction action = contributeActionHook(viewer.getTextEditorAdapter());
2319
		if (action != null)
2320
			viewer.addAction(MergeSourceViewer.OPEN_DECLARATION_ID, action);
2321
		IAction action2 = contributeActionHook2(viewer.getTextEditorAdapter());
2322
		if (action2 != null)
2323
			viewer.addAction(MergeSourceViewer.OPEN_TYPE_HIERARCHY_ID, action2);
2324
	}
2325
	
2326
	// TODO: even uglier
2327
	protected IAction contributeActionHook(ITextEditor textEditor) {
2328
		// nothing here
2329
		return null;
2330
	}
2331
	
2332
	protected IAction contributeActionHook2(ITextEditor textEditor) {
2333
		// nothing here
2334
		return null;
2335
	}
2336
2305
2337
2306
	private void connectGlobalActions(final MergeSourceViewer part) {
2338
	private void connectGlobalActions(final MergeSourceViewer part) {
2307
		if (fHandlerService != null) {
2339
		if (fHandlerService != null) {

Return to bug 2845