Class AbstractDebugView

  • All Implemented Interfaces:
    IAdaptable, IExecutableExtension, IDebugView, IDoubleClickListener, IPartListener, IPersistable, IViewPart, IWorkbenchPart, IWorkbenchPart2, IWorkbenchPart3, IWorkbenchPartOrientation

    public abstract class AbstractDebugView
    extends PageBookView
    implements IDebugView, IDoubleClickListener
    Common function for views related to debugging. Clients implementing views for a debugger should subclass this class. Common function includes:
    • Debug view adapter implementation - IDebugView
    • Action registry - actions can be stored in this view with a key. Actions that implement IUpdate are updated when updateActions() is called.
    • Hooks the context menu associated with this view's underlying viewer and registers the menu with this view's site, such that other plug-ins may contribute.
    • Hooks a key press listener, and invokes the REMOVE_ACTION when the delete key is pressed.
    • Hooks a double-click listener, and invokes the DOUBLE_CLICK_ACTION when the mouse is double-clicked.
    • Provides a mechanism for displaying an error message in the view, via the PageBookView mechanism. By default, a page book is created with a page showing this view's viewer. A message page is also created and shown when showMessage(String) is called.
    • Notification when this view becomes visible and becomes hidden via becomesVisible() and becomesHidden().
    • Linking of a help context id via getHelpContextId().

    This class may be sub-classed.

    Since:
    2.0
    • Constructor Detail

      • AbstractDebugView

        public AbstractDebugView()
        Constructs a new debug view.
    • Method Detail

      • getAdapter

        public <T> T getAdapter​(Class<T> adapter)
        Debug views implement the debug view adapter which provides access to a view's underlying viewer and debug model presentation for a specific debug model.
        Specified by:
        getAdapter in interface IAdaptable
        Overrides:
        getAdapter in class PageBookView
        Type Parameters:
        T - the class type
        Parameters:
        adapter - the adapter class to look up
        Returns:
        a object of the given class, or null if this object does not have an adapter for the given class
        See Also:
        IAdaptable.getAdapter(java.lang.Class), IDebugView
      • createViewer

        protected abstract Viewer createViewer​(Composite parent)
        Creates and returns this view's underlying viewer. The viewer's control will automatically be hooked to display a pop-up menu that other plug-ins may contribute to. Subclasses must override this method.
        Parameters:
        parent - the parent control
        Returns:
        the new Viewer
      • createActions

        protected abstract void createActions()
        Creates this view's actions. Subclasses must override this method, which is called after createViewer(Composite)
      • getHelpContextId

        protected abstract String getHelpContextId()
        Returns this view's help context id, which is hooked to this view on creation.
        Returns:
        help context id
      • saveAllCheckedActionStates

        protected void saveAllCheckedActionStates()
        Saves the checked state for all actions contributed to the toolbar manager that function as a toggle action. The states are saved in the Debug UI plugin's preference store.
        Since:
        2.1
      • saveCheckedActionState

        protected void saveCheckedActionState​(IAction action)
        Save the checked state of the specified action in the Debug UI plugin's preference store. The specified action is expected to be enabled and support the style IAction.AS_CHECK_BOX.
        Parameters:
        action - the enabled, toggle action whose checked state will be saved in preferences
        Since:
        2.1
      • generatePreferenceKey

        protected String generatePreferenceKey​(IAction action)
        Generate a String that can be used as a key into a preference store based on the specified action. The resulting String will be unique across views.
        Parameters:
        action - the action to generate a key for
        Returns:
        a String suitable for use as a preference store key for the given action
        Since:
        2.1
      • getPreferenceStore

        protected IPreferenceStore getPreferenceStore()
        Convenience method to return the preference store for the Debug UI plug-in.
        Returns:
        the preference store for the Debug UI plug-in
        Since:
        2.1
      • getStructuredViewer

        protected StructuredViewer getStructuredViewer()
        Returns this view's viewer as a structured viewer, or null if none.
        Returns:
        this view's viewer as a structured viewer or null
      • getTextViewer

        protected TextViewer getTextViewer()
        Returns this view's viewer as a text viewer, or null if none.
        Returns:
        this view's viewer as a text viewer or null
      • getPresentation

        public IDebugModelPresentation getPresentation​(String id)
        Description copied from interface: IDebugView
        Returns the debug model presentation for this view specified by the debug model identifier.
        Specified by:
        getPresentation in interface IDebugView
        Parameters:
        id - the debug model identifier that corresponds to the id attribute of a debug model presentation extension
        Returns:
        the debug model presentation, or null if no presentation is registered for the specified id
        See Also:
        IDebugView.getPresentation(String)
      • createContextMenu

        protected void createContextMenu​(Control menuControl)
        Creates a pop-up menu on the given control. The menu is registered with this view's site, such that other plug-ins may contribute to the menu. Subclasses should call this method, specifying the menu control as the control used in their viewer (for example, tree viewer). Subclasses must implement the method #fillContextMenu(IMenuManager) which will be called each time the context menu is realized.
        Parameters:
        menuControl - the control with which the pop-up menu will be associated with.
      • getContextMenuManagers

        public List<IMenuManager> getContextMenuManagers()
        Returns the context menu managers relevant to this view.
        Returns:
        the context menu managers relevant to this view
        Since:
        2.1
      • fillContextMenu

        protected abstract void fillContextMenu​(IMenuManager menu)
        Subclasses must override this method to fill the context menu each time it is realized.
        Parameters:
        menu - the context menu
      • initializeToolBar

        protected void initializeToolBar()
        Configures this view's toolbar. Subclasses implement #configureToolBar(IToolBarManager) to contribute actions to the toolbar.

        To properly initialize toggle actions that are contributed to this view, state is restored for toggle actions that have a persisted state in the Debug UI plugin's preferences. As well, any toggle actions that have an initial state of 'checked' are invoked. The actions' states are restored and the actions are invoked in a runnable, after the view is created.

      • initActionState

        protected void initActionState​(IAction action)
        Restores the persisted checked state of the specified action that was stored in preferences. If the action is disabled, its persisted state is not restored (because a disabled action cannot be run).
        Parameters:
        action - the action whose checked state will be restored
        Since:
        2.1
      • init

        public void init​(IViewSite site,
                         IMemento memento)
                  throws PartInitException
        Description copied from interface: IViewPart
        Initializes this view with the given view site. A memento is passed to the view which contains a snapshot of the views state from a previous session. Where possible, the view should try to recreate that state within the part controls.

        This method is automatically called by the workbench shortly after the part is instantiated. It marks the start of the views's lifecycle. Clients must not call this method.

        Specified by:
        init in interface IViewPart
        Overrides:
        init in class ViewPart
        Parameters:
        site - the view site
        memento - the IViewPart state or null if there is no previous saved state
        Throws:
        PartInitException - if this view was not initialized successfully
        See Also:
        IViewPart.init(IViewSite, IMemento)
      • setViewer

        protected void setViewer​(Viewer viewer)
        Sets the viewer for this view.
        Parameters:
        viewer - viewer
        Since:
        3.1
      • configureToolBar

        protected abstract void configureToolBar​(IToolBarManager tbm)
        Subclasses implement this menu to contribute actions to the toolbar. This method is called after createActions().
        Parameters:
        tbm - the tool bar manager for this view's site
        See Also:
        createViewer(Composite)
      • setAction

        public void setAction​(String actionID,
                              IAction action)
        Description copied from interface: IDebugView
        Installs the given action under the given action id. If the action has an id that maps to one of the global action ids defined by this interface, the action is registered as a global action handler. If the action is an instance of IUpdate it is added/remove from the collection of updateables associated with this view.
        Specified by:
        setAction in interface IDebugView
        Parameters:
        actionID - the action id
        action - the action, or null to clear it
        See Also:
        IDebugView.setAction(String, IAction)
      • updateObjects

        public void updateObjects()
        Updates all the registered updatables.
      • handleKeyPressed

        protected void handleKeyPressed​(KeyEvent event)
        Handles key events in viewer. Invokes
        1. REMOVE_ACTION when the delete key is pressed
        Parameters:
        event - the KeyEvent
      • getControl

        protected Control getControl()
        Returns the control for this view, or null if none.
        Returns:
        the control for this view, or null if none
        Since:
        3.0
      • getMemento

        protected IMemento getMemento()
        Returns the memento that contains the persisted state of the view. May be null.
        Returns:
        the current IMemento
      • setMemento

        protected void setMemento​(IMemento memento)
        Sets the memento that contains the persisted state of the view.
        Parameters:
        memento - the new IMemento
      • findView

        protected IViewPart findView​(String id)
        Returns the specified view in this view's page or null if none.
        Parameters:
        id - view identifier
        Returns:
        view part
      • doCreatePage

        protected PageBookView.PageRec doCreatePage​(IWorkbenchPart part)
        Description copied from class: PageBookView
        Creates a new page in the pagebook for a particular part. This page will be made visible whenever the part is active, and will be destroyed with a call to doDestroyPage.

        Subclasses must implement this method.

        Subclasses must call initPage with the new page (if it is an IPageBookViewPage) before calling createControl on the page.

        Specified by:
        doCreatePage in class PageBookView
        Parameters:
        part - the input part
        Returns:
        the record describing a new page for this view
        See Also:
        PageBookView.doCreatePage(IWorkbenchPart)
      • getBootstrapPart

        protected IWorkbenchPart getBootstrapPart()
        Description copied from class: PageBookView
        Returns the active, important workbench part for this view.

        When the page book view is created it has no idea which part within the workbook should be used to generate the first page. Therefore, it delegates the choice to subclasses of PageBookView.

        Implementors of this method should return an active, important part in the workbench or null if none found.

        Subclasses must implement this method.

        Specified by:
        getBootstrapPart in class PageBookView
        Returns:
        the active important part, or null if none
        See Also:
        PageBookView.getBootstrapPart()
      • getDefaultControl

        protected Control getDefaultControl()
        Returns the default control for this view. By default, this view's viewer's control is returned. Subclasses should override if required - for example, if this view has its viewer nested inside other controls.
        Returns:
        this view's default control.
      • getMessagePage

        protected MessagePage getMessagePage()
        Returns this view's message page
        Returns:
        message page
      • showMessage

        public void showMessage​(String message)
        Shows the given message in this view's message' page. Makes the message page the visible page.
        Parameters:
        message - the message to display
      • showViewer

        public void showViewer()
        Shows this view's viewer page.
      • isAvailable

        public boolean isAvailable()
        Returns whether this view's viewer is currently available.
        Returns:
        whether this view's viewer is currently available
      • add

        public void add​(IUpdate updatable)
        Description copied from interface: IDebugView
        Adds the given IUpdate to this view's collection of updatable objects. Allows the view to periodically update these registered objects. Has no effect if an identical IUpdate is already registered.
        Specified by:
        add in interface IDebugView
        Parameters:
        updatable - The IUpdate instance to be added
        See Also:
        IDebugView.add(IUpdate)
      • remove

        public void remove​(IUpdate updatable)
        Description copied from interface: IDebugView
        Removes the given IUpdate from this view's collection of updatable objects. Has no effect if an identical IUpdate was not already registered.
        Specified by:
        remove in interface IDebugView
        Parameters:
        updatable - The IUpdate instance to be removed
        See Also:
        IDebugView.remove(IUpdate)
      • addContextMenuManager

        public void addContextMenuManager​(IMenuManager contextMenuManager)
        Adds a context menu manager that is relevant to this view.
        Parameters:
        contextMenuManager - The contextMenuManager to add
        Since:
        2.1
      • becomesVisible

        protected void becomesVisible()
        Notification this view is now visible.
        Since:
        2.1
      • becomesHidden

        protected void becomesHidden()
        Notification this view is now hidden.
        Since:
        2.1
      • isVisible

        public boolean isVisible()
        Returns whether this view is currently visible.
        Returns:
        whether this view is currently visible
        Since:
        2.1
      • registerPartListener

        protected void registerPartListener()
        Creates and registers a part listener with this event handler's page, if one does not already exist.
        Since:
        2.1
      • deregisterPartListener

        protected void deregisterPartListener()
        Unregisters and disposes this event handler's part listener.
        Since:
        2.1
      • getPresentationAttributes

        public Map<String,​Object> getPresentationAttributes​(String modelId)
        Returns a map of the current attribute settings in the model presentation in this view associated with the given debug model.
        Parameters:
        modelId - the debug model identifier
        Returns:
        a map of the current attribute settings in the model presentation in this view associated with the given debug model
        Since:
        3.0