protected void updateBindings() {
    // Destroy any old bindings
    if (nextButtonBinding != null) {
      nextButtonBinding.destroyBindings();
    }
    if (finishedButtonBinding != null) {
      finishedButtonBinding.destroyBindings();
    }

    // Create new binding to the current wizard panel
    bf.setBindingType(Binding.Type.ONE_WAY);
    nextButtonBinding =
        bf.createBinding(
            getStep(getActiveStep()),
            VALID_PROPERTY_NAME,
            NEXT_BTN_ELEMENT_ID,
            DISABLED_PROPERTY_NAME,
            notDisabledBindingConvertor);

    finishedButtonBinding =
        bf.createBinding(
            activeDatasource,
            FINISHABLE_PROPERTY_NAME,
            FINISH_BTN_ELEMENT_ID,
            DISABLED_PROPERTY_NAME,
            notDisabledBindingConvertor);

    try {
      nextButtonBinding.fireSourceChanged();
      finishedButtonBinding.fireSourceChanged();
    } catch (Exception e) {
      // TODO add some exception handling here.
    }
  }
 public void createBindings() {
   refreshPartitions();
   try {
     partitionsTable = (XulTree) document.getElementById("partitions-table");
     bf.setBindingType(Binding.Type.ONE_WAY);
     bf.createBinding(partitionList, "children", partitionsTable, "elements").fireSourceChanged();
     bf.createBinding(partitionsTable, "selectedItems", this, "enableButtons");
   } catch (Exception e) {
     // convert to runtime exception so it bubbles up through the UI
     throw new RuntimeException(e);
   }
 }
  @Override
  protected boolean doLazyInit() {
    try {
      mainController = (MainController) this.getXulDomContainer().getEventHandler("mainController");
    } catch (XulException e) {
      return false;
    }

    try {
      setRepReadOnly(this.repository.getRepositoryMeta().getRepositoryCapabilities().isReadOnly());

      // Load the SWT Shell from the explorer dialog
      shell = ((SwtDialog) document.getElementById("repository-explorer-dialog")).getShell();
      bf = new DefaultBindingFactory();
      bf.setDocument(this.getXulDomContainer().getDocumentRoot());

      if (bf != null) {
        createBindings();
      }
      enableButtons(true, false, false);

      return true;
    } catch (Exception e) {
      if (mainController == null || !mainController.handleLostRepository(e)) {
        return false;
      }
    }

    return false;
  }
  @Override
  protected void createBindings(
      SqoopImportConfig config,
      XulDomContainer container,
      BindingFactory bindingFactory,
      Collection<Binding> bindings) {
    super.createBindings(config, container, bindingFactory, bindings);

    bindings.add(bindingFactory.createBinding(config, TARGET_DIR, TARGET_DIR, "value"));
  }
  private void createBindings() {
    refreshConnectionList();
    connectionsTable = (XulTree) document.getElementById("connections-table");

    // Bind the connection table to a list of connections
    bf.setBindingType(Binding.Type.ONE_WAY);

    // CHECKSTYLE:LineLength:OFF
    try {
      bf.createBinding(dbConnectionList, "children", connectionsTable, "elements")
          .fireSourceChanged();
      (bindButtonNew = bf.createBinding(this, "repReadOnly", "connections-new", "disabled"))
          .fireSourceChanged();
      (bindButtonEdit = bf.createBinding(this, "repReadOnly", "connections-edit", "disabled"))
          .fireSourceChanged();
      (bindButtonRemove = bf.createBinding(this, "repReadOnly", "connections-remove", "disabled"))
          .fireSourceChanged();

      if (repository != null) {
        bf.createBinding(connectionsTable, "selectedItems", this, "selectedConnections");
      }
    } catch (Exception ex) {
      if (mainController == null || !mainController.handleLostRepository(ex)) {
        // convert to runtime exception so it bubbles up through the UI
        throw new RuntimeException(ex);
      }
    }
  }
  protected boolean doLazyInit() {
    // Load the SWT Shell from the explorer dialog
    shell = ((SwtDialog) document.getElementById("repository-explorer-dialog")).getShell();

    enableButtons(true, false, false);
    bf = new SwtBindingFactory();
    bf.setDocument(this.getXulDomContainer().getDocumentRoot());

    if (bf != null) {
      createBindings();
    }
    return true;
  }
  /**
   * Initialize this dialog for the job entry instance provided.
   *
   * @param jobEntry The job entry this dialog supports.
   */
  protected void init(E jobEntry) throws XulException {
    SwtXulLoader swtXulLoader = new SwtXulLoader();
    // Register the settings manager so dialog position and size is restored
    swtXulLoader.setSettingsManager(XulSpoonSettingsManager.getInstance());
    swtXulLoader.registerClassLoader(getClass().getClassLoader());
    // Register Kettle's variable text box so we can reference it from XUL
    swtXulLoader.register("VARIABLETEXTBOX", ExtTextbox.class.getName());
    swtXulLoader.setOuterContext(shell);

    // Load the XUL document with the dialog defined in it
    XulDomContainer container = swtXulLoader.loadXul(getXulFile(), bundle);

    // Create the controller with a default binding factory for the document we just loaded
    BindingFactory bf = new DefaultBindingFactory();
    bf.setDocument(container.getDocumentRoot());
    controller = createController(container, jobEntry, bf);
    container.addEventHandler(controller);

    // Load up the SWT-XUL runtime and initialize it with our container
    final XulRunner runner = new SwtXulRunner();
    runner.addContainer(container);
    runner.initialize();
  }
  public void init() {

    // We need the SelectDatasourceStep at all times, add it now

    wizardDialog = (XulDialog) document.getElementById("main_wizard_window");

    summaryDialog = (XulDialog) document.getElementById("summaryDialog");

    finishButton = (XulButton) document.getElementById(FINISH_BTN_ELEMENT_ID);

    datasourceName = (XulTextbox) document.getElementById("datasourceName"); // $NON-NLS-1$
    bf.createBinding(datasourceName, "value", wizardModel, "datasourceName");
    wizardModel.addPropertyChangeListener(
        new PropertyChangeListener() {
          @Override
          public void propertyChange(PropertyChangeEvent propertyChangeEvent) {
            if (propertyChangeEvent.getPropertyName().equals("datasourceName")) {
              steps.get(activeStep).setValid(steps.get(activeStep).isValid());
            }
          }
        });

    bf.setBindingType(Binding.Type.ONE_WAY);

    datatypeMenuList = (XulMenuList) document.getElementById("datatypeMenuList");

    Binding datasourceBinding =
        bf.createBinding(wizardModel, "datasources", datatypeMenuList, "elements");
    bf.setBindingType(Binding.Type.ONE_WAY);
    bf.createBinding(datatypeMenuList, "selectedItem", wizardModel, "selectedDatasource");

    bf.setBindingType(Binding.Type.ONE_WAY);
    bf.createBinding(wizardModel, "selectedDatasource", this, "selectedDatasource");
    bf.createBinding(
        this,
        ACTIVE_STEP_PROPERTY_NAME,
        BACK_BTN_ELEMENT_ID,
        DISABLED_PROPERTY_NAME,
        new BackButtonBindingConverter());

    dummyDatasource = ((DummyDatasource) wizardModel.getDatasources().iterator().next());
    activeDatasource = dummyDatasource;
    selectDatasourceStep = dummyDatasource.getSelectDatasourceStep();

    try {
      for (IWizardDatasource datasource : wizardModel.getDatasources()) {
        datasource.init(getXulDomContainer(), wizardModel);
      }
      steps.add(selectDatasourceStep);
      selectDatasourceStep.activating();
      setActiveStep(0);
      datasourceBinding.fireSourceChanged();
      setSelectedDatasource(dummyDatasource);
      datasourceService.getDatasourceIllegalCharacters(
          new XulServiceCallback<String>() {
            @Override
            public void success(String retVal) {}

            @Override
            public void error(String message, Throwable error) {}
          });
    } catch (XulException e) {
      MessageHandler.getInstance().showErrorDialog("Error", e.getMessage());
      e.printStackTrace();
    } catch (InvocationTargetException e) {
      MessageHandler.getInstance().showErrorDialog("Error", e.getMessage());
      e.printStackTrace();
    }
  }
  public void xulLoaded(GwtXulRunner gwtXulRunner) {
    container = gwtXulRunner.getXulDomContainers().get(0);
    container.addEventHandler(this);

    BogoPojo bogo = new BogoPojo();
    service.gwtWorkaround(
        bogo,
        new XulServiceCallback<BogoPojo>() {
          public void success(BogoPojo retVal) {}

          public void error(String message, Throwable error) {}
        });

    datasourceService = new DSWDatasourceServiceGwtImpl();
    //    connectionService = new ConnectionServiceGwtImpl();
    csvService = (ICsvDatasourceServiceAsync) GWT.create(ICsvDatasourceService.class);

    if (wizard == null) {
      wizard = new EmbeddedWizard(false);

      wizard.setDatasourceService(datasourceService);
      //      wizard.setConnectionService(connectionService);
      wizard.setCsvDatasourceService(csvService);
      wizard.init(null);
    }

    messages = new GwtModelerMessages((ResourceBundle) container.getResourceBundles().get(0));
    try {
      ModelerMessagesHolder.setMessages(messages);
    } catch (Exception ignored) {
      // Messages may have been set earlier, ignore.
    }

    IModelerWorkspaceHelper workspacehelper = model.getWorkspaceHelper();

    controller = new ModelerController(model);
    controller.setWorkspaceHelper(workspacehelper);
    //    controller.setMessages(messages);
    final BindingFactory bf = new GwtBindingFactory(container.getDocumentRoot());
    controller.setBindingFactory(bf);
    container.addEventHandler(controller);
    try {
      controller.init();
    } catch (ModelerException e) {
      e.printStackTrace();
    }

    bf.setBindingType(Binding.Type.ONE_WAY);
    bf.createBinding(
        model,
        "valid",
        "modeler_dialog_accept",
        "disabled",
        new BindingConvertor<Boolean, Boolean>() {
          @Override
          public Boolean sourceToTarget(Boolean value) {
            return !value;
          }

          @Override
          public Boolean targetToSource(Boolean value) {
            return !value;
          }
        });

    bf.setBindingType(Binding.Type.BI_DIRECTIONAL);

    // go get the geocontext from the server. Prop forms are initialized after this call returns as
    // they
    // may need them to create the UI
    datasourceService.getGeoContext(
        new XulServiceCallback<GeoContext>() {
          public void success(GeoContext geoContext) {
            model.setGeoContext(geoContext);
            ModelerUiHelper.configureControllers(
                container, model, bf, controller, new ColResolverController());
            ModelerDialog.this.constructorListener.asyncConstructorDone(ModelerDialog.this);
          }

          public void error(String s, Throwable throwable) {
            throwable.printStackTrace();
            // put in a stub to ensure the rest of the dialog works
            model.setGeoContext(new GeoContext());
            ModelerUiHelper.configureControllers(
                container, model, bf, controller, new ColResolverController());
            ModelerDialog.this.constructorListener.asyncConstructorDone(ModelerDialog.this);
          }
        });
  }