package de.sebastianbenz.task.app; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.swt.graphics.Point; import org.eclipse.ui.IEditorInput; import org.eclipse.ui.IEditorReference; import org.eclipse.ui.IMemento; import org.eclipse.ui.IPersistableElement; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.PartInitException; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.application.ActionBarAdvisor; import org.eclipse.ui.application.IActionBarConfigurer; import org.eclipse.ui.application.IWorkbenchConfigurer; import org.eclipse.ui.application.IWorkbenchWindowConfigurer; import org.eclipse.ui.application.WorkbenchAdvisor; import org.eclipse.ui.application.WorkbenchWindowAdvisor; import org.eclipse.ui.internal.IWorkbenchConstants; import de.sebastianbenz.task.app.actions.EditorOpener; import de.sebastianbenz.task.app.actions.TaskEditorActionBarAdvisor; import de.sebastianbenz.task.ui.internal.TaskActivator; public class TaskEditorWorkbenchAdvisor extends WorkbenchAdvisor { private final String[] args; public TaskEditorWorkbenchAdvisor(String[] args) { this.args = args; } public String getInitialWindowPerspectiveId() { return "de.sebastianbenz.task.app.TaskPerspective"; //$NON-NLS-1$ } public WorkbenchWindowAdvisor createWorkbenchWindowAdvisor( IWorkbenchWindowConfigurer configurer) { return new WorkbenchWindowAdvisor(configurer) { public void preWindowOpen() { super.preWindowOpen(); IWorkbenchWindowConfigurer wc = getWindowConfigurer(); wc.setInitialSize(new Point(600, 450)); wc.setShowCoolBar(true); wc.setShowStatusLine(true); wc.setShowProgressIndicator(true); } /* * @see * org.eclipse.ui.application.WorkbenchWindowAdvisor#postWindowCreate * () * * @since 3.3 */ public void postWindowCreate() { super.postWindowCreate(); IWorkbenchWindowConfigurer wc = getWindowConfigurer(); IWorkbenchPage[] pages = wc.getWindow().getPages(); for (int i = 0; i < pages.length; i++) { pages[i].hideActionSet("org.eclipse.ui.edit.text.actionSet.openExternalFile"); pages[i].hideActionSet("org.eclipse.search.menu"); pages[i].hideActionSet("org.eclipse.ui.edit.text.actionSet.annotationNavigation"); pages[i].hideActionSet("org.eclipse.ui.edit.text.actionSet.navigation"); pages[i].hideActionSet("org.eclipse.jdt.ui.edit.text.java.toggleMarkOccurrences"); pages[i].hideActionSet("org.eclipse.xtext.ui.editor.markOccurrences"); pages[i].hideActionSet("org.eclipse.search.searchActionSet"); pages[i].hideActionSet("org.eclipse.ui.edit.text.actionSet.presentation"); pages[i].hideActionSet("org.eclipse.ui.edit.text.actionSet.convertLineDelimitersTo"); } TaskActivator.getInstance(); } /* * @see org.eclipse.ui.application.WorkbenchWindowAdvisor# * createActionBarAdvisor * (org.eclipse.ui.application.IActionBarConfigurer) */ public ActionBarAdvisor createActionBarAdvisor( IActionBarConfigurer abConfigurer) { return new TaskEditorActionBarAdvisor(abConfigurer); } @Override public void postWindowOpen() { for (String arg : args) { EditorOpener.open(getWindowConfigurer().getWindow(), arg); } } }; } @Override public void initialize(IWorkbenchConfigurer configurer) { super.initialize(configurer); configurer.setSaveAndRestore(true); } @Override public IStatus saveState(IMemento memento) { IEditorReference[] editorReferences = PlatformUI.getWorkbench() .getActiveWorkbenchWindow().getActivePage() .getEditorReferences(); for (IEditorReference editor : editorReferences) { IEditorInput input; try { input = editor.getEditorInput(); IPersistableElement persistable = input.getPersistable(); // Save input. IMemento inputMem = memento .createChild(IWorkbenchConstants.TAG_INPUT); inputMem.putString(IWorkbenchConstants.TAG_FACTORY_ID, persistable.getFactoryId()); persistable.saveState(inputMem); } catch (PartInitException e) { new Status(IStatus.ERROR, "de.sebastianbenz.task.application", "Exception while saving editors", e); } } return Status.OK_STATUS; } }