| /******************************************************************************* |
| * Copyright (c) 2000, 2006 IBM Corporation and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * IBM Corporation - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.ui.part; |
| |
| 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; |
| |
| /** |
| * 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> |
| * To use the DrillDownComposite.. |
| * </p> |
| * <ul> |
| * <li>Create an instance of <code>DrillDownComposite</code>.</li> |
| * <li>Create a tree viewer. </li> |
| * <li>Pass the second tree viewer into the composite by |
| * calling <code>setChildTree</code>.</li> |
| * </ol> |
| */ |
| public class DrillDownComposite extends Composite { |
| private ToolBarManager toolBarMgr; |
| |
| private TreeViewer fChildTree; |
| |
| 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(Composite parent, int style) { |
| super(parent, style); |
| createNavigationButtons(); |
| } |
| |
| /** |
| * Creates the navigation buttons for this viewer. |
| */ |
| protected void createNavigationButtons() { |
| GridData gid; |
| GridLayout layout; |
| |
| // Define layout. |
| layout = new GridLayout(); |
| layout.marginHeight = layout.marginWidth = layout.horizontalSpacing = 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 void setChildTree(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(); |
| } |
| } |