1) Breakpoint properties dialog (for skip counts and condition).
authorrobekras <robekras>
Sun, 11 Dec 2005 15:38:39 +0000 (15:38 +0000)
committerrobekras <robekras>
Sun, 11 Dec 2005 15:38:39 +0000 (15:38 +0000)
net.sourceforge.phpeclipse.debug.ui/src/net/sourceforge/phpdt/internal/debug/ui/properties/PHPBreakpointPropertiesDialog.java [new file with mode: 0644]

diff --git a/net.sourceforge.phpeclipse.debug.ui/src/net/sourceforge/phpdt/internal/debug/ui/properties/PHPBreakpointPropertiesDialog.java b/net.sourceforge.phpeclipse.debug.ui/src/net/sourceforge/phpdt/internal/debug/ui/properties/PHPBreakpointPropertiesDialog.java
new file mode 100644 (file)
index 0000000..423b927
--- /dev/null
@@ -0,0 +1,169 @@
+
+package net.sourceforge.phpdt.internal.debug.ui.properties;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.debug.internal.ui.actions.*;
+import org.eclipse.jface.dialogs.StatusDialog;
+import org.eclipse.jface.resource.JFaceResources;
+import org.eclipse.jface.text.Document;
+import org.eclipse.jface.text.DocumentEvent;
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.IDocumentListener;
+import org.eclipse.jface.text.source.SourceViewer;
+import org.eclipse.jface.text.source.SourceViewerConfiguration;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Font;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Spinner;
+
+import net.sourceforge.phpdt.internal.debug.core.breakpoints.PHPLineBreakpoint;
+
+public class PHPBreakpointPropertiesDialog extends StatusDialog {
+
+       private PHPLineBreakpoint fBreakpoint;
+       private SourceViewer      fSnippetViewer;
+       private Button            fCheckBox;
+       private Spinner               fSpinner;
+       
+       public PHPBreakpointPropertiesDialog(Shell parentShell, PHPLineBreakpoint bp) {
+               super(parentShell);
+               
+               fBreakpoint = bp;
+       }
+       
+
+       protected Control createDialogArea (Composite parent) {
+               Composite  container;
+               GridLayout layout;
+               GridData   gd;
+               IDocument  document;
+               Control    control;
+               Label      label;
+               Spinner    spinner;
+               String     condition = "";
+               boolean    enabled   = false;
+               int        hitCount  = 0;
+               
+               try {
+                       condition = fBreakpoint.getCondition ();
+                       enabled   = fBreakpoint.isConditionEnabled ();
+                       hitCount  = fBreakpoint.getHitCount();
+               }
+               catch (CoreException e) {
+               }
+               
+               Font font = parent.getFont();                                                           // Get the dialog's font
+               container = new Composite(parent, SWT.NONE);                            // Create a new container for our controls
+               layout    = new GridLayout();                                                           // Create a grid for control layouting
+               
+               container.setLayout (layout);                                                           // Set the grid to the container
+               gd        = new GridData (SWT.FILL, SWT.FILL, true, true);
+               container.setLayoutData (gd);
+
+               label     = new Label (container, SWT.NONE);                            // spinner label
+               label.setText ("Skip count");                                                           // $NON-NLS-1$
+               
+               gd        = new GridData (SWT.BEGINNING);                                       // Left align of label text
+               label.setLayoutData (gd);                                                                       // 
+               label.setFont (font);                                                                           // Set the label's font
+               
+               fSpinner  = new Spinner (container, SWT.BORDER);
+               fSpinner.setMinimum (0);
+               fSpinner.setMaximum (100000);
+               fSpinner.setIncrement (1);
+               fSpinner.setPageIncrement (100);
+               fSpinner.setSelection (hitCount);
+               gd        = new GridData (SWT.BEGINNING);
+               label.setLayoutData (gd);                                                                       // 
+               label.setFont (font);                                                                           // Set the label's font
+               
+               label     = new Label (container, SWT.NONE);                            // snippet label
+               label.setText ("Break Condition");                                                      // $NON-NLS-1$
+               
+               gd        = new GridData (SWT.BEGINNING);                                       // Left align of label text
+               label.setLayoutData (gd);                                                                       // 
+               label.setFont (font);                                                                           // Set the label's font
+               
+               fSnippetViewer = new SourceViewer (container, null, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
+               fSnippetViewer.setInput (this);
+               
+               document       = new Document();
+               
+               //IDocumentPartitioner partitioner= new RuleBasedPartitioner(...);
+               //document.setDocumentPartitioner(partitioner);
+               //partitioner.connect(document);
+               
+               fSnippetViewer.configure (new SourceViewerConfiguration());
+               fSnippetViewer.setEditable (true);
+               fSnippetViewer.setDocument (document);
+               
+               document.addDocumentListener (new IDocumentListener() {
+                       public void documentAboutToBeChanged(DocumentEvent event) {
+                       }
+                       public void documentChanged(DocumentEvent event) {
+                               checkValues();
+                       }
+               });
+
+               fSnippetViewer.getTextWidget ().setFont (JFaceResources.getTextFont());
+
+               control       = fSnippetViewer.getControl ();
+               gd            = new GridData (GridData.FILL_BOTH);
+               gd.heightHint = convertHeightInCharsToPixels (10);
+               gd.widthHint  = convertWidthInCharsToPixels (80);
+               
+               control.setLayoutData (gd);
+               fSnippetViewer.getDocument ().set (condition);
+
+               // enable checkbox
+               fCheckBox = new Button (container, SWT.CHECK | SWT.LEFT);
+               fCheckBox.setText ("Enable Condition"); //$NON-NLS-1$
+               fCheckBox.setSelection (enabled);
+               fCheckBox.setFont (font);
+
+               applyDialogFont(container);
+               fSnippetViewer.getControl().setFocus();
+               
+               checkValues ();
+               
+               return container;
+       }
+       
+       protected void okPressed () {
+               try {
+                       fBreakpoint.setCondition (fSnippetViewer.getDocument().get());
+                       fBreakpoint.setConditionEnabled (fCheckBox.getSelection());
+                       fBreakpoint.setHitCount(fSpinner.getSelection());
+                       
+                       int id = fBreakpoint.getChangeID();
+                       id++;
+                       fBreakpoint.setChangeID(id);
+               }
+               catch (CoreException e) {
+               }
+               
+               super.okPressed ();
+       }
+       
+       /**
+        * Check the field values and display a message in the status if needed.
+        */
+       private void checkValues() {
+               StatusInfo status;
+               
+               status = new StatusInfo ();
+               /*
+               StatusInfo status = new StatusInfo();
+                               if (fSnippetViewer.getDocument().get().trim().length() == 0) {
+                       status.setError(ActionMessages.WatchExpressionDialog_4); //$NON-NLS-1$
+               }
+               */
+               updateStatus(status);
+       }
+}