blob: 3c88a203ef90f1160f177940a5ab536987a54939 [file] [log] [blame]
package org.eclipse.jdt.internal.debug.ui.display;
/**********************************************************************
Copyright (c) 2000, 2002 IBM Corp. and others.
All rights reserved. This program and the accompanying materials
are made available under the terms of the Common Public License v0.5
which accompanies this distribution, and is available at
http://www.eclipse.org/legal/cpl-v05.html
Contributors:
IBM Corporation - Initial implementation
**********************************************************************/
import org.eclipse.jdt.internal.debug.ui.JDIDebugUIPlugin;
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.ITextSelection;
import org.eclipse.jface.text.ITextViewer;
/**
* An implementation of a data display for a text viewer
*/
public class DataDisplay implements IDataDisplay {
/**
* The text viewer this data display works on
*/
private ITextViewer fTextViewer;
/**
* Constructs a data display for the given text viewer.
*
* @param viewer text viewer
*/
public DataDisplay(ITextViewer viewer) {
setTextViewer(viewer);
}
/**
* @see IDataDisplay#clear()
*/
public void clear() {
IDocument document= getTextViewer().getDocument();
if (document != null) {
document.set(""); //$NON-NLS-1$
}
}
/**
* @see IDataDisplay#displayExpression(String)
*/
public void displayExpression(String expression) {
ITextSelection selection= (ITextSelection)getTextViewer().getSelectionProvider().getSelection();
int offset= selection.getOffset();
expression= expression.trim();
StringBuffer buffer= new StringBuffer(expression);
buffer.append(System.getProperty("line.separator")); //$NON-NLS-1$
buffer.append('\t');
expression= buffer.toString();
try {
getTextViewer().getDocument().replace(offset, selection.getLength(), expression);
getTextViewer().setSelectedRange(offset + expression.length(), 0);
getTextViewer().revealRange(offset, expression.length());
} catch (BadLocationException ble) {
JDIDebugUIPlugin.log(ble);
}
}
/**
* @see IDataDisplay#displayExpressionValue(String)
*/
public void displayExpressionValue(String value) {
value= value + System.getProperty("line.separator"); //$NON-NLS-1$
ITextSelection selection= (ITextSelection)getTextViewer().getSelectionProvider().getSelection();
int offset= selection.getOffset();
int length= value.length();
int replace= selection.getLength() - offset;
if (replace < 0) {
replace= 0;
}
try {
getTextViewer().getDocument().replace(offset, replace, value);
} catch (BadLocationException ble) {
JDIDebugUIPlugin.log(ble);
}
getTextViewer().setSelectedRange(offset + length, 0);
getTextViewer().revealRange(offset, length);
}
/**
* Sets the text viewer for this data display
*
* @param viewer text viewer
*/
private void setTextViewer(ITextViewer viewer) {
fTextViewer = viewer;
}
/**
* Returns the text viewer for this data display
*
* @return text viewer
*/
protected ITextViewer getTextViewer() {
return fTextViewer;
}
}