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