/******************************************************************************* * Copyright (c) 2004, 2007 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.internal.presentations; import org.eclipse.jface.action.ContributionItem; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Menu; import org.eclipse.swt.widgets.MenuItem; import org.eclipse.ui.IViewReference; import org.eclipse.ui.IWorkbenchPartReference; import org.eclipse.ui.internal.FastViewBar; import org.eclipse.ui.internal.IChangeListener; import org.eclipse.ui.internal.IntModel; import org.eclipse.ui.internal.PartPane; import org.eclipse.ui.internal.RadioMenu; import org.eclipse.ui.internal.ViewStackTrimToolBar; import org.eclipse.ui.internal.WorkbenchMessages; import org.eclipse.ui.internal.WorkbenchWindow; /** * @since 3.0 */ public class SystemMenuFastViewOrientation extends ContributionItem { private PartPane viewPane; private IntModel currentOrientation = new IntModel(SWT.VERTICAL); private ViewStackTrimToolBar minimizedStack = null; public SystemMenuFastViewOrientation(PartPane newViewPane) { this(newViewPane, null); } /** * @param pane * @param vstt */ public SystemMenuFastViewOrientation(PartPane newViewPane, final ViewStackTrimToolBar vstt) { this.viewPane = newViewPane; this.minimizedStack = vstt; currentOrientation.addChangeListener(new IChangeListener() { public void update(boolean changed) { if (changed) { WorkbenchWindow workbenchWindow = (WorkbenchWindow) viewPane .getPage().getWorkbenchWindow(); if (vstt == null) { FastViewBar bar = workbenchWindow.getFastViewBar(); if (bar != null && viewPane != null) { IWorkbenchPartReference ref = viewPane.getPartReference(); if (ref instanceof IViewReference) { bar.setOrientation((IViewReference)ref, currentOrientation.get()); } } } else { vstt.setOrientation(currentOrientation.get(), workbenchWindow); } } } }); } public void dispose() { viewPane = null; } public void fill(Menu menu, int index) { WorkbenchWindow workbenchWindow = (WorkbenchWindow) viewPane.getPage() .getWorkbenchWindow(); IWorkbenchPartReference ref = viewPane.getPartReference(); if (!(ref instanceof IViewReference)) return; if (minimizedStack == null) { FastViewBar bar = workbenchWindow.getFastViewBar(); if (bar != null && viewPane != null) { currentOrientation.set(bar.getOrientation((IViewReference)ref)); } } else { currentOrientation.set(minimizedStack.getPaneOrientation()); } MenuItem orientationItem = new MenuItem(menu, SWT.CASCADE, index); { orientationItem.setText(WorkbenchMessages.FastViewBar_view_orientation); Menu orientationSwtMenu = new Menu(orientationItem); RadioMenu orientationMenu = new RadioMenu(orientationSwtMenu, currentOrientation); orientationMenu .addMenuItem( WorkbenchMessages.FastViewBar_horizontal, new Integer(SWT.HORIZONTAL)); orientationMenu .addMenuItem( WorkbenchMessages.FastViewBar_vertical, new Integer(SWT.VERTICAL)); orientationItem.setMenu(orientationSwtMenu); } } public boolean isDynamic() { return true; } }