| /******************************************************************************* |
| * Copyright (c) 2012 Tilera Corporation and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * William R. Swanson (Tilera Corporation) |
| *******************************************************************************/ |
| |
| package org.eclipse.cdt.visualizer.ui; |
| |
| import org.eclipse.jface.action.IMenuManager; |
| import org.eclipse.jface.action.IToolBarManager; |
| import org.eclipse.jface.viewers.ISelection; |
| import org.eclipse.jface.viewers.ISelectionChangedListener; |
| import org.eclipse.jface.viewers.ISelectionProvider; |
| import org.eclipse.swt.widgets.Composite; |
| import org.eclipse.swt.widgets.Control; |
| |
| |
| // ---------------------------------------------------------------------------- |
| // IVisualizer |
| // ---------------------------------------------------------------------------- |
| |
| /** |
| * CDT Visualizer interface. |
| * |
| * An IVisualizer encapsulates a specific graphic presentation of the |
| * currently selected object (launch, target, etc.). |
| * |
| * It knows how to create a Control to draw on, which is displayed by |
| * the Visualizer Viewer, and also knows how to draw its presentation on |
| * that control. |
| * |
| * A visualizer can be generic (e.g. knows how to draw any kind of |
| * launch) or specific (e.g. specialized for a particular type of |
| * launch or execution target). The viewer automatically chooses |
| * the most specific IVisualizer that reports it is able to render |
| * the current selection. |
| */ |
| public interface IVisualizer |
| extends ISelectionProvider |
| { |
| // --- init methods --- |
| |
| /** Invoked when visualizer is created, to permit any initialization. */ |
| public void initializeVisualizer(); |
| |
| /** Invoked when visualizer is disposed, to permit any cleanup. */ |
| public void disposeVisualizer(); |
| |
| |
| // --- accessors --- |
| |
| /** Sets non-localized name. */ |
| public void setName(String name); |
| /** Gets non-localized name. */ |
| |
| public String getName(); |
| |
| /** Sets localized display name. */ |
| public void setDisplayName(String displayName); |
| |
| /** Gets localized display name. */ |
| public String getDisplayName(); |
| |
| /** Sets localized description string. */ |
| public void setDescription(String description); |
| |
| /** Gets localized description string. */ |
| public String getDescription(); |
| |
| |
| // --- viewer management --- |
| |
| /** Called by viewer when visualizer is added to it. */ |
| public void setViewer(IVisualizerViewer viewer); |
| |
| /** Returns viewer control for this visualizer. */ |
| public IVisualizerViewer getViewer(); |
| |
| |
| // --- visualizer selection management --- |
| |
| /** Invoked when visualizer has been selected. */ |
| public void visualizerSelected(); |
| |
| /** Invoked when another visualizer has been selected, hiding this one. */ |
| public void visualizerDeselected(); |
| |
| |
| // --- control management --- |
| |
| /** Creates and returns visualizer's UI control on specified parent control. */ |
| public Control createControl(Composite parent); |
| |
| /** Gets visualizer control. |
| * Returns null if createControl() has not yet been called. |
| */ |
| public Control getControl(); |
| |
| |
| // --- menu/toolbar management --- |
| |
| /** |
| * Invoked when visualizer is selected, to populate the toolbar. |
| * The toolbar starts in a completely cleared state. |
| * The Visualizer can add/edit actions as desired. |
| * There is no need to invoke update on the toolbar, the viewer handles that. |
| */ |
| public void populateToolBar(IToolBarManager toolBarManager); |
| |
| /** |
| * Invoked when visualizer is selected, to populate the toolbar's menu. |
| * The toolbar starts in a completely cleared state. |
| * The Visualizer can add/edit actions as desired. |
| * There is no need to invoke update on the toolbar, the viewer handles that. |
| */ |
| public void populateMenu(IMenuManager menuManager); |
| |
| /** |
| * Invoked when visualizer view's context menu is invoked, to populate it. |
| * The toolbar starts in a completely cleared state. |
| * The Visualizer can add/edit actions as desired. |
| * There is no need to invoke update on the toolbar, the viewer handles that. |
| */ |
| public void populateContextMenu(IMenuManager menuManager); |
| |
| |
| // --- workbench selection management --- |
| |
| /** |
| * Tests whether if the IVisualizer can display the selection |
| * (or something reachable from it). |
| * |
| * Returns a positive "weight" if true, and zero otherwise. |
| * If multiple visualizers can handle a given selection, |
| * the one reporting the highest weight value "wins". |
| * In case of ties, an arbitrary visualizer is selected. |
| * |
| * The weight should reflect the specificity of the visualizer; |
| * in other words, a "default" visualization for a given selection |
| * should have a low weight, and a special case should have |
| * a higher weight; this allows the visualizer view to "fall back" |
| * to the default visualization in the general case. |
| */ |
| public int handlesSelection(ISelection selection); |
| |
| /** |
| * Invoked by VisualizerViewer when workbench selection changes. |
| */ |
| public void workbenchSelectionChanged(ISelection selection); |
| |
| |
| // --- selection changed event handling --- |
| |
| /** Adds external listener for selection change events. */ |
| public void addSelectionChangedListener(ISelectionChangedListener listener); |
| |
| /** Removes external listener for selection change events. */ |
| public void removeSelectionChangedListener(ISelectionChangedListener listener); |
| |
| /** Gets current externally-visible selection. */ |
| public ISelection getSelection(); |
| |
| /** Sets current externally-visible selection. */ |
| public void setSelection(ISelection selection); |
| |
| } |