package monolipse.ui.editors.actions; import monolipse.core.*; import monolipse.ui.BooUI; import monolipse.ui.editors.BooEditor; import monolipse.ui.editors.input.StringInput; import org.eclipse.core.resources.IFile; import org.eclipse.core.runtime.CoreException; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.ui.*; public abstract class AbstractCodeExpansionAction extends CommonBooAction { public AbstractCodeExpansionAction() { super(); } public AbstractCodeExpansionAction(String text) { super(text); } public AbstractCodeExpansionAction(String text, ImageDescriptor image) { super(text, image); } protected abstract String expand() throws CoreException; public AbstractCodeExpansionAction(String text, int style) { super(text, style); } public void run() { IWorkbenchPage activePage = getActivePage(); if (activePage == null) return; try { String expansion = expand(); if (null == expansion) return; openBooEditorForString(activePage, expansion); } catch (CoreException e) { BooUI.logException(e); } } private void openBooEditorForString(IWorkbenchPage activePage, String booCode) throws PartInitException { IStorageEditorInput input = new StringInput(booCode); activePage.openEditor(input, BooEditor.ID_EDITOR); } protected AssemblySourceLanguage sourceLanguage() { final IFile file = (IFile) editorInput().getAdapter(IFile.class); if (null != file) { final IAssemblySource source = BooCore.assemblySourceContaining(file); if (null != source) { return source.getLanguage(); } } return AssemblySourceLanguage.BOO; } }