From 8cf13ce26aedf1ccde634af4bd71883d39c47c0d Mon Sep 17 00:00:00 2001 From: Markus Schorn Date: Wed, 12 Jul 2006 14:04:55 +0000 Subject: [PATCH] Changed position trackers to use IRegion instead of Position. --- .../internal/tests/PositionTrackerTests.java | 37 ++++++++++--------- .../eclipse/cdt/core/IPositionConverter.java | 9 +++-- .../cdt/core/IPositionTrackerManager.java | 1 + .../cdt/internal/core/PositionTracker.java | 11 +++--- .../ui/includebrowser/IBViewPart.java | 5 ++- 5 files changed, 35 insertions(+), 28 deletions(-) diff --git a/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/tests/PositionTrackerTests.java b/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/tests/PositionTrackerTests.java index da9f87d6f8e..3037d8b4175 100644 --- a/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/tests/PositionTrackerTests.java +++ b/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/tests/PositionTrackerTests.java @@ -18,7 +18,8 @@ import junit.framework.TestCase; import junit.framework.TestSuite; import org.eclipse.cdt.internal.core.PositionTracker; -import org.eclipse.jface.text.Position; +import org.eclipse.jface.text.IRegion; +import org.eclipse.jface.text.Region; public class PositionTrackerTests extends TestCase { public static Test suite() { @@ -260,13 +261,13 @@ public class PositionTrackerTests extends TestCase { doubleCheck(pt, 2, 3); // ranges - doubleRangeCheck(pt, new Position(0,2), new Position(0,3)); - backwdRangeCheck(pt, new Position(0,1), new Position(0,2)); - doubleRangeCheck(pt, new Position(0,1), new Position(0,1)); - backwdRangeCheck(pt, new Position(1,0), new Position(1,1)); - backwdRangeCheck(pt, new Position(1,0), new Position(1,0)); - doubleRangeCheck(pt, new Position(1,1), new Position(2,1)); - doubleRangeCheck(pt, new Position(1,0), new Position(2,0)); + doubleRangeCheck(pt, new Region(0,2), new Region(0,3)); + backwdRangeCheck(pt, new Region(0,1), new Region(0,2)); + doubleRangeCheck(pt, new Region(0,1), new Region(0,1)); + backwdRangeCheck(pt, new Region(1,0), new Region(1,1)); + backwdRangeCheck(pt, new Region(1,0), new Region(1,0)); + doubleRangeCheck(pt, new Region(1,1), new Region(2,1)); + doubleRangeCheck(pt, new Region(1,0), new Region(2,0)); } public void testDeletion() { @@ -282,13 +283,13 @@ public class PositionTrackerTests extends TestCase { doubleCheck(pt, 3, 2); // ranges - doubleRangeCheck(pt, new Position(0,3), new Position(0,2)); - fwdRangeCheck (pt, new Position(0,2), new Position(0,1)); - doubleRangeCheck(pt, new Position(0,1), new Position(0,1)); - fwdRangeCheck (pt, new Position(1,1), new Position(1,0)); - fwdRangeCheck (pt, new Position(1,0), new Position(1,0)); - doubleRangeCheck(pt, new Position(2,1), new Position(1,1)); - doubleRangeCheck(pt, new Position(2,0), new Position(1,0)); + doubleRangeCheck(pt, new Region(0,3), new Region(0,2)); + fwdRangeCheck (pt, new Region(0,2), new Region(0,1)); + doubleRangeCheck(pt, new Region(0,1), new Region(0,1)); + fwdRangeCheck (pt, new Region(1,1), new Region(1,0)); + fwdRangeCheck (pt, new Region(1,0), new Region(1,0)); + doubleRangeCheck(pt, new Region(2,1), new Region(1,1)); + doubleRangeCheck(pt, new Region(2,0), new Region(1,0)); } public void testReplace() { @@ -342,16 +343,16 @@ public class PositionTrackerTests extends TestCase { assertEquals(orig, pt.historicOffset(mapped)); } - private void doubleRangeCheck(PositionTracker pt, Position orig, Position mapped) { + private void doubleRangeCheck(PositionTracker pt, IRegion orig, IRegion mapped) { fwdRangeCheck(pt, orig, mapped); backwdRangeCheck(pt, orig, mapped); } - private void fwdRangeCheck(PositionTracker pt, Position orig, Position mapped) { + private void fwdRangeCheck(PositionTracker pt, IRegion orig, IRegion mapped) { assertEquals(mapped, pt.historicToActual(orig)); } - private void backwdRangeCheck(PositionTracker pt, Position orig, Position mapped) { + private void backwdRangeCheck(PositionTracker pt, IRegion orig, IRegion mapped) { assertEquals(orig, pt.actualToHistoric(mapped)); } } diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/IPositionConverter.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/IPositionConverter.java index 8cffe670ba2..34d2fa40665 100644 --- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/IPositionConverter.java +++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/IPositionConverter.java @@ -11,7 +11,8 @@ package org.eclipse.cdt.core; -import org.eclipse.jface.text.Position; +import org.eclipse.jface.text.IRegion; + /** * Allows for converting character ranges of files previously stored on disk to the @@ -37,6 +38,8 @@ import org.eclipse.jface.text.Position; * work or that it will remain the same. Please do not use this API without * consulting with the CDT team. *

+ * + * @since 4.0 */ public interface IPositionConverter { @@ -47,7 +50,7 @@ public interface IPositionConverter { * @return a range suitable for the version of the file for which the converter * was obtained. */ - Position actualToHistoric(Position actualPosition); + IRegion actualToHistoric(IRegion actualPosition); /** * Converts a historic character range to the range where the underlying text @@ -56,5 +59,5 @@ public interface IPositionConverter { * the converter was obtained. * @return a range suitable for the current text buffer of the file. */ - Position historicToActual(Position historicPosition); + IRegion historicToActual(IRegion historicPosition); } diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/IPositionTrackerManager.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/IPositionTrackerManager.java index 684e8ee5292..06ce3f29bbd 100644 --- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/IPositionTrackerManager.java +++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/IPositionTrackerManager.java @@ -27,6 +27,7 @@ import org.eclipse.core.runtime.IPath; * work or that it will remain the same. Please do not use this API without * consulting with the CDT team. *

+ * @since 4.0 */ public interface IPositionTrackerManager { /** diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/PositionTracker.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/PositionTracker.java index ec5f40f818a..feefb5b9815 100644 --- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/PositionTracker.java +++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/PositionTracker.java @@ -14,7 +14,8 @@ package org.eclipse.cdt.internal.core; import java.io.PrintStream; import org.eclipse.cdt.core.IPositionConverter; -import org.eclipse.jface.text.Position; +import org.eclipse.jface.text.IRegion; +import org.eclipse.jface.text.Region; /** * Tracks changes made to a text buffer, to afterwards recalculate positions. @@ -165,7 +166,7 @@ public class PositionTracker implements IPositionConverter { return fAboveRoot.countNodes(); } - public synchronized Position actualToHistoric(Position actualPosition) { + public synchronized IRegion actualToHistoric(IRegion actualPosition) { int actual= actualPosition.getOffset(); int len= actualPosition.getLength(); @@ -174,10 +175,10 @@ public class PositionTracker implements IPositionConverter { len= historicOffset(actual+len-1, false) - historic + 1; } assert len >= 0; - return new Position(historic, len); + return new Region(historic, len); } - public synchronized Position historicToActual(Position historicPosition) { + public synchronized IRegion historicToActual(IRegion historicPosition) { int historic= historicPosition.getOffset(); int len= historicPosition.getLength(); @@ -186,7 +187,7 @@ public class PositionTracker implements IPositionConverter { len= currentOffset(historic+len-1, false) - actual + 1; } assert len >= 0; - return new Position(actual, len); + return new Region(actual, len); } /** diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/includebrowser/IBViewPart.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/includebrowser/IBViewPart.java index 53ac6997b58..271a0550085 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/includebrowser/IBViewPart.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/includebrowser/IBViewPart.java @@ -25,7 +25,8 @@ import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.IToolBarManager; import org.eclipse.jface.action.MenuManager; import org.eclipse.jface.action.Separator; -import org.eclipse.jface.text.Position; +import org.eclipse.jface.text.IRegion; +import org.eclipse.jface.text.Region; import org.eclipse.jface.util.LocalSelectionTransfer; import org.eclipse.jface.viewers.IOpenListener; import org.eclipse.jface.viewers.ISelection; @@ -698,7 +699,7 @@ public class IBViewPart extends ViewPart } if (editor instanceof ITextEditor) { ITextEditor te= (ITextEditor) editor; - Position pos= new Position(node.getDirectiveCharacterOffset(), + IRegion pos= new Region(node.getDirectiveCharacterOffset(), node.getDirectiveName().length() + 2); if (filebufferKey != null) { IPositionConverter pc= CCorePlugin.getPositionTrackerManager().findPositionConverter(filebufferKey, timestamp);