X-Git-Url: http://secure.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/preferences/TodoTaskInputDialog.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/preferences/TodoTaskInputDialog.java new file mode 100644 index 0000000..0d6effb --- /dev/null +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/preferences/TodoTaskInputDialog.java @@ -0,0 +1,177 @@ +/******************************************************************************* + * Copyright (c) 2000, 2003 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +package net.sourceforge.phpdt.internal.ui.preferences; + +import java.util.ArrayList; +import java.util.List; + +import net.sourceforge.phpdt.core.JavaCore; +import net.sourceforge.phpdt.internal.ui.IJavaHelpContextIds; +import net.sourceforge.phpdt.internal.ui.dialogs.StatusDialog; +import net.sourceforge.phpdt.internal.ui.dialogs.StatusInfo; +import net.sourceforge.phpdt.internal.ui.preferences.TodoTaskConfigurationBlock.TodoTask; +import net.sourceforge.phpdt.internal.ui.wizards.dialogfields.ComboDialogField; +import net.sourceforge.phpdt.internal.ui.wizards.dialogfields.DialogField; +import net.sourceforge.phpdt.internal.ui.wizards.dialogfields.IDialogFieldListener; +import net.sourceforge.phpdt.internal.ui.wizards.dialogfields.LayoutUtil; +import net.sourceforge.phpdt.internal.ui.wizards.dialogfields.StringDialogField; + +import org.eclipse.swt.SWT; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.ui.PlatformUI; + +/** + * Dialog to enter a na new task tag + */ +public class TodoTaskInputDialog extends StatusDialog { + + private class CompilerTodoTaskInputAdapter implements IDialogFieldListener { + public void dialogFieldChanged(DialogField field) { + doValidation(); + } + } + + private StringDialogField fNameDialogField; + + private ComboDialogField fPriorityDialogField; + + private List fExistingNames; + + public TodoTaskInputDialog(Shell parent, TodoTask task, List existingEntries) { + super(parent); + + fExistingNames = new ArrayList(existingEntries.size()); + for (int i = 0; i < existingEntries.size(); i++) { + TodoTask curr = (TodoTask) existingEntries.get(i); + if (!curr.equals(task)) { + fExistingNames.add(curr.name); + } + } + + if (task == null) { + setTitle(PreferencesMessages + .getString("TodoTaskInputDialog.new.title")); //$NON-NLS-1$ + } else { + setTitle(PreferencesMessages + .getString("TodoTaskInputDialog.edit.title")); //$NON-NLS-1$ + } + + CompilerTodoTaskInputAdapter adapter = new CompilerTodoTaskInputAdapter(); + + fNameDialogField = new StringDialogField(); + fNameDialogField.setLabelText(PreferencesMessages + .getString("TodoTaskInputDialog.name.label")); //$NON-NLS-1$ + fNameDialogField.setDialogFieldListener(adapter); + + fNameDialogField.setText((task != null) ? task.name : ""); //$NON-NLS-1$ + + String[] items = new String[] { + PreferencesMessages + .getString("TodoTaskInputDialog.priority.high"), //$NON-NLS-1$ + PreferencesMessages + .getString("TodoTaskInputDialog.priority.normal"), //$NON-NLS-1$ + PreferencesMessages + .getString("TodoTaskInputDialog.priority.low") //$NON-NLS-1$ + }; + + fPriorityDialogField = new ComboDialogField(SWT.READ_ONLY); + fPriorityDialogField.setLabelText(PreferencesMessages + .getString("TodoTaskInputDialog.priority.label")); //$NON-NLS-1$ + fPriorityDialogField.setItems(items); + if (task != null) { + if (JavaCore.COMPILER_TASK_PRIORITY_HIGH.equals(task.priority)) { + fPriorityDialogField.selectItem(0); + } else if (JavaCore.COMPILER_TASK_PRIORITY_NORMAL + .equals(task.priority)) { + fPriorityDialogField.selectItem(1); + } else { + fPriorityDialogField.selectItem(2); + } + } else { + fPriorityDialogField.selectItem(1); + } + } + + public TodoTask getResult() { + TodoTask task = new TodoTask(); + task.name = fNameDialogField.getText().trim(); + switch (fPriorityDialogField.getSelectionIndex()) { + case 0: + task.priority = JavaCore.COMPILER_TASK_PRIORITY_HIGH; + break; + case 1: + task.priority = JavaCore.COMPILER_TASK_PRIORITY_NORMAL; + break; + default: + task.priority = JavaCore.COMPILER_TASK_PRIORITY_LOW; + break; + } + return task; + } + + protected Control createDialogArea(Composite parent) { + Composite composite = (Composite) super.createDialogArea(parent); + + Composite inner = new Composite(composite, SWT.NONE); + GridLayout layout = new GridLayout(); + layout.marginHeight = 0; + layout.marginWidth = 0; + layout.numColumns = 2; + inner.setLayout(layout); + + fNameDialogField.doFillIntoGrid(inner, 2); + fPriorityDialogField.doFillIntoGrid(inner, 2); + + LayoutUtil.setHorizontalGrabbing(fNameDialogField.getTextControl(null)); + LayoutUtil.setWidthHint(fNameDialogField.getTextControl(null), + convertWidthInCharsToPixels(45)); + + fNameDialogField.postSetFocusOnDialogField(parent.getDisplay()); + + applyDialogFont(composite); + return composite; + } + + private void doValidation() { + StatusInfo status = new StatusInfo(); + String newText = fNameDialogField.getText(); + if (newText.length() == 0) { + status.setError(PreferencesMessages + .getString("TodoTaskInputDialog.error.enterName")); //$NON-NLS-1$ + } else { + if (newText.indexOf(',') != -1) { + status.setError(PreferencesMessages + .getString("TodoTaskInputDialog.error.comma")); //$NON-NLS-1$ + } else if (fExistingNames.contains(newText)) { + status.setError(PreferencesMessages + .getString("TodoTaskInputDialog.error.entryExists")); //$NON-NLS-1$ + } else if (Character.isWhitespace(newText.charAt(0)) + || Character.isWhitespace(newText + .charAt(newText.length() - 1))) { + status.setError(PreferencesMessages + .getString("TodoTaskInputDialog.error.noSpace")); //$NON-NLS-1$ + } + } + updateStatus(status); + } + + /* + * @see org.eclipse.jface.window.Window#configureShell(Shell) + */ + protected void configureShell(Shell newShell) { + super.configureShell(newShell); + PlatformUI.getWorkbench().getHelpSystem().setHelp(newShell, + IJavaHelpContextIds.TODO_TASK_INPUT_DIALOG); + } +}