X-Git-Url: http://git.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/views/PHPConsole.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/views/PHPConsole.java deleted file mode 100644 index e3408c8..0000000 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/views/PHPConsole.java +++ /dev/null @@ -1,443 +0,0 @@ -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.File; -import java.io.IOException; -import java.io.InputStream; -import java.io.StreamTokenizer; -import java.io.StringReader; -import java.util.ArrayList; - -import net.sourceforge.phpdt.internal.ui.PHPUiImages; -import net.sourceforge.phpeclipse.PHPeclipsePlugin; -import net.sourceforge.phpeclipse.actions.PHPActionMessages; - -import org.eclipse.core.resources.IFile; -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.preference.IPreferenceStore; -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.events.ModifyEvent; -import org.eclipse.swt.events.ModifyListener; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.events.SelectionListener; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Combo; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Label; -import org.eclipse.swt.widgets.Menu; -import org.eclipse.ui.IActionBars; -import org.eclipse.ui.IEditorInput; -import org.eclipse.ui.IFileEditorInput; -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; -import org.eclipse.ui.texteditor.ITextEditor; - -/** - * 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 int COMMAND_COMBO_SIZE = 10; - - private TextViewer fViewer = null; - private Document fDocument = null; - private StyledText fStyledText; - private Combo fCommandCombo; - // private Action goAction; - - private Action cutAction = new Action() { - public void run() { - fViewer.getTextWidget().cut(); - } - }; - private Action copyAction = new Action() { - public void run() { - fStyledText.copy(); - } - }; - // private Action pasteAction = new Action() { - // public void run() { - // fViewer.getTextWidget().paste(); - // } - // }; - private Action selectAllAction = new Action() { - public void run() { - fStyledText.selectAll(); - } - }; - private Action clearAction = new Action() { - public void run() { - fStyledText.setText(""); - } - }; - /** - * The constructor. - */ - public PHPConsole() { - } - - /** - * Insert the method's description here. - * @see ViewPart#createPartControl - */ - public void createPartControl(Composite parent) { - Composite container = new Composite(parent, SWT.NULL); - // control = container; - GridLayout layout = new GridLayout(); - layout.marginWidth = 0; - layout.marginHeight = 0; - layout.verticalSpacing = 0; - container.setLayout(layout); - Composite navContainer = new Composite(container, SWT.NONE); - layout = new GridLayout(); - layout.numColumns = 2; - layout.marginHeight = 1; - navContainer.setLayout(layout); - createCommandBar(navContainer); - navContainer.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - - fViewer = new TextViewer(container, SWT.WRAP | SWT.V_SCROLL | SWT.H_SCROLL); - GridData viewerData = new GridData(GridData.FILL_BOTH); - fViewer.getControl().setLayoutData(viewerData); - fViewer.setEditable(false); - - fStyledText = fViewer.getTextWidget(); - fStyledText.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(); - - appendOutputText("This is the PHP console.\n"); - appendOutputText("Type: \"php $f\" to run the current editor file.\n"); - - } - - private void createCommandBar(Composite parent) { - Label addressLabel = new Label(parent, SWT.NONE); - addressLabel.setText("Command:"); - - fCommandCombo = new Combo(parent, SWT.DROP_DOWN | SWT.BORDER); - fCommandCombo.addModifyListener(new ModifyListener() { - public void modifyText(ModifyEvent e) { - String text = fCommandCombo.getText(); - // goAction.setEnabled(text.length() > 0); - } - }); - fCommandCombo.addSelectionListener(new SelectionListener() { - public void widgetSelected(SelectionEvent e) { - String text = fCommandCombo.getItem(fCommandCombo.getSelectionIndex()); - if (text.length() > 0) { - fCommandCombo.setText(text); - // executeCommand(text); - } - } - public void widgetDefaultSelected(SelectionEvent e) { - executeCommand(fCommandCombo.getText()); - } - }); - GridData gd = new GridData(GridData.FILL_HORIZONTAL); - fCommandCombo.setLayoutData(gd); - // ToolBar toolbar = new ToolBar(parent, SWT.FLAT | SWT.HORIZONTAL); - // toolBarManager = new ToolBarManager(toolbar); - // makeActions(); - // IToolBarManager localBar = - // getViewSite().getActionBars().getToolBarManager(); - // localBar.add(backwardAction); - // localBar.add(forwardAction); - } - - private void executeCommand(String command) { - command.trim(); - if (command.equals("")) { - fCommandCombo.forceFocus(); - return; - } - execute(command); - - fCommandCombo.forceFocus(); - // add to Combo history - String[] items = fCommandCombo.getItems(); - int loc = -1; - String normURL = command; - for (int i = 0; i < items.length; i++) { - String normItem = items[i]; - if (normURL.equals(normItem)) { - // match - loc = i; - break; - } - } - if (loc != -1) { - fCommandCombo.remove(loc); - } - fCommandCombo.add(command, 0); - if (fCommandCombo.getItemCount() > COMMAND_COMBO_SIZE) { - fCommandCombo.remove(fCommandCombo.getItemCount() - 1); - } - fCommandCombo.getParent().layout(true); - } - - private void execute(String command) { - ArrayList args = new ArrayList(); - - command = command.replace('\\', '§'); - - StreamTokenizer tokenizer = new StreamTokenizer(new StringReader(command)); - tokenizer.resetSyntax(); - - tokenizer.whitespaceChars(0, ' '); - tokenizer.wordChars('!', 255); - - tokenizer.quoteChar('"'); - tokenizer.quoteChar('\''); - - int token; - try { - while ((token = tokenizer.nextToken()) != StreamTokenizer.TT_EOF) { - if (token == StreamTokenizer.TT_WORD) { - args.add(tokenizer.sval); - } - } - } catch (IOException e) { - // - } - String arg = ""; - // replace variables in arguments - - IFile file = getFile(); - if (file != null) { - String fileLocation = file.getLocation().toString(); - for (int i = 0; i < args.size(); i++) { - arg = args.get(i).toString(); - if (arg.equals("$f")) { - //current php editor file - if (File.separatorChar == '\\') { - fileLocation = fileLocation.replace('/', '\\'); - } - args.set(i, fileLocation); - } - } - } - - final IPreferenceStore store = PHPeclipsePlugin.getDefault().getPreferenceStore(); - - String arg0 = ""; - String temp; - StringBuffer commandBuffer = new StringBuffer(1024); - // Program.launch(command); - if (args.size() > 0) { - arg0 = (String) args.get(0); - arg0 = arg0.replace('§', '\\'); - args.remove(0); - if (arg0.equals("php")) { - temp = store.getString(PHPeclipsePlugin.PHP_RUN_PREF); - if (temp != null) { - arg0 = temp; - } - } - commandBuffer.append(arg0 + " "); - } - String[] stringArgs = new String[args.size()]; - for (int i = 0; i < args.size(); i++) { - arg = (String) args.get(i); - arg = arg.replace('§', '\\'); - stringArgs[i] = arg; - commandBuffer.append(arg + " "); - } - commandBuffer.append("\n"); - - try { - command = commandBuffer.toString(); - write(command); - Runtime runtime = Runtime.getRuntime(); - - // runs the command - Process process = runtime.exec(command); - - //process.waitFor(); - InputStream in = process.getInputStream(); - String output = getStringFromStream(in); - write(output); - in.close(); -// } catch (InterruptedException e) { -// write(e.toString()); - } catch (IOException e) { - write(e.toString()); - } - } - - 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(fViewer.getControl()); - fViewer.getControl().setMenu(menu); - getSite().registerContextMenu(menuMgr, fViewer); - } - - 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() { - fCommandCombo.forceFocus(); - } - - /** - * Set the text for the viewer - */ - public void setOutputText(String text) { - fDocument = new Document(text); - fViewer.setDocument(fDocument); - } - - public void appendOutputText(String text) { - try { - if (fDocument == null) { - fDocument = new Document(text); - fViewer.setDocument(fDocument); - } else { - fDocument.replace(fDocument.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 - */ - 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(); - } - - /** - * Finds the file that's currently opened in the PHP Text Editor - */ - protected IFile getFile() { - ITextEditor editor = PHPeclipsePlugin.getDefault().getTextEditor(); - - IEditorInput editorInput = null; - if (editor != null) { - editorInput = editor.getEditorInput(); - } - - if (editorInput instanceof IFileEditorInput) - return ((IFileEditorInput) editorInput).getFile(); - - // if nothing was found, which should never happen - return null; - } -}