/** Creates a new {@link NewRooProjectWizardPageOne}. */
  public NewRooProjectWizardPageOne() {
    super(PAGE_NAME);
    setPageComplete(false);
    setTitle("Create a new Roo Project");
    setDescription("Create a Roo project in the workspace or in an external location.");

    fNameGroup = new NameGroup();
    fLocationGroup = new LocationGroup();
    fWorkingSetGroup = new WorkingSetGroup();
    rooInstallGroup = new RooInstallGroup();
    dependencyManagementGroup = new DependencyManagementGroup();
    packagingProviderGroup = new PackagingProviderGroup();
    listener = new InstallChangeListener();

    RooCoreActivator.getDefault().getInstallManager().addRooInstallListener(listener);

    // establish connections
    fNameGroup.addObserver(fLocationGroup);

    // initialize all elements
    fNameGroup.notifyObservers();

    // create and connect validator
    fValidator = new Validator();
    fNameGroup.addObserver(fValidator);
    fLocationGroup.addObserver(fValidator);
    rooInstallGroup.addObserver(fValidator);

    rooInstallGroup.addObserver(packagingProviderGroup);

    // initialize defaults
    setProjectName(""); // $NON-NLS-1$
    setProjectLocationURI(null);
    setWorkingSets(new IWorkingSet[0]);
  }
  /*
   * (non-Javadoc)
   *
   * @see
   * org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets
   * .Composite)
   */
  public void createControl(Composite parent) {
    initializeDialogUnits(parent);

    final Composite composite = new Composite(parent, SWT.NULL);
    composite.setFont(parent.getFont());
    composite.setLayout(initGridLayout(new GridLayout(1, false), true));
    composite.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));

    // create UI elements
    Control nameControl = createNameControl(composite);
    nameControl.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

    Control rooHomeControl = rooInstallGroup.createControl(composite);
    rooHomeControl.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

    if (DependencyManagementUtils.IS_M2ECLIPSE_PRESENT
        || DependencyManagementUtils.IS_STS_MAVEN_PRESENT) {
      Control dependencyManagementControl = dependencyManagementGroup.createControl(composite);
      dependencyManagementControl.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
    }

    Control providerControl = packagingProviderGroup.createControl(composite);
    providerControl.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

    Control locationControl = createLocationControl(composite);
    locationControl.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

    Control workingSetControl = createWorkingSetControl(composite);
    workingSetControl.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

    setControl(composite);
  }