blob: 96fbc555a9dcab6ebe4946a3267c2af6b4b444d2 [file] [log] [blame]
// Copyright (c) 2009 The Chromium Authors. 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 org.eclipse.wst.jsdt.chromium.debug.ui;
import org.eclipse.wst.jsdt.chromium.debug.core.ChromiumDebugPlugin;
import org.eclipse.wst.jsdt.chromium.debug.core.util.ChromiumDebugPluginUtil;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.swt.graphics.Drawable;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.FontMetrics;
import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
/**
* This class provides generic plugin-wide services.
*/
public class PluginUtil {
private static final String PROJECT_EXPLORER_ID = "org.eclipse.ui.navigator.ProjectExplorer"; //$NON-NLS-1$
/**
* Brings up the "Project Explorer" view in the active workbench window.
*/
public static void openProjectExplorerView() {
Display.getDefault().asyncExec(new Runnable() {
public void run() {
IWorkbench workbench = PlatformUI.getWorkbench();
IWorkbenchWindow window = workbench.getActiveWorkbenchWindow();
if (window == null) {
if (workbench.getWorkbenchWindowCount() == 1) {
window = workbench.getWorkbenchWindows()[0];
}
}
if (window != null) {
try {
window.getActivePage().showView(PROJECT_EXPLORER_ID);
} catch (PartInitException e) {
// ignore
}
}
}
});
}
/**
* Determines whether {@code file} is a .chromium file in a
* JavaScript debug project.
*
* @param file to test
* @return whether the file extension is ".chromium" and its project has the
* ChromiumDebugPluginUtil#JS_DEBUG_PROJECT_NATURE nature
*/
public static boolean isChromiumDebugFile(IFile file) {
IProject project = file.getProject();
try {
return (project.hasNature(ChromiumDebugPluginUtil.JS_DEBUG_PROJECT_NATURE) &&
file.getName().endsWith(ChromiumDebugPluginUtil.CHROMIUM_EXTENSION_SUFFIX));
} catch (CoreException e) {
ChromiumDebugPlugin.log(e);
return false;
}
}
/**
* Removes the ".chromium" extension from the fileName.
*
* @param fileName to remove the extension from
* @param check if true additionally check that fileName actually has ".chromium" extension
* @return a file name without the ".chromium" extension
*/
public static String stripChromiumExtension(String fileName, boolean check) {
if (check && !fileName.endsWith(ChromiumDebugPluginUtil.CHROMIUM_EXTENSION_SUFFIX)) {
return fileName;
}
return fileName.substring(
0, fileName.length() - ChromiumDebugPluginUtil.CHROMIUM_EXTENSION_SUFFIX.length());
}
/**
* @param font or null to use default font
*/
public static FontMetrics getFontMetrics(Drawable drawable, Font font) {
GC gc = new GC(drawable);
try {
if (font != null) {
gc.setFont(font);
}
return gc.getFontMetrics();
} finally {
gc.dispose();
}
}
private PluginUtil() {
// not instantiable
}
}