/** @param parent the parent composite */
  private void createIsProtected(Composite parent) {
    Composite leftComposite = createComposite(parent, NUM_COLUMNS_1, GridData.BEGINNING, false);
    Composite rightComposite = createComposite(parent, NUM_COLUMNS_2, GridData.FILL, true);
    ControlDecorator.decorateInfo(
        createLabel(leftComposite, Messages.ProjectPropertyPageIsProtected),
        "ControlDecorator.NewProjectIsProtected",
        false); //$NON-NLS-1$
    m_isProtectedCheckbox = new Button(rightComposite, SWT.CHECK);

    m_isProtectedCheckbox.setSelection(m_oldIsProtected);
  }
  /** @param parent The parent <code>Composite</code> */
  private void createCleanTestResults(Composite parent) {
    m_cleanTestresults = new Button(parent, SWT.CHECK);
    m_cleanTestresults.setText(Messages.TestResultViewPreferencePageCleanResults);
    GridData gridData = new GridData(GridData.FILL_HORIZONTAL);
    gridData.horizontalSpan = 1;
    gridData.grabExcessHorizontalSpace = false;
    m_cleanTestresults.setLayoutData(gridData);
    int testResultCleanupInterval = getProject().getTestResultCleanupInterval();
    m_cleanTestresults.setSelection(testResultCleanupInterval != IProjectPO.NO_CLEANUP);
    m_cleanTestresults.addSelectionListener(
        new SelectionListener() {
          public void widgetSelected(SelectionEvent e) {
            enableCleanResultDaysTextfield();
            checkCompleteness();
          }

          public void widgetDefaultSelected(SelectionEvent e) {
            // nothing here
          }
        });
    m_cleanResultDays = new CheckedIntText(parent, SWT.BORDER, false, 1, Integer.MAX_VALUE);
    gridData = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
    gridData.horizontalSpan = 1;
    gridData.grabExcessHorizontalSpace = false;
    gridData.widthHint = 80;
    m_cleanResultDays.setLayoutData(gridData);
    if (testResultCleanupInterval > 0) {
      m_cleanResultDays.setText(String.valueOf(testResultCleanupInterval));
    }
    m_cleanResultDays.addKeyListener(
        new KeyListener() {
          public void keyPressed(KeyEvent e) {
            // nothing
          }

          public void keyReleased(KeyEvent e) {
            checkCompleteness();
          }
        });
    Label label = new Label(parent, SWT.NONE);
    label.setText(Messages.TestResultViewPreferencePageCleanDaysLabel);
    gridData = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
    gridData.horizontalSpan = 1;
    gridData.grabExcessHorizontalSpace = false;
    label.setLayoutData(gridData);
    enableCleanResultDaysTextfield();
    ControlDecorator.decorateInfo(
        label, "TestResultViewPreferencePage.cleanResultsInfo", false); // $NON-NLS-1$
  }
  /** @param parent the parent composite */
  private void createGuidInfo(Composite parent) {
    Composite leftComposite = createComposite(parent, NUM_COLUMNS_1, GridData.BEGINNING, false);
    Composite rightComposite = createComposite(parent, 3, GridData.FILL, true);

    ControlDecorator.decorateInfo(
        createLabel(leftComposite, Messages.ProjectPropertyPageProjectGuid),
        "ControlDecorator.ProjectPropertiesGUID",
        false); //$NON-NLS-1$

    Text projectGuid = new Text(rightComposite, SWT.READ_ONLY | SWT.BORDER);
    projectGuid.setText(m_projectGuid);
    Label l = createLabel(rightComposite, StringConstants.EMPTY);
    GridData layoutData = new GridData();
    layoutData.grabExcessHorizontalSpace = true;
    layoutData.horizontalAlignment = GridData.FILL;
    l.setLayoutData(layoutData);
  }
  /** @param parent the parent composite */
  private void createIsReusable(Composite parent) {
    Composite leftComposite = createComposite(parent, NUM_COLUMNS_1, GridData.BEGINNING, false);
    Composite rightComposite = createComposite(parent, NUM_COLUMNS_2, GridData.FILL, true);
    ControlDecorator.decorateInfo(
        createLabel(leftComposite, Messages.ProjectPropertyPageIsReusable),
        "ControlDecorator.NewProjectIsReusable",
        false); //$NON-NLS-1$
    m_isReusableCheckbox = new Button(rightComposite, SWT.CHECK);

    m_isReusableCheckbox.setSelection(m_oldIsReusable);
    m_isReusableCheckbox.addSelectionListener(
        new SelectionListener() {
          public void widgetSelected(SelectionEvent e) {
            boolean isReusable = m_isReusableCheckbox.getSelection();
            if (isReusable) {
              m_isProtectedCheckbox.setSelection(true);
            }
          }

          public void widgetDefaultSelected(SelectionEvent e) {
            widgetSelected(e);
          }
        });
  }