*** empty log message ***
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpeclipse / views / PHPConsole.java
index cfceb5e..e2e1395 100644 (file)
@@ -15,11 +15,18 @@ Contributors:
 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;
@@ -28,6 +35,7 @@ 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;
@@ -41,120 +49,202 @@ import org.eclipse.ui.part.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;
-
-  /**
-   * 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);
-  }
-
-  /**
-   * Prints out the string represented by the string buffer
-   */
-  public static 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) {
-        page.showView(PHPConsole.CONSOLE_ID);
-        console = (PHPConsole) page.findView(PHPConsole.CONSOLE_ID);
-        console.setOutputText(output);
-      }
-    } catch (PartInitException e) {
-      PHPeclipsePlugin.getDefault().getLog().log(
-        new Status(
-          IStatus.ERROR,
-          PHPeclipsePlugin.getPluginId(),
-          0,
-          PHPActionMessages.getString("PHPStartApacheAction.consoleViewOpeningProblem"),
-          e));
-    }
-
-  }
-
-  /**
-   * 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();
-  }
+       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();
+       }
 
 }