Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/TextMergeViewer.java')
-rw-r--r--bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/TextMergeViewer.java862
1 files changed, 431 insertions, 431 deletions
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 9b4db1530..fb265eb7d 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
@@ -251,7 +251,7 @@ import com.ibm.icu.text.MessageFormat;
* In 3.5 a new API has been introduced to let clients provide their own source
* viewers implementation with an option to configure them basing on a
* corresponding editor input.
- *
+ *
* @see org.eclipse.compare.rangedifferencer.RangeDifferencer
* @see org.eclipse.jface.text.TextViewer
* @see ITokenComparator
@@ -264,13 +264,13 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
private static final char ANCESTOR_CONTRIBUTOR = MergeViewerContentProvider.ANCESTOR_CONTRIBUTOR;
private static final char RIGHT_CONTRIBUTOR = MergeViewerContentProvider.RIGHT_CONTRIBUTOR;
private static final char LEFT_CONTRIBUTOR = MergeViewerContentProvider.LEFT_CONTRIBUTOR;
-
+
private static final String DIFF_RANGE_CATEGORY = CompareUIPlugin.PLUGIN_ID + ".DIFF_RANGE_CATEGORY"; //$NON-NLS-1$
static final boolean DEBUG= false;
-
+
private static final boolean FIX_47640= true;
-
+
private static final String[] GLOBAL_ACTIONS= {
ActionFactory.UNDO.getId(),
ActionFactory.REDO.getId(),
@@ -293,15 +293,15 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
MergeSourceViewer.FIND_ID,
MergeSourceViewer.GOTO_LINE_ID
};
-
+
private static final String BUNDLE_NAME= "org.eclipse.compare.contentmergeviewer.TextMergeViewerResources"; //$NON-NLS-1$
-
+
// the following symbolic constants must match the IDs in Compare's plugin.xml
private static final String INCOMING_COLOR= "INCOMING_COLOR"; //$NON-NLS-1$
private static final String OUTGOING_COLOR= "OUTGOING_COLOR"; //$NON-NLS-1$
private static final String CONFLICTING_COLOR= "CONFLICTING_COLOR"; //$NON-NLS-1$
private static final String RESOLVED_COLOR= "RESOLVED_COLOR"; //$NON-NLS-1$
-
+
// constants
/** Width of left and right vertical bar */
private static final int MARGIN_WIDTH= 6;
@@ -316,62 +316,62 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
/** line width of change borders */
private static final int LW= 1;
-
+
private boolean fShowCurrentOnly= false;
private boolean fShowCurrentOnly2= false;
private int fMarginWidth= MARGIN_WIDTH;
private int fTopInset;
-
+
// Colors
private RGB fBackground;
private RGB fForeground;
private boolean fIsUsingSystemForeground= true;
private boolean fIsUsingSystemBackground= true;
-
+
private RGB SELECTED_INCOMING;
private RGB INCOMING;
private RGB INCOMING_FILL;
private RGB INCOMING_TEXT_FILL;
-
+
private RGB SELECTED_CONFLICT;
private RGB CONFLICT;
private RGB CONFLICT_FILL;
private RGB CONFLICT_TEXT_FILL;
-
+
private RGB SELECTED_OUTGOING;
private RGB OUTGOING;
private RGB OUTGOING_FILL;
private RGB OUTGOING_TEXT_FILL;
-
+
private RGB RESOLVED;
-
+
private IPreferenceStore fPreferenceStore;
private IPropertyChangeListener fPreferenceChangeListener;
-
+
private HashMap<Object, Position> fNewAncestorRanges= new HashMap<>();
private HashMap<Object, Position> fNewLeftRanges= new HashMap<>();
private HashMap<Object, Position> fNewRightRanges= new HashMap<>();
-
+
private MergeSourceViewer fAncestor;
private MergeSourceViewer fLeft;
private MergeSourceViewer fRight;
-
+
private int fLeftLineCount;
private int fRightLineCount;
-
+
private boolean fInScrolling;
-
+
private int fPts[]= new int[8]; // scratch area for polygon drawing
-
+
private int fInheritedDirection; // inherited direction
private int fTextDirection; // requested direction for embedded SourceViewer
-
+
private ActionContributionItem fIgnoreAncestorItem;
private boolean fHighlightRanges;
-
+
private boolean fShowPseudoConflicts= false;
-
+
private boolean fUseSplines= true;
private boolean fUseSingleLine= true;
private boolean fHighlightTokenChanges = false;
@@ -382,21 +382,21 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
private ActionContributionItem fPreviousDiff; // goto previous difference
private ActionContributionItem fCopyDiffLeftToRightItem;
private ActionContributionItem fCopyDiffRightToLeftItem;
-
+
private CompareHandlerService fHandlerService;
-
+
private boolean fSynchronizedScrolling= true;
-
+
private MergeSourceViewer fFocusPart;
-
+
private boolean fSubDoc= true;
private IPositionUpdater fPositionUpdater;
private boolean fIsMotif;
private boolean fIsCarbon;
private boolean fIsMac;
-
+
private boolean fHasErrors;
-
+
// SWT widgets
private BufferedCanvas fAncestorCanvas;
@@ -407,14 +407,14 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
private Canvas fBirdsEyeCanvas;
private Canvas fSummaryHeader;
private HeaderPainter fHeaderPainter;
-
+
// SWT resources to be disposed
private Map<RGB, Color> fColors;
private Cursor fBirdsEyeCursor;
-
+
// points for center curves
private double[] fBasicCenterCurve;
-
+
private Button fLeftToRightButton;
private Button fRightToLeftButton;
private Diff fButtonDiff;
@@ -450,7 +450,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
* Preference key for highlight color of current line.
*/
private final static String CURRENT_LINE_COLOR= AbstractDecoratedTextEditorPreferenceConstants.EDITOR_CURRENT_LINE_COLOR;
-
+
private List<SourceViewerDecorationSupport> fSourceViewerDecorationSupport = new ArrayList<>(3);
// whether enhanced viewer configuration has been done
private boolean isConfigured = false;
@@ -473,10 +473,10 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
});
v.addSelectionChangedListener(this);
}
-
+
return v;
}
-
+
@Override
public boolean hasViewerFor(Object input) {
return true;
@@ -506,7 +506,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
}
return null;
}
-
+
private Diff findDiff(Position p, boolean left) {
for (Iterator<?> iterator = fMerger.rangesIterator(); iterator.hasNext();) {
Diff diff = (Diff) iterator.next();
@@ -551,7 +551,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
private int fTopIndex = -1;
private boolean fNeedsValidation = false;
private MergeSourceViewer fSourceViewer;
-
+
public ContributorInfo(TextMergeViewer viewer, Object element, char leg) {
fViewer = viewer;
fElement = element;
@@ -630,7 +630,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
if (fEncoding == null)
fEncoding = otherContributor.fEncoding;
}
-
+
public IDocument getDocument() {
if (fDocumentProvider != null) {
IDocument document = fDocumentProvider.getDocument(getDocumentKey());
@@ -645,7 +645,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
return DocumentManager.get(fElement);
return null;
}
-
+
public void setDocument(MergeSourceViewer viewer, boolean isEditable) {
// Ensure that this method is only called once
Assert.isTrue(fSourceViewer == null);
@@ -664,15 +664,15 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
viewer.getSourceViewer().getTextWidget().addVerifyListener(this);
}
}
-
+
/*
* Returns true if a new Document could be installed.
*/
private boolean internalSetDocument(MergeSourceViewer tp) {
-
+
if (tp == null)
return false;
-
+
IDocument newDocument = null;
Position range= null;
@@ -684,7 +684,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
} else if (fElement instanceof IDocument) {
newDocument= (IDocument) fElement;
setupDocument(newDocument);
-
+
} else if (fElement instanceof IStreamContentAccessor) {
newDocument= DocumentManager.get(fElement);
if (newDocument == null) {
@@ -696,9 +696,9 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
connectToSharedDocument();
}
} else if (fElement == null) { // deletion on one side
-
+
ITypedElement parent= this.fViewer.getParent(fLeg); // we try to find an insertion position within the deletion's parent
-
+
if (parent instanceof IDocumentRange) {
newDocument= ((IDocumentRange)parent).getDocument();
newDocument.addPositionCategory(DIFF_RANGE_CATEGORY);
@@ -730,7 +730,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
newDocument= new Document(""); //$NON-NLS-1$
enabled= false;
}
-
+
// Update the viewer document or range
IDocument oldDoc= tp.getSourceViewer().getDocument();
if (newDocument != oldDoc) {
@@ -739,7 +739,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
updateViewerDocumentRange(tp, range);
}
newDocument.addDocumentListener(this);
-
+
tp.setEnabled(enabled);
return enabled;
@@ -767,7 +767,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
unsetDocument(tp);
if (document == null)
return;
-
+
connectPositionUpdater(document);
// install new document
@@ -796,7 +796,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
document.removePositionUpdater(this.fViewer.fPositionUpdater);
document.addPositionUpdater(this.fViewer.fPositionUpdater);
}
-
+
private void unsetDocument(MergeSourceViewer tp) {
IDocument oldDoc= internalGetDocument(tp);
if (oldDoc != null) {
@@ -811,12 +811,12 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
oldDoc.removeDocumentListener(this);
}
}
-
+
private IDocument createDocument() {
// If the content provider is a text content provider, attempt to obtain
// a shared document (i.e. file buffer)
IDocument newDoc = connectToSharedDocument();
-
+
if (newDoc == null) {
IStreamContentAccessor sca= (IStreamContentAccessor) fElement;
String s= null;
@@ -863,7 +863,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
}
return null;
}
-
+
private void connect(IDocumentProvider documentProvider, IEditorInput input) throws CoreException {
final ISharedDocumentAdapter sda = Adapters.adapt(fElement, ISharedDocumentAdapter.class);
if (sda != null) {
@@ -872,7 +872,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
documentProvider.connect(input);
}
}
-
+
private void disconnect(IDocumentProvider provider, IEditorInput input) {
final ISharedDocumentAdapter sda = Adapters.adapt(fElement, ISharedDocumentAdapter.class);
if (sda != null) {
@@ -888,7 +888,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
fDocumentProvider = documentProvider;
documentProvider.addElementStateListener(this);
}
-
+
public void disconnect() {
IDocumentProvider provider = null;
IEditorInput input = getDocumentKey();
@@ -926,7 +926,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
if (doc != null)
DocumentManager.remove(doc);
}
-
+
private IDocument internalGetDocument(MergeSourceViewer tp) {
IDocument oldDoc= tp.getSourceViewer().getDocument();
if (oldDoc == null) {
@@ -934,7 +934,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
}
return oldDoc;
}
-
+
/**
* Return the document key used to obtain a shared document. A <code>null</code>
* is returned in the following cases:
@@ -956,7 +956,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
}
return null;
}
-
+
private IDocumentProvider getDocumentProvider() {
if (fDocumentProvider != null)
return fDocumentProvider;
@@ -973,17 +973,17 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
private boolean isUsingDefaultContentProvider() {
return fViewer.isUsingDefaultContentProvider();
}
-
+
private boolean canHaveSharedDocument() {
return fViewer.canHaveSharedDocument();
}
-
+
boolean hasSharedDocument(Object object) {
return (fElement == object &&
fDocumentProvider != null
&& fDocumentProvider.getDocument(getDocumentKey()) != null);
}
-
+
public boolean flush() throws CoreException {
if (fDocumentProvider != null) {
IEditorInput input = getDocumentKey();
@@ -1005,7 +1005,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
}
return false;
}
-
+
@Override
public void elementMoved(Object originalElement, Object movedElement) {
IEditorInput input = getDocumentKey();
@@ -1106,7 +1106,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
fTopIndex = oldContributor.fTopIndex;
fEncoding = oldContributor.fEncoding;
}
-
+
}
public boolean validateChange() {
@@ -1148,12 +1148,12 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
e.doit= false;
}
}
-
+
@Override
public void documentAboutToBeChanged(DocumentEvent e) {
// nothing to do
}
-
+
@Override
public void documentChanged(DocumentEvent e) {
boolean dirty = true;
@@ -1168,17 +1168,17 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
}
}
}
-
+
class HeaderPainter implements PaintListener {
private static final int INSET= BIRDS_EYE_VIEW_INSET;
private RGB fIndicatorColor;
private Color fSeparatorColor;
-
+
public HeaderPainter() {
fSeparatorColor= fSummaryHeader.getDisplay().getSystemColor(SWT.COLOR_WIDGET_NORMAL_SHADOW);
}
-
+
/*
* Returns true on color change
*/
@@ -1191,21 +1191,21 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
return !color.equals(oldColor);
return true;
}
-
+
private void drawBevelRect(GC gc, int x, int y, int w, int h, Color topLeft, Color bottomRight) {
gc.setForeground(topLeft);
gc.drawLine(x, y, x + w -1, y);
gc.drawLine(x, y, x, y + h -1);
-
+
gc.setForeground(bottomRight);
gc.drawLine(x + w, y, x + w, y + h);
gc.drawLine(x, y + h, x + w, y + h);
}
-
+
@Override
public void paintControl(PaintEvent e) {
Point s= fSummaryHeader.getSize();
-
+
if (fIndicatorColor != null) {
Display d= fSummaryHeader.getDisplay();
e.gc.setBackground(getColor(d, fIndicatorColor));
@@ -1233,7 +1233,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
protected ChildPositionUpdater(String category) {
super(category);
}
-
+
/*
* Child document ranges cannot be deleted other then by calling
* freeChildDocument.
@@ -1242,7 +1242,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
protected boolean notDeleted() {
return true;
}
-
+
/*
* If an insertion happens at a child document's start offset, the
* position is extended rather than shifted. Also, if something is added
@@ -1255,14 +1255,14 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
int myStart= fPosition.offset;
int myEnd= fPosition.offset + fPosition.length;
myEnd= Math.max(myStart, myEnd);
-
+
int yoursStart= fOffset;
int yoursEnd= fOffset + fReplaceLength -1;
yoursEnd= Math.max(yoursStart, yoursEnd);
-
+
if (myEnd < yoursStart)
return;
-
+
if (myStart <= yoursStart)
fPosition.length += fReplaceLength;
else
@@ -1272,7 +1272,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
}
}
}
-
+
private class ChangeHighlighter implements ITextPresentationListener {
private final MergeSourceViewer viewer;
@@ -1314,10 +1314,10 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
}
if (length < 0)
return null;
-
+
return new StyleRange(start, length, null, cTextFill);
}
-
+
private RGB getTextFillColor(Diff diff) {
if (isThreeWay() && !isIgnoreAncestor()) {
switch (diff.getKind()) {
@@ -1335,7 +1335,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
return OUTGOING_TEXT_FILL;
}
}
-
+
private class FindReplaceTarget implements IFindReplaceTarget, IFindReplaceTargetExtension, IFindReplaceTargetExtension2, IFindReplaceTargetExtension3 {
@Override
public boolean canPerformFind() {
@@ -1374,7 +1374,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
if (findReplaceTarget instanceof IFindReplaceTargetExtension3) {
return ((IFindReplaceTargetExtension3) findReplaceTarget).findAndSelect(offset, findString, searchForward, caseSensitive, wholeWord, regExSearch);
}
-
+
// fallback like in org.eclipse.ui.texteditor.FindReplaceTarget
if (!regExSearch && findReplaceTarget != null)
return findReplaceTarget.findAndSelect(offset, findString, searchForward, caseSensitive, wholeWord);
@@ -1388,7 +1388,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
((IFindReplaceTargetExtension3) findReplaceTarget).replaceSelection(text, regExReplace);
return;
}
-
+
// fallback like in org.eclipse.ui.texteditor.FindReplaceTarget
if (!regExReplace && findReplaceTarget != null)
findReplaceTarget.replaceSelection(text);
@@ -1468,11 +1468,11 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
((IFindReplaceTargetExtension) findReplaceTarget).setReplaceAllMode(replaceAll);
}
}
-
+
}
//---- MergeTextViewer
-
+
/**
* Creates a text merge viewer under the given parent control.
*
@@ -1482,7 +1482,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
public TextMergeViewer(Composite parent, CompareConfiguration configuration) {
this(parent, SWT.NULL, configuration);
}
-
+
/**
* Creates a text merge viewer under the given parent control.
*
@@ -1568,7 +1568,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
return TextMergeViewer.this.isPatchHunkOk();
}
});
-
+
int inheritedStyle= parent.getStyle();
if ((inheritedStyle & SWT.LEFT_TO_RIGHT) != 0)
fInheritedDirection= SWT.LEFT_TO_RIGHT;
@@ -1576,23 +1576,23 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
fInheritedDirection= SWT.RIGHT_TO_LEFT;
else
fInheritedDirection= SWT.NONE;
-
+
if ((style & SWT.LEFT_TO_RIGHT) != 0)
fTextDirection= SWT.LEFT_TO_RIGHT;
else if ((style & SWT.RIGHT_TO_LEFT) != 0)
fTextDirection= SWT.RIGHT_TO_LEFT;
else
fTextDirection= SWT.NONE;
-
+
fSymbolicFontName= getSymbolicFontName();
-
+
fIsMotif= Util.isMotif();
fIsCarbon= Util.isCarbon();
fIsMac= Util.isMac();
-
+
if (fIsMotif)
fMarginWidth= 0;
-
+
fPreferenceChangeListener= new IPropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent event) {
@@ -1603,7 +1603,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
fPreferenceStore= createChainedPreferenceStore();
if (fPreferenceStore != null) {
fPreferenceStore.addPropertyChangeListener(fPreferenceChangeListener);
-
+
fSynchronizedScrolling= fPreferenceStore.getBoolean(ComparePreferencePage.SYNCHRONIZE_SCROLLING);
fShowPseudoConflicts= fPreferenceStore.getBoolean(ComparePreferencePage.SHOW_PSEUDO_CONFLICTS);
//fUseSplines= fPreferenceStore.getBoolean(ComparePreferencePage.USE_SPLINES);
@@ -1611,9 +1611,9 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
fHighlightTokenChanges= fPreferenceStore.getBoolean(ComparePreferencePage.HIGHLIGHT_TOKEN_CHANGES);
//fUseResolveUI= fPreferenceStore.getBoolean(ComparePreferencePage.USE_RESOLVE_UI);
}
-
+
buildControl(parent);
-
+
setColors();
INavigatable nav= new INavigatable() {
@@ -1639,14 +1639,14 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
}
};
fComposite.setData(INavigatable.NAVIGATOR_PROPERTY, nav);
-
+
fBirdsEyeCursor= new Cursor(parent.getDisplay(), SWT.CURSOR_HAND);
-
+
JFaceResources.getFontRegistry().addListener(fPreferenceChangeListener);
JFaceResources.getColorRegistry().addListener(fPreferenceChangeListener);
updateFont();
}
-
+
private static class LineNumberRulerToggleAction extends TextEditorPropertyAction {
public LineNumberRulerToggleAction(String label, MergeSourceViewer[] viewers, String preferenceKey) {
super(label, viewers, preferenceKey);
@@ -1664,7 +1664,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
stores.add(EditorsUI.getPreferenceStore());
return new ChainedPreferenceStore(stores.toArray(new IPreferenceStore[stores.size()]));
}
-
+
/**
* Creates a color from the information stored in the given preference store.
* Returns <code>null</code> if there is no such information available.
@@ -1703,7 +1703,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
// use text compare font if no font has been registered for subclass
return getClass().getName();
}
-
+
private void updateFont() {
Font f= JFaceResources.getFont(fSymbolicFontName);
if (f != null) {
@@ -1715,7 +1715,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
fRight.setFont(f);
}
}
-
+
private void checkForColorUpdate(Display display) {
if (fIsUsingSystemBackground) {
RGB bg= display.getSystemColor(SWT.COLOR_LIST_BACKGROUND).getRGB();
@@ -1724,7 +1724,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
}
}
}
-
+
/**
* Sets the viewer's background color to the given RGB value.
* If the value is <code>null</code> the system's default background color is used.
@@ -1736,7 +1736,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
fBackground= background;
updateColors(null);
}
-
+
private RGB getBackground(Display display) {
if (fBackground != null)
return fBackground;
@@ -1746,7 +1746,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
return display.getSystemColor(SWT.COLOR_LIST_BACKGROUND).getRGB();
}
-
+
/**
* Sets the viewer's foreground color to the given RGB value.
* If the value is <code>null</code> the system's default foreground color is used.
@@ -1758,9 +1758,9 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
fForeground= foreground;
updateColors(null);
}
-
+
private void updateColors(Display display) {
-
+
if (display == null)
display = fComposite.getDisplay();
@@ -1785,9 +1785,9 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
fLeft.setForegroundColor(fgColor);
if (fRight != null)
fRight.setForegroundColor(fgColor);
-
+
ColorRegistry registry= JFaceResources.getColorRegistry();
-
+
RGB bg= getBackground(display);
SELECTED_INCOMING= registry.getRGB(INCOMING_COLOR);
if (SELECTED_INCOMING == null)
@@ -1802,18 +1802,18 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
OUTGOING= interpolate(SELECTED_OUTGOING, bg, 0.6);
OUTGOING_FILL= interpolate(SELECTED_OUTGOING, bg, 0.97);
OUTGOING_TEXT_FILL= interpolate(SELECTED_OUTGOING, bg, 0.85);
-
+
SELECTED_CONFLICT= registry.getRGB(CONFLICTING_COLOR);
if (SELECTED_CONFLICT == null)
SELECTED_CONFLICT= new RGB(255, 0, 0); // RED
CONFLICT= interpolate(SELECTED_CONFLICT, bg, 0.6);
CONFLICT_FILL= interpolate(SELECTED_CONFLICT, bg, 0.97);
CONFLICT_TEXT_FILL= interpolate(SELECTED_CONFLICT, bg, 0.85);
-
+
RESOLVED= registry.getRGB(RESOLVED_COLOR);
if (RESOLVED == null)
RESOLVED= new RGB(0, 255, 0); // GREEN
-
+
updatePresentation();
}
@@ -1822,7 +1822,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
invalidateLines();
invalidateTextPresentation();
}
-
+
/**
* Invalidates the current presentation by invalidating the three text viewers.
* @since 2.0
@@ -1835,7 +1835,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
if (fRight != null)
fRight.getSourceViewer().invalidateTextPresentation();
}
-
+
/**
* Configures the passed text viewer. This method is called after the three
* text viewers have been created for the content areas. The
@@ -1843,7 +1843,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
* configure the viewer with a {@link SourceViewerConfiguration}.
* Subclasses may reimplement to provide a specific configuration for the
* text viewer.
- *
+ *
* @param textViewer
* the text viewer to configure
*/
@@ -1867,7 +1867,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
protected ITokenComparator createTokenComparator(String line) {
return new TokenComparator(line);
}
-
+
/**
* Setup the given document for use with this viewer. By default,
* the partitioner returned from {@link #getDocumentPartitioner()}
@@ -1876,7 +1876,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
* {@link #getDocumentPartitioning()} if they wish to be able to use shared
* documents (i.e. file buffers).
* @param document the document to be set up
- *
+ *
* @since 3.3
*/
protected void setupDocument(IDocument document) {
@@ -1900,7 +1900,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
}
}
}
-
+
/**
* Returns a document partitioner which is suitable for the underlying content type.
* This method is only called if the input provided by the content provider is a
@@ -1918,7 +1918,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
protected IDocumentPartitioner getDocumentPartitioner() {
return null;
}
-
+
/**
* Return the partitioning to which the partitioner returned from
* {@link #getDocumentPartitioner()} is to be associated. Return <code>null</code>
@@ -1929,13 +1929,13 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
* will not be able to use shared documents.
* @see IDocumentExtension3
* @return a partitioning
- *
+ *
* @since 3.3
*/
protected String getDocumentPartitioning() {
return null;
}
-
+
/**
* Called on the viewer disposal.
* Unregisters from the compare configuration.
@@ -1948,12 +1948,12 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
if (fHandlerService != null)
fHandlerService.dispose();
-
+
Object input= getInput();
removeFromDocumentManager(ANCESTOR_CONTRIBUTOR, input);
removeFromDocumentManager(LEFT_CONTRIBUTOR, input);
removeFromDocumentManager(RIGHT_CONTRIBUTOR, input);
-
+
if (DEBUG)
DocumentManager.dump();
@@ -1964,7 +1964,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
fPreferenceStore.removePropertyChangeListener(fPreferenceChangeListener);
fPreferenceChangeListener= null;
}
-
+
fLeftCanvas= null;
fRightCanvas= null;
fVScrollBar= null;
@@ -1974,22 +1974,22 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
fAncestorContributor.unsetDocument(fAncestor);
fLeftContributor.unsetDocument(fLeft);
fRightContributor.unsetDocument(fRight);
-
+
disconnect(fLeftContributor);
disconnect(fRightContributor);
disconnect(fAncestorContributor);
-
+
if (fBirdsEyeCursor != null) {
fBirdsEyeCursor.dispose();
fBirdsEyeCursor= null;
}
-
+
if (showWhitespaceAction != null)
showWhitespaceAction.dispose();
-
+
if (toggleLineNumbersAction != null)
toggleLineNumbersAction.dispose();
-
+
if (fIgnoreWhitespace != null)
fIgnoreWhitespace.dispose();
@@ -2005,7 +2005,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
fSourceViewerDecorationSupport = null;
}
-
+
if (fAncestor != null)
fAncestor.dispose();
fAncestor = null;
@@ -2025,10 +2025,10 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
}
fColors= null;
}
- // don't add anything here, disposing colors should be done last
+ // don't add anything here, disposing colors should be done last
super.handleDispose(event);
}
-
+
private void disconnect(ContributorInfo legInfo) {
if (legInfo != null)
legInfo.disconnect();
@@ -2037,7 +2037,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
//-------------------------------------------------------------------------------------------------------------
//--- internal ------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------------
-
+
/*
* Creates the specific SWT controls for the content areas.
* Clients must not call or override this method.
@@ -2045,7 +2045,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
@Override
protected void createControls(Composite composite) {
PlatformUI.getWorkbench().getHelpSystem().setHelp(composite, ICompareContextIds.TEXT_MERGE_VIEW);
-
+
// 1st row
if (fMarginWidth > 0) {
fAncestorCanvas= new BufferedCanvas(composite, SWT.NONE) {
@@ -2063,7 +2063,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
}
);
}
-
+
fAncestor= createPart(composite);
setEditable(fAncestor.getSourceViewer(), false);
fAncestor.getSourceViewer().getTextWidget().getAccessible().addAccessibleListener(new AccessibleAdapter() {
@@ -2073,12 +2073,12 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
}
});
fAncestor.getSourceViewer().addTextPresentationListener(new ChangeHighlighter(fAncestor));
-
+
fSummaryHeader= new Canvas(composite, SWT.NONE);
fHeaderPainter= new HeaderPainter();
fSummaryHeader.addPaintListener(fHeaderPainter);
updateResolveStatus();
-
+
// 2nd row
if (fMarginWidth > 0) {
fLeftCanvas= new BufferedCanvas(composite, SWT.NONE) {
@@ -2096,7 +2096,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
}
);
}
-
+
fLeft= createPart(composite);
fLeft.getSourceViewer().getTextWidget().getVerticalBar().setVisible(!fSynchronizedScrolling);
fLeft.getSourceViewer().getTextWidget().getAccessible().addAccessibleListener(new AccessibleAdapter() {
@@ -2106,7 +2106,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
}
});
fLeft.getSourceViewer().addTextPresentationListener(new ChangeHighlighter(fLeft));
-
+
fRight= createPart(composite);
fRight.getSourceViewer().getTextWidget().getVerticalBar().setVisible(!fSynchronizedScrolling);
fRight.getSourceViewer().getTextWidget().getAccessible().addAccessibleListener(new AccessibleAdapter() {
@@ -2116,7 +2116,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
}
});
fRight.getSourceViewer().addTextPresentationListener(new ChangeHighlighter(fRight));
-
+
IWorkbenchPart part = getCompareConfiguration().getContainer().getWorkbenchPart();
// part is not available for contexts different than editor
if (part != null) {
@@ -2127,7 +2127,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
cesp.setViewers(new SourceViewer[] { fLeft.getSourceViewer(), fRight.getSourceViewer(), fAncestor.getSourceViewer() }, focusSourceViewer);
}
}
-
+
hsynchViewport(fAncestor.getSourceViewer(), fLeft.getSourceViewer(), fRight.getSourceViewer());
hsynchViewport(fLeft.getSourceViewer(), fAncestor.getSourceViewer(), fRight.getSourceViewer());
hsynchViewport(fRight.getSourceViewer(), fAncestor.getSourceViewer(), fLeft.getSourceViewer());
@@ -2148,11 +2148,11 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
}
);
}
-
+
fScrollCanvas= new Canvas(composite, SWT.V_SCROLL);
Rectangle trim= fLeft.getSourceViewer().getTextWidget().computeTrim(0, 0, 0, 0);
fTopInset= trim.y;
-
+
fVScrollBar= fScrollCanvas.getVerticalBar();
fVScrollBar.setIncrement(1);
fVScrollBar.setVisible(true);
@@ -2165,7 +2165,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
}
}
);
-
+
fBirdsEyeCanvas= new BufferedCanvas(composite, SWT.NONE) {
@Override
public void doPaint(GC gc) {
@@ -2183,7 +2183,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
fBirdsEyeCanvas.addMouseMoveListener(
new MouseMoveListener() {
private Cursor fLastCursor;
-
+
@Override
public void mouseMove(MouseEvent e) {
Cursor cursor= null;
@@ -2206,7 +2206,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
}
}
}
-
+
private void hsynchViewport(final TextViewer tv1, final TextViewer tv2, final TextViewer tv3) {
final StyledText st1= tv1.getTextWidget();
final StyledText st2= tv2.getTextWidget();
@@ -2232,7 +2232,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
setCurrentDiff(diff, reveal);
}
}
-
+
private Diff handleMouseInSides(Canvas canvas, MergeSourceViewer tp, int my) {
int lineHeight= tp.getSourceViewer().getTextWidget().getLineHeight();
@@ -2262,14 +2262,14 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
continue;
if (y >= visibleHeight)
break;
-
+
if (my >= y && my < y+h)
return diff;
}
}
return null;
}
-
+
private Diff getDiffUnderMouse(Canvas canvas, int mx, int my, Rectangle r) {
if (! fSynchronizedScrolling)
@@ -2331,33 +2331,33 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
private Diff handlemouseInBirdsEyeView(Canvas canvas, int my) {
return fMerger.findDiff(getViewportHeight(), fSynchronizedScrolling, canvas.getSize(), my);
}
-
+
private void paintBirdsEyeView(Canvas canvas, GC gc) {
-
+
Color c;
Rectangle r= new Rectangle(0, 0, 0, 0);
int yy, hh;
-
+
Point size= canvas.getSize();
-
+
int virtualHeight= fSynchronizedScrolling ? fMerger.getVirtualHeight() : fMerger.getRightHeight();
if (virtualHeight < getViewportHeight())
return;
-
+
Display display= canvas.getDisplay();
int y= 0;
for (Iterator<?> iterator = fMerger.rangesIterator(); iterator.hasNext();) {
Diff diff = (Diff) iterator.next();
int h= fSynchronizedScrolling ? diff.getMaxDiffHeight()
: diff.getRightHeight();
-
+
if (fMerger.useChange(diff)) {
-
+
yy= (y*size.y)/virtualHeight;
hh= (h*size.y)/virtualHeight;
if (hh < 3)
hh= 3;
-
+
c= getColor(display, getFillColor(diff));
if (c != null) {
gc.setBackground(c);
@@ -2382,16 +2382,16 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
gc.drawRectangle(r);
}
}
-
+
y+= h;
}
}
-
+
private void refreshBirdsEyeView() {
if (fBirdsEyeCanvas != null)
fBirdsEyeCanvas.redraw();
}
-
+
/**
* Override to give focus to the pane that previously had focus or to a suitable
* default pane.
@@ -2427,8 +2427,8 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
}
return false; // could not set focus
}
-
-
+
+
class HoverResizer extends Resizer {
Canvas fCanvas;
public HoverResizer(Canvas c, int dir) {
@@ -2442,7 +2442,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
super.mouseMove(e);
}
}
-
+
@Override
protected final Control createCenterControl(Composite parent) {
if (fSynchronizedScrolling) {
@@ -2488,7 +2488,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
}
}
);
-
+
return canvas;
}
return super.createCenterControl(parent);
@@ -2549,7 +2549,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
}
return fButtonDiff != null;
}
-
+
@Override
protected final int getCenterWidth() {
if (fSynchronizedScrolling)
@@ -2577,7 +2577,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
* Clients may implement to provide their own type of source viewers. The
* viewer is not expected to be configured with a source viewer
* configuration.
- *
+ *
* @param parent
* the parent of the viewer's control
* @param textOrientation
@@ -2589,10 +2589,10 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
protected SourceViewer createSourceViewer(Composite parent, int textOrientation) {
return new SourceViewer(parent, new CompositeRuler(), textOrientation | SWT.H_SCROLL | SWT.V_SCROLL);
}
-
+
/**
* Tells whether the given text viewer is backed by an editor.
- *
+ *
* @param textViewer the text viewer to check
* @return <code>true</code> if the viewer is backed by an editor
* @since 3.5
@@ -2605,12 +2605,12 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
* Returns an editor input for the given source viewer. The method returns
* <code>null</code> when no input is available, for example when the input
* for the merge viewer has not been set yet.
- *
+ *
* @param sourceViewer
* the source viewer to get input for
* @return input for the given viewer or <code>null</code> when no input is
* available
- *
+ *
* @since 3.5
*/
protected IEditorInput getEditorInput(ISourceViewer sourceViewer) {
@@ -2626,7 +2626,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
return fAncestorContributor.getDocumentKey();
return null;
}
-
+
/*
* Creates and initializes a text part.
*/
@@ -2635,10 +2635,10 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
createSourceViewer(parent, getDirection()),
getResourceBundle(), getCompareConfiguration().getContainer());
final StyledText te= viewer.getSourceViewer().getTextWidget();
-
+
if (!fConfirmSave)
viewer.hideSaveAction();
-
+
te.addPaintListener(
new PaintListener() {
@Override
@@ -2664,7 +2664,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
}
}
);
-
+
te.addFocusListener(
new FocusAdapter() {
@Override
@@ -2677,7 +2677,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
}
}
);
-
+
viewer.getSourceViewer().addViewportListener(
new IViewportListener() {
@Override
@@ -2686,14 +2686,14 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
}
}
);
-
+
Font font= JFaceResources.getFont(fSymbolicFontName);
if (font != null)
te.setFont(font);
-
+
if (fBackground != null) // not default
te.setBackground(getColor(parent.getDisplay(), fBackground));
-
+
// Add the find action to the popup menu of the viewer
contributeFindAction(viewer);
@@ -2733,7 +2733,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
action.setActionDefinitionId(IWorkbenchCommandConstants.EDIT_FIND_AND_REPLACE);
viewer.addAction(MergeSourceViewer.FIND_ID, action);
}
-
+
private void contributeGotoLineAction(MergeSourceViewer viewer) {
IAction action = new GotoLineAction((ITextEditor) viewer.getAdapter(ITextEditor.class));
action.setActionDefinitionId(ITextEditorActionDefinitionIds.LINE_GOTO);
@@ -2744,7 +2744,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
IAction action = new ChangeEncodingAction(getTextEditorAdapter());
viewer.addAction(MergeSourceViewer.CHANGE_ENCODING_ID, action);
}
-
+
private void contributeDiffBackgroundListener(final MergeSourceViewer viewer) {
viewer.getSourceViewer().getTextWidget().addLineBackgroundListener(
new LineBackgroundListener() {
@@ -2827,7 +2827,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
* The default implementation does nothing, but clients should override to properly react to
* viewers switching.
* </p>
- *
+ *
* @param sourceViewer the source viewer
* @param state <code>true</code> if activated
* @since 3.5
@@ -2861,34 +2861,34 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
// The document is not associated with the input of the viewer so try to find the document
return Utilities.getDocument(type, element, isUsingDefaultContentProvider(), canHaveSharedDocument());
}
-
+
private boolean isUsingDefaultContentProvider() {
return getContentProvider() instanceof MergeViewerContentProvider;
}
-
+
private boolean canHaveSharedDocument() {
return getDocumentPartitioning() != null
|| getDocumentPartitioner() == null;
}
-
+
private IDocument getDocument(ITypedElement te, ContributorInfo info) {
if (info != null && info.getElement() == te)
return info.getDocument();
return null;
}
-
+
IDocument getDocument(char type, Object input) {
IDocument doc= getElementDocument(type, input);
if (doc != null)
return doc;
-
+
if (input instanceof IDiffElement) {
IDiffContainer parent= ((IDiffElement)input).getParent();
return getElementDocument(type, parent);
}
return null;
}
-
+
/*
* Returns true if the given inputs map to the same documents
*/
@@ -2897,7 +2897,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
IDocument oldDoc= getDocument(type, oldInput);
return newDoc == oldDoc;
}
-
+
/**
* Overridden to prevent save confirmation if new input is sub document of current input.
* @param newInput the new input of this viewer, or <code>null</code> if there is no new input
@@ -2917,25 +2917,25 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
return false;
}
}
-
+
if (DEBUG) System.out.println("***** New docs !!!!"); //$NON-NLS-1$
-
+
removeFromDocumentManager(ANCESTOR_CONTRIBUTOR, oldInput);
removeFromDocumentManager(LEFT_CONTRIBUTOR, oldInput);
removeFromDocumentManager(RIGHT_CONTRIBUTOR, oldInput);
-
+
if (DEBUG)
DocumentManager.dump();
-
+
return super.doSave(newInput, oldInput);
}
-
+
private void removeFromDocumentManager(char leg, Object oldInput) {
IDocument document= getDocument(leg, oldInput);
if (document != null)
DocumentManager.remove(document);
}
-
+
private ITypedElement getParent(char type) {
Object input= getInput();
if (input instanceof IDiffElement) {
@@ -2944,7 +2944,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
}
return null;
}
-
+
/*
* Initializes the text viewers of the three content areas with the given input objects.
* Subclasses may extend.
@@ -2959,23 +2959,23 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
Position leftRange= null;
Position rightRange= null;
-
+
// if one side is empty use container
if (FIX_47640 && !emptyInput && (left == null || right == null)) {
if (input instanceof IDiffElement) {
IDiffContainer parent= ((IDiffElement)input).getParent();
if (parent instanceof ICompareInput) {
ICompareInput ci= (ICompareInput) parent;
-
+
if (ci.getAncestor() instanceof IDocumentRange
|| ci.getLeft() instanceof IDocumentRange
|| ci.getRight() instanceof IDocumentRange) {
-
+
if (left instanceof IDocumentRange)
leftRange= ((IDocumentRange)left).getRange();
if (right instanceof IDocumentRange)
rightRange= ((IDocumentRange)right).getRange();
-
+
ancestor= ci.getAncestor();
left= getCompareConfiguration().isMirrored() ? ci.getRight() : ci.getLeft();
right= getCompareConfiguration().isMirrored() ? ci.getLeft() : ci.getRight();
@@ -2985,12 +2985,12 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
}
fHighlightRanges= left != null && right != null;
-
+
resetDiffs();
fHasErrors= false; // start with no errors
-
+
IMergeViewerContentProvider cp= getMergeContentProvider();
-
+
if (cp instanceof MergeViewerContentProvider) {
MergeViewerContentProvider mcp= (MergeViewerContentProvider) cp;
mcp.setAncestorError(null);
@@ -3003,21 +3003,21 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
ContributorInfo oldLeftContributor = fLeftContributor;
ContributorInfo oldRightContributor = fRightContributor;
ContributorInfo oldAncestorContributor = fAncestorContributor;
-
+
// Create the new contributor
fLeftContributor = createLegInfoFor(left, LEFT_CONTRIBUTOR);
fRightContributor = createLegInfoFor(right, RIGHT_CONTRIBUTOR);
fAncestorContributor = createLegInfoFor(ancestor, ANCESTOR_CONTRIBUTOR);
-
+
fLeftContributor.transferContributorStateFrom(oldLeftContributor);
fRightContributor.transferContributorStateFrom(oldRightContributor);
fAncestorContributor.transferContributorStateFrom(oldAncestorContributor);
-
+
// Now disconnect the old ones
disconnect(oldLeftContributor);
disconnect(oldRightContributor);
disconnect(oldAncestorContributor);
-
+
// Get encodings from streams. If an encoding is null, abide by the other one
// Defaults to workbench encoding only if both encodings are null
fLeftContributor.setEncodingIfAbsent(fRightContributor);
@@ -3029,21 +3029,21 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
configureSourceViewer(fLeft.getSourceViewer(), isLeftEditable() && cp.isLeftEditable(input), fLeftContributor);
configureSourceViewer(fRight.getSourceViewer(), isRightEditable() && cp.isRightEditable(input), fRightContributor);
isConfigured = true; // configure once
- }
+ }
// set new documents
fLeftContributor.setDocument(fLeft, isLeftEditable() && cp.isLeftEditable(input));
fLeftLineCount= fLeft.getLineCount();
-
+
fRightContributor.setDocument(fRight, isRightEditable() && cp.isRightEditable(input));
fRightLineCount= fRight.getLineCount();
-
+
fAncestorContributor.setDocument(fAncestor, false);
setSyncScrolling(fPreferenceStore.getBoolean(ComparePreferencePage.SYNCHRONIZE_SCROLLING));
-
+
update(false);
-
+
if (!fHasErrors && !emptyInput && !fComposite.isDisposed()) {
if (isRefreshing()) {
fLeftContributor.updateSelection(fLeft, !fSynchronizedScrolling);
@@ -3073,7 +3073,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
}
}
}
-
+
}
private void configureSourceViewer(SourceViewer sourceViewer, boolean editable, ContributorInfo contributor) {
@@ -3102,7 +3102,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
/**
* Sets the editable state of the given source viewer.
- *
+ *
* @param sourceViewer
* the source viewer
* @param state
@@ -3120,7 +3120,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
private ContributorInfo createLegInfoFor(Object element, char leg) {
return new ContributorInfo(this, element, leg);
}
-
+
private boolean updateDiffBackground(Diff diff) {
if (!fHighlightRanges)
@@ -3142,7 +3142,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
*/
private void documentChanged(DocumentEvent e, boolean dirty) {
final IDocument doc= e.getDocument();
-
+
if (doc == fLeft.getSourceViewer().getDocument()) {
setLeftDirty(dirty);
} else if (doc == fRight.getSourceViewer().getDocument()) {
@@ -3173,8 +3173,8 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
updateLines(doc);
}
}
-
-
+
+
private void saveDiff() {
fSavedDiff = fCurrentDiff;
}
@@ -3185,8 +3185,8 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
}
return fSavedDiff;
}
-
-
+
+
private Diff findNewDiff(Diff oldDiff) {
if (oldDiff == null)
return null;
@@ -3210,7 +3210,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
}
return fMerger.findDiff(type, offset, offset + length);
}
-
+
/*
* This method is called if a range of text on one side is copied into an empty sub-document
* on the other side. The method returns the position where the sub-document is placed into the base document.
@@ -3224,10 +3224,10 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
* @since 2.0
*/
protected int findInsertionPosition(char type, ICompareInput input) {
-
+
ITypedElement other= null;
char otherType= 0;
-
+
switch (type) {
case ANCESTOR_CONTRIBUTOR:
other= input.getLeft();
@@ -3256,7 +3256,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
default:
break;
}
-
+
if (other instanceof IDocumentRange) {
IDocumentRange dr= (IDocumentRange) other;
Position p= dr.getRange();
@@ -3265,7 +3265,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
}
return 0;
}
-
+
private void setError(char type, String message) {
IMergeViewerContentProvider cp= getMergeContentProvider();
if (cp instanceof MergeViewerContentProvider) {
@@ -3303,7 +3303,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
* is false. _In most cases_ this means that save has taken place
* outside compare editor. Ask to redo diff calculation when the
* editor gets focus.
- *
+ *
* However, undoing all the changes made in another editor would
* result in asking for redo diff as well. In this case, we set the
* flag back to false, see
@@ -3325,7 +3325,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
return null;
}
}
-
+
private void addNewRange(char type, Object input, Position range) {
switch (type) {
case ANCESTOR_CONTRIBUTOR:
@@ -3341,10 +3341,10 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
break;
}
}
-
+
/**
* Returns the contents of the underlying document as an array of bytes using the current workbench encoding.
- *
+ *
* @param left if <code>true</code> the contents of the left side is returned; otherwise the right side
* @return the contents of the left or right document or null
*/
@@ -3369,29 +3369,29 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
}
return null;
}
-
+
private IRegion normalizeDocumentRegion(IDocument doc, IRegion region) {
-
+
if (region == null || doc == null)
return region;
-
+
int maxLength= doc.getLength();
-
+
int start= region.getOffset();
if (start < 0)
start= 0;
else if (start > maxLength)
start= maxLength;
-
+
int length= region.getLength();
if (length < 0)
length= 0;
else if (start + length > maxLength)
length= maxLength - start;
-
+
return new Region(start, length);
}
-
+
@Override
protected final void handleResizeAncestor(int x, int y, int width, int height) {
if (width > 0) {
@@ -3401,7 +3401,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
fAncestorCanvas.setVisible(true);
if (fAncestor.isControlOkToUse())
fAncestor.getSourceViewer().getTextWidget().setVisible(true);
-
+
if (fAncestorCanvas != null) {
fAncestorCanvas.setBounds(x, y, fMarginWidth, height-scrollbarHeight);
x+= fMarginWidth;
@@ -3427,7 +3427,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
protected final void handleResizeLeftRight(int x, int y, int width1, int centerWidth, int width2, int height) {
if (fBirdsEyeCanvas != null)
width2-= BIRDS_EYE_VIEW_WIDTH;
-
+
Rectangle trim= fLeft.getSourceViewer().getTextWidget().computeTrim(0, 0, 0, 0);
int scrollbarHeight= trim.height + trim.x;
@@ -3439,15 +3439,15 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
x+= fMarginWidth;
leftTextWidth-= fMarginWidth;
}
-
+
fLeft.setBounds(x, y, leftTextWidth, height);
x+= leftTextWidth;
-
+
if (fCenter == null || fCenter.isDisposed())
fCenter= createCenterControl(composite);
fCenter.setBounds(x, y, centerWidth, height-scrollbarHeight);
x+= centerWidth;
-
+
if (!fSynchronizedScrolling) { // canvas is to the left of text
if (fRightCanvas != null) {
fRightCanvas.setBounds(x, y, fMarginWidth, height-scrollbarHeight);
@@ -3456,7 +3456,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
}
// we draw the canvas to the left of the text widget
}
-
+
int scrollbarWidth= 0;
if (fSynchronizedScrolling && fScrollCanvas != null) {
trim= fLeft.getSourceViewer().getTextWidget().computeTrim(0, 0, 0, 0);
@@ -3468,7 +3468,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
rightTextWidth-= fMarginWidth;
fRight.setBounds(x, y, rightTextWidth, height);
x+= rightTextWidth;
-
+
if (fSynchronizedScrolling) {
if (fRightCanvas != null) { // canvas is to the right of the text
fRightCanvas.setBounds(x, y, fMarginWidth, height-scrollbarHeight);
@@ -3477,7 +3477,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
if (fScrollCanvas != null)
fScrollCanvas.setBounds(x, y, scrollbarWidth, height-scrollbarHeight);
}
-
+
if (fBirdsEyeCanvas != null) {
int verticalScrollbarButtonHeight= scrollbarWidth;
int horizontalScrollbarButtonHeight= scrollbarHeight;
@@ -3490,12 +3490,12 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
y+= verticalScrollbarButtonHeight;
fBirdsEyeCanvas.setBounds(x+scrollbarWidth, y, BIRDS_EYE_VIEW_WIDTH, height-(2*verticalScrollbarButtonHeight+horizontalScrollbarButtonHeight));
}
-
+
// doesn't work since TextEditors don't have their correct size yet.
updateVScrollBar();
refreshBirdsEyeView();
}
-
+
/*
* Track selection changes to update the current Diff.
*/
@@ -3511,9 +3511,9 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
return new Region(position.getOffset(), position.getLength());
return null;
}
-
+
//---- the differencing
-
+
/**
* Perform a two level 2- or 3-way diff.
* The first level is based on line comparison, the second level on token comparison.
@@ -3539,7 +3539,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
invalidateTextPresentation();
}
-
+
private Diff findDiff(char type, int pos) {
try {
return fMerger.findDiff(type, pos);
@@ -3551,7 +3551,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
return null;
}
}
-
+
private void resetPositions(IDocument doc) {
if (doc == null)
return;
@@ -3562,16 +3562,16 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
}
doc.addPositionCategory(DIFF_RANGE_CATEGORY);
}
-
+
//---- update UI stuff
-
+
private void updateControls() {
if (getControl().isDisposed())
return;
boolean leftToRight= false;
boolean rightToLeft= false;
-
+
updateStatus(fCurrentDiff);
updateResolveStatus();
@@ -3584,7 +3584,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
}
}
}
-
+
if (fDirectionLabel != null) {
if (fHighlightRanges && fCurrentDiff != null && isThreeWay() && !isIgnoreAncestor()) {
fDirectionLabel.setImage(fCurrentDiff.getImage());
@@ -3592,7 +3592,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
fDirectionLabel.setImage(null);
}
}
-
+
if (fCopyDiffLeftToRightItem != null)
fCopyDiffLeftToRightItem.getAction().setEnabled(leftToRight);
if (fCopyDiffRightToLeftItem != null)
@@ -3631,11 +3631,11 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
Assert.isTrue(false);
return false;
}
-
+
private void updateResolveStatus() {
-
+
RGB rgb= null;
-
+
if (showResolveUI()) {
// we only show red or green if there is at least one incoming or conflicting change
int unresolvedIncoming= 0;
@@ -3653,7 +3653,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
}
}
}
-
+
if (unresolvedConflicting > 0)
rgb= SELECTED_CONFLICT;
else if (unresolvedIncoming > 0)
@@ -3661,22 +3661,22 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
else
rgb= RESOLVED;
}
-
+
if (fHeaderPainter.setColor(rgb))
fSummaryHeader.redraw();
}
private void updateStatus(Diff diff) {
-
+
String diffDescription;
-
+
if (diff == null) {
diffDescription= CompareMessages.TextMergeViewer_diffDescription_noDiff_format;
} else {
-
+
if (diff.isToken()) // we don't show special info for token diffs
diff= diff.getParent();
-
+
String format= CompareMessages.TextMergeViewer_diffDescription_diff_format;
diffDescription= MessageFormat.format(format,
getDiffType(diff), // 0: diff type
@@ -3685,14 +3685,14 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
getDiffRange(fRight, diff.getPosition(RIGHT_CONTRIBUTOR)) // 3: left end line
);
}
-
+
String format= CompareMessages.TextMergeViewer_statusLine_format;
String s= MessageFormat.format(format,
getCursorPosition(fLeft), // 0: left column
getCursorPosition(fRight), // 1: right column
diffDescription // 2: diff description
);
-
+
getCompareConfiguration().getContainer().setStatusMessage(s);
}
@@ -3718,7 +3718,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
String format= CompareMessages.TextMergeViewer_diffType_format;
return MessageFormat.format(format, s, diff.changeType());
}
-
+
private String getDiffNumber(Diff diff) {
// find the diff's number
int diffNumber= 0;
@@ -3732,12 +3732,12 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
}
return Integer.toString(diffNumber);
}
-
+
private String getDiffRange(MergeSourceViewer v, Position pos) {
Point p= v.getLineRange(pos, new Point(0, 0));
int startLine= p.x+1;
int endLine= p.x+p.y;
-
+
String format;
if (endLine < startLine)
format= CompareMessages.TextMergeViewer_beforeLine_format;
@@ -3745,33 +3745,33 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
format= CompareMessages.TextMergeViewer_range_format;
return MessageFormat.format(format, Integer.toString(startLine), Integer.toString(endLine));
}
-
+
/*
* Returns a description of the cursor position.
- *
+ *
* @return a description of the cursor position
*/
private String getCursorPosition(MergeSourceViewer v) {
if (v != null) {
StyledText styledText= v.getSourceViewer().getTextWidget();
-
+
IDocument document= v.getSourceViewer().getDocument();
if (document != null) {
int offset= v.getSourceViewer().getVisibleRegion().getOffset();
int caret= offset + styledText.getCaretOffset();
-
+
try {
int line=document.getLineOfOffset(caret);
-
+
int lineOffset= document.getLineOffset(line);
int occurrences= 0;
for (int i= lineOffset; i < caret; i++)
if ('\t' == document.getChar(i))
++ occurrences;
-
+
int tabWidth= styledText.getTabs();
int column= caret - lineOffset + (tabWidth -1) * occurrences;
-
+
String format= CompareMessages.TextMergeViewer_cursorPosition_format;
return MessageFormat.format(format,
Integer.toString(line + 1), Integer.toString(column + 1) );
@@ -3786,7 +3786,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
@Override
protected void updateHeader() {
super.updateHeader();
-
+
updateControls();
}
@@ -3797,7 +3797,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
@Override
protected void createToolItems(ToolBarManager tbm) {
fHandlerService= CompareHandlerService.createFor(getCompareConfiguration().getContainer(), fLeft.getSourceViewer().getControl().getShell());
-
+
final String ignoreAncestorActionKey= "action.IgnoreAncestor."; //$NON-NLS-1$
Action ignoreAncestorAction= new Action() {
@Override
@@ -3813,13 +3813,13 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
ignoreAncestorAction.setChecked(isIgnoreAncestor());
Utilities.initAction(ignoreAncestorAction, getResourceBundle(), ignoreAncestorActionKey);
Utilities.initToggleAction(ignoreAncestorAction, getResourceBundle(), ignoreAncestorActionKey, isIgnoreAncestor());
-
+
fIgnoreAncestorItem= new ActionContributionItem(ignoreAncestorAction);
fIgnoreAncestorItem.setVisible(false);
tbm.appendToGroup("modes", fIgnoreAncestorItem); //$NON-NLS-1$
tbm.add(new Separator());
-
+
Action a= new Action() {
@Override
public void run() {
@@ -3832,7 +3832,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
fNextDiff= new ActionContributionItem(a);
tbm.appendToGroup("navigation", fNextDiff); //$NON-NLS-1$
// Don't register this action since it is probably registered by the container
-
+
a= new Action() {
@Override
public void run() {
@@ -3845,7 +3845,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
fPreviousDiff= new ActionContributionItem(a);
tbm.appendToGroup("navigation", fPreviousDiff); //$NON-NLS-1$
// Don't register this action since it is probably registered by the container
-
+
a= new Action() {
@Override
public void run() {
@@ -3858,7 +3858,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
fNextChange= new ActionContributionItem(a);
tbm.appendToGroup("navigation", fNextChange); //$NON-NLS-1$
fHandlerService.registerAction(a, "org.eclipse.compare.selectNextChange"); //$NON-NLS-1$
-
+
a= new Action() {
@Override
public void run() {
@@ -3883,7 +3883,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
fCopyDiffLeftToRightItem.setVisible(isRightEditable());
tbm.appendToGroup("merge", fCopyDiffLeftToRightItem); //$NON-NLS-1$
fHandlerService.registerAction(a, "org.eclipse.compare.copyLeftToRight"); //$NON-NLS-1$
-
+
a= new Action() {
@Override
public void run() {
@@ -3895,14 +3895,14 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
fCopyDiffRightToLeftItem.setVisible(isLeftEditable());
tbm.appendToGroup("merge", fCopyDiffRightToLeftItem); //$NON-NLS-1$
fHandlerService.registerAction(a, "org.eclipse.compare.copyRightToLeft"); //$NON-NLS-1$
-
+
fIgnoreWhitespace= ChangePropertyAction.createIgnoreWhiteSpaceAction(getResourceBundle(), getCompareConfiguration());
fIgnoreWhitespace.setActionDefinitionId(ICompareUIConstants.COMMAND_IGNORE_WHITESPACE);
fLeft.addTextAction(fIgnoreWhitespace);
fRight.addTextAction(fIgnoreWhitespace);
fAncestor.addTextAction(fIgnoreWhitespace);
fHandlerService.registerAction(fIgnoreWhitespace, fIgnoreWhitespace.getActionDefinitionId());
-
+
boolean needsLeftPainter= !isEditorBacked(fLeft.getSourceViewer());
boolean needsRightPainter= !isEditorBacked(fLeft.getSourceViewer());
boolean needsAncestorPainter= !isEditorBacked(fAncestor.getSourceViewer());
@@ -3910,13 +3910,13 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
new MergeSourceViewer[] {fLeft, fRight, fAncestor},
new boolean[] {needsLeftPainter, needsRightPainter, needsAncestorPainter });
fHandlerService.registerAction(showWhitespaceAction, ITextEditorActionDefinitionIds.SHOW_WHITESPACE_CHARACTERS);
-
+
toggleLineNumbersAction = new LineNumberRulerToggleAction(CompareMessages.TextMergeViewer_16,
new MergeSourceViewer[] { fLeft, fRight, fAncestor },
AbstractDecoratedTextEditorPreferenceConstants.EDITOR_LINE_NUMBER_RULER);
fHandlerService.registerAction(toggleLineNumbersAction, ITextEditorActionDefinitionIds.LINENUMBER_TOGGLE);
}
-
+
private void configureCompareFilterActions(Object input, Object ancestor,
Object left, Object right) {
if (getCompareConfiguration() != null) {
@@ -4055,20 +4055,20 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
@Override
protected void handlePropertyChangeEvent(PropertyChangeEvent event) {
String key= event.getProperty();
-
+
if (key.equals(CompareConfiguration.IGNORE_WHITESPACE)
|| key.equals(ComparePreferencePage.SHOW_PSEUDO_CONFLICTS)
|| (key.equals(ChangeCompareFilterPropertyAction.COMPARE_FILTERS) && getCompareConfiguration()
.getProperty(
ChangeCompareFilterPropertyAction.COMPARE_FILTERS_INITIALIZING) == null)) {
-
+
fShowPseudoConflicts= fPreferenceStore.getBoolean(ComparePreferencePage.SHOW_PSEUDO_CONFLICTS);
-
+
update(true);
// selectFirstDiff(true);
if (fFocusPart != null)
handleSelectionChanged(fFocusPart);
-
+
// } else if (key.equals(ComparePreferencePage.USE_SPLINES)) {
// fUseSplines= fPreferenceStore.getBoolean(ComparePreferencePage.USE_SPLINES);
// invalidateLines();
@@ -4079,17 +4079,17 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
fBasicCenterCurve= null;
updateControls();
invalidateLines();
-
+
} else if (key.equals(ComparePreferencePage.HIGHLIGHT_TOKEN_CHANGES)) {
fHighlightTokenChanges= fPreferenceStore.getBoolean(ComparePreferencePage.HIGHLIGHT_TOKEN_CHANGES);
updateControls();
updatePresentation();
-
+
// } else if (key.equals(ComparePreferencePage.USE_RESOLVE_UI)) {
// fUseResolveUI= fPreferenceStore.getBoolean(ComparePreferencePage.USE_RESOLVE_UI);
// updateResolveStatus();
// invalidateLines();
-
+
} else if (key.equals(fSymbolicFontName)) {
updateFont();
invalidateLines();
@@ -4098,11 +4098,11 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
updateColors(null);
invalidateLines();
invalidateTextPresentation();
-
+
} else if (key.equals(ComparePreferencePage.SYNCHRONIZE_SCROLLING)) {
boolean b= fPreferenceStore.getBoolean(ComparePreferencePage.SYNCHRONIZE_SCROLLING);
setSyncScrolling(b);
-
+
} else if (key.equals(AbstractTextEditor.PREFERENCE_COLOR_BACKGROUND)) {
if (!fIsUsingSystemBackground) {
setBackgroundColor(createColor(fPreferenceStore, AbstractTextEditor.PREFERENCE_COLOR_BACKGROUND));
@@ -4136,23 +4136,23 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
}
} else {
super.handlePropertyChangeEvent(event);
-
+
if (key.equals(ICompareUIConstants.PROP_IGNORE_ANCESTOR)) {
update(true);
selectFirstDiff(true);
}
}
}
-
+
private void selectFirstDiff(boolean first) {
-
+
if (fLeft == null || fRight == null) {
return;
}
if (fLeft.getSourceViewer().getDocument() == null || fRight.getSourceViewer().getDocument() == null) {
return;
}
-
+
Diff firstDiff= null;
if (first)
firstDiff= findNext(fRight, -1, -1, false);
@@ -4160,27 +4160,27 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
firstDiff= findPrev(fRight, 9999999, 9999999, false);
setCurrentDiff(firstDiff, true);
}
-
-
-
+
+
+
private void setSyncScrolling(boolean newMode) {
if (fSynchronizedScrolling != newMode) {
fSynchronizedScrolling= newMode;
-
+
scrollVertical(0, 0, 0, null);
-
+
// throw away central control (Sash or Canvas)
Control center= getCenterControl();
if (center != null && !center.isDisposed())
center.dispose();
-
+
fLeft.getSourceViewer().getTextWidget().getVerticalBar().setVisible(!fSynchronizedScrolling);
fRight.getSourceViewer().getTextWidget().getVerticalBar().setVisible(!fSynchronizedScrolling);
-
+
fComposite.layout(true);
}
}
-
+
@Override
protected void updateToolItems() {
if (fCopyDiffLeftToRightItem != null) {
@@ -4195,7 +4195,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
if (!isPatchHunk()){
if (fIgnoreAncestorItem != null)
fIgnoreAncestorItem.setVisible(isThreeWay());
-
+
if (fCopyDiffLeftToRightItem != null) {
IAction a= fCopyDiffLeftToRightItem.getAction();
if (a != null)
@@ -4209,13 +4209,13 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
}
super.updateToolItems();
}
-
+
//---- painting lines
-
+
private void updateLines(IDocument d) {
boolean left= false;
boolean right= false;
-
+
// FIXME: this optimization is incorrect because
// it doesn't take replace operations into account where
// the old and new line count does not differ
@@ -4228,7 +4228,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
right= fRightLineCount != l;
fRightLineCount= l;
}
-
+
if (left || right) {
if (left) {
if (fLeftCanvas != null)
@@ -4245,7 +4245,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
refreshBirdsEyeView();
}
}
-
+
private void invalidateLines() {
if (isThreeWay() && isAncestorVisible()) {
if (Utilities.okToUse(fAncestorCanvas))
@@ -4253,23 +4253,23 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
if (fAncestor != null && fAncestor.isControlOkToUse())
fAncestor.getSourceViewer().getTextWidget().redraw();
}
-
+
if (Utilities.okToUse(fLeftCanvas))
fLeftCanvas.redraw();
-
+
if (fLeft != null && fLeft.isControlOkToUse())
fLeft.getSourceViewer().getTextWidget().redraw();
-
+
if (Utilities.okToUse(getCenterControl()))
getCenterControl().redraw();
-
+
if (fRight != null && fRight.isControlOkToUse())
fRight.getSourceViewer().getTextWidget().redraw();
-
+
if (Utilities.okToUse(fRightCanvas))
fRightCanvas.redraw();
}
-
+
private boolean showResolveUI() {
if (!isThreeWay() || isIgnoreAncestor())
return false;
@@ -4280,13 +4280,13 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
// we only enable the new resolve UI if exactly one side is editable
return isLeftEditable() || isRightEditable();
}
-
+
private void paintCenter(Canvas canvas, GC g) {
-
+
Display display= canvas.getDisplay();
-
+
checkForColorUpdate(display);
-
+
if (! fSynchronizedScrolling)
return;
@@ -4297,53 +4297,53 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
Point size= canvas.getSize();
int x= 0;
int w= size.x;
-
+
g.setBackground(canvas.getBackground());
g.fillRectangle(x+1, 0, w-2, size.y);
-
+
if (!fIsMotif) {
// draw thin line between center ruler and both texts
g.setBackground(display.getSystemColor(SWT.COLOR_WIDGET_NORMAL_SHADOW));
g.fillRectangle(0, 0, 1, size.y);
g.fillRectangle(w-1, 0, 1, size.y);
}
-
+
if (! fHighlightRanges)
return;
if (fMerger.hasChanges()) {
int lshift= fLeft.getVerticalScrollOffset();
int rshift= fRight.getVerticalScrollOffset();
-
+
Point region= new Point(0, 0);
-
+
for (Iterator<?> iterator = fMerger.changesIterator(); iterator.hasNext();) {
Diff diff = (Diff) iterator.next();
if (diff.isDeleted())
continue;
-
+
if (fShowCurrentOnly2 && !isCurrentDiff(diff))
continue;
fLeft.getLineRange(diff.getPosition(LEFT_CONTRIBUTOR), region);
int ly= (region.x * lineHeightLeft) + lshift;
int lh= region.y * lineHeightLeft;
-
+
fRight.getLineRange(diff.getPosition(RIGHT_CONTRIBUTOR), region);
int ry= (region.x * lineHeightRight) + rshift;
int rh= region.y * lineHeightRight;
-
+
if (Math.max(ly+lh, ry+rh) < 0)
continue;
if (Math.min(ly, ry) >= visibleHeight)
break;
-
+
fPts[0]= x; fPts[1]= ly; fPts[2]= w; fPts[3]= ry;
fPts[6]= x; fPts[7]= ly+lh; fPts[4]= w; fPts[5]= ry+rh;
-
+
Color fillColor= getColor(display, getFillColor(diff));
Color strokeColor= getColor(display, getStrokeColor(diff));
-
+
if (fUseSingleLine) {
int w2= 3;
@@ -4392,22 +4392,22 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
g.drawLine(fPts[6], fPts[7], fPts[4], fPts[5]);
}
}
-
+
if (fUseSingleLine && isAnySideEditable()) {
// draw resolve state
int cx= (w-RESOLVE_SIZE)/2;
int cy= ((ly+lh/2) + (ry+rh/2) - RESOLVE_SIZE)/2;
-
+
g.setBackground(fillColor);
g.fillRectangle(cx, cy, RESOLVE_SIZE, RESOLVE_SIZE);
-
+
g.setForeground(strokeColor);
g.drawRectangle(cx, cy, RESOLVE_SIZE, RESOLVE_SIZE);
}
}
}
}
-
+
private int[] getCenterCurvePoints(int startx, int starty, int endx, int endy) {
if (fBasicCenterCurve == null)
buildBaseCenterCurve(endx-startx);
@@ -4431,9 +4431,9 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
}
private void paintSides(GC g, MergeSourceViewer tp, Canvas canvas, boolean right) {
-
+
Display display= canvas.getDisplay();
-
+
int lineHeight= tp.getSourceViewer().getTextWidget().getLineHeight();
int visibleHeight= tp.getViewportHeight();
@@ -4441,7 +4441,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
int x= 0;
int w= fMarginWidth;
int w2= w/2;
-
+
g.setBackground(canvas.getBackground());
g.fillRectangle(x, 0, w, size.y);
@@ -4459,32 +4459,32 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
if (fMerger.hasChanges()) {
int shift= tp.getVerticalScrollOffset() + (2-LW);
-
+
Point region= new Point(0, 0);
char leg = getLeg(tp);
for (Iterator<?> iterator = fMerger.changesIterator(); iterator.hasNext();) {
Diff diff = (Diff) iterator.next();
if (diff.isDeleted())
continue;
-
+
if (fShowCurrentOnly2 && !isCurrentDiff(diff))
continue;
tp.getLineRange(diff.getPosition(leg), region);
int y= (region.x * lineHeight) + shift;
int h= region.y * lineHeight;
-
+
if (y+h < 0)
continue;
if (y >= visibleHeight)
break;
-
+
g.setBackground(getColor(display, getFillColor(diff)));
if (right)
g.fillRectangle(x, y, w2, h);
else
g.fillRectangle(x+w2, y, w2, h);
-
+
g.setLineWidth(0 /* LW */);
g.setForeground(getColor(display, getStrokeColor(diff)));
if (right)
@@ -4494,9 +4494,9 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
}
}
}
-
+
private void paint(PaintEvent event, MergeSourceViewer tp) {
-
+
if (! fHighlightRanges)
return;
if (!fMerger.hasChanges())
@@ -4504,37 +4504,37 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
Control canvas= (Control) event.widget;
GC g= event.gc;
-
+
Display display= canvas.getDisplay();
-
+
int lineHeight= tp.getSourceViewer().getTextWidget().getLineHeight();
int w= canvas.getSize().x;
int shift= tp.getVerticalScrollOffset() + (2-LW);
int maxh= event.y+event.height; // visibleHeight
-
+
//if (fIsMotif)
shift+= fTopInset;
-
+
Point range= new Point(0, 0);
-
+
char leg = getLeg(tp);
for (Iterator<?> iterator = fMerger.changesIterator(); iterator.hasNext();) {
Diff diff = (Diff) iterator.next();
if (diff.isDeleted())
continue;
-
+
if (fShowCurrentOnly && !isCurrentDiff(diff))
continue;
tp.getLineRange(diff.getPosition(leg), range);
int y= (range.x * lineHeight) + shift;
int h= range.y * lineHeight;
-
+
if (y+h < event.y)
continue;
if (y > maxh)
break;
-
+
g.setBackground(getColor(display, getStrokeColor(diff)));
g.fillRectangle(0, y-1, w, LW);
g.fillRectangle(0, y+h-1, w, LW);
@@ -4563,10 +4563,10 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
}
return selected ? selected_fill : OUTGOING_FILL;
}
-
+
private RGB getStrokeColor(Diff diff) {
boolean selected= fCurrentDiff != null && fCurrentDiff.getParent() == diff;
-
+
if (isThreeWay() && !isIgnoreAncestor()) {
switch (diff.getKind()) {
case RangeDifference.RIGHT:
@@ -4586,7 +4586,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
}
return selected ? SELECTED_OUTGOING : OUTGOING;
}
-
+
private Color getColor(Display display, RGB rgb) {
if (rgb == null)
return null;
@@ -4599,7 +4599,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
}
return c;
}
-
+
static RGB interpolate(RGB fg, RGB bg, double scale) {
if (fg != null && bg != null)
return new RGB(
@@ -4613,9 +4613,9 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
return bg;
return new RGB(128, 128, 128); // a gray
}
-
+
//---- Navigating and resolving Diffs
-
+
private Diff getNextVisibleDiff(boolean down, boolean deep) {
Diff diff= null;
MergeSourceViewer part= getNavigationPart();
@@ -4637,7 +4637,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
}
return diff;
}
-
+
private Diff internalGetNextDiff(boolean down, boolean deep, MergeSourceViewer part, Point s) {
if (fMerger.hasChanges()) {
if (down)
@@ -4646,7 +4646,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
}
return null;
}
-
+
private MergeSourceViewer getNavigationPart() {
MergeSourceViewer part= fFocusPart;
if (part == null)
@@ -4657,7 +4657,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
private Diff getWrappedDiff(Diff diff, boolean down) {
return fMerger.getWrappedDiff(diff, down);
}
-
+
/*
* Returns true if end (or beginning) of document reached.
*/
@@ -4682,14 +4682,14 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
}
return diff == null;
}
-
+
private void endOfDocumentReached(boolean down) {
Control c= getControl();
if (Utilities.okToUse(c)) {
handleEndOfDocumentReached(c.getShell(), down);
}
}
-
+
private void handleEndOfDocumentReached(Shell shell, boolean next) {
IPreferenceStore store = CompareUIPlugin.getDefault().getPreferenceStore();
String value = store.getString(ICompareUIConstants.PREF_NAVIGATION_END_ACTION);
@@ -4735,7 +4735,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
}
}
}
-
+
private void performEndOfDocumentAction(Shell shell, IPreferenceStore store, String key, boolean next) {
String value = store.getString(key);
if (value.equals(ICompareUIConstants.PREF_VALUE_DO_NOTHING)) {
@@ -4751,7 +4751,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
selectFirstDiff(next);
}
}
-
+
private boolean hasNextElement(boolean down) {
ICompareNavigator navigator = getCompareConfiguration().getContainer().getNavigator();
if (navigator instanceof CompareNavigator) {
@@ -4770,11 +4770,11 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
char contributor = getLeg(tp);
return fMerger.findDiff(contributor, rangeStart, rangeEnd);
}
-
+
private Diff findNext(MergeSourceViewer tp, int start, int end, boolean deep) {
return fMerger.findNext(getLeg(tp), start, end, deep);
}
-
+
private Diff findPrev(MergeSourceViewer tp, int start, int end, boolean deep) {
return fMerger.findPrev(getLeg(tp), start, end, deep);
}
@@ -4787,7 +4787,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
private void setCurrentDiff(Diff d, boolean revealAndSelect) {
setCurrentDiff(d, revealAndSelect, false);
}
-
+
/*
* Set the currently active Diff and update the toolbars controls and lines.
* If <code>revealAndSelect</code> is <code>true</code> the Diff is revealed and
@@ -4805,7 +4805,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
fRightToLeftButton.setVisible(false);
if (d != null && revealAndSelect) {
-
+
// before we set fCurrentDiff we change the selection
// so that the paint code uses the old background colors
// otherwise selection isn't drawn correctly
@@ -4820,7 +4820,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
fLeft.setSelection(new Position(d.getPosition(LEFT_CONTRIBUTOR).offset, 0));
fRight.setSelection(new Position(d.getPosition(RIGHT_CONTRIBUTOR).offset, 0));
}
-
+
// now switch diffs
saveDiff();
fCurrentDiff= d;
@@ -4840,7 +4840,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
* Smart determines whether
*/
private void revealDiff(Diff d, boolean smart) {
-
+
boolean ancestorIsVisible= false;
boolean leftIsVisible= false;
boolean rightIsVisible= false;
@@ -4850,7 +4850,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
// find the starting line of the diff in all text widgets
int ls= fLeft.getLineRange(d.getPosition(LEFT_CONTRIBUTOR), region).x;
int rs= fRight.getLineRange(d.getPosition(RIGHT_CONTRIBUTOR), region).x;
-
+
if (isThreeWay() && !isIgnoreAncestor()) {
int as= fAncestor.getLineRange(d.getPosition(ANCESTOR_CONTRIBUTOR), region).x;
if (as >= fAncestor.getSourceViewer().getTopIndex() && as <= fAncestor.getSourceViewer().getBottomIndex())
@@ -4867,7 +4867,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
// vertical scrolling
if (!leftIsVisible || !rightIsVisible) {
int avpos= 0, lvpos= 0, rvpos= 0;
-
+
MergeSourceViewer allButThis= null;
if (leftIsVisible) {
avpos= lvpos= rvpos= realToVirtualPosition(LEFT_CONTRIBUTOR, fLeft.getSourceViewer().getTopIndex());
@@ -4905,13 +4905,13 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
if (rvpos < 0)
rvpos= 0;
}
-
+
scrollVertical(avpos, lvpos, rvpos, allButThis);
-
+
if (fVScrollBar != null)
fVScrollBar.setSelection(avpos);
}
-
+
// horizontal scrolling
if (d.isToken()) {
// we only scroll horizontally for token diffs
@@ -4925,7 +4925,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
hscroll(fRight);
}
}
-
+
private static void reveal(MergeSourceViewer v, Position p) {
if (v != null && p != null) {
StyledText st= v.getSourceViewer().getTextWidget();
@@ -4936,7 +4936,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
}
}
}
-
+
private static void hscroll(MergeSourceViewer v) {
if (v != null) {
StyledText st= v.getSourceViewer().getTextWidget();
@@ -4944,9 +4944,9 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
st.setHorizontalIndex(0);
}
}
-
+
//--------------------------------------------------------------------------------
-
+
void copyAllUnresolved(boolean leftToRight) {
if (fMerger.hasChanges() && isThreeWay() && !isIgnoreAncestor()) {
IRewriteTarget target= leftToRight ? fRight.getSourceViewer().getRewriteTarget() : fLeft.getSourceViewer().getRewriteTarget();
@@ -4984,7 +4984,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
}
}
}
-
+
/*
* Copy whole document from one side to the other.
*/
@@ -5055,7 +5055,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
private void copyDiffRightToLeft() {
copy(fCurrentDiff, false, false);
}
-
+
/*
* Copy the contents of the given diff from one side to the other.
*/
@@ -5076,7 +5076,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
* Returns true if copy was successful.
*/
private boolean copy(Diff diff, boolean leftToRight) {
-
+
if (diff != null) {
if (!validateChange(!leftToRight))
return false;
@@ -5099,34 +5099,34 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
info = fLeftContributor;
else
info = fRightContributor;
-
+
return info.validateChange();
}
//---- scrolling
-
+
/*
* The height of the TextEditors in lines.
*/
private int getViewportHeight() {
StyledText te= fLeft.getSourceViewer().getTextWidget();
-
+
int vh= te.getClientArea().height;
if (vh == 0) {
Rectangle trim= te.computeTrim(0, 0, 0, 0);
int scrollbarHeight= trim.height;
-
+
int headerHeight= getHeaderHeight();
-
+
Composite composite= (Composite) getControl();
Rectangle r= composite.getClientArea();
-
+
vh= r.height-headerHeight-scrollbarHeight;
}
return vh / te.getLineHeight();
}
-
+
/*
* Returns the virtual position for the given view position.
*/
@@ -5135,11 +5135,11 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
return vpos;
return fMerger.realToVirtualPosition(contributor, vpos);
}
-
+
private void scrollVertical(int avpos, int lvpos, int rvpos, MergeSourceViewer allBut) {
-
+
int s= 0;
-
+
if (fSynchronizedScrolling) {
s= fMerger.getVirtualHeight() - rvpos;
int height= fRight.getViewportLines()/4;
@@ -5150,7 +5150,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
}
fInScrolling= true;
-
+
if (isThreeWay() && allBut != fAncestor) {
if (fSynchronizedScrolling || allBut == null) {
int y= virtualToRealPosition(ANCESTOR_CONTRIBUTOR, avpos+s)-s;
@@ -5171,38 +5171,38 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
fRight.vscroll(y);
}
}
-
+
fInScrolling= false;
-
+
if (isThreeWay() && fAncestorCanvas != null)
fAncestorCanvas.repaint();
-
+
if (fLeftCanvas != null)
fLeftCanvas.repaint();
-
+
Control center= getCenterControl();
if (center instanceof BufferedCanvas)
((BufferedCanvas)center).repaint();
-
+
if (fRightCanvas != null)
fRightCanvas.repaint();
}
-
+
/*
* Updates Scrollbars with viewports.
*/
private void syncViewport(MergeSourceViewer w) {
-
+
if (fInScrolling)
return;
int ix= w.getSourceViewer().getTopIndex();
int ix2= w.getDocumentRegionOffset();
-
+
int viewPosition= realToVirtualPosition(getLeg(w), ix-ix2);
-
+
scrollVertical(viewPosition, viewPosition, viewPosition, w); // scroll all but the given views
-
+
if (fVScrollBar != null) {
int value= Math.max(0, Math.min(viewPosition, fMerger.getVirtualHeight() - getViewportHeight()));
fVScrollBar.setSelection(value);
@@ -5213,19 +5213,19 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
/**
*/
private void updateVScrollBar() {
-
+
if (Utilities.okToUse(fVScrollBar) && fSynchronizedScrolling) {
int virtualHeight= fMerger.getVirtualHeight();
int viewPortHeight= getViewportHeight();
int pageIncrement= viewPortHeight-1;
int thumb= (viewPortHeight > virtualHeight) ? virtualHeight : viewPortHeight;
-
+
fVScrollBar.setPageIncrement(pageIncrement);
fVScrollBar.setMaximum(virtualHeight);
fVScrollBar.setThumb(thumb);
}
}
-
+
/*
* maps given virtual position into a real view position of this view.
*/
@@ -5234,29 +5234,29 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
return v;
return fMerger.virtualToRealPosition(contributor, v);
}
-
+
@Override
void flushLeftSide(Object oldInput, IProgressMonitor monitor){
IMergeViewerContentProvider content= getMergeContentProvider();
Object leftContent = content.getLeftContent(oldInput);
-
+
if (leftContent != null && getCompareConfiguration().isLeftEditable() && isLeftDirty()) {
if (fLeftContributor.hasSharedDocument(leftContent)) {
if (flush(fLeftContributor))
setLeftDirty(false);
}
}
-
+
if (!(content instanceof MergeViewerContentProvider) || isLeftDirty()) {
super.flushLeftSide(oldInput, monitor);
}
}
-
+
@Override
void flushRightSide(Object oldInput, IProgressMonitor monitor){
IMergeViewerContentProvider content= getMergeContentProvider();
Object rightContent = content.getRightContent(oldInput);
-
+
if (rightContent != null && getCompareConfiguration().isRightEditable() && isRightDirty()) {
if (fRightContributor.hasSharedDocument(rightContent)) {
if (flush(fRightContributor))
@@ -5268,7 +5268,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
super.flushRightSide(oldInput, monitor);
}
}
-
+
@Override
protected void flushContent(Object oldInput, IProgressMonitor monitor) {
flushLeftSide(oldInput, monitor);
@@ -5280,7 +5280,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
super.flushContent(oldInput, monitor);
}
}
-
+
private boolean flush(final ContributorInfo info) {
try {
return info.flush();
@@ -5353,7 +5353,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
}
return null;
}
-
+
@Override
protected void handleCompareInputChange() {
try {
@@ -5372,9 +5372,9 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
if (fSynchronizedScrolling) {
fSynchronziedScrollPosition = fVScrollBar.getSelection();
}
-
+
}
-
+
private void endRefresh() {
isRefreshing--;
fLeftContributor.cacheSelection(null);
@@ -5386,11 +5386,11 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
private void synchronizedScrollVertical(int vpos) {
scrollVertical(vpos, vpos, vpos, null);
}
-
+
private boolean isIgnoreAncestor() {
return Utilities.getBoolean(getCompareConfiguration(), ICompareUIConstants.PROP_IGNORE_ANCESTOR, false);
}
-
+
/* package */ void update(boolean includeControls) {
if (getControl().isDisposed())
return;
@@ -5399,10 +5399,10 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
} else {
doDiff();
}
-
+
if (includeControls)
updateControls();
-
+
updateVScrollBar();
updatePresentation();
}
@@ -5420,13 +5420,13 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
private boolean isPatchHunk() {
return Utilities.isHunk(getInput());
}
-
+
private boolean isPatchHunkOk() {
if (isPatchHunk())
return Utilities.isHunkOk(getInput());
return false;
}
-
+
/**
* Return the provided start position of the hunk in the target file.
* @return the provided start position of the hunk in the target file
@@ -5449,13 +5449,13 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
}
return 0;
}
-
+
private IFindReplaceTarget getFindReplaceTarget() {
if (fFindReplaceTarget == null)
fFindReplaceTarget= new FindReplaceTarget();
return fFindReplaceTarget;
}
-
+
/* package */ char getLeg(MergeSourceViewer w) {
if (w == fLeft)
return LEFT_CONTRIBUTOR;
@@ -5465,7 +5465,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
return ANCESTOR_CONTRIBUTOR;
return ANCESTOR_CONTRIBUTOR;
}
-
+
private boolean isCurrentDiff(Diff diff) {
if (diff == null)
return false;
@@ -5475,7 +5475,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
return true;
return false;
}
-
+
private boolean isNavigationPossible() {
if (fCurrentDiff == null && fMerger.hasChanges())
return true;
@@ -5493,7 +5493,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
* {@link ChangeEncodingAction}. It provides implementation of methods that
* are used by the action by delegating them to {@link ContributorInfo} that
* corresponds to the side that has focus.
- *
+ *
* @return the text editor adapter
*/
private ITextEditor getTextEditorAdapter() {

Back to the top