@Override public void dispose() { toplevel.kill(); toplevel.dispose(); super.dispose(); if (this.equals(OcamlPlugin.getLastFocusedToplevelInstance())) OcamlPlugin.setLastFocusedToplevelInstance(null); }
@Override public void createPartControl(Composite parent) { this.setPartName("Ocaml Toplevel"); composite = new Composite(parent, SWT.BORDER); composite.addControlListener( new ControlAdapter() { @Override public void controlResized(ControlEvent e) { resized(); } }); userText = new StyledText(this.composite, SWT.V_SCROLL); userText.setWordWrap(true); resultText = new StyledText(this.composite, SWT.V_SCROLL); resultText.setWordWrap(true); sash = new Sash(composite, SWT.HORIZONTAL | SWT.SMOOTH); sash.addSelectionListener( new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { sash.setBounds(e.x, e.y, e.width, e.height); layout(); } }); Color c = Display.findDisplay(Thread.currentThread()).getSystemColor(SWT.COLOR_WIDGET_NORMAL_SHADOW); sash.setBackground(c); toplevel = new Toplevel(this, userText, resultText); IActionBars actionBars = this.getViewSite().getActionBars(); IMenuManager dropDownMenu = actionBars.getMenuManager(); IToolBarManager toolBarManager = actionBars.getToolBarManager(); ImageDescriptor iconAdd = ImageRepository.getImageDescriptor(ImageRepository.ICON_ADD); Action actionNewToplevel = new Action("New toplevel", iconAdd) { @Override public void run() { try { IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); OcamlToplevelView.this.secondaryId = "ocamltoplevelview" + new Random().nextInt(); page.showView(ID, OcamlToplevelView.this.secondaryId, IWorkbenchPage.VIEW_ACTIVATE); } catch (Exception e) { OcamlPlugin.logError("ocaml plugin error", e); } } }; ImageDescriptor iconReset = ImageRepository.getImageDescriptor(ImageRepository.ICON_RESET); Action actionReset = new Action("Reset", iconReset) { @Override public void run() { toplevel.reset(); } }; ImageDescriptor iconInterrupt = ImageRepository.getImageDescriptor(ImageRepository.ICON_INTERRUPT); Action actionBreak = new Action("Interrupt", iconInterrupt) { @Override public void run() { toplevel.interrupt(); } }; ImageDescriptor iconClear = ImageRepository.getImageDescriptor(ImageRepository.ICON_CLEAR); Action actionClear = new Action("Clear", iconClear) { @Override public void run() { toplevel.clear(); } }; ImageDescriptor iconHelp = ImageRepository.getImageDescriptor(ImageRepository.ICON_HELP); Action actionHelp = new Action("Help", iconHelp) { @Override public void run() { toplevel.help(); } }; Action actionUseTopfind = new Action("Use Topfind") { @Override public void run() { toplevel.eval("#use \"topfind\";;"); } }; dropDownMenu.add(actionUseTopfind); toolBarManager.add(actionBreak); toolBarManager.add(actionClear); toolBarManager.add(actionReset); toolBarManager.add(actionNewToplevel); toolBarManager.add(actionHelp); if (bStartWhenCreated) toplevel.start(); OcamlPlugin.setLastFocusedToplevelInstance(this); }
@Override public void setFocus() { OcamlPlugin.setLastFocusedToplevelInstance(this); userText.setFocus(); }
@Override public void init(IViewSite site) throws PartInitException { OcamlPlugin.setLastFocusedToplevelInstance(this); super.init(site); }