From 796a21508827c4f1f9c92f778b94241da9e3ccf5 Mon Sep 17 00:00:00 2001 From: Keiji Ariyama Date: Tue, 15 Feb 2011 18:59:35 +0900 Subject: [PATCH] Add validation messages to the DDMS edit filter dialog. Fixing issue 3584. http://code.google.com/p/android/issues/detail?id=3584 Change-Id: I689c0036f36678c92c08d05a6690610f95233c66 --- .../android/ddmuilib/logcat/EditFilterDialog.java | 74 +++++++++++++++++----- 1 file changed, 59 insertions(+), 15 deletions(-) diff --git a/ddms/libs/ddmuilib/src/com/android/ddmuilib/logcat/EditFilterDialog.java b/ddms/libs/ddmuilib/src/com/android/ddmuilib/logcat/EditFilterDialog.java index 8bbc7c56d..6cd44d075 100644 --- a/ddms/libs/ddmuilib/src/com/android/ddmuilib/logcat/EditFilterDialog.java +++ b/ddms/libs/ddmuilib/src/com/android/ddmuilib/logcat/EditFilterDialog.java @@ -43,7 +43,10 @@ import org.eclipse.swt.widgets.Text; public class EditFilterDialog extends Dialog { private static final int DLG_WIDTH = 400; - private static final int DLG_HEIGHT = 250; + private static final int DLG_HEIGHT = 260; + + private static final String IMAGE_WARNING = "warning.png"; //$NON-NLS-1$ + private static final String IMAGE_EMPTY = "empty.png"; //$NON-NLS-1$ private Shell mParent; @@ -68,6 +71,8 @@ public class EditFilterDialog extends Dialog { private Button mOkButton; + private Label mNameWarning; + private Label mTagWarning; private Label mPidWarning; public EditFilterDialog(Shell parent) { @@ -151,7 +156,7 @@ public class EditFilterDialog extends Dialog { // top part with the filter name Composite nameComposite = new Composite(mShell, SWT.NONE); nameComposite.setLayoutData(new GridData(GridData.FILL_BOTH)); - nameComposite.setLayout(new GridLayout(2, false)); + nameComposite.setLayout(new GridLayout(3, false)); Label l = new Label(nameComposite, SWT.NONE); l.setText("Filter Name:"); @@ -172,6 +177,10 @@ public class EditFilterDialog extends Dialog { } }); + mNameWarning = new Label(nameComposite, SWT.NONE); + mNameWarning.setImage(ImageLoader.getDdmUiLibLoader().loadImage(IMAGE_EMPTY, + mShell.getDisplay())); + // separator l = new Label(mShell, SWT.SEPARATOR | SWT.HORIZONTAL); l.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); @@ -192,9 +201,8 @@ public class EditFilterDialog extends Dialog { tagText.setText(mTag); } } - GridData gd = new GridData(GridData.FILL_HORIZONTAL); - gd.horizontalSpan = 2; - tagText.setLayoutData(gd); + + tagText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); tagText.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent e) { mTag = tagText.getText().trim(); @@ -202,6 +210,10 @@ public class EditFilterDialog extends Dialog { } }); + mTagWarning = new Label(main, SWT.NONE); + mTagWarning.setImage(ImageLoader.getDdmUiLibLoader().loadImage(IMAGE_EMPTY, + mShell.getDisplay())); + l = new Label(main, SWT.NONE); l.setText("by pid:"); @@ -223,14 +235,14 @@ public class EditFilterDialog extends Dialog { }); mPidWarning = new Label(main, SWT.NONE); - mPidWarning.setImage(ImageLoader.getDdmUiLibLoader().loadImage("empty.png", //$NON-NLS-1$ + mPidWarning.setImage(ImageLoader.getDdmUiLibLoader().loadImage(IMAGE_EMPTY, mShell.getDisplay())); l = new Label(main, SWT.NONE); l.setText("by Log level:"); final Combo logCombo = new Combo(main, SWT.DROP_DOWN | SWT.READ_ONLY); - gd = new GridData(GridData.FILL_HORIZONTAL); + GridData gd = new GridData(GridData.FILL_HORIZONTAL); gd.horizontalSpan = 2; logCombo.setLayoutData(gd); @@ -324,26 +336,58 @@ public class EditFilterDialog extends Dialog { */ private void validate() { + boolean result = true; + // then we check it only contains digits. if (mPid != null) { if (mPid.matches("[0-9]*") == false) { //$NON-NLS-1$ - mOkButton.setEnabled(false); mPidWarning.setImage(ImageLoader.getDdmUiLibLoader().loadImage( - "warning.png", //$NON-NLS-1$ + IMAGE_WARNING, mShell.getDisplay())); - return; + mPidWarning.setToolTipText("PID must be a number"); //$NON-NLS-1$ + result = false; } else { mPidWarning.setImage(ImageLoader.getDdmUiLibLoader().loadImage( - "empty.png", //$NON-NLS-1$ + IMAGE_EMPTY, mShell.getDisplay())); + mPidWarning.setToolTipText(null); } } - if (mName == null || mName.length() == 0) { - mOkButton.setEnabled(false); - return; + // then we check it not contains character | or : + if (mTag != null) { + if (mTag.matches(".*[:|].*") == true) { //$NON-NLS-1$ + mTagWarning.setImage(ImageLoader.getDdmUiLibLoader().loadImage( + IMAGE_WARNING, + mShell.getDisplay())); + mTagWarning.setToolTipText("Tag cannot contain | or :"); //$NON-NLS-1$ + result = false; + } else { + mTagWarning.setImage(ImageLoader.getDdmUiLibLoader().loadImage( + IMAGE_EMPTY, + mShell.getDisplay())); + mTagWarning.setToolTipText(null); + } + } + + // then we check it not contains character | or : + if (mName != null && mName.length() > 0) { + if (mName.matches(".*[:|].*") == true) { //$NON-NLS-1$ + mNameWarning.setImage(ImageLoader.getDdmUiLibLoader().loadImage( + IMAGE_WARNING, + mShell.getDisplay())); + mNameWarning.setToolTipText("Name cannot contain | or :"); //$NON-NLS-1$ + result = false; + } else { + mNameWarning.setImage(ImageLoader.getDdmUiLibLoader().loadImage( + IMAGE_EMPTY, + mShell.getDisplay())); + mNameWarning.setToolTipText(null); + } + } else { + result = false; } - mOkButton.setEnabled(true); + mOkButton.setEnabled(result); } } -- 2.11.0