blob: 31455436e544f3b56563056060bdac1811bd6195 [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.Action;
import org.eclipse.ui.IViewReference;
import org.eclipse.ui.IWorkbenchPartReference;
import org.eclipse.ui.internal.FastViewBar;
import org.eclipse.ui.internal.FastViewManager;
import org.eclipse.ui.internal.Perspective;
import org.eclipse.ui.internal.ViewPane;
import org.eclipse.ui.internal.WorkbenchMessages;
import org.eclipse.ui.internal.WorkbenchWindow;
import org.eclipse.ui.presentations.IStackPresentationSite;
public class SystemMenuFastView extends Action implements ISelfUpdatingAction {
private PresentablePart viewPane;
private IStackPresentationSite site;
private boolean realFV = true;
public SystemMenuFastView(IStackPresentationSite site) {
this.site = site;
setText(WorkbenchMessages.ViewPane_fastView);
update();
}
public void setPane(PresentablePart newPane) {
viewPane = newPane;
update();
}
public void update() {
IViewReference viewRef = getReference();
if (viewRef == null) {
setEnabled(false);
return;
}
// Are we showing a 'real' fast view or a minimized view ?
Perspective persp = viewPane.getPane().getPage().getActivePerspective();
FastViewManager fvm = persp.getFastViewManager();
String trimId = null;
if (fvm != null)
trimId = fvm.getIdForRef(viewRef);
realFV = trimId == null || FastViewBar.FASTVIEWBAR_ID.equals(trimId);
// it's 'restore' if we're not using a real fast view
if (realFV) {
setText(WorkbenchMessages.ViewPane_fastView);
}
else {
setText(WorkbenchMessages.StandardSystemToolbar_Restore);
setChecked(false);
}
if (!site.isPartMoveable(viewPane)) {
setEnabled(false);
} else {
setEnabled(true);
if (realFV)
setChecked(persp.isFastView(viewRef));
}
}
private IViewReference getReference() {
IViewReference viewRef = null;
if (viewPane != null) {
IWorkbenchPartReference ref = viewPane.getPane().getPartReference();
if (ref instanceof IViewReference) {
viewRef = (IViewReference) ref;
}
}
return viewRef;
}
public boolean shouldBeVisible() {
if (viewPane == null || viewPane.getPane().getPage() == null) {
return false;
}
WorkbenchWindow workbenchWindow = (WorkbenchWindow) viewPane.getPane().getPage()
.getWorkbenchWindow();
return workbenchWindow.getShowFastViewBars() && viewPane != null
&& site.isPartMoveable(viewPane);
}
public void dispose() {
viewPane = null;
}
public void run() {
if (realFV) {
if (viewPane.getPane() instanceof ViewPane) {
ViewPane pane = (ViewPane) viewPane.getPane();
if (!isChecked()) {
pane.doMakeFast();
} else {
pane.doRemoveFast();
}
}
}
else {
// We're a minimized stack...restore it
IViewReference viewRef = getReference();
Perspective persp = viewPane.getPane().getPage().getActivePerspective();
FastViewManager fvm = persp.getFastViewManager();
String trimId = fvm.getIdForRef(viewRef);
fvm.restoreToPresentation(trimId);
}
}
}