From 0ec41af15edc1ca7d36e2f5687e777f905e13484 Mon Sep 17 00:00:00 2001 From: robekras Date: Sun, 11 Dec 2005 15:38:39 +0000 Subject: [PATCH] 1) Breakpoint properties dialog (for skip counts and condition). --- .../properties/PHPBreakpointPropertiesDialog.java | 169 ++++++++++++++++++++ 1 files changed, 169 insertions(+), 0 deletions(-) create mode 100644 net.sourceforge.phpeclipse.debug.ui/src/net/sourceforge/phpdt/internal/debug/ui/properties/PHPBreakpointPropertiesDialog.java 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 index 0000000..423b927 --- /dev/null +++ b/net.sourceforge.phpeclipse.debug.ui/src/net/sourceforge/phpdt/internal/debug/ui/properties/PHPBreakpointPropertiesDialog.java @@ -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); + } +} -- 1.7.1