blob: d93f3a19418cb98c8a0be9559fc7c4fe797ac6cf [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004, 2016 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.intro.impl.util;
import java.net.MalformedURLException;
import java.net.URL;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.browser.IWorkbenchBrowserSupport;
public class Util {
/**
* Handle the exception by logging to the Log. <br>
* Variables are subsituted in the message.
*/
public static void handleException(String msg, Exception e,
Object[] variables) {
if (msg == null)
return;
if (variables != null) {
// if variables is not null, errorId will never be null.
msg = NLS.bind(msg, variables);
}
Log.error(msg, e);
}
/**
* Handle the exception by displaying an Error Dialog. <br>
* Also, the error is logged by the Log.
*/
public static void handleExceptionWithPopUp(Shell parent, String msg,
Exception e) {
// if it is a core exception, use ErrorDialog. If the error id is null
// this translates to giving null to this dialog which is handled by
// Eclipse by displaying the detyailed message directly.
if (e instanceof CoreException) {
if (parent == null)
parent = DialogUtil.getActiveShell();
DialogUtil.displayCoreErrorDialog(parent, msg, (CoreException) e);
return;
}
// any other exception, use MessageDialog.
// if errorID is null, use error message.
if (msg == null)
msg = e.getMessage();
if (parent == null)
parent = DialogUtil.getActiveShell();
DialogUtil.displayErrorMessage(parent, msg, e);
}
/**
* Utility method that will add a debug listener to the given control. All
* common events are added.
*
* @param control
* @return
*/
public static Listener addDebugListener(Control control) {
Listener listener = e -> {
switch (e.type) {
case SWT.Selection:
System.out.println("Selection EVENT: " + e.toString()); //$NON-NLS-1$
break;
case SWT.Dispose:
System.out.println("Dispose EVENT: " + e.toString()); //$NON-NLS-1$
break;
case SWT.Paint:
System.out.println("Paint EVENT: " + e.toString()); //$NON-NLS-1$
break;
case SWT.Resize:
System.out.println("Resize EVENT: " + e.toString()); //$NON-NLS-1$
break;
case SWT.MouseDoubleClick:
System.out.println("MouseDoubleClick EVENT: " //$NON-NLS-1$
+ e.toString());
break;
case SWT.MouseDown:
System.out.println("MouseDown EVENT: " + e.toString()); //$NON-NLS-1$
break;
case SWT.MouseUp:
System.out.println("MouseUp EVENT: " + e.toString()); //$NON-NLS-1$
break;
case SWT.MouseMove:
System.out.println("MouseMove EVENT: " + e.toString()); //$NON-NLS-1$
break;
case SWT.MouseEnter:
System.out.println("MouseEnter EVENT: " + e.toString()); //$NON-NLS-1$
break;
case SWT.MouseExit:
System.out.println("MouseExit EVENT: " + e.toString()); //$NON-NLS-1$
break;
case SWT.MouseHover:
System.out.println("MouseHover EVENT: " + e.toString()); //$NON-NLS-1$
break;
case SWT.FocusIn:
System.out.println("FocusIn EVENT: " + e.toString()); //$NON-NLS-1$
break;
case SWT.FocusOut:
System.out.println("FocusOut EVENT: " + e.toString()); //$NON-NLS-1$
break;
case SWT.KeyDown:
System.out.println("KeyDown EVENT: " + e.toString()); //$NON-NLS-1$
break;
case SWT.KeyUp:
System.out.println("KeyUp EVENT: " + e.toString()); //$NON-NLS-1$
break;
case SWT.Traverse:
System.out.println("Traverse EVENT: " + e.toString()); //$NON-NLS-1$
break;
case SWT.Show:
System.out.println("Show EVENT: " + e.toString()); //$NON-NLS-1$
break;
case SWT.Hide:
System.out.println("Hide EVENT: " + e.toString()); //$NON-NLS-1$
break;
default:
System.out.println(e.toString());
}
};
int[] allEvents = new int[] { SWT.Selection, SWT.Dispose, SWT.Paint,
SWT.Resize, SWT.MouseDoubleClick, SWT.MouseDown, SWT.MouseUp,
// SWT.MouseMove,
SWT.MouseEnter, SWT.MouseExit, SWT.MouseHover, SWT.FocusIn,
SWT.FocusOut, SWT.KeyDown, SWT.KeyUp, SWT.Traverse, SWT.Show,
SWT.Hide };
for (int i = 0; i < allEvents.length; i++) {
control.addListener(allEvents[i], listener);
}
return listener;
}
public static void sleep(int delay) {
try {
Thread.sleep(delay);
} catch (InterruptedException e) {
// no-op
}
}
public static void highlight(Control control, int color) {
control.setBackground(control.getDisplay().getSystemColor(color));
}
public static void highlightFocusControl() {
Control control = Display.getCurrent().getFocusControl();
if (control != null)
control.setBackground(Display.getCurrent().getSystemColor(
SWT.COLOR_DARK_RED));
}
/**
* Launch an external brwoser on the given url.
*/
public static boolean openBrowser(String href) {
try {
URL url = new URL(href);
IWorkbenchBrowserSupport support = PlatformUI.getWorkbench()
.getBrowserSupport();
support.getExternalBrowser().openURL(url);
return true;
} catch (PartInitException e) {
Log.error("Intro failed to get Browser support.", e); //$NON-NLS-1$
return false;
} catch (MalformedURLException e) {
Log.error("Intro failed to display: " + href, e); //$NON-NLS-1$
return false;
}
}
public static void logPerformanceTime(String message, long startTime) {
long endTime = System.currentTimeMillis();
Log.forcedInfo("Intro Performance - " + message + (endTime - startTime) //$NON-NLS-1$
+ "ms"); //$NON-NLS-1$
}
public static void logPerformanceMessage(String message, long time) {
Log.forcedInfo("Intro Performance - " + message + " " + time + "ms"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
}
}