From ec2232ae5176d5f89196820da120d372f87bdf7f Mon Sep 17 00:00:00 2001 From: Andre Weinand Date: Fri, 17 May 2002 09:27:24 +0000 Subject: #14624 --- .../org.eclipse.compare/buildnotes_compare.html | 1 + .../contentmergeviewer/TextMergeViewer.java | 43 ++++++++++++++++------ .../compare/internal/CompareMessages.properties | 12 ++++++ .../eclipse/compare/internal/CompareNavigator.java | 12 ++++++ .../org.eclipse.compare/buildnotes_compare.html | 1 + .../contentmergeviewer/TextMergeViewer.java | 43 ++++++++++++++++------ .../compare/internal/CompareMessages.properties | 12 ++++++ .../eclipse/compare/internal/CompareNavigator.java | 12 ++++++ 8 files changed, 112 insertions(+), 24 deletions(-) diff --git a/bundles/org.eclipse.compare/buildnotes_compare.html b/bundles/org.eclipse.compare/buildnotes_compare.html index 7bd7f7f25..a2bb5b142 100644 --- a/bundles/org.eclipse.compare/buildnotes_compare.html +++ b/bundles/org.eclipse.compare/buildnotes_compare.html @@ -35,6 +35,7 @@ Problem reports fixed #14680: Compare unreadable in high contrast black
#14952: Diff Browser Opens Too Small / Not Easily Resizable
#14742: Ignore whitespace preference
+#14624: No visual cue when compared file wraps

Problem reports closed

diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/TextMergeViewer.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/TextMergeViewer.java index 6d9b1b0c2..896715c95 100644 --- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/TextMergeViewer.java +++ b/bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/TextMergeViewer.java @@ -160,9 +160,6 @@ public class TextMergeViewer extends ContentMergeViewer { private static final boolean USE_MORE_CONTROLS= true; /** Selects between smartTokenDiff and mergingTokenDiff */ private static final boolean USE_MERGING_TOKEN_DIFF= false; - /** if DEAD_STEP is true navigation with the next/previous buttons needs an extra step - when wrapping around the beginning or end */ - private static final boolean DEAD_STEP= false; /** When calculating differences show Progress after this timeout (in milliseconds) */ private static final int TIMEOUT= 2000; @@ -173,7 +170,7 @@ public class TextMergeViewer extends ContentMergeViewer { private int fMarginWidth= MARGIN_WIDTH; private int fTopInset; - // Colors to use + // Colors private boolean fUseSystemBackground; @@ -193,6 +190,7 @@ public class TextMergeViewer extends ContentMergeViewer { private RGB OUTGOING_FILL; + private boolean fEndOfDocReached; private IDocumentListener fDocumentListener; private IPreferenceStore fPreferenceStore; @@ -2908,13 +2906,14 @@ public class TextMergeViewer extends ContentMergeViewer { } } - if (diff == null) { + if (diff == null) { // at end or beginning if (wrap) { - Control c= getControl(); - if (Utilities.okToUse(c)) - c.getDisplay().beep(); - if (DEAD_STEP) - return true; + if (!fEndOfDocReached) { + fEndOfDocReached= true; + if (! endOfDocumentReached(down)) + return true; + } + fEndOfDocReached= false; if (fChangeDiffs != null && fChangeDiffs.size() > 0) { if (down) diff= (Diff) fChangeDiffs.get(0); @@ -2935,8 +2934,28 @@ public class TextMergeViewer extends ContentMergeViewer { } return false; - } - + } + + private boolean endOfDocumentReached(boolean down) { + Control c= getControl(); + if (Utilities.okToUse(c)) { + + c.getDisplay().beep(); + + String title; + String message; + if (down) { + title= CompareMessages.getString("TextMergeViewer.atEnd.title"); //$NON-NLS-1$ + message= CompareMessages.getString("TextMergeViewer.atEnd.message"); //$NON-NLS-1$ + } else { + title= CompareMessages.getString("TextMergeViewer.atBeginning.title"); //$NON-NLS-1$ + message= CompareMessages.getString("TextMergeViewer.atBeginning.message"); //$NON-NLS-1$ + } + return MessageDialog.openQuestion(c.getShell(), title, message); + } + return false; + } + /** * Find the Diff that overlaps with the given TextPart's text range. * If the range doesn't overlap with any range null diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareMessages.properties b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareMessages.properties index 7302d5e9e..157d076bc 100644 --- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareMessages.properties +++ b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareMessages.properties @@ -38,3 +38,15 @@ TextMergeViewer.diffType.format= {0} {1} TextMergeViewer.diffDescription.noDiff.format= no diff TextMergeViewer.diffDescription.diff.format= {0} #{1} (Left: {2}, Right: {3}) TextMergeViewer.statusLine.format= Left: {0}, Right: {1}, {2} + +TextMergeViewer.atEnd.title= Goto Next Change +TextMergeViewer.atEnd.message= End of Document reached. Continue at Beginning? + +TextMergeViewer.atBeginning.title= Goto Previous Change +TextMergeViewer.atBeginning.message= Beginning of Document reached. Continue at End? + +CompareNavigator.atEnd.title= Goto Next Change +CompareNavigator.atEnd.message= Last Resource reached. + +CompareNavigator.atBeginning.title= Goto Previous Change +CompareNavigator.atBeginning.message= First Resource reached. diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareNavigator.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareNavigator.java index 16df01c8e..a977359e3 100644 --- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareNavigator.java +++ b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareNavigator.java @@ -11,6 +11,7 @@ import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; import org.eclipse.jface.viewers.Viewer; +import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.compare.CompareEditorInput; import org.eclipse.compare.*; @@ -60,6 +61,17 @@ public class CompareNavigator { Display display= c.getDisplay(); if (display != null) display.beep(); + + String title; + String message; + if (next) { + title= CompareMessages.getString("CompareNavigator.atEnd.title"); //$NON-NLS-1$ + message= CompareMessages.getString("CompareNavigator.atEnd.message"); //$NON-NLS-1$ + } else { + title= CompareMessages.getString("CompareNavigator.atBeginning.title"); //$NON-NLS-1$ + message= CompareMessages.getString("CompareNavigator.atBeginning.message"); //$NON-NLS-1$ + } + MessageDialog.openInformation(c.getShell(), title, message); } } } diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/buildnotes_compare.html b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/buildnotes_compare.html index 7bd7f7f25..a2bb5b142 100644 --- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/buildnotes_compare.html +++ b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/buildnotes_compare.html @@ -35,6 +35,7 @@ Problem reports fixed #14680: Compare unreadable in high contrast black
#14952: Diff Browser Opens Too Small / Not Easily Resizable
#14742: Ignore whitespace preference
+#14624: No visual cue when compared file wraps

Problem reports closed

diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/TextMergeViewer.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/TextMergeViewer.java index 6d9b1b0c2..896715c95 100644 --- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/TextMergeViewer.java +++ b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/TextMergeViewer.java @@ -160,9 +160,6 @@ public class TextMergeViewer extends ContentMergeViewer { private static final boolean USE_MORE_CONTROLS= true; /** Selects between smartTokenDiff and mergingTokenDiff */ private static final boolean USE_MERGING_TOKEN_DIFF= false; - /** if DEAD_STEP is true navigation with the next/previous buttons needs an extra step - when wrapping around the beginning or end */ - private static final boolean DEAD_STEP= false; /** When calculating differences show Progress after this timeout (in milliseconds) */ private static final int TIMEOUT= 2000; @@ -173,7 +170,7 @@ public class TextMergeViewer extends ContentMergeViewer { private int fMarginWidth= MARGIN_WIDTH; private int fTopInset; - // Colors to use + // Colors private boolean fUseSystemBackground; @@ -193,6 +190,7 @@ public class TextMergeViewer extends ContentMergeViewer { private RGB OUTGOING_FILL; + private boolean fEndOfDocReached; private IDocumentListener fDocumentListener; private IPreferenceStore fPreferenceStore; @@ -2908,13 +2906,14 @@ public class TextMergeViewer extends ContentMergeViewer { } } - if (diff == null) { + if (diff == null) { // at end or beginning if (wrap) { - Control c= getControl(); - if (Utilities.okToUse(c)) - c.getDisplay().beep(); - if (DEAD_STEP) - return true; + if (!fEndOfDocReached) { + fEndOfDocReached= true; + if (! endOfDocumentReached(down)) + return true; + } + fEndOfDocReached= false; if (fChangeDiffs != null && fChangeDiffs.size() > 0) { if (down) diff= (Diff) fChangeDiffs.get(0); @@ -2935,8 +2934,28 @@ public class TextMergeViewer extends ContentMergeViewer { } return false; - } - + } + + private boolean endOfDocumentReached(boolean down) { + Control c= getControl(); + if (Utilities.okToUse(c)) { + + c.getDisplay().beep(); + + String title; + String message; + if (down) { + title= CompareMessages.getString("TextMergeViewer.atEnd.title"); //$NON-NLS-1$ + message= CompareMessages.getString("TextMergeViewer.atEnd.message"); //$NON-NLS-1$ + } else { + title= CompareMessages.getString("TextMergeViewer.atBeginning.title"); //$NON-NLS-1$ + message= CompareMessages.getString("TextMergeViewer.atBeginning.message"); //$NON-NLS-1$ + } + return MessageDialog.openQuestion(c.getShell(), title, message); + } + return false; + } + /** * Find the Diff that overlaps with the given TextPart's text range. * If the range doesn't overlap with any range null diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareMessages.properties b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareMessages.properties index 7302d5e9e..157d076bc 100644 --- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareMessages.properties +++ b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareMessages.properties @@ -38,3 +38,15 @@ TextMergeViewer.diffType.format= {0} {1} TextMergeViewer.diffDescription.noDiff.format= no diff TextMergeViewer.diffDescription.diff.format= {0} #{1} (Left: {2}, Right: {3}) TextMergeViewer.statusLine.format= Left: {0}, Right: {1}, {2} + +TextMergeViewer.atEnd.title= Goto Next Change +TextMergeViewer.atEnd.message= End of Document reached. Continue at Beginning? + +TextMergeViewer.atBeginning.title= Goto Previous Change +TextMergeViewer.atBeginning.message= Beginning of Document reached. Continue at End? + +CompareNavigator.atEnd.title= Goto Next Change +CompareNavigator.atEnd.message= Last Resource reached. + +CompareNavigator.atBeginning.title= Goto Previous Change +CompareNavigator.atBeginning.message= First Resource reached. diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareNavigator.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareNavigator.java index 16df01c8e..a977359e3 100644 --- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareNavigator.java +++ b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareNavigator.java @@ -11,6 +11,7 @@ import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; import org.eclipse.jface.viewers.Viewer; +import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.compare.CompareEditorInput; import org.eclipse.compare.*; @@ -60,6 +61,17 @@ public class CompareNavigator { Display display= c.getDisplay(); if (display != null) display.beep(); + + String title; + String message; + if (next) { + title= CompareMessages.getString("CompareNavigator.atEnd.title"); //$NON-NLS-1$ + message= CompareMessages.getString("CompareNavigator.atEnd.message"); //$NON-NLS-1$ + } else { + title= CompareMessages.getString("CompareNavigator.atBeginning.title"); //$NON-NLS-1$ + message= CompareMessages.getString("CompareNavigator.atBeginning.message"); //$NON-NLS-1$ + } + MessageDialog.openInformation(c.getShell(), title, message); } } } -- cgit v1.2.3