X-Git-Url: http://secure.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
index ad72992..a858f5c 100644
--- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/views/PHPConsole.java
+++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/views/PHPConsole.java
@@ -14,29 +14,27 @@ Contributors:
 
 import java.io.IOException;
 import java.io.InputStream;
-import java.text.MessageFormat;
 
 import net.sourceforge.phpeclipse.PHPeclipsePlugin;
 import net.sourceforge.phpeclipse.actions.PHPActionMessages;
-import org.eclipse.core.runtime.CoreException;
+
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.jface.action.Action;
+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.jface.viewers.ISelection;
 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.ui.IActionBars;
+import org.eclipse.ui.IWorkbenchActionConstants;
 import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.IWorkbenchWindowActionDelegate;
 import org.eclipse.ui.PartInitException;
 import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.part.ViewPart;
-import sun.security.krb5.internal.crypto.e;
 
 /**
  * The PHPConsole is used to display the output if you start MySQL/Apache
@@ -44,78 +42,114 @@ import sun.security.krb5.internal.crypto.e;
  */
 public class PHPConsole extends ViewPart {
 
-	public static final String CONSOLE_ID = "net.sourceforge.phpeclipse.views.phpconsoleview";
-	
-	private TextViewer viewer = null;
-	private Document document = null;
-
-	/**
-	 * 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(false);
-	}
-
-	/**
-	 * 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 static final String CONSOLE_ID = "net.sourceforge.phpeclipse.views.phpconsoleview";
+
+  private TextViewer viewer = null;
+  private Document document = null;
+
+  /**
+   * 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(false);
+
+    StyledText widget = viewer.getTextWidget();
+    widget.setFont(JFaceResources.getFontRegistry().get(JFaceResources.TEXT_FONT));
+    Action cutAction = new Action() {
+      public void run() {
+        viewer.getTextWidget().cut();
+      }
+    };
+    Action copyAction = new Action() {
+      public void run() {
+        viewer.getTextWidget().copy();
+      }
+    };
+    Action pasteAction = new Action() {
+      public void run() {
+        viewer.getTextWidget().paste();
+      }
+    };
+
+    IActionBars bars = this.getViewSite().getActionBars();
+    bars.setGlobalActionHandler(IWorkbenchActionConstants.CUT, cutAction);
+    bars.setGlobalActionHandler(IWorkbenchActionConstants.COPY, copyAction);
+    bars.setGlobalActionHandler(IWorkbenchActionConstants.PASTE, pasteAction);
+  }
+
+  /**
+   * 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);
+      }
       document.replace(document.getLength(), 0, text);
     } catch (BadLocationException e) {
     }
-  //  viewer.setDocument(document);
+    //  viewer.setDocument(document);
   }
-  
-  /**
-   * Prints out the string represented by the string buffer
-   */
-  static public void write(String output) {
-    try {
-      IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
-      PHPConsole console = (PHPConsole) page.findView(PHPConsole.CONSOLE_ID);
 
-      if (console != null) {
-        console.appendOutputText(output);
-      } else if (
-        PHPeclipsePlugin.getDefault().getPreferenceStore().getBoolean(PHPeclipsePlugin.SHOW_OUTPUT_IN_CONSOLE) == true) {
+  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);
-        console = (PHPConsole) page.findView(PHPConsole.CONSOLE_ID);
-        console.setOutputText(output);
+        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));
       }
-    } 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
    */
-  static public String getStringFromStream(InputStream stream) throws IOException {
+  public static String getStringFromStream(InputStream stream) throws IOException {
     StringBuffer buffer = new StringBuffer();
     byte[] b = new byte[100];
     int finished = 0;
@@ -129,7 +163,4 @@ public class PHPConsole extends ViewPart {
     return buffer.toString();
   }
 
-
-
-
 }