blob: 860db70c033af92f378cb585b945ea32c7748592 [file] [log] [blame]
/**
* [2012,2018] - ALL4TEC COPYRIGHT
*
* CONFIDENTIAL, All Rights Reserved
*/
package org.eclipse.opencert.infra.dashboard.helpers;
import java.util.Objects;
import org.apache.commons.lang.ArrayUtils;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.IWorkbenchPartSite;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PlatformUI;
/**
* Utility class used to provide methods to work on the Eclipse workbench easily.
*/
public final class EclipseHelper {
/**
* Default constructor.
*/
private EclipseHelper() {
super();
}
/**
* Return the current active workbench window, or if none is active, the first workbench window known by eclipse.
*
* @return The current workbench window
*/
public static IWorkbenchWindow getWorkbenchWindow() {
IWorkbench vWorkbench = PlatformUI.getWorkbench();
IWorkbenchWindow vCurrentWorkbenchWindow = vWorkbench.getActiveWorkbenchWindow();
// If current workbench window is null, get the first workbench of eclipse to used it
if (Objects.isNull(vCurrentWorkbenchWindow)) {
IWorkbenchWindow[] vWorkbenchWindows = vWorkbench.getWorkbenchWindows();
if (ArrayUtils.isNotEmpty(vWorkbenchWindows)) {
vCurrentWorkbenchWindow = vWorkbenchWindows[0];
}
}
return vCurrentWorkbenchWindow;
}
/**
* Get the active workbench page.
*
* @return The current active page, or <code>null</code>
*/
public static IWorkbenchPage getActiveWorkbenchPage() {
IWorkbenchPage vWorkbenchPage = null;
IWorkbenchWindow vCurrentWorkbenchWindow = getWorkbenchWindow();
if (Objects.nonNull(vCurrentWorkbenchWindow)) {
vWorkbenchPage = vCurrentWorkbenchWindow.getActivePage();
}
return vWorkbenchPage;
}
/**
* Get the current active editor.
*
* @return The current editor, or <code>null</code> if none is open
*/
public static IEditorPart getActiveEditor() {
IEditorPart vActiveEditorPart = null;
IWorkbenchPage vWorkbenchPage = getActiveWorkbenchPage();
if (Objects.nonNull(vWorkbenchPage)) {
vActiveEditorPart = vWorkbenchPage.getActiveEditor();
}
return vActiveEditorPart;
}
/**
* Get the current active part.
*
* @return The current part, or <code>null</code> if none is open
*/
public static IWorkbenchPart getActivePart() {
IWorkbenchPart vActivePart = null;
IWorkbenchPage vWorkbenchPage = getActiveWorkbenchPage();
if (Objects.nonNull(vWorkbenchPage)) {
vActivePart = vWorkbenchPage.getActivePart();
}
return vActivePart;
}
/**
* Get the current active part site.
*
* @return The current part site, or <code>null</code> if none is open
*/
public static IWorkbenchPartSite getActivePartSite() {
IWorkbenchPartSite vActivePart = null;
IWorkbenchPart vWorkbenchPart = getActivePart();
if (Objects.nonNull(vWorkbenchPart)) {
vActivePart = vWorkbenchPart.getSite();
}
return vActivePart;
}
/**
* Get {@link Shell} from active workbench or create a new.
*
* @return {@link Shell} of active workbench if it is possible, otherwise a new one
*/
public static Shell getActiveShell() {
Shell vActiveShell = new Shell();
// Check if workbench is running
if (PlatformUI.isWorkbenchRunning()) {
IWorkbenchWindow vWorkbenchWindow = getWorkbenchWindow();
// Verify if there is an active window to get its own shell
if (Objects.nonNull(vWorkbenchWindow)) {
vActiveShell = vWorkbenchWindow.getShell();
}
}
return vActiveShell;
}
}