/******************************************************************************* * Copyright (c) 2006 Sybase, Inc. 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: * Sybase, Inc. - initial API and implementation *******************************************************************************/ package org.eclipse.jst.pagedesigner.jsf.ui.elementedit.jsfcore; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IStorage; import org.eclipse.core.runtime.CoreException; import org.eclipse.jface.action.Action; import org.eclipse.jst.jsf.core.internal.tld.LoadBundleUtil; import org.eclipse.jst.pagedesigner.jsf.ui.JSFUIPlugin; import org.eclipse.ui.IEditorDescriptor; import org.eclipse.ui.IEditorInput; import org.eclipse.ui.IEditorRegistry; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.PartInitException; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.ide.IDE; /** * @author mengbo */ public class LoadBundleAction extends Action { private String _baseName; private IProject _project; /** * Create a new action */ public LoadBundleAction() { setText(JSFUIPlugin.getResourceString("ElementEdit.Submenu.LoadBundle"));//$NON-NLS-1$ } /** * @param attribute */ public void setBaseName(String attribute) { _baseName = attribute; } /* (non-Javadoc) * @see org.eclipse.jface.action.IAction#run() */ public void run() { if (_project == null || _baseName == null) { return; } IStorage storage = null; try { storage = LoadBundleUtil.getLoadBundleResource(_project, _baseName); } catch (CoreException e) { JSFUIPlugin.getAlerts().warning("Message.Warning.Title", e.getLocalizedMessage());//$NON-NLS-1$ return; } if (storage instanceof IFile) { try { IDE.openEditor(getPage(), (IFile) storage, true); } catch (PartInitException e1) { JSFUIPlugin.getAlerts().warning("Message.Warning.Title", e1.getLocalizedMessage());//$NON-NLS-1$ } } else if (storage != null) { IEditorInput input = new JarEntryEditorInput(storage); try { getPage().openEditor(input, "org.eclipse.ui.DefaultTextEditor");//$NON-NLS-1$ } catch (PartInitException e1) { JSFUIPlugin.getAlerts().warning("Message.Warning.Title", e1.getLocalizedMessage());//$NON-NLS-1$ } } else { //create new file??? Will be covered by https://bugs.eclipse.org/bugs/show_bug.cgi?id=225232 } } private IWorkbenchPage getPage() { IWorkbench workbench = PlatformUI.getWorkbench(); IWorkbenchWindow window = workbench.getActiveWorkbenchWindow(); return window.getActivePage(); } /** * @param projectFor */ public void setProject(IProject projectFor) { this._project = projectFor; } /** * @param inputName * @return the editor id of theditor to open for the inputName or null * if none can be ascertained */ public String getEditorID(String inputName) { IEditorRegistry registry = PlatformUI.getWorkbench().getEditorRegistry(); // check for a default editor IEditorDescriptor editorDescriptor = registry.getDefaultEditor(inputName); // next check the OS for in-place editor (OLE on Win32) if (editorDescriptor == null && registry.isSystemInPlaceEditorAvailable(inputName)) { editorDescriptor = registry.findEditor(IEditorRegistry.SYSTEM_INPLACE_EDITOR_ID); } // next check with the OS for an external editor if (editorDescriptor == null && registry.isSystemExternalEditorAvailable(inputName)) { editorDescriptor = registry.findEditor(IEditorRegistry.SYSTEM_EXTERNAL_EDITOR_ID); } // next lookup the default text editor if (editorDescriptor == null) { editorDescriptor = registry.findEditor("org.eclipse.ui.DefaultTextEditor"); //$NON-NLS-1$ } // if no valid editor found, bail out if (editorDescriptor == null) { return null; } return editorDescriptor.getId(); } /* (non-Javadoc) * @see org.eclipse.jface.action.IAction#isEnabled() */ public boolean isEnabled() { return _project != null && _baseName != null && !"".equals(_baseName);//$NON-NLS-1$ } }