public TodoTaskConfigurationBlock(
      IStatusChangeListener context, IProject project, IWorkbenchPreferenceContainer container) {
    super(context, project, ALL_KEYS, container);

    TaskTagAdapter adapter = new TaskTagAdapter();
    String[] buttons =
        new String[] {
          PreferencesMessages.TodoTaskConfigurationBlock_markers_tasks_add_button,
          PreferencesMessages.TodoTaskConfigurationBlock_markers_tasks_edit_button,
          PreferencesMessages.TodoTaskConfigurationBlock_markers_tasks_remove_button,
          null,
          PreferencesMessages.TodoTaskConfigurationBlock_markers_tasks_setdefault_button,
        };
    fTodoTasksList = new ListDialogField<TodoTask>(adapter, buttons, new TodoTaskLabelProvider());
    fTodoTasksList.setDialogFieldListener(adapter);
    fTodoTasksList.setRemoveButtonIndex(IDX_REMOVE);

    String[] columnsHeaders =
        new String[] {
          PreferencesMessages.TodoTaskConfigurationBlock_markers_tasks_name_column,
          PreferencesMessages.TodoTaskConfigurationBlock_markers_tasks_priority_column,
        };

    fTodoTasksList.setTableColumns(new ListDialogField.ColumnsDescription(columnsHeaders, true));
    fTodoTasksList.setViewerComparator(new TodoTaskSorter());

    fCaseSensitiveCheckBox = new SelectionButtonDialogField(SWT.CHECK);
    fCaseSensitiveCheckBox.setLabelText(
        PreferencesMessages.TodoTaskConfigurationBlock_casesensitive_label);
    fCaseSensitiveCheckBox.setDialogFieldListener(adapter);

    unpackTodoTasks();
    if (fTodoTasksList.getSize() > 0) {
      fTodoTasksList.selectFirstElement();
    } else {
      fTodoTasksList.enableButton(IDX_EDIT, false);
      fTodoTasksList.enableButton(IDX_DEFAULT, false);
    }

    fTaskTagsStatus = new StatusInfo();
  }