blob: 62ed3310a48f2b760d3bfdd68ab6d99f0e6a8c47 [file] [log] [blame]
/*******************************************************************************
* 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;
}
}