Java tutorial
/* Soot - a J*va Optimization Framework * Copyright (C) 2003 Jennifer Lhotak * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ package ca.mcgill.sable.soot.ui; import org.eclipse.jface.text.*; import org.eclipse.jface.action.*; import org.eclipse.swt.widgets.*; import org.eclipse.ui.part.*; import org.eclipse.swt.*; import org.eclipse.ui.*; public class SootOutputView extends ViewPart implements ITextListener, IDocumentListener { private TextViewer textViewer; private Control control; private Action selectAllAction; private Action copyAction; public SootOutputView() { super(); } public void createPartControl(Composite parent) { setTextViewer(new TextViewer(parent, getSWTStyles())); getTextViewer().setEditable(false); setControl(parent); createActions(); createContextMenu(); hookGlobalActions(); } private void createActions() { selectAllAction = new Action("selectAll") { public void run() { selectAll(); } }; copyAction = new Action("copy") { public void run() { copy(); } }; } private void selectAll() { getTextViewer().setSelection(new TextSelection(getTextViewer().getTopIndexStartOffset(), getTextViewer().getDocument().getLength())); } private void copy() { getTextViewer().doOperation(ITextOperationTarget.COPY); } private void createContextMenu() { // Create menu manager. MenuManager menuMgr = new MenuManager(); menuMgr.setRemoveAllWhenShown(true); menuMgr.addMenuListener(new IMenuListener() { public void menuAboutToShow(IMenuManager mgr) { fillContextMenu(mgr); } }); // Create menu. Menu menu = menuMgr.createContextMenu(getTextViewer().getControl()); getTextViewer().getControl().setMenu(menu); // Register menu for extension. getSite().registerContextMenu(menuMgr, getTextViewer()); } private void fillContextMenu(IMenuManager mgr) { mgr.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS)); mgr.add(new Separator()); mgr.add(copyAction); mgr.add(selectAllAction); mgr.add(new Separator()); } private void hookGlobalActions() { IActionBars bars = getViewSite().getActionBars(); bars.setGlobalActionHandler(IWorkbenchActionConstants.COPY, copyAction); bars.setGlobalActionHandler(IWorkbenchActionConstants.SELECT_ALL, selectAllAction); } private static int getSWTStyles() { int styles = SWT.H_SCROLL | SWT.V_SCROLL; return styles; } public void setFocus() { getTextViewer().getControl().setFocus(); } /** * Returns the control. * @return Control */ public Control getControl() { return control; } /** * Sets the control. * @param control The control to set */ public void setControl(Control control) { this.control = control; } public void textChanged(TextEvent e) { } public void documentAboutToBeChanged(DocumentEvent e) { } public void documentChanged(DocumentEvent e) { } /** * Returns the viewer. * @return TextViewer */ public TextViewer getTextViewer() { return textViewer; } /** * Sets the viewer. * @param viewer The viewer to set */ public void setTextViewer(TextViewer textViewer) { this.textViewer = textViewer; } }