first scanner /parser copied from the jdt java version
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpeclipse / views / PHPConsole.java
1 package net.sourceforge.phpeclipse.views;
2
3 /**********************************************************************
4 Copyright (c) 2000, 2002 IBM Corp. and others.
5 All rights reserved. This program and the accompanying materials
6 are made available under the terms of the Common Public License v1.0
7 which accompanies this distribution, and is available at
8 http://www.eclipse.org/legal/cpl-v10.html
9
10 Contributors:
11     IBM Corporation - Initial implementation
12     Klaus Hartlage - www.eclipseproject.de
13 **********************************************************************/
14
15 import java.io.IOException;
16 import java.io.InputStream;
17
18 import net.sourceforge.phpeclipse.PHPeclipsePlugin;
19 import net.sourceforge.phpeclipse.actions.PHPActionMessages;
20 import org.eclipse.core.runtime.IStatus;
21 import org.eclipse.core.runtime.Status;
22 import org.eclipse.jface.action.Action;
23 import org.eclipse.jface.resource.JFaceResources;
24 import org.eclipse.jface.text.BadLocationException;
25 import org.eclipse.jface.text.Document;
26 import org.eclipse.jface.text.TextViewer;
27 import org.eclipse.swt.SWT;
28 import org.eclipse.swt.custom.StyledText;
29 import org.eclipse.swt.layout.GridData;
30 import org.eclipse.swt.widgets.Composite;
31 import org.eclipse.ui.IActionBars;
32 import org.eclipse.ui.IWorkbenchActionConstants;
33 import org.eclipse.ui.IWorkbenchPage;
34 import org.eclipse.ui.PartInitException;
35 import org.eclipse.ui.PlatformUI;
36 import org.eclipse.ui.part.ViewPart;
37
38 /**
39  * The PHPConsole is used to display the output if you start MySQL/Apache
40  * @see ViewPart
41  */
42 public class PHPConsole extends ViewPart {
43
44   public static final String CONSOLE_ID = "net.sourceforge.phpeclipse.views.phpconsoleview";
45
46   private TextViewer viewer = null;
47   private Document document = null;
48
49   /**
50    * The constructor.
51    */
52   public PHPConsole() {
53   }
54
55   /**
56    * Insert the method's description here.
57    * @see ViewPart#createPartControl
58    */
59   public void createPartControl(Composite parent) {
60     viewer = new TextViewer(parent, SWT.WRAP | SWT.V_SCROLL | SWT.H_SCROLL);
61     GridData viewerData = new GridData(GridData.FILL_BOTH);
62     viewer.getControl().setLayoutData(viewerData);
63     viewer.setEditable(false);
64     
65     StyledText widget = viewer.getTextWidget();
66     widget.setFont(JFaceResources.getFontRegistry().get(JFaceResources.TEXT_FONT));
67     Action cutAction = new Action() {
68       public void run() {
69         viewer.getTextWidget().cut();
70       }
71     };
72     Action copyAction = new Action() {
73       public void run() {
74         viewer.getTextWidget().copy();
75       }
76     };
77     Action pasteAction = new Action() {
78       public void run() {
79         viewer.getTextWidget().paste();
80       }
81     };
82
83     IActionBars bars = this.getViewSite().getActionBars();
84     bars.setGlobalActionHandler(IWorkbenchActionConstants.CUT, cutAction);
85     bars.setGlobalActionHandler(IWorkbenchActionConstants.COPY, copyAction);
86     bars.setGlobalActionHandler(IWorkbenchActionConstants.PASTE, pasteAction);
87   }
88
89   /**
90    * Insert the method's description here.
91    * @see ViewPart#setFocus
92    */
93   public void setFocus() {
94   }
95
96   /**
97    * Set the text for the viewer
98    */
99   public void setOutputText(String text) {
100     document = new Document(text);
101     viewer.setDocument(document);
102   }
103
104   public void appendOutputText(String text) {
105     try {
106       if (document == null) {
107         document = new Document(text);
108         viewer.setDocument(document);
109       }
110       document.replace(document.getLength(), 0, text);
111     } catch (BadLocationException e) {
112     }
113     //  viewer.setDocument(document);
114   }
115
116   /**
117    * Prints out the string represented by the string buffer
118    */
119   public static void write(String output) {
120     try {
121       IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
122       PHPConsole console = (PHPConsole) page.findView(PHPConsole.CONSOLE_ID);
123
124       if (console != null) {
125         console.appendOutputText(output);
126       } else if (PHPeclipsePlugin.getDefault().getPreferenceStore().getBoolean(PHPeclipsePlugin.SHOW_OUTPUT_IN_CONSOLE) == true) {
127         page.showView(PHPConsole.CONSOLE_ID);
128         console = (PHPConsole) page.findView(PHPConsole.CONSOLE_ID);
129         console.setOutputText(output);
130       }
131     } catch (PartInitException e) {
132       PHPeclipsePlugin.getDefault().getLog().log(
133         new Status(
134           IStatus.ERROR,
135           PHPeclipsePlugin.getPluginId(),
136           0,
137           PHPActionMessages.getString("PHPStartApacheAction.consoleViewOpeningProblem"),
138           e));
139     }
140
141   }
142
143   /**
144    * Creates a string buffer from the given input stream
145    */
146   public static String getStringFromStream(InputStream stream) throws IOException {
147     StringBuffer buffer = new StringBuffer();
148     byte[] b = new byte[100];
149     int finished = 0;
150     while (finished != -1) {
151       finished = stream.read(b);
152       if (finished != -1) {
153         String current = new String(b, 0, finished);
154         buffer.append(current);
155       }
156     }
157     return buffer.toString();
158   }
159
160 }