a858f5c4f408aa129538cc27766aaf7096df65ca
[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
21 import org.eclipse.core.runtime.IStatus;
22 import org.eclipse.core.runtime.Status;
23 import org.eclipse.jface.action.Action;
24 import org.eclipse.jface.resource.JFaceResources;
25 import org.eclipse.jface.text.BadLocationException;
26 import org.eclipse.jface.text.Document;
27 import org.eclipse.jface.text.TextViewer;
28 import org.eclipse.swt.SWT;
29 import org.eclipse.swt.custom.StyledText;
30 import org.eclipse.swt.layout.GridData;
31 import org.eclipse.swt.widgets.Composite;
32 import org.eclipse.ui.IActionBars;
33 import org.eclipse.ui.IWorkbenchActionConstants;
34 import org.eclipse.ui.IWorkbenchPage;
35 import org.eclipse.ui.PartInitException;
36 import org.eclipse.ui.PlatformUI;
37 import org.eclipse.ui.part.ViewPart;
38
39 /**
40  * The PHPConsole is used to display the output if you start MySQL/Apache
41  * @see ViewPart
42  */
43 public class PHPConsole extends ViewPart {
44
45   public static final String CONSOLE_ID = "net.sourceforge.phpeclipse.views.phpconsoleview";
46
47   private TextViewer viewer = null;
48   private Document document = null;
49
50   /**
51    * The constructor.
52    */
53   public PHPConsole() {
54   }
55
56   /**
57    * Insert the method's description here.
58    * @see ViewPart#createPartControl
59    */
60   public void createPartControl(Composite parent) {
61     viewer = new TextViewer(parent, SWT.WRAP | SWT.V_SCROLL | SWT.H_SCROLL);
62     GridData viewerData = new GridData(GridData.FILL_BOTH);
63     viewer.getControl().setLayoutData(viewerData);
64     viewer.setEditable(false);
65
66     StyledText widget = viewer.getTextWidget();
67     widget.setFont(JFaceResources.getFontRegistry().get(JFaceResources.TEXT_FONT));
68     Action cutAction = new Action() {
69       public void run() {
70         viewer.getTextWidget().cut();
71       }
72     };
73     Action copyAction = new Action() {
74       public void run() {
75         viewer.getTextWidget().copy();
76       }
77     };
78     Action pasteAction = new Action() {
79       public void run() {
80         viewer.getTextWidget().paste();
81       }
82     };
83
84     IActionBars bars = this.getViewSite().getActionBars();
85     bars.setGlobalActionHandler(IWorkbenchActionConstants.CUT, cutAction);
86     bars.setGlobalActionHandler(IWorkbenchActionConstants.COPY, copyAction);
87     bars.setGlobalActionHandler(IWorkbenchActionConstants.PASTE, pasteAction);
88   }
89
90   /**
91    * Insert the method's description here.
92    * @see ViewPart#setFocus
93    */
94   public void setFocus() {
95   }
96
97   /**
98    * Set the text for the viewer
99    */
100   public void setOutputText(String text) {
101     document = new Document(text);
102     viewer.setDocument(document);
103   }
104
105   public void appendOutputText(String text) {
106     try {
107       if (document == null) {
108         document = new Document(text);
109         viewer.setDocument(document);
110       }
111       document.replace(document.getLength(), 0, text);
112     } catch (BadLocationException e) {
113     }
114     //  viewer.setDocument(document);
115   }
116
117   public static PHPConsole getInstance() {
118     IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
119     PHPConsole console = (PHPConsole) page.findView(PHPConsole.CONSOLE_ID);
120
121     if (PHPeclipsePlugin.getDefault().getPreferenceStore().getBoolean(PHPeclipsePlugin.SHOW_OUTPUT_IN_CONSOLE) == true) {
122
123       try {
124         page.showView(PHPConsole.CONSOLE_ID);
125         if (console == null) {
126           console = (PHPConsole) page.findView(PHPConsole.CONSOLE_ID);
127         }
128       } catch (PartInitException e) {
129         PHPeclipsePlugin.getDefault().getLog().log(
130           new Status(
131             IStatus.ERROR,
132             PHPeclipsePlugin.getPluginId(),
133             0,
134             PHPActionMessages.getString("PHPStartApacheAction.consoleViewOpeningProblem"),
135             e));
136       }
137
138     }
139     return console;
140   }
141
142   /**
143    * Prints out the string represented by the string buffer
144    */
145   public synchronized void write(String output) {
146     appendOutputText(output);
147   }
148
149   /**
150    * Creates a string buffer from the given input stream
151    */
152   public static String getStringFromStream(InputStream stream) throws IOException {
153     StringBuffer buffer = new StringBuffer();
154     byte[] b = new byte[100];
155     int finished = 0;
156     while (finished != -1) {
157       finished = stream.read(b);
158       if (finished != -1) {
159         String current = new String(b, 0, finished);
160         buffer.append(current);
161       }
162     }
163     return buffer.toString();
164   }
165
166 }