package net.sourceforge.phpeclipse.views; /********************************************************************** Copyright (c) 2000, 2002 IBM Corp. and others. All rights reserved. This program and the accompanying materials are made available under the terms of the Common Public License v1.0 which accompanies this distribution, and is available at http://www.eclipse.org/legal/cpl-v10.html Contributors: IBM Corporation - Initial implementation Klaus Hartlage - www.eclipseproject.de **********************************************************************/ import java.io.IOException; import java.io.InputStream; import net.sourceforge.phpdt.internal.ui.PHPUiImages; import net.sourceforge.phpeclipse.PHPeclipsePlugin; import net.sourceforge.phpeclipse.actions.PHPActionMessages; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.IMenuListener; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.IToolBarManager; import org.eclipse.jface.action.MenuManager; import org.eclipse.jface.action.Separator; import org.eclipse.jface.resource.JFaceResources; import org.eclipse.jface.text.BadLocationException; import org.eclipse.jface.text.Document; import org.eclipse.jface.text.TextViewer; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.StyledText; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Menu; import org.eclipse.ui.IActionBars; import org.eclipse.ui.IWorkbenchActionConstants; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.PartInitException; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.part.ViewPart; /** * The PHPConsole is used to display the output if you start MySQL/Apache * @see ViewPart */ public class PHPConsole extends ViewPart { public static final String CONSOLE_ID = "net.sourceforge.phpeclipse.views.phpconsoleview"; private TextViewer viewer = null; private Document document = null; private StyledText widget; private Action cutAction = new Action() { public void run() { viewer.getTextWidget().cut(); } }; private Action copyAction = new Action() { public void run() { widget.copy(); } }; private Action pasteAction = new Action() { public void run() { viewer.getTextWidget().paste(); } }; private Action selectAllAction = new Action() { public void run() { widget.selectAll(); } }; private Action clearAction = new Action() { public void run() { widget.setText(""); } }; /** * The constructor. */ public PHPConsole() { } /** * Insert the method's description here. * @see ViewPart#createPartControl */ public void createPartControl(Composite parent) { viewer = new TextViewer(parent, SWT.WRAP | SWT.V_SCROLL | SWT.H_SCROLL); GridData viewerData = new GridData(GridData.FILL_BOTH); viewer.getControl().setLayoutData(viewerData); viewer.setEditable(true); widget = viewer.getTextWidget(); widget.setFont( JFaceResources.getFontRegistry().get(JFaceResources.TEXT_FONT)); cutAction.setText("Cut"); copyAction.setText("Copy"); pasteAction.setText("Paste"); selectAllAction.setText("Select All"); clearAction.setText("Clear PHP Console"); clearAction.setImageDescriptor(PHPUiImages.DESC_CLEAR); clearAction.setToolTipText("Clear PHP Console"); IActionBars bars = this.getViewSite().getActionBars(); bars.setGlobalActionHandler(IWorkbenchActionConstants.CUT, cutAction); bars.setGlobalActionHandler(IWorkbenchActionConstants.COPY, copyAction); bars.setGlobalActionHandler( IWorkbenchActionConstants.PASTE, pasteAction); hookContextMenu(); // hookDoubleClickAction(); contributeToActionBars(); } private void hookContextMenu() { MenuManager menuMgr = new MenuManager("#PopupMenu"); menuMgr.setRemoveAllWhenShown(true); menuMgr.addMenuListener(new IMenuListener() { public void menuAboutToShow(IMenuManager manager) { PHPConsole.this.fillContextMenu(manager); } }); Menu menu = menuMgr.createContextMenu(viewer.getControl()); viewer.getControl().setMenu(menu); getSite().registerContextMenu(menuMgr, viewer); } private void contributeToActionBars() { IActionBars bars = getViewSite().getActionBars(); fillLocalPullDown(bars.getMenuManager()); fillLocalToolBar(bars.getToolBarManager()); } private void fillLocalPullDown(IMenuManager manager) { manager.add(cutAction); manager.add(copyAction); manager.add(pasteAction); manager.add(selectAllAction); } private void fillContextMenu(IMenuManager manager) { manager.add(cutAction); manager.add(copyAction); manager.add(pasteAction); manager.add(selectAllAction); // Other plug-ins can contribute there actions here manager.add(new Separator("Additions")); } private void fillLocalToolBar(IToolBarManager manager) { manager.add(clearAction); } /** * Insert the method's description here. * @see ViewPart#setFocus */ public void setFocus() { } /** * Set the text for the viewer */ public void setOutputText(String text) { document = new Document(text); viewer.setDocument(document); } public void appendOutputText(String text) { try { if (document == null) { document = new Document(text); viewer.setDocument(document); } else { document.replace(document.getLength(), 0, text); } } catch (BadLocationException e) { } // viewer.setDocument(document); } public static PHPConsole getInstance() { IWorkbenchPage page = PlatformUI .getWorkbench() .getActiveWorkbenchWindow() .getActivePage(); PHPConsole console = (PHPConsole) page.findView(PHPConsole.CONSOLE_ID); if (PHPeclipsePlugin .getDefault() .getPreferenceStore() .getBoolean(PHPeclipsePlugin.SHOW_OUTPUT_IN_CONSOLE) == true) { try { page.showView(PHPConsole.CONSOLE_ID); if (console == null) { console = (PHPConsole) page.findView(PHPConsole.CONSOLE_ID); } } catch (PartInitException e) { PHPeclipsePlugin.getDefault().getLog().log( new Status( IStatus.ERROR, PHPeclipsePlugin.getPluginId(), 0, PHPActionMessages.getString( "PHPStartApacheAction.consoleViewOpeningProblem"), e)); } } return console; } /** * Prints out the string represented by the string buffer */ public synchronized void write(String output) { appendOutputText(output); } /** * Creates a string buffer from the given input stream */ public static String getStringFromStream(InputStream stream) throws IOException { StringBuffer buffer = new StringBuffer(); byte[] b = new byte[100]; int finished = 0; while (finished != -1) { finished = stream.read(b); if (finished != -1) { String current = new String(b, 0, finished); buffer.append(current); } } return buffer.toString(); } }