/** * Copyright (c) 2005-2006 Aptana, Inc. * * 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. If redistributing this code, * this entire header must remain intact. */ package org.eclipse.eclipsemonkey.utils; import java.io.File; import java.util.ArrayList; import org.eclipse.core.filesystem.EFS; import org.eclipse.core.filesystem.IFileStore; import org.eclipse.core.filesystem.IFileSystem; import org.eclipse.swt.widgets.Display; import org.eclipse.ui.IEditorInput; import org.eclipse.ui.IViewReference; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.ide.FileStoreEditorInput; /** * @author Paul Colton */ public class UIUtils { /* * Are we in Eclipse 3.2 or higher? */ static boolean inEclipse32orHigher = false; static { String version = System.getProperty("osgi.framework.version"); //$NON-NLS-1$ if (version != null && version.startsWith("3.")) //$NON-NLS-1$ { String[] parts = version.split("\\."); //$NON-NLS-1$ if (parts.length > 1) { try { if (Integer.parseInt(parts[1]) > 1) inEclipse32orHigher = true; } catch (Exception e) { } } } } /** * getViewInternal * * @param id * @param secondaryId * @return IWorkbenchPart */ public static IWorkbenchPart getViewInternal(final String id, final String secondaryId) { /** * Internal class for getting a view. * * @author Ingo Muschenetz */ IWorkbenchPart[] parts = getViewsInternal(id, secondaryId); if (parts.length == 0) { return null; } else { return parts[0]; } } /** * Gets all views with the primary part id, and any secondary part id * * @param id * @return IWorkbenchPart */ public static IWorkbenchPart[] getViewsInternal(final String id) { return getViewsInternal(id, null); } /** * getViewInternal * * @param id * @param secondaryId * @return IWorkbenchPart */ public static IWorkbenchPart[] getViewsInternal(final String id, final String secondaryId) { /** * Internal class for getting a view. * * @author Ingo Muschenetz */ class ViewGetterThread implements Runnable { /* * Fields */ public ArrayList targetView = new ArrayList(); /** * run */ public void run() { IViewReference[] views = null; try { IWorkbench w = PlatformUI.getWorkbench(); IWorkbenchWindow ww = w.getActiveWorkbenchWindow(); if (ww != null) { IWorkbenchPage wp = ww.getActivePage(); if (wp != null) { views = wp.getViewReferences(); for (int i = 0; i < views.length; i++) { if (id.equals(views[i].getId())) { if (secondaryId != null) { if (secondaryId.equals(views[i].getSecondaryId())) { targetView.add(views[i].getPart(false)); } } else { targetView.add(views[i].getPart(false)); } } } } } } catch (Exception e) { System.err.println(e.toString()); return; } } } ViewGetterThread getter = new ViewGetterThread(); Display display = Display.getDefault(); display.syncExec(getter); IWorkbenchPart[] parts = (IWorkbenchPart[]) getter.targetView.toArray(new IWorkbenchPart[0]); return parts; } /** * Creates a new JavaFileEditorInput * * @param file * @return IEditorInput */ public static IEditorInput createJavaFileEditorInput(File file) { IEditorInput input = null; try { IFileSystem fs = EFS.getLocalFileSystem(); IFileStore localFile = fs.fromLocalFile(file); input = new FileStoreEditorInput(localFile); } catch (Exception e) { System.err.println("UnableToCreateJavaFileEditorInput: " + e); //$NON-NLS-1$ } return input; } }