package oraloganalyzer; import java.io.File; import java.lang.reflect.Array; import oraloganalyzer.actions.ParseFileAction; import oraloganalyzer.dnd.ParseFileDropTarget; import org.eclipse.swt.dnd.FileTransfer; import org.eclipse.swt.graphics.Point; import org.eclipse.ui.IEditorRegistry; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.application.IActionBarConfigurer; import org.eclipse.ui.application.IWorkbenchWindowConfigurer; import org.eclipse.ui.application.WorkbenchAdvisor; public class OlaWorkbenchAdvisor extends WorkbenchAdvisor { private WorkbenchActionBuilder actionBuilder; private Object startupArgs; public OlaWorkbenchAdvisor(Object startupArgs) { super(); this.startupArgs = startupArgs; } public String getInitialWindowPerspectiveId() { return IComponentIdentities.OLA_PERSPECTIVE; } public void preWindowOpen(IWorkbenchWindowConfigurer configurer) { configurer.setTitle("OraLogAnalyzer"); configurer.setInitialSize(new Point(1000, 800)); configurer.setShowStatusLine(true); configurer.setShowCoolBar(true); configurer.setShowMenuBar(true); configurer.setShowPerspectiveBar(false); IEditorRegistry edtRegistry = configurer.getWindow().getWorkbench().getEditorRegistry(); edtRegistry.setDefaultEditor("log", IComponentIdentities.ORALOG_EDITOR); ParseFileDropTarget parseFileDrop = new ParseFileDropTarget(configurer.getWindow()); configurer.addEditorAreaTransfer(FileTransfer.getInstance()); configurer.configureEditorAreaDropListener(parseFileDrop); } public void fillActionBars(IWorkbenchWindow window, IActionBarConfigurer configurer, int flags) { if (this.actionBuilder == null) this.actionBuilder = new WorkbenchActionBuilder(window); this.actionBuilder.makeAndPopulateActions(getWorkbenchConfigurer(), configurer); } public void postShutdown() { if (this.actionBuilder != null) this.actionBuilder.dispose(); } @Override public void postStartup() { openFileOnStartup(); } private void openFileOnStartup() { try { String startupFilename = Array.get(startupArgs, 0).toString(); File file = new File(startupFilename); if (! file.exists()) return; ParseFileAction pfa = (ParseFileAction) ParseFileAction.create(OlaPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow()); pfa.parseFile(file); pfa.dispose(); } catch (Exception e) { } } }