| /******************************************************************************* |
| * Copyright (c) 2004, 2016 IBM Corporation and others. |
| * |
| * This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License 2.0 |
| * which accompanies this distribution, and is available at |
| * https://www.eclipse.org/legal/epl-2.0/ |
| * |
| * SPDX-License-Identifier: EPL-2.0 |
| * |
| * 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$ |
| } |
| |
| } |