/* * Copyright (c) 2006 Stiftung Deutsches Elektronen-Synchroton, * Member of the Helmholtz Association, (DESY), HAMBURG, GERMANY. * * THIS SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN "../AS IS" BASIS. * WITHOUT WARRANTY OF ANY KIND, EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED * TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR PARTICULAR PURPOSE AND * NON-INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * THE USE OR OTHER DEALINGS IN THE SOFTWARE. SHOULD THE SOFTWARE PROVE DEFECTIVE * IN ANY RESPECT, THE USER ASSUMES THE COST OF ANY NECESSARY SERVICING, REPAIR OR * CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. * NO USE OF ANY SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. * DESY HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, * OR MODIFICATIONS. * THE FULL LICENSE SPECIFYING FOR THE SOFTWARE THE REDISTRIBUTION, MODIFICATION, * USAGE AND OTHER RIGHTS AND OBLIGATIONS IS INCLUDED WITH THE DISTRIBUTION OF THIS * PROJECT IN THE FILE LICENSE.HTML. IF THE LICENSE IS NOT INCLUDED YOU MAY FIND A COPY * AT HTTP://WWW.DESY.DE/LEGAL/LICENSE.HTM */ package org.csstudio.ui.util.composites; import org.eclipse.jface.action.ToolBarManager; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.ToolBar; import org.eclipse.ui.part.DrillDownAdapter; /** * Class <code>DrillDownComposite</code> implements a simple web * style navigation metaphor. Home, back, and "drill into" buttons are * added to a tree viewer for easier navigation. * * <p> * <b>Code is based upon * <code>org.eclipse.ui.part.DrillDownComposite</code> in * plugin <code>org.eclipse.ui.workbench</code>.</b> * </p> * * @author Kai Meyer * */ //TODO: Copied from org.csstudio.platform.ui. Review is needed. class DrillDownComposite extends Composite { /** * The ToolBarManager of this DrillDownComposite. */ private ToolBarManager _toolBarMgr; /** * The Treeviewer of this DrillDownComposite. */ private TreeViewer _fChildTree; /** * The DrillDownAdapter for the Tree. */ private DrillDownAdapter _adapter; /** * Constructs a new DrillDownTreeViewer. * * @param parent the parent composite for this control * @param style the SWT style for this control */ public DrillDownComposite(final Composite parent, final int style) { super(parent, style); createNavigationButtons(); } /** * Creates the navigation buttons for this viewer. */ private void createNavigationButtons() { GridData gid; GridLayout layout; // Define layout. layout = new GridLayout(); layout.marginHeight = 0; layout.marginWidth = 0; layout.horizontalSpacing = 0; layout.verticalSpacing = 0; setLayout(layout); // Create a toolbar. _toolBarMgr = new ToolBarManager(SWT.FLAT); ToolBar toolBar = _toolBarMgr.createControl(this); gid = new GridData(); gid.horizontalAlignment = GridData.FILL; gid.verticalAlignment = GridData.BEGINNING; toolBar.setLayoutData(gid); } /** * Sets the child viewer. This method should only be called once, after the * viewer has been created. * * @param aViewer the new child viewer */ public final void setChildTree(final TreeViewer aViewer) { // Save viewer. _fChildTree = aViewer; // Create adapter. _adapter = new DrillDownAdapter(_fChildTree); _adapter.addNavigationActions(_toolBarMgr); _toolBarMgr.update(true); // Set tree layout. _fChildTree.getTree().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); layout(); } /** * Delivers the ToolBarManager of this DrillDownComposite. * @return ToolBarManager * The ToolbarManager of this DrillDownComposite */ public final ToolBarManager getToolBarManager() { return _toolBarMgr; } }