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); } }