diff options
author | Lucas Bullen | 2017-08-25 19:13:15 +0000 |
---|---|---|
committer | Lucas Bullen | 2017-08-31 15:25:27 +0000 |
commit | 15d0d12802084f3141bfdff8fe9136d1e3d691bb (patch) | |
tree | e5c2640d5936d25edd116d0feb3e914518dd6ff5 /org.eclipse.ui.genericeditor.tests/src/org | |
parent | 153d18f2ec4f8ffa11eadcd344ab8e0135574abb (diff) | |
download | eclipse.platform.text-15d0d12802084f3141bfdff8fe9136d1e3d691bb.tar.gz eclipse.platform.text-15d0d12802084f3141bfdff8fe9136d1e3d691bb.tar.xz eclipse.platform.text-15d0d12802084f3141bfdff8fe9136d1e3d691bb.zip |
Bug 521418 - [GE] support multiple reconcilers for same contentTypeI20170904-0230I20170903-2000I20170902-1500I20170901-2000I20170831-2000
Adds all reconcilers to the editor in ascending order of specificity
Change-Id: I2abc3097b517176333a758b0a0025e12ac47a21e
Signed-off-by: Lucas Bullen <lbullen@redhat.com>
Diffstat (limited to 'org.eclipse.ui.genericeditor.tests/src/org')
-rw-r--r-- | org.eclipse.ui.genericeditor.tests/src/org/eclipse/ui/genericeditor/tests/ReconcilerTest.java | 27 | ||||
-rw-r--r-- | org.eclipse.ui.genericeditor.tests/src/org/eclipse/ui/genericeditor/tests/contributions/ReconcilerStrategyFirst.java (renamed from org.eclipse.ui.genericeditor.tests/src/org/eclipse/ui/genericeditor/tests/contributions/ReconcilerStrategy.java) | 6 | ||||
-rw-r--r-- | org.eclipse.ui.genericeditor.tests/src/org/eclipse/ui/genericeditor/tests/contributions/ReconcilerStrategySecond.java | 59 | ||||
-rw-r--r-- | org.eclipse.ui.genericeditor.tests/src/org/eclipse/ui/genericeditor/tests/contributions/TheReconcilerFirst.java (renamed from org.eclipse.ui.genericeditor.tests/src/org/eclipse/ui/genericeditor/tests/contributions/TheReconciler.java) | 7 | ||||
-rw-r--r-- | org.eclipse.ui.genericeditor.tests/src/org/eclipse/ui/genericeditor/tests/contributions/TheReconcilerSecond.java | 20 |
5 files changed, 104 insertions, 15 deletions
diff --git a/org.eclipse.ui.genericeditor.tests/src/org/eclipse/ui/genericeditor/tests/ReconcilerTest.java b/org.eclipse.ui.genericeditor.tests/src/org/eclipse/ui/genericeditor/tests/ReconcilerTest.java index 294ba6831ac..56c4a7cd43a 100644 --- a/org.eclipse.ui.genericeditor.tests/src/org/eclipse/ui/genericeditor/tests/ReconcilerTest.java +++ b/org.eclipse.ui.genericeditor.tests/src/org/eclipse/ui/genericeditor/tests/ReconcilerTest.java @@ -26,6 +26,8 @@ import org.eclipse.jface.text.IDocument; import org.eclipse.jface.text.tests.util.DisplayHelper; import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.genericeditor.tests.contributions.ReconcilerStrategyFirst; +import org.eclipse.ui.genericeditor.tests.contributions.ReconcilerStrategySecond; import org.eclipse.ui.internal.genericeditor.ExtensionBasedTextEditor; import org.eclipse.ui.part.FileEditorInput; @@ -37,7 +39,7 @@ public class ReconcilerTest extends AbstratGenericEditorTest { @Test public void testReconciler() throws Exception { - performTestOnEditor(); + performTestOnEditor(ReconcilerStrategyFirst.SEARCH_TERM, editor, ReconcilerStrategyFirst.REPLACEMENT); } @Test @@ -49,26 +51,35 @@ public class ReconcilerTest extends AbstratGenericEditorTest { secondFile.create(new ByteArrayInputStream("bar 'bar'".getBytes()), true, null); secondEditor = (ExtensionBasedTextEditor) PlatformUI.getWorkbench().getActiveWorkbenchWindow() .getActivePage().openEditor(new FileEditorInput(secondFile), "org.eclipse.ui.genericeditor.GenericEditor"); - performTestOnEditor(); + performTestOnEditor(ReconcilerStrategyFirst.SEARCH_TERM, editor, ReconcilerStrategyFirst.REPLACEMENT); + } + + @Test + public void testMultipleReconcilers() throws Exception { + IFile secondFile = project.getFile("bar.txt"); + secondFile.create(new ByteArrayInputStream("".getBytes()), true, null); + secondEditor = (ExtensionBasedTextEditor) PlatformUI.getWorkbench().getActiveWorkbenchWindow() + .getActivePage().openEditor(new FileEditorInput(secondFile), "org.eclipse.ui.genericeditor.GenericEditor"); + performTestOnEditor(ReconcilerStrategyFirst.SEARCH_TERM, secondEditor, ReconcilerStrategySecond.REPLACEMENT); } - private void performTestOnEditor() throws Exception { - IDocumentProvider dp = editor.getDocumentProvider(); - IDocument doc = dp.getDocument(editor.getEditorInput()); + private void performTestOnEditor(String startingText, ExtensionBasedTextEditor textEditor, String expectedText) throws Exception { + IDocumentProvider dp = textEditor.getDocumentProvider(); + IDocument doc = dp.getDocument(textEditor.getEditorInput()); - doc.set("foo"); + doc.set(startingText); new DisplayHelper() { @Override protected boolean condition() { try { - return !doc.get(0, doc.getLineLength(0)).contains("foo"); + return doc.get(0, doc.getLineLength(0)).contains(expectedText); } catch (BadLocationException e) { return false; } } }.waitForCondition(Display.getDefault().getActiveShell().getDisplay(), 2000); - Assert.assertTrue("file was not affected by reconciler", doc.get().contains("BAR")); + Assert.assertTrue("file was not affected by reconciler", doc.get().contains(expectedText)); } } diff --git a/org.eclipse.ui.genericeditor.tests/src/org/eclipse/ui/genericeditor/tests/contributions/ReconcilerStrategy.java b/org.eclipse.ui.genericeditor.tests/src/org/eclipse/ui/genericeditor/tests/contributions/ReconcilerStrategyFirst.java index dcb531448a6..8e86820ea43 100644 --- a/org.eclipse.ui.genericeditor.tests/src/org/eclipse/ui/genericeditor/tests/contributions/ReconcilerStrategy.java +++ b/org.eclipse.ui.genericeditor.tests/src/org/eclipse/ui/genericeditor/tests/contributions/ReconcilerStrategyFirst.java @@ -20,11 +20,11 @@ import org.eclipse.jface.text.reconciler.DirtyRegion; import org.eclipse.jface.text.reconciler.IReconcilingStrategy; import org.eclipse.jface.text.reconciler.IReconcilingStrategyExtension; -public class ReconcilerStrategy implements IReconcilingStrategy, IReconcilingStrategyExtension{ +public class ReconcilerStrategyFirst implements IReconcilingStrategy, IReconcilingStrategyExtension{ IDocument document; - static final String SEARCH_TERM = "foo"; - static final String REPLACEMENT = "BAR"; + public static final String SEARCH_TERM = "foo"; + public static final String REPLACEMENT = "BAR"; @Override public void setDocument(IDocument document) { diff --git a/org.eclipse.ui.genericeditor.tests/src/org/eclipse/ui/genericeditor/tests/contributions/ReconcilerStrategySecond.java b/org.eclipse.ui.genericeditor.tests/src/org/eclipse/ui/genericeditor/tests/contributions/ReconcilerStrategySecond.java new file mode 100644 index 00000000000..eee876687e1 --- /dev/null +++ b/org.eclipse.ui.genericeditor.tests/src/org/eclipse/ui/genericeditor/tests/contributions/ReconcilerStrategySecond.java @@ -0,0 +1,59 @@ +/******************************************************************************* + * Copyright (c) 2017 Red Hat Inc. 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: + * Lucas Bullen (Red Hat Inc.) - initial implementation + *******************************************************************************/ +package org.eclipse.ui.genericeditor.tests.contributions; + +import org.eclipse.swt.widgets.Display; + +import org.eclipse.core.runtime.IProgressMonitor; + +import org.eclipse.jface.text.IDocument; +import org.eclipse.jface.text.IRegion; +import org.eclipse.jface.text.reconciler.DirtyRegion; +import org.eclipse.jface.text.reconciler.IReconcilingStrategy; +import org.eclipse.jface.text.reconciler.IReconcilingStrategyExtension; + +public class ReconcilerStrategySecond implements IReconcilingStrategy, IReconcilingStrategyExtension{ + + IDocument document; + public static final String SEARCH_TERM = "BAR"; + public static final String REPLACEMENT = "second"; + + @Override + public void setDocument(IDocument document) { + this.document = document; + } + + @Override + public void reconcile(DirtyRegion dirtyRegion, IRegion subRegion) { + initialReconcile(); + } + + @Override + public void reconcile(IRegion partition) { + initialReconcile(); + } + + @Override + public void setProgressMonitor(IProgressMonitor monitor) { + // no progress monitor in use + } + + @Override + public void initialReconcile() { + String doc = document.get(); + if(doc.contains(SEARCH_TERM)) { + Display.getDefault().asyncExec(() -> { + document.set(document.get().replaceAll(SEARCH_TERM, REPLACEMENT)); + }); + } + } + +} diff --git a/org.eclipse.ui.genericeditor.tests/src/org/eclipse/ui/genericeditor/tests/contributions/TheReconciler.java b/org.eclipse.ui.genericeditor.tests/src/org/eclipse/ui/genericeditor/tests/contributions/TheReconcilerFirst.java index 1e051433f7f..d7487027bdd 100644 --- a/org.eclipse.ui.genericeditor.tests/src/org/eclipse/ui/genericeditor/tests/contributions/TheReconciler.java +++ b/org.eclipse.ui.genericeditor.tests/src/org/eclipse/ui/genericeditor/tests/contributions/TheReconcilerFirst.java @@ -13,9 +13,8 @@ package org.eclipse.ui.genericeditor.tests.contributions; import org.eclipse.jface.text.IDocument; import org.eclipse.jface.text.reconciler.Reconciler; -public class TheReconciler extends Reconciler{ - public TheReconciler() { - ReconcilerStrategy signStrategy = new ReconcilerStrategy(); - this.setReconcilingStrategy(signStrategy, IDocument.DEFAULT_CONTENT_TYPE); +public class TheReconcilerFirst extends Reconciler{ + public TheReconcilerFirst() { + this.setReconcilingStrategy(new ReconcilerStrategyFirst(), IDocument.DEFAULT_CONTENT_TYPE); } } diff --git a/org.eclipse.ui.genericeditor.tests/src/org/eclipse/ui/genericeditor/tests/contributions/TheReconcilerSecond.java b/org.eclipse.ui.genericeditor.tests/src/org/eclipse/ui/genericeditor/tests/contributions/TheReconcilerSecond.java new file mode 100644 index 00000000000..2d3bf4038ac --- /dev/null +++ b/org.eclipse.ui.genericeditor.tests/src/org/eclipse/ui/genericeditor/tests/contributions/TheReconcilerSecond.java @@ -0,0 +1,20 @@ +/******************************************************************************* + * Copyright (c) 2017 Red Hat Inc. 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: + * Lucas Bullen (Red Hat Inc.) - initial implementation + *******************************************************************************/ +package org.eclipse.ui.genericeditor.tests.contributions; + +import org.eclipse.jface.text.IDocument; +import org.eclipse.jface.text.reconciler.Reconciler; + +public class TheReconcilerSecond extends Reconciler{ + public TheReconcilerSecond() { + this.setReconcilingStrategy(new ReconcilerStrategySecond(), IDocument.DEFAULT_CONTENT_TYPE); + } +} |