diff options
Diffstat (limited to 'bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/TextMergeViewer.java')
-rw-r--r-- | bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/TextMergeViewer.java | 72 |
1 files changed, 51 insertions, 21 deletions
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 a2a9bca27..778f5df33 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 @@ -34,6 +34,7 @@ import org.eclipse.swt.widgets.*; import org.eclipse.swt.custom.*; import org.eclipse.jface.action.*; +import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.text.*; import org.eclipse.jface.util.PropertyChangeEvent; import org.eclipse.jface.util.IPropertyChangeListener; @@ -50,6 +51,7 @@ import org.eclipse.ui.IActionBars; import org.eclipse.ui.IWorkbenchActionConstants; import org.eclipse.compare.*; +import org.eclipse.compare.internal.CompareUIPlugin; import org.eclipse.compare.internal.MergeSourceViewer; import org.eclipse.compare.internal.BufferedCanvas; import org.eclipse.compare.internal.Utilities; @@ -252,13 +254,15 @@ public class TextMergeViewer extends ContentMergeViewer { private Canvas fScrollCanvas; private ScrollBar fVScrollBar; private Canvas fBirdsEyeCanvas; - private Canvas fSummaryCanvas; + private Label fSummaryCanvas; // SWT resources to be disposed private Map fColors; private Font fFont; private Cursor fBirdsEyeCursor; - + private Image fOKImage; + private Image fNOTOKImage; + // points for center curves private double[] fBasicCenterCurve; @@ -483,15 +487,7 @@ public class TextMergeViewer extends ContentMergeViewer { return false; } - private boolean isUnresolvedIncoming() { - if (fResolved) - return false; - return isIncoming(); - } - - private boolean isUnresolvedIncomingOrConflicting() { - if (fResolved) - return false; + private boolean isIncomingOrConflicting() { switch (fDirection) { case RangeDifference.RIGHT: if (fLeftIsLocal) @@ -506,6 +502,18 @@ public class TextMergeViewer extends ContentMergeViewer { } return false; } + + private boolean isUnresolvedIncoming() { + if (fResolved) + return false; + return isIncoming(); + } + + private boolean isUnresolvedIncomingOrConflicting() { + if (fResolved) + return false; + return isIncomingOrConflicting(); + } Position getPosition(MergeSourceViewer w) { if (w == fLeft) @@ -852,6 +860,15 @@ public class TextMergeViewer extends ContentMergeViewer { fBirdsEyeCursor= null; } + if (fOKImage != null) { + fOKImage.dispose(); + fOKImage= null; + } + if (fNOTOKImage != null) { + fNOTOKImage.dispose(); + fNOTOKImage= null; + } + super.handleDispose(event); } @@ -884,7 +901,9 @@ public class TextMergeViewer extends ContentMergeViewer { fAncestor= createPart(composite); fAncestor.setEditable(false); - fSummaryCanvas= new Canvas(composite, SWT.NONE); + fSummaryCanvas= new Label(composite, SWT.NONE); + /* + new Canvas(composite, SWT.NONE); fSummaryCanvas.addPaintListener( new PaintListener() { public void paintControl(PaintEvent e) { @@ -893,6 +912,7 @@ public class TextMergeViewer extends ContentMergeViewer { } } ); + */ updateResolveStatus(); // 2nd row @@ -2546,15 +2566,15 @@ public class TextMergeViewer extends ContentMergeViewer { } private void updateResolveStatus() { - Color c= null; + Image c= null; if (showResolveUI()) { - boolean hasIncoming= false; // we only show red or gree if there is at least one incoming change + boolean hasIncoming= false; // we only show red or green if there is at least one incoming or conflicting change boolean unresolved= false; if (fChangeDiffs != null) { Iterator e= fChangeDiffs.iterator(); while (e.hasNext()) { Diff d= (Diff) e.next(); - if (d.isIncoming()) { + if (d.isIncomingOrConflicting()) { hasIncoming= true; if (!d.fResolved) { unresolved= true; @@ -2564,14 +2584,24 @@ public class TextMergeViewer extends ContentMergeViewer { } } if (hasIncoming) { - Display d= fSummaryCanvas.getDisplay(); - if (unresolved) - c= d.getSystemColor(SWT.COLOR_RED); - else - c= d.getSystemColor(SWT.COLOR_GREEN); + if (unresolved) { + if (fNOTOKImage == null) { + ImageDescriptor id= CompareUIPlugin.getImageDescriptor("obj16/NOT_OK.gif"); //$NON-NLS-1$ + if (id != null) + fNOTOKImage= id.createImage(fSummaryCanvas.getDisplay()); + } + c= fNOTOKImage; + } else { + if (fOKImage == null) { + ImageDescriptor id= CompareUIPlugin.getImageDescriptor("obj16/OK.gif"); //$NON-NLS-1$ + if (id != null) + fOKImage= id.createImage(fSummaryCanvas.getDisplay()); + } + c= fOKImage; + } } } - fSummaryCanvas.setBackground(c); + fSummaryCanvas.setImage(c); } private void updateStatus(Diff diff) { |