From 129a37e32a09e1a7df8ddce10a5f63252b163ba2 Mon Sep 17 00:00:00 2001 From: Mikhail Khodjaiants Date: Fri, 2 Apr 2004 00:13:03 +0000 Subject: [PATCH] Changes in the Shared Libraries and the Signals views. --- debug/org.eclipse.cdt.debug.ui/ChangeLog | 29 ++ .../plugin.properties | 2 + debug/org.eclipse.cdt.debug.ui/plugin.xml | 17 +- .../ui/actions/ActionMessages.properties | 6 + .../ui/actions/LoadSymbolsActionDelegate.java | 103 +++---- .../ui/actions/LoadSymbolsForAllAction.java | 62 ++-- .../ui/actions/ShowFullPathsAction.java | 2 - .../ui/actions/SignalActionDelegate.java | 2 +- .../SignalPropertiesActionDelegate.java | 142 +++++++++ .../ui/actions/SignalPropertiesDialog.java | 132 +++++++++ .../internal/ui/actions/ViewFilterAction.java | 2 +- .../ui/views/AbstractDebugEventHandler.java | 273 ++++++++++-------- .../views/AbstractDebugEventHandlerView.java | 71 +++-- .../ui/views/IDebugExceptionHandler.java | 3 +- .../debug/internal/ui/views/ViewerState.java | 60 ---- .../sharedlibs/SharedLibrariesMessages.java | 34 +++ .../SharedLibrariesMessages.properties | 6 + .../views/sharedlibs/SharedLibrariesView.java | 239 +++++++-------- .../SharedLibrariesViewContentProvider.java | 187 ++++++------ .../SharedLibrariesViewEventHandler.java | 63 ++-- .../ui/views/signals/SignalsMessages.java | 32 ++ .../views/signals/SignalsMessages.properties | 6 + .../ui/views/signals/SignalsView.java | 262 ++++++++--------- .../signals/SignalsViewContentProvider.java | 73 +++-- .../signals/SignalsViewEventHandler.java | 75 ++--- .../ui/views/signals/SignalsViewer.java | 128 ++------ .../ui/CDebugUIPluginResources.properties | 2 +- 27 files changed, 1144 insertions(+), 869 deletions(-) create mode 100644 debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/SignalPropertiesActionDelegate.java create mode 100644 debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/SignalPropertiesDialog.java delete mode 100644 debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/ViewerState.java create mode 100644 debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/sharedlibs/SharedLibrariesMessages.java create mode 100644 debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/sharedlibs/SharedLibrariesMessages.properties create mode 100644 debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/signals/SignalsMessages.java create mode 100644 debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/signals/SignalsMessages.properties diff --git a/debug/org.eclipse.cdt.debug.ui/ChangeLog b/debug/org.eclipse.cdt.debug.ui/ChangeLog index 38faed5c1c1..0b7da382c85 100644 --- a/debug/org.eclipse.cdt.debug.ui/ChangeLog +++ b/debug/org.eclipse.cdt.debug.ui/ChangeLog @@ -1,3 +1,32 @@ +2004-04-01 Mikhail Khodjaiants + Changes in the Shared Libraries and the Signals views. + * ActionMessages.properties + * ActionMessages.java + * LoadSymbolsActionDelegate.java + * LoadSymbolsForAllAction.java + * ShowFullPathsAction.java + * SignalActionDelegate.java + * SignalPropertiesActionDelegate.java + * SignalPropertiesDialog.java + * ViewFilterAction.java + * AbstractDebugEventHandler.java + * AbstractDebugEventHandlerView.java + * IDebugExceptionHandler.java + * SharedLibrariesMessages.properties + * SharedLibrariesMessages.java + * SharedLibrariesView.java + * SharedLibrariesViewContentProvider.java + * SharedLibrariesViewEventHandler.java + * SignalsMessages.properties + * SignalsMessages.java + * SignalsView.java + * SignalsViewContentProvider.java + * SignalsViewer.java + * SignalsViewEventHandler.java + * CDebugUIPluginResources.properties + * plugin.properties + * plugin.xml + 2004-04-01 Mikhail Khodjaiants Moved the "Show Full Paths" action from toolbars to view's menus. * CDebugModelPresentation.java - new (will replace CDTDebugModelPresentation) diff --git a/debug/org.eclipse.cdt.debug.ui/plugin.properties b/debug/org.eclipse.cdt.debug.ui/plugin.properties index b5bbf06d284..85f4b077d9f 100644 --- a/debug/org.eclipse.cdt.debug.ui/plugin.properties +++ b/debug/org.eclipse.cdt.debug.ui/plugin.properties @@ -69,6 +69,8 @@ SignalAction.label=Resume With Signal SignalAction.tooltip=Resume With Signal SignalZeroAction.label=Resume Without Signal SignalZeroAction.tooltip=Resume Ignoring Signal +SignalPropertiesAction.label=Signal Properties... +SignalPropertiesAction.tooltip=Open Signal Properties Dialog CastToTypeAction.label=Cast To Type... CastToTypeAction.tooltip=Cast Varibale To Type diff --git a/debug/org.eclipse.cdt.debug.ui/plugin.xml b/debug/org.eclipse.cdt.debug.ui/plugin.xml index bd0db10aa5a..3875d413898 100644 --- a/debug/org.eclipse.cdt.debug.ui/plugin.xml +++ b/debug/org.eclipse.cdt.debug.ui/plugin.xml @@ -24,8 +24,8 @@ - + @@ -746,6 +746,21 @@ + + + + + + null if none. + */ + protected IWorkbenchPage getActivePage() { + IWorkbenchWindow window= PlatformUI.getWorkbench().getActiveWorkbenchWindow(); + if (window == null) { + return null; + } + return window.getActivePage(); + } + /** * @see IDebugEventSetListener#handleDebugEvents(DebugEvent[]) */ - public void handleDebugEvents( final DebugEvent[] events ) - { - if ( !isAvailable() ) - { + public void handleDebugEvents(final DebugEvent[] events) { + if (!isAvailable()) { return; } - Runnable r = new Runnable() - { - public void run() - { - if ( isAvailable() ) - { - doHandleDebugEvents( events ); + Runnable r= new Runnable() { + public void run() { + if (isAvailable()) { + if (isViewVisible()) { + doHandleDebugEvents(events); + } + updateForDebugEvents(events); } } }; - - getView().asyncExec( r ); + getView().asyncExec(r); } - + + /** + * Updates this view for the given debug events. Unlike + * doHandleDebugEvents(DebugEvent[]) which is only called if the view is + * visible, this method is always called. This allows the view to perform + * updating that must always be performed, even when the view is not + * visible. + */ + protected void updateForDebugEvents(DebugEvent[] events) { + } + /** * Implementation specific handling of debug events. * Subclasses should override. */ - protected abstract void doHandleDebugEvents( DebugEvent[] events ); - + protected abstract void doHandleDebugEvents(DebugEvent[] events); + /** - * Helper method for inserting the given element - must be called in UI thread + * Helper method for inserting the given element in the tree viewer - + * must be called in UI thread */ - protected void insert( Object element ) - { - if ( isAvailable() ) - { - final Object parent = ((ITreeContentProvider)getTreeViewer().getContentProvider()).getParent( element ); + protected void insert(Object element) { + TreeViewer viewer = getTreeViewer(); + if (isAvailable() && viewer != null) { + Object parent= ((ITreeContentProvider)viewer.getContentProvider()).getParent(element); // a parent can be null for a debug target or process that has not yet been associated // with a launch - if ( parent != null ) - { + if (parent != null) { getView().showViewer(); - getTreeViewer().add( parent, element ); + viewer.add(parent, element); } } } /** - * Helper method to remove the given element - must be called in UI thread. + * Helper method to remove the given element from the tree viewer - + * must be called in UI thread. */ - protected void remove( Object element ) - { - if ( isAvailable() ) - { + protected void remove(Object element) { + TreeViewer viewer = getTreeViewer(); + if (isAvailable() && viewer != null) { getView().showViewer(); - getTreeViewer().remove( element ); + viewer.remove(element); } } /** * Helper method to update the label of the given element - must be called in UI thread */ - protected void labelChanged( Object element ) - { - if ( isAvailable() ) - { + protected void labelChanged(Object element) { + if (isAvailable()) { getView().showViewer(); - getTreeViewer().update( element, - new String[] { IBasicPropertyConstants.P_TEXT } ); + getStructuredViewer().update(element, new String[] {IBasicPropertyConstants.P_TEXT}); } } /** * Refresh the given element in the viewer - must be called in UI thread. */ - protected void refresh( Object element ) - { - if ( isAvailable() ) - { - getView().showViewer(); - getTreeViewer().refresh( element ); + protected void refresh(Object element) { + if (isAvailable()) { + getView().showViewer(); + getStructuredViewer().refresh(element); } } - + /** * Refresh the viewer - must be called in UI thread. */ - public void refresh() - { - if ( isAvailable() ) - { - getView().showViewer(); - getTreeViewer().refresh(); + public void refresh() { + if (isAvailable()) { + getView().showViewer(); + getStructuredViewer().refresh(); } - } + } /** * Helper method to select and reveal the given element - must be called in UI thread */ - protected void selectAndReveal( Object element ) - { - if ( isAvailable() ) - { - getViewer().setSelection( new StructuredSelection( element ), true ); + protected void selectAndReveal(Object element) { + if (isAvailable()) { + getViewer().setSelection(new StructuredSelection(element), true); } } - + /** * De-registers this event handler from the debug model. */ - public void dispose() - { - DebugPlugin plugin = DebugPlugin.getDefault(); - plugin.removeDebugEventListener( this ); + public void dispose() { + DebugPlugin plugin= DebugPlugin.getDefault(); + plugin.removeDebugEventListener(this); } - + /** * Returns the view this event handler is * updating. * * @return debug view */ - protected AbstractDebugView getView() - { - return fView; + protected AbstractDebugView getView() { + return this.fView; } - + /** * Sets the view this event handler is updating. * * @param view debug view */ - private void setView( AbstractDebugView view ) - { - fView = view; + private void setView(AbstractDebugView view) { + this.fView = view; } /** - * Returns the viewer this event handler is updating. + * Returns the viewer this event handler is + * updating. * * @return viewer - */ - protected Viewer getViewer() - { + */ + protected Viewer getViewer() { return getView().getViewer(); } - + /** * Returns this event handler's viewer as a tree * viewer or null if none. @@ -197,47 +206,41 @@ public abstract class AbstractDebugEventHandler implements IDebugEventSetListene * @return this event handler's viewer as a tree * viewer or null if none */ - protected TreeViewer getTreeViewer() - { - if ( getViewer() instanceof TreeViewer ) - { + protected TreeViewer getTreeViewer() { + if (getViewer() instanceof TreeViewer) { return (TreeViewer)getViewer(); - } + } return null; } - - /** - * Returns this event handler's viewer as a table - * viewer or null if none. - * - * @return this event handler's viewer as a table - * viewer or null if none - */ - protected TableViewer getTableViewer() - { - if ( getViewer() instanceof TableViewer ) - { - return (TableViewer)getViewer(); - } - return null; - } - + /** * Returns this event handler's viewer as a table tree - * viewer or null if none. + * viewer or null if none. * - * @return this event handler's viewer as a table tree + * @return this event handler's viewer as a table tree * viewer or null if none */ - protected TableTreeViewer getTableTreeViewer() - { - if ( getViewer() instanceof TableTreeViewer ) - { + protected TableTreeViewer getTableTreeViewer() { + if (getViewer() instanceof TableTreeViewer) { return (TableTreeViewer)getViewer(); - } + } return null; } - + + /** + * Returns this event handler's viewer as a structured + * viewer or null if none. + * + * @return this event handler's viewer as a structured + * viewer or null if none + */ + protected StructuredViewer getStructuredViewer() { + if (getViewer() instanceof StructuredViewer) { + return (StructuredViewer)getViewer(); + } + return null; + } + /** * Returns whether this event handler's viewer is * currently available. @@ -245,8 +248,32 @@ public abstract class AbstractDebugEventHandler implements IDebugEventSetListene * @return whether this event handler's viewer is * currently available */ - protected boolean isAvailable() - { + protected boolean isAvailable() { return getView().isAvailable(); } + + /** + * Returns whether this event handler's view is currently visible. + * + * @return whether this event handler's view is currently visible + */ + protected boolean isViewVisible() { + return getView().isVisible(); + } + + /** + * Called when this event handler's view becomes visible. Default behavior + * is to refresh the view. + */ + protected void viewBecomesVisible() { + refresh(); + } + + /** + * Called when this event handler's view becomes hidden. Default behavior is + * to do nothing. Subclasses may override. + */ + protected void viewBecomesHidden() { + } + } diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/AbstractDebugEventHandlerView.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/AbstractDebugEventHandlerView.java index 5f6049a7441..3187139dbbf 100644 --- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/AbstractDebugEventHandlerView.java +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/AbstractDebugEventHandlerView.java @@ -1,20 +1,25 @@ -/* - *(c) Copyright QNX Software Systems Ltd. 2002. - * All Rights Reserved. +/******************************************************************************* + * Copyright (c) 2000, 2003 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html * - */ + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ package org.eclipse.cdt.debug.internal.ui.views; + import org.eclipse.debug.ui.AbstractDebugView; +import org.eclipse.jface.action.IStatusLineManager; /** - * - * A debug view that uses an event handler to update its view/viewer. - * - * @since Jul 23, 2002 + * A debug view that uses an event handler to update its + * view/viewer. */ -public abstract class AbstractDebugEventHandlerView extends AbstractDebugView -{ +public abstract class AbstractDebugEventHandlerView extends AbstractDebugView { + /** * Event handler for this view */ @@ -25,30 +30,48 @@ public abstract class AbstractDebugEventHandlerView extends AbstractDebugView * * @param eventHandler event handler */ - protected void setEventHandler( AbstractDebugEventHandler eventHandler ) - { - fEventHandler = eventHandler; + protected void setEventHandler(AbstractDebugEventHandler eventHandler) { + this.fEventHandler = eventHandler; } - + /** * Returns the event handler for this view * * @return The event handler for this view */ - protected AbstractDebugEventHandler getEventHandler() - { - return fEventHandler; - } - + protected AbstractDebugEventHandler getEventHandler() { + return this.fEventHandler; + } + /** * @see IWorkbenchPart#dispose() */ - public void dispose() - { + public void dispose() { super.dispose(); - if ( getEventHandler() != null ) - { + if (getEventHandler() != null) { getEventHandler().dispose(); - } + } + } + + /** + * @see org.eclipse.debug.ui.AbstractDebugView#becomesHidden() + */ + protected void becomesHidden() { + super.becomesHidden(); + getEventHandler().viewBecomesHidden(); + } + + /** + * @see org.eclipse.debug.ui.AbstractDebugView#becomesVisible() + */ + protected void becomesVisible() { + super.becomesVisible(); + getEventHandler().viewBecomesVisible(); + } + + protected void clearStatusLine() { + IStatusLineManager manager = getViewSite().getActionBars().getStatusLineManager(); + manager.setErrorMessage(null); + manager.setMessage(null); } } diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/IDebugExceptionHandler.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/IDebugExceptionHandler.java index a4a6ba8c1ea..22a7813e143 100644 --- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/IDebugExceptionHandler.java +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/IDebugExceptionHandler.java @@ -10,8 +10,7 @@ import org.eclipse.debug.core.DebugException; /** * A plugable exception handler. */ -public interface IDebugExceptionHandler -{ +public interface IDebugExceptionHandler { /** * Handles the given debug exception. * diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/ViewerState.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/ViewerState.java deleted file mode 100644 index 168bc3af53d..00000000000 --- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/ViewerState.java +++ /dev/null @@ -1,60 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2003 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Common Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/cpl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ - -package org.eclipse.cdt.debug.internal.ui.views; - -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.jface.viewers.TreeViewer; - -/** - * Memento of the expanded and selected items in a tree - * viewer for. - * - * @since 2.1 - */ -public class ViewerState { - - private Object[] fExpandedElements = null; - private ISelection fSelection = null; - - /** - * Constructs a memento for the given viewer. - */ - public ViewerState(TreeViewer viewer) { - saveState(viewer); - } - - /** - * Saves the current state of the given viewer into - * this memento. - * - * @param viewer viewer of which to save the state - */ - public void saveState(TreeViewer viewer) { - fExpandedElements = viewer.getExpandedElements(); - fSelection = viewer.getSelection(); - } - - /** - * Restores the state of the given viewer to this mementos - * saved state. - * - * @param viewer viewer to which state is restored - */ - public void restoreState(TreeViewer viewer) { - if (fExpandedElements != null) { - viewer.setExpandedElements(fExpandedElements); - } - if (fSelection != null) { - viewer.setSelection(fSelection); - } - } -} diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/sharedlibs/SharedLibrariesMessages.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/sharedlibs/SharedLibrariesMessages.java new file mode 100644 index 00000000000..cdd6d270d07 --- /dev/null +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/sharedlibs/SharedLibrariesMessages.java @@ -0,0 +1,34 @@ +/********************************************************************** + * Copyright (c) 2004 QNX Software Systems and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: + * QNX Software Systems - Initial API and implementation + ***********************************************************************/ + +package org.eclipse.cdt.debug.internal.ui.views.sharedlibs; + +import java.util.MissingResourceException; +import java.util.ResourceBundle; + +public class SharedLibrariesMessages { + + private static final String BUNDLE_NAME = "org.eclipse.cdt.debug.internal.ui.views.sharedlibs.SharedLibrariesMessages"; //$NON-NLS-1$ + + private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle(BUNDLE_NAME); + + private SharedLibrariesMessages() { + } + + public static String getString( String key ) { + try { + return RESOURCE_BUNDLE.getString( key ); + } + catch (MissingResourceException e) { + return '!' + key + '!'; + } + } +} diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/sharedlibs/SharedLibrariesMessages.properties b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/sharedlibs/SharedLibrariesMessages.properties new file mode 100644 index 00000000000..46dedf5f9c5 --- /dev/null +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/sharedlibs/SharedLibrariesMessages.properties @@ -0,0 +1,6 @@ +SharedLibrariesView.Name_1=Name +SharedLibrariesView.Start_Address_1=Start Address +SharedLibrariesView.End_Address_1=End Address +SharedLibrariesView.Loaded_1=Loaded +SharedLibrariesView.Not_loaded_1=Not loaded +SharedLibrariesView.Symbols_1=Symbols diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/sharedlibs/SharedLibrariesView.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/sharedlibs/SharedLibrariesView.java index 41f8d8b8c4c..5a0e6701b14 100644 --- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/sharedlibs/SharedLibrariesView.java +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/sharedlibs/SharedLibrariesView.java @@ -1,36 +1,38 @@ -/* - *(c) Copyright QNX Software Systems Ltd. 2002. - * All Rights Reserved. +/********************************************************************** + * Copyright (c) 2004 QNX Software Systems and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html * - */ + * Contributors: + * QNX Software Systems - Initial API and implementation + ***********************************************************************/ package org.eclipse.cdt.debug.internal.ui.views.sharedlibs; -import org.eclipse.cdt.debug.core.CDebugUtils; -import org.eclipse.cdt.debug.core.ICSharedLibraryManager; +import org.eclipse.cdt.debug.core.model.ICDebugTarget; import org.eclipse.cdt.debug.core.model.ICSharedLibrary; -import org.eclipse.cdt.debug.internal.ui.CDTDebugModelPresentation; -import org.eclipse.cdt.debug.internal.ui.CDebugImages; +import org.eclipse.cdt.debug.internal.ui.CDebugModelPresentation; +import org.eclipse.cdt.debug.internal.ui.CDebugUIUtils; import org.eclipse.cdt.debug.internal.ui.ICDebugHelpContextIds; import org.eclipse.cdt.debug.internal.ui.PixelConverter; -import org.eclipse.cdt.debug.internal.ui.actions.AutoRefreshAction; -import org.eclipse.cdt.debug.internal.ui.actions.LoadSymbolsForAllAction; -import org.eclipse.cdt.debug.internal.ui.actions.RefreshAction; import org.eclipse.cdt.debug.internal.ui.views.AbstractDebugEventHandler; import org.eclipse.cdt.debug.internal.ui.views.AbstractDebugEventHandlerView; import org.eclipse.cdt.debug.internal.ui.views.IDebugExceptionHandler; -import org.eclipse.cdt.debug.ui.ICDebugUIConstants; +import org.eclipse.cdt.debug.ui.CDebugUIPlugin; import org.eclipse.debug.core.DebugException; import org.eclipse.debug.core.model.IDebugElement; import org.eclipse.debug.ui.IDebugUIConstants; -import org.eclipse.jface.action.IAction; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.IToolBarManager; import org.eclipse.jface.action.Separator; import org.eclipse.jface.util.IPropertyChangeListener; import org.eclipse.jface.util.PropertyChangeEvent; +import org.eclipse.jface.viewers.IContentProvider; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.ITableLabelProvider; +import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.TableTreeViewer; import org.eclipse.jface.viewers.Viewer; import org.eclipse.swt.SWT; @@ -38,56 +40,52 @@ import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.TableColumn; +import org.eclipse.ui.INullSelectionListener; import org.eclipse.ui.ISelectionListener; +import org.eclipse.ui.IViewPart; import org.eclipse.ui.IWorkbenchActionConstants; import org.eclipse.ui.IWorkbenchPart; -import org.eclipse.ui.help.WorkbenchHelp; -import org.eclipse.cdt.debug.ui.CDebugUIPlugin; /** - * Enter type comment. + * Displays shared libraries. * * @since: Jan 21, 2003 */ public class SharedLibrariesView extends AbstractDebugEventHandlerView implements ISelectionListener, + INullSelectionListener, IPropertyChangeListener, - IDebugExceptionHandler -{ - public class SharedLibrariesLabelProvider extends CDTDebugModelPresentation implements ITableLabelProvider - { + IDebugExceptionHandler { + + public class SharedLibrariesLabelProvider extends CDebugModelPresentation implements ITableLabelProvider { /* (non-Javadoc) * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnImage(java.lang.Object, int) */ - public Image getColumnImage( Object element, int columnIndex ) - { + public Image getColumnImage( Object element, int columnIndex ) { if ( element instanceof ICSharedLibrary && columnIndex == 1 ) - { return getImage( element ); - } return null; } /* (non-Javadoc) * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang.Object, int) */ - public String getColumnText( Object element, int columnIndex ) - { - if ( element instanceof ICSharedLibrary ) - { + public String getColumnText( Object element, int columnIndex ) { + if ( element instanceof ICSharedLibrary ) { ICSharedLibrary library = (ICSharedLibrary)element; - switch( columnIndex ) - { + switch( columnIndex ) { case 0: return ""; //$NON-NLS-1$ case 1: return getText( element ); case 2: - return ( library.getStartAddress() > 0 ) ? - CDebugUtils.toHexAddressString( library.getStartAddress() ) : ""; //$NON-NLS-1$ + return ( library.areSymbolsLoaded() ) ? SharedLibrariesMessages.getString( "SharedLibrariesView.Loaded_1" ) : SharedLibrariesMessages.getString( "SharedLibrariesView.Not_loaded_1" ); //$NON-NLS-1$ //$NON-NLS-2$ case 3: + return ( library.getStartAddress() > 0 ) ? + CDebugUIUtils.toHexAddressString( library.getStartAddress() ) : ""; //$NON-NLS-1$ + case 4: return ( library.getEndAddress() > 0 ) ? - CDebugUtils.toHexAddressString( library.getEndAddress() ) : ""; //$NON-NLS-1$ + CDebugUIUtils.toHexAddressString( library.getEndAddress() ) : ""; //$NON-NLS-1$ } } return null; @@ -97,8 +95,7 @@ public class SharedLibrariesView extends AbstractDebugEventHandlerView /* (non-Javadoc) * @see org.eclipse.debug.ui.AbstractDebugView#createViewer(Composite) */ - protected Viewer createViewer( Composite parent ) - { + protected Viewer createViewer( Composite parent ) { TableTreeViewer viewer = new TableTreeViewer( parent, SWT.FULL_SELECTION | SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL ); Table table = viewer.getTableTree().getTable(); table.setLinesVisible( true ); @@ -109,25 +106,31 @@ public class SharedLibrariesView extends AbstractDebugEventHandlerView new TableColumn( table, SWT.NULL ); new TableColumn( table, SWT.NULL ); new TableColumn( table, SWT.NULL ); + new TableColumn( table, SWT.NULL ); TableColumn[] columns = table.getColumns(); columns[1].setResizable( true ); columns[2].setResizable( true ); columns[3].setResizable( true ); + columns[4].setResizable( true ); columns[0].setText( "" ); //$NON-NLS-1$ - columns[1].setText( CDebugUIPlugin.getResourceString("SharedLibrariesView.Name") ); //$NON-NLS-1$ - columns[2].setText( CDebugUIPlugin.getResourceString("SharedLibrariesView.Start_Address") ); //$NON-NLS-1$ - columns[3].setText( CDebugUIPlugin.getResourceString("SharedLibrariesView.End_Address") ); //$NON-NLS-1$ + columns[1].setText( SharedLibrariesMessages.getString( "SharedLibrariesView.Name_1" ) ); //$NON-NLS-1$ + columns[2].setText( SharedLibrariesMessages.getString( "SharedLibrariesView.Symbols_1" ) ); //$NON-NLS-1$ + columns[3].setText( SharedLibrariesMessages.getString( "SharedLibrariesView.Start_Address_1" ) ); //$NON-NLS-1$ + columns[4].setText( SharedLibrariesMessages.getString( "SharedLibrariesView.End_Address_1" ) ); //$NON-NLS-1$ PixelConverter pc = new PixelConverter( parent ); columns[0].setWidth( pc.convertWidthInCharsToPixels( 3 ) ); columns[1].setWidth( pc.convertWidthInCharsToPixels( 50 ) ); columns[2].setWidth( pc.convertWidthInCharsToPixels( 20 ) ); columns[3].setWidth( pc.convertWidthInCharsToPixels( 20 ) ); + columns[4].setWidth( pc.convertWidthInCharsToPixels( 20 ) ); - viewer.setContentProvider( new SharedLibrariesViewContentProvider() ); + viewer.setContentProvider( createContentProvider() ); viewer.setLabelProvider( new SharedLibrariesLabelProvider() ); + CDebugUIPlugin.getDefault().getPreferenceStore().addPropertyChangeListener( this ); + // listen to selection in debug view getSite().getPage().addSelectionListener( IDebugUIConstants.ID_DEBUG_VIEW, this ); setEventHandler( createEventHandler( viewer ) ); @@ -138,156 +141,124 @@ public class SharedLibrariesView extends AbstractDebugEventHandlerView /* (non-Javadoc) * @see org.eclipse.debug.ui.AbstractDebugView#createActions() */ - protected void createActions() - { - IAction action = new AutoRefreshAction( getViewer(), CDebugUIPlugin.getResourceString("RegistersView.Auto_Refresh") ); //$NON-NLS-1$ - CDebugImages.setLocalImageDescriptors( action, CDebugImages.IMG_LCL_AUTO_REFRESH ); - action.setDescription( "Automatically Refresh Shared Libraries View" ); //$NON-NLS-1$ - action.setToolTipText( CDebugUIPlugin.getResourceString("RegistersView.Auto_Refresh") ); //$NON-NLS-1$ - WorkbenchHelp.setHelp( action, ICDebugHelpContextIds.AUTO_REFRESH_SHARED_LIBRARIES_ACTION ); - action.setEnabled( false ); - setAction( "AutoRefresh", action ); //$NON-NLS-1$ - add( (AutoRefreshAction)action ); - - action = new RefreshAction( getViewer(), CDebugUIPlugin.getResourceString("RegistersView.Refresh") ); //$NON-NLS-1$ - CDebugImages.setLocalImageDescriptors( action, CDebugImages.IMG_LCL_REFRESH ); - action.setDescription( CDebugUIPlugin.getResourceString("SharedLibrariesView.Refresh_Shared_Libraries_View") ); //$NON-NLS-1$ - action.setToolTipText( CDebugUIPlugin.getResourceString("RegistersView.Refresh") ); //$NON-NLS-1$ - WorkbenchHelp.setHelp( action, ICDebugHelpContextIds.REFRESH_SHARED_LIBRARIES_ACTION ); - action.setEnabled( false ); - setAction( "Refresh", action ); //$NON-NLS-1$ - add( (RefreshAction)action ); - - action = new LoadSymbolsForAllAction( getViewer() ); - action.setEnabled( false ); - setAction( "LoadSymbolsForAll", action ); //$NON-NLS-1$ - add( (LoadSymbolsForAllAction)action ); - - // set initial content here, as viewer has to be set - setInitialContent(); + protected void createActions() { } /* (non-Javadoc) * @see org.eclipse.debug.ui.AbstractDebugView#getHelpContextId() */ - protected String getHelpContextId() - { + protected String getHelpContextId() { return ICDebugHelpContextIds.SHARED_LIBRARIES_VIEW; } /* (non-Javadoc) * @see org.eclipse.debug.ui.AbstractDebugView#fillContextMenu(IMenuManager) */ - protected void fillContextMenu( IMenuManager menu ) - { - updateObjects(); - - menu.add( new Separator( ICDebugUIConstants.EMPTY_SHARED_LIBRARIES_GROUP ) ); - menu.add( new Separator( ICDebugUIConstants.SHARED_LIBRARIES_GROUP ) ); - - menu.add( new Separator( ICDebugUIConstants.EMPTY_REFRESH_GROUP ) ); - menu.add( new Separator( ICDebugUIConstants.REFRESH_GROUP ) ); - + protected void fillContextMenu( IMenuManager menu ) { menu.add( new Separator( IWorkbenchActionConstants.MB_ADDITIONS ) ); - - menu.appendToGroup( ICDebugUIConstants.SHARED_LIBRARIES_GROUP, getAction( "LoadSymbolsForAll" ) ); //$NON-NLS-1$ - menu.appendToGroup( ICDebugUIConstants.REFRESH_GROUP, getAction( "AutoRefresh" ) ); //$NON-NLS-1$ - menu.appendToGroup( ICDebugUIConstants.REFRESH_GROUP, getAction( "Refresh" ) ); //$NON-NLS-1$ + updateObjects(); } /* (non-Javadoc) * @see org.eclipse.debug.ui.AbstractDebugView#configureToolBar(IToolBarManager) */ - protected void configureToolBar( IToolBarManager tbm ) - { - tbm.add( new Separator( this.getClass().getName() ) ); - - tbm.add( new Separator( ICDebugUIConstants.SHARED_LIBRARIES_GROUP ) ); - tbm.add( getAction( "LoadSymbolsForAll" ) ); //$NON-NLS-1$ - - tbm.add( new Separator( ICDebugUIConstants.REFRESH_GROUP ) ); - tbm.add( getAction( "AutoRefresh" ) ); //$NON-NLS-1$ - tbm.add( getAction( "Refresh" ) ); //$NON-NLS-1$ + protected void configureToolBar( IToolBarManager tbm ) { } /* (non-Javadoc) * @see org.eclipse.ui.ISelectionListener#selectionChanged(IWorkbenchPart, ISelection) */ - public void selectionChanged( IWorkbenchPart part, ISelection selection ) - { - if ( selection instanceof IStructuredSelection ) - { + public void selectionChanged( IWorkbenchPart part, ISelection selection ) { + if ( !isAvailable() || !isVisible() ) + return; + if ( selection == null ) + setViewerInput( new StructuredSelection() ); + else if ( selection instanceof IStructuredSelection ) setViewerInput( (IStructuredSelection)selection ); - } } /* (non-Javadoc) * @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(PropertyChangeEvent) */ - public void propertyChange( PropertyChangeEvent event ) - { + public void propertyChange( PropertyChangeEvent event ) { } /* (non-Javadoc) * @see org.eclipse.cdt.debug.internal.ui.views.IDebugExceptionHandler#handleException(DebugException) */ - public void handleException( DebugException e ) - { + public void handleException( DebugException e ) { + showMessage( e.getMessage() ); } - protected void setViewerInput( IStructuredSelection ssel ) - { - ICSharedLibraryManager slm = null; - if ( ssel != null && ssel.size() == 1 ) - { + protected void setViewerInput( IStructuredSelection ssel ) { + ICDebugTarget target = null; + if ( ssel != null && ssel.size() == 1 ) { Object input = ssel.getFirstElement(); - if ( input instanceof IDebugElement ) - { - slm = (ICSharedLibraryManager)((IDebugElement)input).getDebugTarget().getAdapter( ICSharedLibraryManager.class ); - } + if ( input instanceof IDebugElement && ((IDebugElement)input).getDebugTarget() instanceof ICDebugTarget ) + target = (ICDebugTarget)((IDebugElement)input).getDebugTarget(); } if ( getViewer() == null ) - { return; - } Object current = getViewer().getInput(); - if ( current != null && current.equals( slm ) ) - { + if ( current != null && current.equals( target ) ) { updateObjects(); return; } + showViewer(); - getViewer().setInput( slm ); + getViewer().setInput( target ); updateObjects(); } - /** - * Initializes the viewer input on creation - */ - protected void setInitialContent() - { - ISelection selection = - getSite().getPage().getSelection( IDebugUIConstants.ID_DEBUG_VIEW ); - if ( selection instanceof IStructuredSelection && !selection.isEmpty() ) - { - setViewerInput( (IStructuredSelection)selection ); - } - else - { - setViewerInput( null ); - } - } - /** * Creates this view's event handler. * * @param viewer the viewer associated with this view * @return an event handler */ - protected AbstractDebugEventHandler createEventHandler( Viewer viewer ) - { + protected AbstractDebugEventHandler createEventHandler( Viewer viewer ) { return new SharedLibrariesViewEventHandler( this ); } + + /** + * Creates this view's content provider. + * + * @return a content provider + */ + protected IContentProvider createContentProvider() { + SharedLibrariesViewContentProvider cp = new SharedLibrariesViewContentProvider(); + cp.setExceptionHandler( this ); + return cp; + } + + /* (non-Javadoc) + * @see org.eclipse.debug.ui.AbstractDebugView#becomesHidden() + */ + protected void becomesHidden() { + setViewerInput( new StructuredSelection() ); + super.becomesHidden(); + } + + /* (non-Javadoc) + * @see org.eclipse.debug.ui.AbstractDebugView#becomesVisible() + */ + protected void becomesVisible() { + super.becomesVisible(); + IViewPart part = getSite().getPage().findView( IDebugUIConstants.ID_DEBUG_VIEW ); + if ( part != null ) { + ISelection selection = getSite().getPage().getSelection( IDebugUIConstants.ID_DEBUG_VIEW ); + selectionChanged( part, selection ); + } + } + + /* (non-Javadoc) + * @see org.eclipse.ui.IWorkbenchPart#dispose() + */ + public void dispose() { + getSite().getPage().removeSelectionListener( IDebugUIConstants.ID_DEBUG_VIEW, this ); + CDebugUIPlugin.getDefault().getPreferenceStore().removePropertyChangeListener( this ); + super.dispose(); + } } diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/sharedlibs/SharedLibrariesViewContentProvider.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/sharedlibs/SharedLibrariesViewContentProvider.java index 575f9c297b6..6f1c6b5436c 100644 --- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/sharedlibs/SharedLibrariesViewContentProvider.java +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/sharedlibs/SharedLibrariesViewContentProvider.java @@ -1,145 +1,164 @@ -/* - *(c) Copyright QNX Software Systems Ltd. 2002. - * All Rights Reserved. +/********************************************************************** + * Copyright (c) 2004 QNX Software Systems and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html * - */ + * Contributors: + * QNX Software Systems - Initial API and implementation + ***********************************************************************/ package org.eclipse.cdt.debug.internal.ui.views.sharedlibs; import java.util.HashMap; -import org.eclipse.cdt.debug.core.ICSharedLibraryManager; +import org.eclipse.cdt.debug.core.model.ICDebugTarget; import org.eclipse.cdt.debug.internal.ui.views.IDebugExceptionHandler; +import org.eclipse.cdt.debug.ui.CDebugUIPlugin; +import org.eclipse.debug.core.DebugException; import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.Viewer; /** - * Enter type comment. + * Provides content for the shared libraries view. * * @since: Jan 21, 2003 */ -public class SharedLibrariesViewContentProvider implements ITreeContentProvider -{ +public class SharedLibrariesViewContentProvider implements ITreeContentProvider { + /** - * A table that maps children to their parent element - * such that this content provider can walk back up the - * parent chain (since values do not know their - * parent). - * Map of IVariable (child) -> IVariable (parent). + * A table that maps children to their parent element such that this + * content provider can walk back up the parent chain (since values do not + * know their parent). Map of IVariable (child) ->IVariable + * (parent). */ private HashMap fParentCache; /** * Handler for exceptions as content is retrieved */ - private IDebugExceptionHandler fExceptionHandler = null; - + private IDebugExceptionHandler fExceptionHandler; /** * Constructor for SharedLibrariesViewContentProvider. */ - public SharedLibrariesViewContentProvider() - { - fParentCache = new HashMap( 10 ); + public SharedLibrariesViewContentProvider() { + setParentCache( new HashMap( 10 ) ); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(Object) */ - public Object[] getChildren( Object parent ) - { - Object[] children = null; - if ( parent != null && parent instanceof ICSharedLibraryManager ) - { - children = ((ICSharedLibraryManager)parent).getSharedLibraries(); - } - if ( children != null ) - { - cache( parent, children ); - return children; + public Object[] getChildren( Object parent ) { + if ( parent instanceof ICDebugTarget ) { + Object[] children = null; + ICDebugTarget target = (ICDebugTarget)parent; + try { + if ( target != null ) + children = target.getSharedLibraries(); + if ( children != null ) { + cache( parent, children ); + return children; + } + } + catch( DebugException e ) { + if ( getExceptionHandler() != null ) + getExceptionHandler().handleException( e ); + else + CDebugUIPlugin.log( e ); + } } return new Object[0]; } /** - * Caches the given elememts as children of the given - * parent. + * Caches the given elememts as children of the given parent. * - * @param parent parent element - * @param children children elements + * @param parent + * parent element + * @param children + * children elements */ - protected void cache( Object parent, Object[] children ) - { - for ( int i = 0; i < children.length; i++ ) - { - fParentCache.put( children[i], parent ); + protected void cache( Object parent, Object[] children ) { + for ( int i = 0; i < children.length; i++ ) { + getParentCache().put( children[i], parent ); } } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(Object) */ - public Object getParent( Object element ) - { - return fParentCache.get( element ); + public Object getParent( Object element ) { + return getParentCache().get( element ); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(Object) */ - public boolean hasChildren( Object parent ) - { - if ( parent instanceof ICSharedLibraryManager ) - { - return ( ((ICSharedLibraryManager)parent).getSharedLibraries().length > 0 ); + public boolean hasChildren( Object parent ) { + if ( parent instanceof ICDebugTarget ) { + try { + ICDebugTarget target = (ICDebugTarget)parent; + return target.hasSharedLibraries(); + } + catch( DebugException e ) { + CDebugUIPlugin.log( e ); + } } return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(Object) */ - public Object[] getElements( Object inputElement ) - { + public Object[] getElements( Object inputElement ) { return getChildren( inputElement ); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see org.eclipse.jface.viewers.IContentProvider#dispose() */ - public void dispose() - { - fParentCache = null; + public void dispose() { + setParentCache( null ); setExceptionHandler( null ); } - /* (non-Javadoc) - * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(Viewer, Object, Object) + /* + * (non-Javadoc) + * + * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(Viewer, + * Object, Object) */ - public void inputChanged( Viewer viewer, Object oldInput, Object newInput ) - { + public void inputChanged( Viewer viewer, Object oldInput, Object newInput ) { clearCache(); } - protected void clearCache() - { - if ( fParentCache != null ) - { - fParentCache.clear(); + protected void clearCache() { + if ( getParentCache() != null ) { + getParentCache().clear(); } } - + /** * Remove the cached parent for the given children * - * @param children for which to remove cached parents + * @param children + * for which to remove cached parents */ - public void removeCache( Object[] children ) - { - if ( fParentCache != null ) - { - for ( int i = 0; i < children.length; i++ ) - { - fParentCache.remove( children[i] ); + public void removeCache( Object[] children ) { + if ( getParentCache() != null ) { + for ( int i = 0; i < children.length; i++ ) { + getParentCache().remove( children[i] ); } } } @@ -149,18 +168,24 @@ public class SharedLibrariesViewContentProvider implements ITreeContentProvider * * @param handler debug exception handler or null */ - protected void setExceptionHandler( IDebugExceptionHandler handler ) - { - fExceptionHandler = handler; + protected void setExceptionHandler( IDebugExceptionHandler handler ) { + this.fExceptionHandler = handler; } - + /** * Returns the exception handler for this content provider. * * @return debug exception handler or null */ - protected IDebugExceptionHandler getExceptionHandler() - { - return fExceptionHandler; + protected IDebugExceptionHandler getExceptionHandler() { + return this.fExceptionHandler; } + + private HashMap getParentCache() { + return this.fParentCache; + } + + private void setParentCache( HashMap parentCache ) { + this.fParentCache = parentCache; + } } diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/sharedlibs/SharedLibrariesViewEventHandler.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/sharedlibs/SharedLibrariesViewEventHandler.java index 8fc79c30841..8fb7e1e7bab 100644 --- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/sharedlibs/SharedLibrariesViewEventHandler.java +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/sharedlibs/SharedLibrariesViewEventHandler.java @@ -1,8 +1,13 @@ -/* - *(c) Copyright QNX Software Systems Ltd. 2002. - * All Rights Reserved. +/********************************************************************** + * Copyright (c) 2004 QNX Software Systems and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html * - */ + * Contributors: + * QNX Software Systems - Initial API and implementation + ***********************************************************************/ package org.eclipse.cdt.debug.internal.ui.views.sharedlibs; import org.eclipse.cdt.debug.core.model.ICSharedLibrary; @@ -12,35 +17,33 @@ import org.eclipse.debug.core.model.IDebugTarget; import org.eclipse.debug.ui.AbstractDebugView; /** - * Enter type comment. + * Updates the shared libraries view. * * @since: Jan 21, 2003 */ -public class SharedLibrariesViewEventHandler extends AbstractDebugEventHandler -{ +public class SharedLibrariesViewEventHandler extends AbstractDebugEventHandler { + /** - * Constructor for SharedLibrariesViewEventHandler. - * @param view + * Constructs a new event handler on the given view + * + * @param view shared libraries view */ - public SharedLibrariesViewEventHandler( AbstractDebugView view ) - { + public SharedLibrariesViewEventHandler( AbstractDebugView view ) { super( view ); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see org.eclipse.cdt.debug.internal.ui.views.AbstractDebugEventHandler#doHandleDebugEvents(DebugEvent[]) */ - protected void doHandleDebugEvents( DebugEvent[] events ) - { - for( int i = 0; i < events.length; i++ ) - { + protected void doHandleDebugEvents( DebugEvent[] events ) { + for ( int i = 0; i < events.length; i++ ) { DebugEvent event = events[i]; - switch( event.getKind() ) - { + switch( event.getKind() ) { case DebugEvent.CREATE: case DebugEvent.TERMINATE: - if ( event.getSource() instanceof IDebugTarget || - event.getSource() instanceof ICSharedLibrary ) + if ( event.getSource() instanceof IDebugTarget || event.getSource() instanceof ICSharedLibrary ) refresh(); break; case DebugEvent.CHANGE : @@ -51,25 +54,25 @@ public class SharedLibrariesViewEventHandler extends AbstractDebugEventHandler } } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see org.eclipse.cdt.debug.internal.ui.views.AbstractDebugEventHandler#refresh() */ - public void refresh() - { - if ( isAvailable() ) - { + public void refresh() { + if ( isAvailable() ) { getView().showViewer(); getTableTreeViewer().refresh(); } } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see org.eclipse.cdt.debug.internal.ui.views.AbstractDebugEventHandler#refresh(java.lang.Object) */ - protected void refresh( Object element ) - { - if ( isAvailable() ) - { + protected void refresh( Object element ) { + if ( isAvailable() ) { getView().showViewer(); getTableTreeViewer().refresh( element ); } diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/signals/SignalsMessages.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/signals/SignalsMessages.java new file mode 100644 index 00000000000..674ca830ec3 --- /dev/null +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/signals/SignalsMessages.java @@ -0,0 +1,32 @@ +/********************************************************************** + * Copyright (c) 2004 QNX Software Systems and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: + * QNX Software Systems - Initial API and implementation + ***********************************************************************/ +package org.eclipse.cdt.debug.internal.ui.views.signals; + +import java.util.MissingResourceException; +import java.util.ResourceBundle; + +public class SignalsMessages { + + private static final String BUNDLE_NAME = "org.eclipse.cdt.debug.internal.ui.views.signals.SignalsMessages";//$NON-NLS-1$ + + private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle( BUNDLE_NAME ); + + private SignalsMessages() { + } + + public static String getString( String key ) { + try { + return RESOURCE_BUNDLE.getString( key ); + } catch( MissingResourceException e ) { + return '!' + key + '!'; + } + } +} \ No newline at end of file diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/signals/SignalsMessages.properties b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/signals/SignalsMessages.properties new file mode 100644 index 00000000000..18d4cbf0163 --- /dev/null +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/signals/SignalsMessages.properties @@ -0,0 +1,6 @@ +SignalsViewer.4=Name +SignalsViewer.5=Pass +SignalsViewer.6=Suspend +SignalsViewer.7=Description +SignalsViewer.8=yes +SignalsViewer.9=no diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/signals/SignalsView.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/signals/SignalsView.java index e4112848bd9..f71c8b2d39d 100644 --- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/signals/SignalsView.java +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/signals/SignalsView.java @@ -1,19 +1,24 @@ -/* - *(c) Copyright QNX Software Systems Ltd. 2002. - * All Rights Reserved. +/********************************************************************** + * Copyright (c) 2004 QNX Software Systems and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html * - */ + * Contributors: + * QNX Software Systems - Initial API and implementation +***********************************************************************/ package org.eclipse.cdt.debug.internal.ui.views.signals; -import org.eclipse.cdt.debug.core.ICSignalManager; +import org.eclipse.cdt.debug.core.model.ICDebugTarget; import org.eclipse.cdt.debug.core.model.ICSignal; -import org.eclipse.cdt.debug.internal.ui.CDebugImages; import org.eclipse.cdt.debug.internal.ui.ICDebugHelpContextIds; import org.eclipse.cdt.debug.internal.ui.views.AbstractDebugEventHandlerView; import org.eclipse.cdt.debug.internal.ui.views.IDebugExceptionHandler; import org.eclipse.cdt.debug.ui.CDebugUIPlugin; import org.eclipse.debug.core.DebugException; import org.eclipse.debug.core.model.IDebugElement; +import org.eclipse.debug.ui.IDebugModelPresentation; import org.eclipse.debug.ui.IDebugUIConstants; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.IToolBarManager; @@ -25,71 +30,71 @@ import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.ITableLabelProvider; import org.eclipse.jface.viewers.LabelProvider; +import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.Viewer; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Composite; +import org.eclipse.ui.INullSelectionListener; import org.eclipse.ui.ISelectionListener; +import org.eclipse.ui.IViewPart; import org.eclipse.ui.IWorkbenchActionConstants; import org.eclipse.ui.IWorkbenchPart; + /** - * Enter type comment. - * - * @since: Jan 30, 2003 + * Displays signals. + * + * @since: Mar 8, 2004 */ -public class SignalsView extends AbstractDebugEventHandlerView +public class SignalsView extends AbstractDebugEventHandlerView implements ISelectionListener, - IPropertyChangeListener, - IDebugExceptionHandler -{ - /** - * Enter type comment. - * - * @since: Jan 30, 2003 - */ - public class SignalsViewLabelProvider extends LabelProvider implements ITableLabelProvider - { + INullSelectionListener, + IPropertyChangeListener, + IDebugExceptionHandler { + + public class SignalsViewLabelProvider extends LabelProvider implements ITableLabelProvider { + /* (non-Javadoc) - * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnImage(Object, int) + * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnImage(java.lang.Object, int) */ - public Image getColumnImage( Object element, int columnIndex ) - { + public Image getColumnImage( Object element, int columnIndex ) { if ( columnIndex == 0 ) - return CDebugUIPlugin.getImageDescriptorRegistry().get( CDebugImages.DESC_OBJS_SIGNAL ); + return getModelPresentation().getImage( element ); return null; } /* (non-Javadoc) - * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(Object, int) + * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang.Object, int) */ - public String getColumnText( Object element, int columnIndex ) - { - if ( element instanceof ICSignal ) - { - switch( columnIndex ) - { - case 0: - return ((ICSignal)element).getName(); - case 1: - return ( ((ICSignal)element).isPassEnabled() ) ? - SignalsViewer.YES_VALUE : SignalsViewer.NO_VALUE; - case 2: - return ( ((ICSignal)element).isStopEnabled() ) ? - SignalsViewer.YES_VALUE : SignalsViewer.NO_VALUE; - case 3: - return ((ICSignal)element).getDescription(); + public String getColumnText( Object element, int columnIndex ) { + if ( element instanceof ICSignal ) { + try { + switch( columnIndex ) { + case 0: + return ((ICSignal)element).getName(); + case 1: + return (((ICSignal)element).isPassEnabled()) ? SignalsViewer.YES_VALUE : SignalsViewer.NO_VALUE; + case 2: + return (((ICSignal)element).isStopEnabled()) ? SignalsViewer.YES_VALUE : SignalsViewer.NO_VALUE; + case 3: + return ((ICSignal)element).getDescription(); + } + } catch( DebugException e ) { } } return null; } + + private IDebugModelPresentation getModelPresentation() { + return CDebugUIPlugin.getDebugModelPresentation(); + } } /* (non-Javadoc) - * @see org.eclipse.debug.ui.AbstractDebugView#createViewer(Composite) + * @see org.eclipse.debug.ui.AbstractDebugView#createViewer(org.eclipse.swt.widgets.Composite) */ - protected Viewer createViewer( Composite parent ) - { + protected Viewer createViewer( Composite parent ) { CDebugUIPlugin.getDefault().getPreferenceStore().addPropertyChangeListener( this ); // add tree viewer @@ -97,7 +102,8 @@ public class SignalsView extends AbstractDebugEventHandlerView vv.setContentProvider( createContentProvider() ); vv.setLabelProvider( new SignalsViewLabelProvider() ); vv.setUseHashlookup( true ); - vv.setExceptionHandler( this ); + + CDebugUIPlugin.getDefault().getPreferenceStore().addPropertyChangeListener( this ); // listen to selection in debug view getSite().getPage().addSelectionListener( IDebugUIConstants.ID_DEBUG_VIEW, this ); @@ -109,109 +115,53 @@ public class SignalsView extends AbstractDebugEventHandlerView /* (non-Javadoc) * @see org.eclipse.debug.ui.AbstractDebugView#createActions() */ - protected void createActions() - { - // set initial content here, as viewer has to be set - setInitialContent(); + protected void createActions() { } /* (non-Javadoc) * @see org.eclipse.debug.ui.AbstractDebugView#getHelpContextId() */ - protected String getHelpContextId() - { + protected String getHelpContextId() { return ICDebugHelpContextIds.SIGNALS_VIEW; } /* (non-Javadoc) - * @see org.eclipse.debug.ui.AbstractDebugView#fillContextMenu(IMenuManager) + * @see org.eclipse.debug.ui.AbstractDebugView#fillContextMenu(org.eclipse.jface.action.IMenuManager) */ - protected void fillContextMenu( IMenuManager menu ) - { + protected void fillContextMenu( IMenuManager menu ) { menu.add( new Separator( IWorkbenchActionConstants.MB_ADDITIONS ) ); - } - - /* (non-Javadoc) - * @see org.eclipse.debug.ui.AbstractDebugView#configureToolBar(IToolBarManager) - */ - protected void configureToolBar( IToolBarManager tbm ) - { - } - - /* (non-Javadoc) - * @see org.eclipse.ui.ISelectionListener#selectionChanged(IWorkbenchPart, ISelection) - */ - public void selectionChanged( IWorkbenchPart part, ISelection selection ) - { - if ( selection instanceof IStructuredSelection ) - { - setViewerInput( (IStructuredSelection)selection ); - } - } - - /* (non-Javadoc) - * @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(PropertyChangeEvent) - */ - public void propertyChange( PropertyChangeEvent event ) - { - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.debug.internal.ui.views.IDebugExceptionHandler#handleException(DebugException) - */ - public void handleException( DebugException e ) - { - showMessage( e.getMessage() ); - } - - protected void setViewerInput( IStructuredSelection ssel ) - { - ICSignalManager sm = null; - if ( ssel != null && ssel.size() == 1 ) - { - Object input = ssel.getFirstElement(); - if ( input instanceof IDebugElement ) - { - sm = (ICSignalManager)((IDebugElement)input).getDebugTarget().getAdapter( ICSignalManager.class ); - } - } - - if ( getViewer() == null ) - { - return; - } - - Object current = getViewer().getInput(); - if ( current != null && current.equals( sm ) ) - { - return; - } - showViewer(); - getViewer().setInput( sm ); updateObjects(); } - /** - * Initializes the viewer input on creation + /* (non-Javadoc) + * @see org.eclipse.debug.ui.AbstractDebugView#configureToolBar(org.eclipse.jface.action.IToolBarManager) */ - protected void setInitialContent() - { - ISelection selection = - getSite().getPage().getSelection( IDebugUIConstants.ID_DEBUG_VIEW ); - if ( selection instanceof IStructuredSelection && !selection.isEmpty() ) - { - setViewerInput( (IStructuredSelection)selection ); - } + protected void configureToolBar( IToolBarManager tbm ) { } /* (non-Javadoc) - * @see org.eclipse.ui.IWorkbenchPart#dispose() + * @see org.eclipse.ui.ISelectionListener#selectionChanged(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection) */ - public void dispose() - { - getSite().getPage().removeSelectionListener( IDebugUIConstants.ID_DEBUG_VIEW, this ); - CDebugUIPlugin.getDefault().getPreferenceStore().removePropertyChangeListener( this ); - super.dispose(); + public void selectionChanged( IWorkbenchPart part, ISelection selection ) { + if ( !isAvailable() || !isVisible() ) + return; + if ( selection == null ) + setViewerInput( new StructuredSelection() ); + else if ( selection instanceof IStructuredSelection ) + setViewerInput( (IStructuredSelection)selection ); + } + + /* (non-Javadoc) + * @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org.eclipse.jface.util.PropertyChangeEvent) + */ + public void propertyChange( PropertyChangeEvent event ) { + } + + /* (non-Javadoc) + * @see org.eclipse.cdt.debug.internal.ui.views.IDebugExceptionHandler#handleException(org.eclipse.debug.core.DebugException) + */ + public void handleException( DebugException e ) { + showMessage( e.getMessage() ); } /** @@ -219,10 +169,60 @@ public class SignalsView extends AbstractDebugEventHandlerView * * @return a content provider */ - protected IContentProvider createContentProvider() - { + private IContentProvider createContentProvider() { SignalsViewContentProvider cp = new SignalsViewContentProvider(); cp.setExceptionHandler( this ); return cp; } + + protected void setViewerInput( IStructuredSelection ssel ) { + ICDebugTarget target = null; + if ( ssel != null && ssel.size() == 1 ) { + Object input = ssel.getFirstElement(); + if ( input instanceof IDebugElement && ((IDebugElement)input).getDebugTarget() instanceof ICDebugTarget ) + target = (ICDebugTarget)((IDebugElement)input).getDebugTarget(); + } + + if ( getViewer() == null ) + return; + + Object current = getViewer().getInput(); + if ( current != null && current.equals( target ) ) { + updateObjects(); + return; + } + + showViewer(); + getViewer().setInput( target ); + updateObjects(); + } + + /* (non-Javadoc) + * @see org.eclipse.debug.ui.AbstractDebugView#becomesHidden() + */ + protected void becomesHidden() { + setViewerInput( new StructuredSelection() ); + super.becomesHidden(); + } + + /* (non-Javadoc) + * @see org.eclipse.debug.ui.AbstractDebugView#becomesVisible() + */ + protected void becomesVisible() { + super.becomesVisible(); + IViewPart part = getSite().getPage().findView( IDebugUIConstants.ID_DEBUG_VIEW ); + if ( part != null ) { + ISelection selection = getSite().getPage().getSelection( IDebugUIConstants.ID_DEBUG_VIEW ); + selectionChanged( part, selection ); + } + } + + /* (non-Javadoc) + * @see org.eclipse.ui.IWorkbenchPart#dispose() + */ + public void dispose() { + getSite().getPage().removeSelectionListener( IDebugUIConstants.ID_DEBUG_VIEW, this ); + CDebugUIPlugin.getDefault().getPreferenceStore().removePropertyChangeListener( this ); + super.dispose(); + } } diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/signals/SignalsViewContentProvider.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/signals/SignalsViewContentProvider.java index 9002e792bb9..f3562321f9d 100644 --- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/signals/SignalsViewContentProvider.java +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/signals/SignalsViewContentProvider.java @@ -1,58 +1,57 @@ -/* - *(c) Copyright QNX Software Systems Ltd. 2002. - * All Rights Reserved. +/********************************************************************** + * Copyright (c) 2004 QNX Software Systems and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html * - */ + * Contributors: + * QNX Software Systems - Initial API and implementation +***********************************************************************/ + package org.eclipse.cdt.debug.internal.ui.views.signals; -import org.eclipse.cdt.debug.core.ICSignalManager; +import org.eclipse.cdt.debug.core.model.ICDebugTarget; import org.eclipse.cdt.debug.internal.ui.views.IDebugExceptionHandler; import org.eclipse.cdt.debug.ui.CDebugUIPlugin; import org.eclipse.debug.core.DebugException; import org.eclipse.jface.viewers.IStructuredContentProvider; import org.eclipse.jface.viewers.Viewer; + /** - * Enter type comment. - * - * @since: Jan 30, 2003 + * Provides content for the signals view. + * + * @since: Mar 8, 2004 */ -public class SignalsViewContentProvider implements IStructuredContentProvider -{ +public class SignalsViewContentProvider implements IStructuredContentProvider { + /** * Handler for exceptions as content is retrieved */ private IDebugExceptionHandler fExceptionHandler = null; - /** - * Constructor for SignalsViewContentProvider. - */ - public SignalsViewContentProvider() - { - super(); + public SignalsViewContentProvider() { } /* (non-Javadoc) - * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(Object) + * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object) */ - public Object[] getElements( Object inputElement ) - { - if ( inputElement instanceof ICSignalManager ) - { - try - { - return ((ICSignalManager)inputElement).getSignals(); + public Object[] getElements( Object inputElement ) { + if ( inputElement instanceof ICDebugTarget ) { + ICDebugTarget target = (ICDebugTarget)inputElement; + try { + if ( target != null ) { + Object[] signals = target.getSignals(); + if ( signals != null ) + return signals; + } } - catch( DebugException e ) - { + catch( DebugException e ) { if ( getExceptionHandler() != null ) - { getExceptionHandler().handleException( e ); - } else - { CDebugUIPlugin.log( e ); - } } } return new Object[0]; @@ -61,15 +60,13 @@ public class SignalsViewContentProvider implements IStructuredContentProvider /* (non-Javadoc) * @see org.eclipse.jface.viewers.IContentProvider#dispose() */ - public void dispose() - { + public void dispose() { } /* (non-Javadoc) - * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(Viewer, Object, Object) + * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object) */ - public void inputChanged( Viewer viewer, Object oldInput, Object newInput ) - { + public void inputChanged( Viewer viewer, Object oldInput, Object newInput ) { } /** @@ -77,8 +74,7 @@ public class SignalsViewContentProvider implements IStructuredContentProvider * * @param handler debug exception handler or null */ - protected void setExceptionHandler( IDebugExceptionHandler handler ) - { + protected void setExceptionHandler(IDebugExceptionHandler handler) { fExceptionHandler = handler; } @@ -87,8 +83,7 @@ public class SignalsViewContentProvider implements IStructuredContentProvider * * @return debug exception handler or null */ - protected IDebugExceptionHandler getExceptionHandler() - { + protected IDebugExceptionHandler getExceptionHandler() { return fExceptionHandler; } } diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/signals/SignalsViewEventHandler.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/signals/SignalsViewEventHandler.java index bd8b092eea0..55a4565f49c 100644 --- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/signals/SignalsViewEventHandler.java +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/signals/SignalsViewEventHandler.java @@ -1,8 +1,14 @@ -/* - *(c) Copyright QNX Software Systems Ltd. 2002. - * All Rights Reserved. +/********************************************************************** + * Copyright (c) 2004 QNX Software Systems and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html * - */ + * Contributors: + * QNX Software Systems - Initial API and implementation +***********************************************************************/ + package org.eclipse.cdt.debug.internal.ui.views.signals; import org.eclipse.cdt.debug.core.model.ICSignal; @@ -11,70 +17,43 @@ import org.eclipse.debug.core.DebugEvent; import org.eclipse.debug.core.model.IDebugTarget; import org.eclipse.debug.ui.AbstractDebugView; + /** - * Enter type comment. - * - * @since: Jan 30, 2003 + * Updates the signals view. + * + * @since: Mar 8, 2004 */ -public class SignalsViewEventHandler extends AbstractDebugEventHandler -{ +public class SignalsViewEventHandler extends AbstractDebugEventHandler { + /** - * Constructor for SignalsViewEventHandler. - * @param view + * Constructs a new event handler on the given view + * + * @param view signals view */ - public SignalsViewEventHandler( AbstractDebugView view ) - { + public SignalsViewEventHandler( AbstractDebugView view ) { super( view ); } /* (non-Javadoc) - * @see org.eclipse.cdt.debug.internal.ui.views.AbstractDebugEventHandler#doHandleDebugEvents(DebugEvent[]) + * @see org.eclipse.cdt.debug.internal.ui.views.AbstractDebugEventHandler#doHandleDebugEvents(org.eclipse.debug.core.DebugEvent[]) */ - protected void doHandleDebugEvents( DebugEvent[] events ) - { - for( int i = 0; i < events.length; i++ ) - { + protected void doHandleDebugEvents( DebugEvent[] events ) { + for( int i = 0; i < events.length; i++ ) { DebugEvent event = events[i]; - switch( event.getKind() ) - { + switch( event.getKind() ) { case DebugEvent.CREATE: case DebugEvent.TERMINATE: - if ( event.getSource() instanceof IDebugTarget || - event.getSource() instanceof ICSignal ) + if ( event.getSource() instanceof IDebugTarget || event.getSource() instanceof ICSignal ) refresh(); break; - case DebugEvent.SUSPEND : + case DebugEvent.SUSPEND: refresh(); break; - case DebugEvent.CHANGE : + case DebugEvent.CHANGE: if ( event.getSource() instanceof ICSignal ) refresh( event.getSource() ); break; } } } - - /** - * Refresh the given element in the viewer - must be called in UI thread. - */ - protected void refresh( Object element ) - { - if ( isAvailable() ) - { - getView().showViewer(); - getTableViewer().refresh( element ); - } - } - - /** - * Refresh the viewer - must be called in UI thread. - */ - public void refresh() - { - if ( isAvailable() ) - { - getView().showViewer(); - getTableViewer().refresh(); - } - } } diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/signals/SignalsViewer.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/signals/SignalsViewer.java index e07ac1e7305..ca9fe3e8cff 100644 --- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/signals/SignalsViewer.java +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/signals/SignalsViewer.java @@ -1,37 +1,35 @@ -/* - *(c) Copyright QNX Software Systems Ltd. 2002. - * All Rights Reserved. +/********************************************************************** + * Copyright (c) 2004 QNX Software Systems and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html * - */ + * Contributors: + * QNX Software Systems - Initial API and implementation +***********************************************************************/ + package org.eclipse.cdt.debug.internal.ui.views.signals; -import org.eclipse.cdt.debug.core.model.ICSignal; import org.eclipse.cdt.debug.internal.ui.PixelConverter; -import org.eclipse.cdt.debug.internal.ui.views.IDebugExceptionHandler; -import org.eclipse.debug.core.DebugException; -import org.eclipse.jface.viewers.CellEditor; -import org.eclipse.jface.viewers.ComboBoxCellEditor; -import org.eclipse.jface.viewers.ICellModifier; -import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.TableColumn; -import org.eclipse.cdt.debug.ui.CDebugUIPlugin; + /** - * Enter type comment. - * - * @since: Jan 30, 2003 + * Signals viewer. + * + * @since: Mar 8, 2004 */ -public class SignalsViewer extends TableViewer -{ +public class SignalsViewer extends TableViewer { + // String constants - protected static final String YES_VALUE = CDebugUIPlugin.getResourceString("SignalsViewer.yes"); //$NON-NLS-1$ - protected static final String NO_VALUE = CDebugUIPlugin.getResourceString("SignalsViewer.no"); //$NON-NLS-1$ + protected static final String YES_VALUE = SignalsMessages.getString( "SignalsViewer.8" ); //$NON-NLS-1$ + protected static final String NO_VALUE = SignalsMessages.getString( "SignalsViewer.9" ); //$NON-NLS-1$ // Column properties private static final String CP_NAME = "name"; //$NON-NLS-1$ @@ -39,15 +37,19 @@ public class SignalsViewer extends TableViewer private static final String CP_SUSPEND = "suspend"; //$NON-NLS-1$ private static final String CP_DESCRIPTION = "description"; //$NON-NLS-1$ - private IDebugExceptionHandler fExceptionHandler = null; + // Column labels + private static final String CL_NAME = SignalsMessages.getString( "SignalsViewer.4" ); //$NON-NLS-1$ + private static final String CL_PASS = SignalsMessages.getString( "SignalsViewer.5" ); //$NON-NLS-1$ + private static final String CL_SUSPEND = SignalsMessages.getString( "SignalsViewer.6" ); //$NON-NLS-1$ + private static final String CL_DESCRIPTION = SignalsMessages.getString( "SignalsViewer.7" ); //$NON-NLS-1$ /** - * Constructor for SignalsViewer. + * Constructor for SignalsViewer + * * @param parent * @param style */ - public SignalsViewer( Composite parent, int style ) - { + public SignalsViewer( Composite parent, int style ) { super( parent, style ); Table table = getTable(); table.setLinesVisible( true ); @@ -65,10 +67,10 @@ public class SignalsViewer extends TableViewer columns[2].setResizable( false ); columns[3].setResizable( true ); - columns[0].setText( CDebugUIPlugin.getResourceString("SignalsViewer.Name") ); //$NON-NLS-1$ - columns[1].setText( CDebugUIPlugin.getResourceString("SignalsViewer.Pass") ); //$NON-NLS-1$ - columns[2].setText( CDebugUIPlugin.getResourceString("SignalsViewer.Suspend") ); //$NON-NLS-1$ - columns[3].setText( CDebugUIPlugin.getResourceString("SignalsViewer.Description") ); //$NON-NLS-1$ + columns[0].setText( CL_NAME ); + columns[1].setText( CL_PASS ); + columns[2].setText( CL_SUSPEND ); + columns[3].setText( CL_DESCRIPTION ); PixelConverter pc = new PixelConverter( parent ); columns[0].setWidth( pc.convertWidthInCharsToPixels( 20 ) ); @@ -76,76 +78,6 @@ public class SignalsViewer extends TableViewer columns[2].setWidth( pc.convertWidthInCharsToPixels( 15 ) ); columns[3].setWidth( pc.convertWidthInCharsToPixels( 50 ) ); - CellEditor cellEditor = new ComboBoxCellEditor( table, new String[]{ YES_VALUE, NO_VALUE } ); - setCellEditors( new CellEditor[]{ null, cellEditor, cellEditor, null } ); setColumnProperties( new String[]{ CP_NAME, CP_PASS, CP_SUSPEND, CP_DESCRIPTION } ); - setCellModifier( createCellModifier() ); - } - - private ICellModifier createCellModifier() - { - return new ICellModifier() - { - public boolean canModify( Object element, String property ) - { - if ( element instanceof ICSignal ) - { - return ((ICSignal)element).getDebugTarget().isSuspended(); - } - return false; - } - - public Object getValue( Object element, String property ) - { - if ( element instanceof ICSignal ) - { - if ( CP_PASS.equals( property ) ) - { - return ( ((ICSignal)element).isPassEnabled() ) ? new Integer( 0 ) : new Integer( 1 ); - } - else if ( CP_SUSPEND.equals( property ) ) - { - return ( ((ICSignal)element).isStopEnabled() ) ? new Integer( 0 ) : new Integer( 1 ); - } - } - return null; - } - - public void modify( Object element, String property, Object value ) - { - IStructuredSelection sel = (IStructuredSelection)getSelection(); - Object entry = sel.getFirstElement(); - if ( entry instanceof ICSignal && value instanceof Integer ) - { - try - { - boolean enable = ( ((Integer)value).intValue() == 0 ); - if ( CP_PASS.equals( property ) ) - { - ((ICSignal)entry).setPassEnabled( enable ); - } - else if ( CP_SUSPEND.equals( property ) ) - { - ((ICSignal)entry).setStopEnabled( enable ); - } - refresh( entry ); - } - catch( DebugException e ) - { - Display.getCurrent().beep(); - } - } - } - }; - } - - protected IDebugExceptionHandler getExceptionHandler() - { - return fExceptionHandler; - } - - protected void setExceptionHandler( IDebugExceptionHandler handler ) - { - fExceptionHandler = handler; } } diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/CDebugUIPluginResources.properties b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/CDebugUIPluginResources.properties index 1846b046a9f..e0b09f2b854 100644 --- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/CDebugUIPluginResources.properties +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/CDebugUIPluginResources.properties @@ -1,4 +1,4 @@ -internal.ui.actions.SignalActionDelegate.Unable_to_deliver_signal_to_target=Unable to deliver the signal ''{0}'' to the target. +internal.ui.actions.SignalActionDelegate.Unable_to_deliver_signal_to_target=Unable to deliver the signal to the target. internal.ui.actions.SignalActionDelegate.Operation_failed=Operation failed. internal.ui.actions.ShowRegisterTypesAction.Show_Type_Names_checkbox=Show &Type Names internal.ui.actions.ShowRegisterTypesAction.Show_Type_Names_tooltip=Show Type Names