protected void initController() {
    view.getDataSourceDetail().add(defaultSubeditor.getView(), "default");
    view.getFactories().setEditable(true);
    // init combo box choices
    view.getFactories().setModel(new DefaultComboBoxModel(standardDataSourceFactories));

    view.getSchemaUpdateStrategy().setEditable(true);
    view.getSchemaUpdateStrategy().setModel(new DefaultComboBoxModel(standardSchemaUpdateStrategy));

    // init listeners
    ((ProjectController) getParent())
        .addDataNodeDisplayListener(
            new DataNodeDisplayListener() {

              public void currentDataNodeChanged(DataNodeDisplayEvent e) {
                refreshView(e.getDataNode());
              }
            });

    getView()
        .addComponentListener(
            new ComponentAdapter() {

              public void componentShown(ComponentEvent e) {
                refreshView(
                    node != null ? node : ((ProjectController) getParent()).getCurrentDataNode());
              }
            });

    BindingBuilder builder = new BindingBuilder(getApplication().getBindingFactory(), this);

    localDataSourceBinding =
        builder.bindToComboSelection(
            view.getLocalDataSources(),
            "parent.dataNodePreferences.localDataSource",
            NO_LOCAL_DATA_SOURCE);

    // use delegate for the rest of them

    builder.setDelegate(nodeChangeProcessor);

    bindings = new ObjectBinding[3];
    bindings[0] = builder.bindToTextField(view.getDataNodeName(), "nodeName");
    bindings[1] = builder.bindToComboSelection(view.getFactories(), "factoryName");
    bindings[2] =
        builder.bindToComboSelection(view.getSchemaUpdateStrategy(), "schemaUpdateStrategy");

    // one way bindings
    builder.bindToAction(view.getConfigLocalDataSources(), "dataSourceConfigAction()");
  }
  protected void initBindings() {

    // bind actions
    BindingBuilder builder = new BindingBuilder(getApplication().getBindingFactory(), this);

    builder.bindToAction(view.getGenerationMode(), "updateModeAction()");

    CayenneProjectPreferences cayPrPref = application.getCayenneProjectPreferences();

    this.preferences =
        (PreferenceDetail)
            cayPrPref.getProjectDetailObject(
                PreferenceDetail.class, getViewPreferences().node("controller"));

    if (Util.isEmptyString(preferences.getProperty("mode"))) {
      preferences.setProperty("mode", STANDARD_OBJECTS_MODE);
    }

    builder
        .bindToComboSelection(view.getGenerationMode(), "preferences.property['mode']")
        .updateView();

    updateModeAction();
  }