@Override
  public void enter() {
    super.enter();

    if (connectionStatus != null && connectionStatus.isOK()) {
      refreshApplications();
      refreshEnvironments();
    }
  }
 /** Cancel any outstanding work before exiting. */
 @Override
 public void exit() {
   cancelThread(loadApplicationsThread);
   cancelThread(loadEnvironmentsThread);
   super.exit();
 }
  private void bindControls() {
    super.initializeValidators();

    newApplicationNameTextObservable =
        SWTObservables.observeText(newApplicationNameText, SWT.Modify);
    bindingContext.bindValue(
        newApplicationNameTextObservable,
        PojoObservables.observeValue(wizardDataModel, DeployWizardDataModel.NEW_APPLICATION_NAME),
        null,
        null);
    ChainValidator<String> applicationNameValidator =
        new ChainValidator<String>(
            newApplicationNameTextObservable,
            createNewApplicationRadioButtonObservable,
            new ApplicationNameValidator(),
            new NotInListValidator<String>(
                existingApplicationNames, "Duplicate application name."));
    bindingContext.addValidationStatusProvider(applicationNameValidator);
    bindingContext.addValidationStatusProvider(
        new ChainValidator<Boolean>(
            applicationNamesLoaded, new BooleanValidator("Appliction names not yet loaded")));
    new DecorationChangeListener(
        newApplicationNameDecoration, applicationNameValidator.getValidationStatus());
    newApplicationDescriptionTextObservable =
        SWTObservables.observeText(newApplicationDescriptionText, SWT.Modify);
    bindingContext.bindValue(
        newApplicationDescriptionTextObservable,
        PojoObservables.observeValue(
            wizardDataModel, DeployWizardDataModel.NEW_APPLICATION_DESCRIPTION),
        null,
        null);
    bindingContext.bindValue(
        createNewApplicationRadioButtonObservable,
        PojoObservables.observeValue(
            wizardDataModel, DeployWizardDataModel.CREATING_NEW_APPLICATION),
        null,
        null);

    // Existing application bindings
    bindingContext.bindValue(
        SWTObservables.observeSelection(existingApplicationCombo),
        PojoObservables.observeValue(
            wizardDataModel, DeployWizardDataModel.EXISTING_APPLICATION_NAME));

    // New environment bindings
    newEnvironmentNameTextObservable =
        SWTObservables.observeText(newEnvironmentNameText, SWT.Modify);
    bindingContext.bindValue(
        newEnvironmentNameTextObservable,
        PojoObservables.observeValue(wizardDataModel, DeployWizardDataModel.NEW_ENVIRONMENT_NAME),
        null,
        null);
    newEnvironmentDescriptionTextObservable =
        SWTObservables.observeText(newEnvironmentDescriptionText, SWT.Modify);
    bindingContext.bindValue(
        newEnvironmentDescriptionTextObservable,
        PojoObservables.observeValue(
            wizardDataModel, DeployWizardDataModel.NEW_ENVIRONMENT_DESCRIPTION),
        null,
        null);
    ChainValidator<String> environmentNameValidator =
        new ChainValidator<String>(
            newEnvironmentNameTextObservable,
            new EnvironmentNameValidator(),
            new NotInListValidator<String>(
                existingEnvironmentNames, "Duplicate environment name."));
    bindingContext.addValidationStatusProvider(environmentNameValidator);
    bindingContext.addValidationStatusProvider(
        new ChainValidator<Boolean>(
            environmentNamesLoaded, new BooleanValidator("Environment names not yet loaded")));
    new DecorationChangeListener(
        newEnvironmentNameDecoration, environmentNameValidator.getValidationStatus());

    environmentTypeComboObservable = SWTObservables.observeSelection(environmentTypeCombo);
    bindingContext.bindValue(
        environmentTypeComboObservable,
        PojoObservables.observeValue(wizardDataModel, DeployWizardDataModel.ENVIRONMENT_TYPE));

    useNonDefaultVpcButtonObservable = SWTObservables.observeSelection(useNonDefaultVpcButton);
    bindingContext.bindValue(
        useNonDefaultVpcButtonObservable,
        PojoObservables.observeValue(wizardDataModel, DeployWizardDataModel.USE_NON_DEFAULT_VPC));
  }