1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-06-05 16:56:04 +02:00

Defects 258994 & 230936.

This commit is contained in:
Randy Rohrbach 2009-01-20 19:43:13 +00:00
parent 9d0cfcfdb2
commit f21a1cd7f7
4 changed files with 145 additions and 285 deletions

View file

@ -0,0 +1,38 @@
/*******************************************************************************
* Copyright (c) 2006, 2008 IBM Corporation 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
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Wind River Systems, Inc. - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.dsf.debug.internal.ui.viewmodel.numberformat.detail;
import org.eclipse.osgi.util.NLS;
public class MessagesForNumberFormatDetailPane extends NLS {
private static final String BUNDLE_NAME = "org.eclipse.cdt.dsf.debug.internal.ui.viewmodel.numberformat.detail.messages"; //$NON-NLS-1$
public static String NumberFormatDetailPane_Natural_label;
public static String NumberFormatDetailPane_Decimal_label;
public static String NumberFormatDetailPane_Hex_label;
public static String NumberFormatDetailPane_Octal_label;
public static String NumberFormatDetailPane_Binary_label;
public static String NumberFormatDetailPane_String_label;
public static String NumberFormatDetailPane_Other_label;
public static String NumberFormatDetailPane_Name_label;
public static String NumberFormatDetailPane_Spaces_label;
public static String NumberFormatDetailPane_CarriageReturn_label;
public static String NumberFormatDetailPane_DotDotDot_label;
static {
// initialize resource bundle
NLS.initializeMessages(BUNDLE_NAME, MessagesForNumberFormatDetailPane.class);
}
private MessagesForNumberFormatDetailPane() {}
}

View file

@ -11,7 +11,6 @@
*******************************************************************************/
package org.eclipse.cdt.dsf.debug.internal.ui.viewmodel.numberformat.detail;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
@ -42,7 +41,6 @@ import org.eclipse.cdt.dsf.service.DsfServicesTracker;
import org.eclipse.cdt.dsf.ui.viewmodel.IVMNode;
import org.eclipse.cdt.dsf.ui.viewmodel.datamodel.IDMVMContext;
import org.eclipse.cdt.dsf.ui.viewmodel.update.AbstractCachingVMProvider;
import org.eclipse.core.commands.operations.IUndoContext;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
@ -61,7 +59,6 @@ import org.eclipse.debug.ui.IValueDetailListener;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.action.IMenuListener;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.IStatusLineManager;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.action.Separator;
import org.eclipse.jface.resource.JFaceResources;
@ -73,10 +70,7 @@ import org.eclipse.jface.text.IDocumentListener;
import org.eclipse.jface.text.IFindReplaceTarget;
import org.eclipse.jface.text.ITextOperationTarget;
import org.eclipse.jface.text.ITextViewer;
import org.eclipse.jface.text.IUndoManager;
import org.eclipse.jface.text.IUndoManagerExtension;
import org.eclipse.jface.text.source.SourceViewer;
import org.eclipse.jface.text.source.SourceViewerConfiguration;
import org.eclipse.jface.text.TextViewer;
import org.eclipse.jface.util.IPropertyChangeListener;
import org.eclipse.jface.util.PropertyChangeEvent;
import org.eclipse.jface.viewers.ISelectionChangedListener;
@ -86,13 +80,8 @@ import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.TreePath;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.StyledText;
import org.eclipse.swt.events.FocusAdapter;
import org.eclipse.swt.events.FocusEvent;
import org.eclipse.swt.events.KeyEvent;
import org.eclipse.swt.events.KeyListener;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.events.MouseListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
@ -103,15 +92,9 @@ import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.IWorkbenchPartSite;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.actions.ActionFactory;
import org.eclipse.ui.operations.OperationHistoryActionHandler;
import org.eclipse.ui.operations.RedoActionHandler;
import org.eclipse.ui.operations.UndoActionHandler;
import org.eclipse.ui.progress.WorkbenchJob;
import org.eclipse.ui.texteditor.IAbstractTextEditorHelpContextIds;
import org.eclipse.ui.texteditor.ITextEditorActionConstants;
import org.eclipse.ui.texteditor.IUpdate;
import org.eclipse.ui.texteditor.IWorkbenchActionDefinitionIds;
import org.eclipse.ui.texteditor.StatusLineContributionItem;
@SuppressWarnings("restriction")
public class NumberFormatDetailPane implements IDetailPane, IAdaptable, IPropertyChangeListener {
@ -252,8 +235,8 @@ public class NumberFormatDetailPane implements IDetailPane, IAdaptable, IPropert
/**
* These are the IDs for the actions in the context menu
*/
protected static final String DETAIL_COPY_ACTION = ActionFactory.COPY.getId() + ".SourceDetailPane"; //$NON-NLS-1$
protected static final String DETAIL_SELECT_ALL_ACTION = IDebugView.SELECT_ALL_ACTION + ".SourceDetailPane"; //$NON-NLS-1$
protected static final String DETAIL_COPY_ACTION = ActionFactory.COPY.getId() + ".TextDetailPane"; //$NON-NLS-1$
protected static final String DETAIL_SELECT_ALL_ACTION = IDebugView.SELECT_ALL_ACTION + ".TextDetailPane"; //$NON-NLS-1$
protected static final String DETAIL_WORD_WRAP_ACTION = DsfUIPlugin.PLUGIN_ID + ".detail_pane_word_wrap"; //$NON-NLS-1$
protected static final String DETAIL_MAX_LENGTH_ACTION = "MaxLength"; //$NON-NLS-1$
@ -264,26 +247,37 @@ public class NumberFormatDetailPane implements IDetailPane, IAdaptable, IPropert
public static final String ID = "NumberFormatPane"; //$NON-NLS-1$
/**
* Data structure for the position label value.
* Useful shortened names for the internationalized strings.
*/
private static class PositionLabelValue {
public int fValue;
@Override
public String toString() {
return String.valueOf(fValue);
}
}
public static String HEX = MessagesForNumberFormatDetailPane.NumberFormatDetailPane_Hex_label;
public static String NATURAL = MessagesForNumberFormatDetailPane.NumberFormatDetailPane_Natural_label;
public static String DECIMAL = MessagesForNumberFormatDetailPane.NumberFormatDetailPane_Decimal_label;
public static String OCTAL = MessagesForNumberFormatDetailPane.NumberFormatDetailPane_Octal_label;
public static String BINARY = MessagesForNumberFormatDetailPane.NumberFormatDetailPane_Binary_label;
public static String STRING = MessagesForNumberFormatDetailPane.NumberFormatDetailPane_String_label;
public static String OTHER = MessagesForNumberFormatDetailPane.NumberFormatDetailPane_String_label;
public static String NAME = MessagesForNumberFormatDetailPane.NumberFormatDetailPane_Name_label;
public static String SPACES = MessagesForNumberFormatDetailPane.NumberFormatDetailPane_Spaces_label;
public static String CRLF = MessagesForNumberFormatDetailPane.NumberFormatDetailPane_CarriageReturn_label;
public static String DOTS = MessagesForNumberFormatDetailPane.NumberFormatDetailPane_DotDotDot_label;
/**
* Internal interface for a cursor listener. I.e. aggregation
* of mouse and key listener.
* @since 3.0
/*
* Returns a formatted combination of format label and its corresponding value.
*/
interface ICursorListener extends MouseListener, KeyListener {
private String formatNumericResult(String format, String value) {
/*
* Select the proper string format and create the total value to be displayed.
*/
if ( format == IFormattedValues.HEX_FORMAT) { return(HEX + value); }
else if ( format == IFormattedValues.OCTAL_FORMAT) { return(OCTAL + value); }
else if ( format == IFormattedValues.NATURAL_FORMAT) { return(NATURAL + value); }
else if ( format == IFormattedValues.BINARY_FORMAT) { return(BINARY + value); }
else if ( format == IFormattedValues.DECIMAL_FORMAT) { return(DECIMAL + value); }
else if ( format == IFormattedValues.STRING_FORMAT) { return(STRING + value); }
else { return(OTHER + value); }
}
/**
* Job to compute the details for a selection
*/
@ -326,7 +320,6 @@ public class NumberFormatDetailPane implements IDetailPane, IAdaptable, IPropert
* typically be a burden. We should probably consider perhaps doing a
* preference where they can select what formats they want to show.
*/
final DataRequestMonitor<String[]> getAvailableFormatsDone =
new DataRequestMonitor<String[]>(service.getExecutor(), null) {
@Override
@ -358,7 +351,6 @@ public class NumberFormatDetailPane implements IDetailPane, IAdaptable, IPropert
/*
* We sort the array to make the strings appear always in the same order.
*/
java.util.Collections.sort( completedFormatStrings );
int len = completedFormatStrings.size() ;
@ -374,15 +366,15 @@ public class NumberFormatDetailPane implements IDetailPane, IAdaptable, IPropert
* order of the entries is the order of the selections in the view and
* it is very hard to know what goes with what. This makes it easy.
*/
String finalResult = "Name : " + name + "\n"; //$NON-NLS-1$ //$NON-NLS-2$
String finalResult = NAME + name + CRLF;
int cnt = 0 ;
for (String str : completedFormatStrings) {
finalResult += " " + str ; //$NON-NLS-1$
finalResult += SPACES + str ;
if ( ( ++ cnt ) < len ) {
finalResult += "\n" ; //$NON-NLS-1$
finalResult += CRLF;
}
}
@ -420,27 +412,7 @@ public class NumberFormatDetailPane implements IDetailPane, IAdaptable, IPropert
/*
* Show the information indicating the format.
*/
if ( str == IFormattedValues.HEX_FORMAT) {
completedFormatStrings.add("Hex.... : " + getData().getFormattedValue()); //$NON-NLS-1$
}
else if ( str == IFormattedValues.OCTAL_FORMAT) {
completedFormatStrings.add("Octal.. : " + getData().getFormattedValue()); //$NON-NLS-1$
}
else if ( str == IFormattedValues.NATURAL_FORMAT) {
completedFormatStrings.add("Natural : " + getData().getFormattedValue()); //$NON-NLS-1$
}
else if ( str == IFormattedValues.BINARY_FORMAT) {
completedFormatStrings.add("Binary. : " + getData().getFormattedValue()); //$NON-NLS-1$
}
else if ( str == IFormattedValues.DECIMAL_FORMAT) {
completedFormatStrings.add("Decimal : " + getData().getFormattedValue()); //$NON-NLS-1$
}
else if ( str == IFormattedValues.STRING_FORMAT) {
completedFormatStrings.add("String : " + getData().getFormattedValue()); //$NON-NLS-1$
}
else {
completedFormatStrings.add("Other.. : (" + str + ") " + getData().getFormattedValue()); //$NON-NLS-1$ //$NON-NLS-2$
}
completedFormatStrings.add( formatNumericResult( str, getData().getFormattedValue() ) );
}
countingRm.done();
}
@ -585,6 +557,7 @@ public class NumberFormatDetailPane implements IDetailPane, IAdaptable, IPropert
}
}
}
tracker.dispose();
/*
@ -597,7 +570,6 @@ public class NumberFormatDetailPane implements IDetailPane, IAdaptable, IPropert
* occur in the middle will be cancelled, so there is not a lot of
* waste actually going on.
*/
synchronized (this) {
try {
// wait for a max of 30 seconds for result, then cancel
@ -611,26 +583,15 @@ public class NumberFormatDetailPane implements IDetailPane, IAdaptable, IPropert
}
}
else {
// IValue val = null;
// if (element instanceof IVariable) {
// try {
// val = ((IVariable)element).getValue();
// } catch (DebugException e) {
// detailComputed(null, e.getStatus().getMessage());
// }
// } else if (element instanceof IExpression) {
// val = ((IExpression)element).getValue();
// }
if (element instanceof String) {
message = (String) element;
}
else {
message = element.toString();
}
if (element instanceof String) { message = (String) element; }
else { message = element.toString(); }
fComputed = true;
}
// If no details were computed for the selected variable, clear the pane
// or use the message, if the variable was a java.lang.String
/*
* If no details were computed for the selected variable, clear the pane
* or use the message.
*/
if (!fComputed){
if (message == null) {
detailComputed(null,""); //$NON-NLS-1$
@ -672,12 +633,12 @@ public class NumberFormatDetailPane implements IDetailPane, IAdaptable, IPropert
length = getDetailDocument().getLength();
}
if (length > 0) {
insert = "\n" + result; //$NON-NLS-1$
insert = CRLF + result;
}
try {
int max = DsfUIPlugin.getDefault().getPreferenceStore().getInt(IDsfDebugUIConstants.PREF_MAX_DETAIL_LENGTH);
if (max > 0 && insert.length() > max) {
insert = insert.substring(0, max) + "..."; //$NON-NLS-1$
insert = insert.substring(0, max) + DOTS;
}
if (fFirst) {
getDetailDocument().set(insert);
@ -708,19 +669,13 @@ public class NumberFormatDetailPane implements IDetailPane, IAdaptable, IPropert
private String fDebugModelIdentifier;
/**
* Controls the status line while the details area has focus.
* Displays the current cursor position in the text (line:character).
*/
private StatusLineContributionItem fStatusLineItem;
/**
* The source viewer in which the computed string detail
* The text viewer in which the computed string detail
* of selected variables will be displayed.
*/
private SourceViewer fSourceViewer;
private TextViewer fTextViewer;
/**
* The last selection displayed in the source viewer.
* The last selection displayed in the text viewer.
*/
private IStructuredSelection fLastDisplayed = null;
@ -729,18 +684,13 @@ public class NumberFormatDetailPane implements IDetailPane, IAdaptable, IPropert
*/
private IDocument fDetailDocument;
private DetailJob fDetailJob = null;
private final String fPositionLabelPattern = MessagesForDetailPane.DetailPane_LabelPattern;
private final PositionLabelValue fLineLabel = new PositionLabelValue();
private final PositionLabelValue fColumnLabel = new PositionLabelValue();
private final Object[] fPositionLabelPatternArguments = new Object[] {fLineLabel, fColumnLabel };
private ICursorListener fCursorListener;
/* (non-Javadoc)
* @see org.eclipse.debug.ui.IDetailPane#createControl(org.eclipse.swt.widgets.Composite)
*/
public Control createControl(Composite parent) {
createSourceViewer(parent);
createTextViewer(parent);
if (isInView()){
createViewSpecificComponents();
@ -749,31 +699,31 @@ public class NumberFormatDetailPane implements IDetailPane, IAdaptable, IPropert
JFaceResources.getFontRegistry().addListener(this);
}
return fSourceViewer.getControl();
return fTextViewer.getControl();
}
/**
* Creates the source viewer in the given parent composite
* Creates the text viewer in the given parent composite
*
* @param parent Parent composite to create the source viewer in
* @param parent Parent composite to create the text viewer in
*/
private void createSourceViewer(Composite parent) {
private void createTextViewer(Composite parent) {
// Create & configure a SourceViewer
fSourceViewer = new SourceViewer(parent, null, SWT.V_SCROLL | SWT.H_SCROLL);
fSourceViewer.setDocument(getDetailDocument());
fSourceViewer.getTextWidget().setFont(JFaceResources.getFont(IDsfDebugUIConstants.DETAIL_PANE_FONT));
fSourceViewer.getTextWidget().setWordWrap(DsfUIPlugin.getDefault().getPreferenceStore().getBoolean(IDsfDebugUIConstants.PREF_DETAIL_PANE_WORD_WRAP));
fSourceViewer.setEditable(false);
PlatformUI.getWorkbench().getHelpSystem().setHelp(fSourceViewer.getTextWidget(), IDsfDebugUIConstants.DETAIL_PANE);
Control control = fSourceViewer.getControl();
// Create & configure a TextViewer
fTextViewer = new TextViewer(parent, SWT.V_SCROLL | SWT.H_SCROLL);
fTextViewer.setDocument(getDetailDocument());
fTextViewer.getTextWidget().setFont(JFaceResources.getFont(IDsfDebugUIConstants.DETAIL_PANE_FONT));
fTextViewer.getTextWidget().setWordWrap(DsfUIPlugin.getDefault().getPreferenceStore().getBoolean(IDsfDebugUIConstants.PREF_DETAIL_PANE_WORD_WRAP));
fTextViewer.setEditable(false);
PlatformUI.getWorkbench().getHelpSystem().setHelp(fTextViewer.getTextWidget(), IDsfDebugUIConstants.DETAIL_PANE);
Control control = fTextViewer.getControl();
GridData gd = new GridData(GridData.FILL_BOTH);
control.setLayoutData(gd);
}
/**
* Creates listeners and other components that should only be added to the
* source viewer when this detail pane is inside a view.
* text viewer when this detail pane is inside a view.
*/
private void createViewSpecificComponents(){
@ -786,18 +736,18 @@ public class NumberFormatDetailPane implements IDetailPane, IAdaptable, IPropert
});
// Add the selection listener so selection dependent actions get updated.
fSourceViewer.getSelectionProvider().addSelectionChangedListener(new ISelectionChangedListener() {
fTextViewer.getSelectionProvider().addSelectionChangedListener(new ISelectionChangedListener() {
public void selectionChanged(SelectionChangedEvent event) {
updateSelectionDependentActions();
}
});
// Add a focus listener to update actions when details area gains focus
fSourceViewer.getControl().addFocusListener(new FocusAdapter() {
fTextViewer.getControl().addFocusListener(new FocusAdapter() {
@Override
public void focusGained(FocusEvent e) {
getViewSite().setSelectionProvider(fSourceViewer.getSelectionProvider());
getViewSite().setSelectionProvider(fTextViewer.getSelectionProvider());
setGlobalAction(IDebugView.SELECT_ALL_ACTION, getAction(DETAIL_SELECT_ALL_ACTION));
setGlobalAction(IDebugView.COPY_ACTION, getAction(DETAIL_COPY_ACTION));
@ -817,15 +767,8 @@ public class NumberFormatDetailPane implements IDetailPane, IAdaptable, IPropert
}
});
// Create a status line item displaying the current cursor location
fStatusLineItem = new StatusLineContributionItem("ModeContributionItem"); //$NON-NLS-1$
IStatusLineManager manager= getViewSite().getActionBars().getStatusLineManager();
manager.add(fStatusLineItem);
fSourceViewer.getTextWidget().addMouseListener(getCursorListener());
fSourceViewer.getTextWidget().addKeyListener(getCursorListener());
// Add a context menu to the detail area
createDetailContextMenu(fSourceViewer.getTextWidget());
createDetailContextMenu(fTextViewer.getTextWidget());
}
/**
@ -833,13 +776,13 @@ public class NumberFormatDetailPane implements IDetailPane, IAdaptable, IPropert
*/
private void createActions() {
TextViewerAction textAction= new TextViewerAction(fSourceViewer, ITextOperationTarget.SELECT_ALL);
TextViewerAction textAction= new TextViewerAction(fTextViewer, ITextOperationTarget.SELECT_ALL);
textAction.configureAction(MessagesForDetailPane.DetailPane_Select_All, "", ""); //$NON-NLS-1$ //$NON-NLS-2$
textAction.setActionDefinitionId(IWorkbenchActionDefinitionIds.SELECT_ALL);
PlatformUI.getWorkbench().getHelpSystem().setHelp(textAction, IDsfDebugUIConstants.DETAIL_PANE_SELECT_ALL_ACTION);
setAction(DETAIL_SELECT_ALL_ACTION, textAction);
textAction= new TextViewerAction(fSourceViewer, ITextOperationTarget.COPY);
textAction= new TextViewerAction(fTextViewer, ITextOperationTarget.COPY);
textAction.configureAction(MessagesForDetailPane.DetailPane_Copy, "", ""); //$NON-NLS-1$ //$NON-NLS-2$
textAction.setActionDefinitionId(IWorkbenchActionDefinitionIds.COPY);
PlatformUI.getWorkbench().getHelpSystem().setHelp(textAction, IDsfDebugUIConstants.DETAIL_PANE_COPY_ACTION);
@ -849,10 +792,10 @@ public class NumberFormatDetailPane implements IDetailPane, IAdaptable, IPropert
updateSelectionDependentActions();
IAction action = new DetailPaneWordWrapAction(fSourceViewer);
IAction action = new DetailPaneWordWrapAction(fTextViewer);
setAction(DETAIL_WORD_WRAP_ACTION, action);
action = new DetailPaneMaxLengthAction(fSourceViewer.getControl().getShell());
action = new DetailPaneMaxLengthAction(fTextViewer.getControl().getShell());
setAction(DETAIL_MAX_LENGTH_ACTION,action);
}
@ -873,7 +816,7 @@ public class NumberFormatDetailPane implements IDetailPane, IAdaptable, IPropert
Menu menu= menuMgr.createContextMenu(menuControl);
menuControl.setMenu(menu);
getViewSite().registerContextMenu(IDebugUIConstants.VARIABLE_VIEW_DETAIL_ID, menuMgr, fSourceViewer.getSelectionProvider());
getViewSite().registerContextMenu(IDebugUIConstants.VARIABLE_VIEW_DETAIL_ID, menuMgr, fTextViewer.getSelectionProvider());
}
/**
@ -900,14 +843,14 @@ public class NumberFormatDetailPane implements IDetailPane, IAdaptable, IPropert
public void display(IStructuredSelection selection) {
if (selection == null){
clearSourceViewer();
clearTextViewer();
return;
}
fLastDisplayed = selection;
if ( selection.isEmpty() || !(selection instanceof ITreeSelection) ) {
clearSourceViewer();
clearTextViewer();
return;
}
@ -945,8 +888,8 @@ public class NumberFormatDetailPane implements IDetailPane, IAdaptable, IPropert
* @see org.eclipse.debug.ui.IDetailPane#setFocus()
*/
public boolean setFocus(){
if (fSourceViewer != null){
fSourceViewer.getTextWidget().setFocus();
if (fTextViewer != null){
fTextViewer.getTextWidget().setFocus();
return true;
}
return false;
@ -960,15 +903,10 @@ public class NumberFormatDetailPane implements IDetailPane, IAdaptable, IPropert
fSelectionActions.clear();
if (fDetailJob != null) fDetailJob.cancel();
fDebugModelIdentifier = null; // Setting this to null makes sure the source viewer is reconfigured with the model presentation after disposal
if (fSourceViewer != null && fSourceViewer.getControl() != null) fSourceViewer.getControl().dispose();
fDebugModelIdentifier = null; // Setting this to null makes sure the text viewer is reconfigured with the model presentation after disposal
if (fTextViewer != null && fTextViewer.getControl() != null) fTextViewer.getControl().dispose();
if (isInView()){
disposeUndoRedoAction(ITextEditorActionConstants.UNDO);
disposeUndoRedoAction(ITextEditorActionConstants.REDO);
getViewSite().getActionBars().getStatusLineManager().remove(fStatusLineItem);
DsfUIPlugin.getDefault().getPreferenceStore().removePropertyChangeListener(this);
JFaceResources.getFontRegistry().removeListener(this);
}
@ -1001,10 +939,10 @@ public class NumberFormatDetailPane implements IDetailPane, IAdaptable, IPropert
@SuppressWarnings("unchecked")
public Object getAdapter(Class required) {
if (IFindReplaceTarget.class.equals(required)) {
return fSourceViewer.getFindReplaceTarget();
return fTextViewer.getFindReplaceTarget();
}
if (ITextViewer.class.equals(required)) {
return fSourceViewer;
return fTextViewer;
}
return null;
}
@ -1020,15 +958,15 @@ public class NumberFormatDetailPane implements IDetailPane, IAdaptable, IPropert
}
/**
* Clears the source viewer, removes all text.
* Clears the text viewer, removes all text.
*/
protected void clearSourceViewer(){
protected void clearTextViewer(){
if (fDetailJob != null) {
fDetailJob.cancel();
}
fLastDisplayed = null;
fDetailDocument.set(""); //$NON-NLS-1$
fSourceViewer.setEditable(false);
fTextViewer.setEditable(false);
}
/**
@ -1036,87 +974,7 @@ public class NumberFormatDetailPane implements IDetailPane, IAdaptable, IPropert
* currently being displayed
*/
protected void configureDetailsViewer() {
SourceViewerConfiguration svc = new SourceViewerConfiguration();
fSourceViewer.setEditable(false);
fSourceViewer.unconfigure();
fSourceViewer.configure(svc);
if (isInView()){
createUndoRedoActions();
}
}
/**
* @return The formatted string describing cursor position
*/
protected String getCursorPosition() {
if (fSourceViewer == null) {
return ""; //$NON-NLS-1$
}
StyledText styledText= fSourceViewer.getTextWidget();
int caret= styledText.getCaretOffset();
IDocument document= fSourceViewer.getDocument();
if (document == null) {
return ""; //$NON-NLS-1$
}
try {
int line= document.getLineOfOffset(caret);
int lineOffset= document.getLineOffset(line);
int tabWidth= styledText.getTabs();
int column= 0;
for (int i= lineOffset; i < caret; i++)
if ('\t' == document.getChar(i)) {
column += tabWidth - (tabWidth == 0 ? 0 : column % tabWidth);
} else {
column++;
}
fLineLabel.fValue= line + 1;
fColumnLabel.fValue= column + 1;
return MessageFormat.format(fPositionLabelPattern, fPositionLabelPatternArguments);
} catch (BadLocationException x) {
return ""; //$NON-NLS-1$
}
}
/**
* Returns this view's "cursor" listener to be installed on the view's
* associated details viewer. This listener is listening to key and mouse button events.
* It triggers the updating of the status line.
*
* @return the listener
*/
private ICursorListener getCursorListener() {
if (fCursorListener == null) {
fCursorListener= new ICursorListener() {
public void keyPressed(KeyEvent e) {
fStatusLineItem.setText(getCursorPosition());
}
public void keyReleased(KeyEvent e) {
}
public void mouseDoubleClick(MouseEvent e) {
}
public void mouseDown(MouseEvent e) {
}
public void mouseUp(MouseEvent e) {
fStatusLineItem.setText(getCursorPosition());
}
};
}
return fCursorListener;
fTextViewer.setEditable(false);
}
/**
@ -1142,64 +1000,6 @@ public class NumberFormatDetailPane implements IDetailPane, IAdaptable, IPropert
configureDetailsViewer();
}
}
/**
* Creates this editor's undo/re-do actions.
* <p>
* Subclasses may override or extend.</p>
*
* @since 3.2
*/
protected void createUndoRedoActions() {
disposeUndoRedoAction(ITextEditorActionConstants.UNDO);
disposeUndoRedoAction(ITextEditorActionConstants.REDO);
IUndoContext undoContext= getUndoContext();
if (undoContext != null) {
// Use actions provided by global undo/re-do
// Create the undo action
OperationHistoryActionHandler undoAction= new UndoActionHandler(getViewSite(), undoContext);
PlatformUI.getWorkbench().getHelpSystem().setHelp(undoAction, IAbstractTextEditorHelpContextIds.UNDO_ACTION);
undoAction.setActionDefinitionId(IWorkbenchActionDefinitionIds.UNDO);
setAction(ITextEditorActionConstants.UNDO, undoAction);
setGlobalAction(ITextEditorActionConstants.UNDO, undoAction);
// Create the re-do action.
OperationHistoryActionHandler redoAction= new RedoActionHandler(getViewSite(), undoContext);
PlatformUI.getWorkbench().getHelpSystem().setHelp(redoAction, IAbstractTextEditorHelpContextIds.REDO_ACTION);
redoAction.setActionDefinitionId(IWorkbenchActionDefinitionIds.REDO);
setAction(ITextEditorActionConstants.REDO, redoAction);
setGlobalAction(ITextEditorActionConstants.REDO, redoAction);
getViewSite().getActionBars().updateActionBars();
}
}
/**
* Disposes of the action with the specified ID
*
* @param actionId the ID of the action to disposed
*/
protected void disposeUndoRedoAction(String actionId) {
OperationHistoryActionHandler action = (OperationHistoryActionHandler) getAction(actionId);
if (action != null) {
action.dispose();
setAction(actionId, null);
}
}
/**
* Returns this editor's viewer's undo manager undo context.
*
* @return the undo context or <code>null</code> if not available
* @since 3.2
*/
private IUndoContext getUndoContext() {
IUndoManager undoManager= fSourceViewer.getUndoManager();
if (undoManager instanceof IUndoManagerExtension)
return ((IUndoManagerExtension)undoManager).getUndoContext();
return null;
}
/* (non-Javadoc)
* @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
@ -1207,11 +1007,11 @@ public class NumberFormatDetailPane implements IDetailPane, IAdaptable, IPropert
public void propertyChange(PropertyChangeEvent event) {
String propertyName= event.getProperty();
if (propertyName.equals(IDsfDebugUIConstants.DETAIL_PANE_FONT)) {
fSourceViewer.getTextWidget().setFont(JFaceResources.getFont(IDsfDebugUIConstants.DETAIL_PANE_FONT));
fTextViewer.getTextWidget().setFont(JFaceResources.getFont(IDsfDebugUIConstants.DETAIL_PANE_FONT));
} else if (propertyName.equals(IDsfDebugUIConstants.PREF_MAX_DETAIL_LENGTH)) {
display(fLastDisplayed);
} else if (propertyName.equals(IDsfDebugUIConstants.PREF_DETAIL_PANE_WORD_WRAP)) {
fSourceViewer.getTextWidget().setWordWrap(DsfUIPlugin.getDefault().getPreferenceStore().getBoolean(IDsfDebugUIConstants.PREF_DETAIL_PANE_WORD_WRAP));
fTextViewer.getTextWidget().setWordWrap(DsfUIPlugin.getDefault().getPreferenceStore().getBoolean(IDsfDebugUIConstants.PREF_DETAIL_PANE_WORD_WRAP));
getAction(DETAIL_WORD_WRAP_ACTION).setChecked(DsfUIPlugin.getDefault().getPreferenceStore().getBoolean(IDsfDebugUIConstants.PREF_DETAIL_PANE_WORD_WRAP));
}
}

View file

@ -0,0 +1,22 @@
###############################################################################
# Copyright (c) 2006, 2009 IBM Corporation 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
# http://www.eclipse.org/legal/epl-v10.html
#
# Contributors:
# Wind River Systems Inc - copied for non-restricted version for DSDP/DD/DSF
###############################################################################
NumberFormatDetailPane_Natural_label=Default :
NumberFormatDetailPane_Decimal_label=Decimal :
NumberFormatDetailPane_Hex_label=Hex.... :
NumberFormatDetailPane_Octal_label=Octal.. :
NumberFormatDetailPane_Binary_label=Binary. :
NumberFormatDetailPane_String_label=String :
NumberFormatDetailPane_Other_label=Other.. :
NumberFormatDetailPane_Name_label=Name :
NumberFormatDetailPane_Spaces_label=\t
NumberFormatDetailPane_CarriageReturn_label=\n
NumberFormatDetailPane_DotDotDot_label=...

View file

@ -9,7 +9,7 @@
# Wind River Systems Inc - copied for non-restricted version for DSDP/DD/DSF
###############################################################################
NumberFormatContribution_Natural_label=Natural
NumberFormatContribution_Natural_label=Default
NumberFormatContribution_Decimal_label=Decimal
NumberFormatContribution_Hex_label=Hex
NumberFormatContribution_Octal_label=Octal