blob: c81736faf1c5b4e48762529e2f6e568834d13710 [file] [log] [blame]
//------------------------------------------------------------------------------
// Copyright (c) 2005, 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 implementation
//------------------------------------------------------------------------------
package org.eclipse.epf.common.ui.util;
import org.eclipse.ui.IPerspectiveDescriptor;
import org.eclipse.ui.IPerspectiveRegistry;
import org.eclipse.ui.IViewPart;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.WorkbenchException;
/**
* Utility class for accessing perspectives.
*
* @author Kelvin Low
* @since 1.0
*/
public class PerspectiveUtil {
/**
* Private constructor to prevent this class from being instantiated. All
* methods in this class should be static.
*/
private PerspectiveUtil() {
}
/**
* Returns the ID of the active perspective.
*
* @return The active perspective ID.
*/
public static String getActivePerspectiveId() {
IWorkbenchPage activePage = PlatformUI.getWorkbench()
.getActiveWorkbenchWindow().getActivePage();
if (activePage != null) {
IPerspectiveDescriptor activePerspective = activePage
.getPerspective();
return activePerspective.getId();
}
return null;
}
/**
* Opens a perspective.
*
* @param perspectiveId
* The perspective ID.
* @return The previously active perspective.
*/
public static IPerspectiveDescriptor openPerspective(String perspectiveId) {
IWorkbenchPage activePage = PlatformUI.getWorkbench()
.getActiveWorkbenchWindow().getActivePage();
if (activePage != null) {
IPerspectiveRegistry registry = PlatformUI.getWorkbench()
.getPerspectiveRegistry();
IPerspectiveDescriptor oldPerspective = activePage.getPerspective();
if (!oldPerspective.getId().equals(perspectiveId)) {
IPerspectiveDescriptor perspective = registry
.findPerspectiveWithId(perspectiveId);
activePage.setPerspective(perspective);
}
return oldPerspective;
} else {
IWorkbenchWindow activeWindow = PlatformUI.getWorkbench()
.getActiveWorkbenchWindow();
try {
PlatformUI.getWorkbench().showPerspective(
perspectiveId, activeWindow);
} catch (WorkbenchException e) {
}
}
return null;
}
/**
* Returns true if the given perspective is already active.
*
* @param perspectiveId
* The perspective ID.
* @return
*/
public static boolean isActivePerspective(String perspectiveId) {
String activePerspectiveId = PerspectiveUtil.getActivePerspectiveId();
if (perspectiveId == null || activePerspectiveId == null) {
return false;
}
return activePerspectiveId.equalsIgnoreCase(perspectiveId);
}
/**
* Returns the view part with the given view ID.
*
* @param viewId
* The view ID.
* @return The view part.
*/
public static IViewPart getView(String viewId) {
try {
IWorkbenchPage activePage = PlatformUI.getWorkbench()
.getActiveWorkbenchWindow().getActivePage();
if (activePage != null) {
IViewPart view = activePage.findView(viewId);
if (view == null) {
view = activePage.showView(viewId);
}
return view;
}
} catch (Exception e) {
}
return null;
}
}