/******************************************************************************* * Copyright (c) 2009 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 * Zend Technologies *******************************************************************************/ package org.eclipse.php.internal.ui.util; import java.util.Timer; import java.util.TimerTask; import org.eclipse.jface.action.IStatusLineManager; import org.eclipse.php.internal.ui.PHPUiPlugin; import org.eclipse.swt.widgets.Display; import org.eclipse.ui.PlatformUI; /** * @author seva * */ public class StatusLineMessageTimerManager { static String message; static boolean isError; static IStatusLineManager statusLineManager = null; static IStatusLineManager getStatusLineManager() { return PHPUiPlugin.getActivePage().getActiveEditor().getEditorSite().getActionBars().getStatusLineManager(); } static void setMessage(String newMessage, boolean newIsError) { message = newMessage; isError = newIsError; if (isError) { statusLineManager.setErrorMessage(message); Display.getCurrent().beep(); } else { statusLineManager.setMessage(message); } } public static void setErrorMessage(String message, long timeout, boolean isError) { statusLineManager = getStatusLineManager(); setMessage(message, isError); TimerTask task = new MessageTimerTask(statusLineManager, message, isError); (new Timer()).schedule(task, timeout); } static class MessageTimerTask extends TimerTask { String message; boolean isError; IStatusLineManager statusLineManager; public MessageTimerTask(IStatusLineManager statusLineManager, String message, boolean isError) { this.message = message; this.isError = isError; this.statusLineManager = statusLineManager; } @Override public void run() { Display display = PlatformUI.getWorkbench().getDisplay(); display.asyncExec(new Runnable() { @Override public void run() { if (StatusLineMessageTimerManager.statusLineManager == statusLineManager && message == StatusLineMessageTimerManager.message) { if (isError) { StatusLineMessageTimerManager.statusLineManager.setErrorMessage(""); //$NON-NLS-1$ } else { StatusLineMessageTimerManager.statusLineManager.setMessage(""); //$NON-NLS-1$ } } } }); } } }