1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-23 22:52:11 +02:00

Bug 264655 - [Macro Explorer] NPE when trying to open the tool

This commit is contained in:
Anton Leherbauer 2009-02-13 10:54:52 +00:00
parent 7d013c6d3f
commit 9da66d78f2

View file

@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2008 Wind River Systems, Inc. and others.
* Copyright (c) 2008, 2009 Wind River Systems, Inc. and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@ -22,7 +22,6 @@ import org.eclipse.jface.text.TextViewer;
import org.eclipse.swt.custom.StyleRange;
import org.eclipse.swt.events.DisposeEvent;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.RGB;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.text.edits.ReplaceEdit;
@ -113,14 +112,9 @@ class CMacroCompareViewer extends CMergeViewer {
public CMacroCompareViewer(Composite parent, int styles, CompareConfiguration mp) {
super(parent, styles, mp);
Font font= JFaceResources.getFont(CMergeViewer.class.getName());
fLeftViewer.getTextWidget().setFont(font);
fRightViewer.getTextWidget().setFont(font);
fTopViewer.getTextWidget().setFont(font);
fChangeBackground= new Color(parent.getDisplay(), CHANGE_COLOR);
fLeftViewer.addTextPresentationListener(fLeftHighlighter= new ReplaceEditsHighlighter(fChangeBackground, true));
fRightViewer.addTextPresentationListener(fRightHighlighter= new ReplaceEditsHighlighter(fChangeBackground, false));
fLeftHighlighter= new ReplaceEditsHighlighter(fChangeBackground, true);
fRightHighlighter= new ReplaceEditsHighlighter(fChangeBackground, false);
fViewerIndex= 0;
}
@ -129,8 +123,12 @@ class CMacroCompareViewer extends CMergeViewer {
*/
@Override
protected void handleDispose(DisposeEvent event) {
fLeftViewer.removeTextPresentationListener(fLeftHighlighter);
fRightViewer.removeTextPresentationListener(fRightHighlighter);
if (fLeftViewer != null) {
fLeftViewer.removeTextPresentationListener(fLeftHighlighter);
}
if (fRightViewer != null) {
fRightViewer.removeTextPresentationListener(fRightHighlighter);
}
fChangeBackground.dispose();
super.handleDispose(event);
}
@ -152,12 +150,17 @@ class CMacroCompareViewer extends CMergeViewer {
switch (fViewerIndex++) {
case 0:
fTopViewer= textViewer;
fTopViewer.getTextWidget().setFont(JFaceResources.getFont(CMergeViewer.class.getName()));
break;
case 1:
fLeftViewer= textViewer;
fLeftViewer.getTextWidget().setFont(JFaceResources.getFont(CMergeViewer.class.getName()));
fLeftViewer.addTextPresentationListener(fLeftHighlighter);
break;
case 2:
fRightViewer= textViewer;
fRightViewer.getTextWidget().setFont(JFaceResources.getFont(CMergeViewer.class.getName()));
fRightViewer.addTextPresentationListener(fRightHighlighter);
}
}
@ -184,9 +187,12 @@ class CMacroCompareViewer extends CMergeViewer {
*/
@Override
public void setInput(Object input) {
fLeftViewer.setRedraw(false);
fRightViewer.setRedraw(false);
boolean redraw= true;
if (fLeftViewer != null && fRightViewer != null) {
redraw= false;
fLeftViewer.setRedraw(false);
fRightViewer.setRedraw(false);
}
final ReplaceEdit[] edits;
try {
@ -204,13 +210,17 @@ class CMacroCompareViewer extends CMergeViewer {
super.setInput(input);
} finally {
fLeftViewer.setRedraw(true);
fRightViewer.setRedraw(true);
if (!redraw && fLeftViewer != null && fRightViewer != null) {
fLeftViewer.setRedraw(true);
fRightViewer.setRedraw(true);
}
}
if (edits.length > 0) {
final int firstDiffOffset= fPrefixLength + edits[0].getOffset();
fLeftViewer.revealRange(firstDiffOffset, edits[0].getLength());
fRightViewer.revealRange(firstDiffOffset, edits[0].getText().length());
if (fLeftViewer != null && fRightViewer != null) {
final int firstDiffOffset= fPrefixLength + edits[0].getOffset();
fLeftViewer.revealRange(firstDiffOffset, edits[0].getLength());
fRightViewer.revealRange(firstDiffOffset, edits[0].getText().length());
}
}
}