/*******************************************************************************
* Copyright (c) 2011 - 2012 Siamak Haschemi & Benjamin Haupt
* 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
*******************************************************************************/
package de.bht.fpa.mail.s000000.common.rcp.statusbar;
import org.eclipse.jface.action.IStatusLineManager;
import org.eclipse.jface.action.StatusLineManager;
import org.eclipse.ui.IActionBars;
import org.eclipse.ui.IViewSite;
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;
/**
* This class helps with getting an {@link IStatusLineManager} instance.
*
* @author Siamak Haschemi
*
*/
public final class StatusBarHelper {
private static class NullStatusLineManager extends StatusLineManager {
@Override
public void setMessage(String message) {
System.out.println("StatusLine found. Message was: " + message);
};
@Override
public void setMessage(org.eclipse.swt.graphics.Image image, String message) {
System.out.println("StatusLine found. Message was: " + message);
};
@Override
public void setErrorMessage(String message) {
System.err.println("StatusLine found. Message was: " + message);
};
@Override
public void setErrorMessage(org.eclipse.swt.graphics.Image image, String message) {
System.err.println("StatusLine found. Message was: " + message);
};
}
private static IStatusLineManager manager = null;
/**
* Utility classes do not need to be instantiated.
*/
private StatusBarHelper() {
}
/**
* This method returns the {@link IStatusLineManager}. It may return
* <code>null</code>.
*
* @return {@link IStatusLineManager} or <code>null</code>
*/
public static synchronized IStatusLineManager getStatusLineManager() {
if (manager != null) {
return manager;
}
manager = new NullStatusLineManager();
IWorkbench wb = PlatformUI.getWorkbench();
if (wb == null) {
return manager;
}
IWorkbenchWindow win = wb.getActiveWorkbenchWindow();
if (win == null) {
return manager;
}
IWorkbenchPage page = win.getActivePage();
if (page == null) {
return manager;
}
IWorkbenchPart part = page.getActivePart();
if (part == null) {
return manager;
}
IWorkbenchPartSite site = part.getSite();
if (site == null || !(site instanceof IViewSite)) {
return manager;
}
IViewSite vSite = (IViewSite) site;
IActionBars actionBars = vSite.getActionBars();
if (actionBars == null) {
return manager;
}
manager = actionBars.getStatusLineManager();
return manager;
}
public static void setMessage(String message) {
getStatusLineManager().setMessage(message);
}
}