/** @see de.willuhn.jameica.gui.AbstractView#bind() */
  public void bind() throws Exception {
    final AuslandsUeberweisungControl control = new AuslandsUeberweisungControl(this);
    this.transfer = control.getTransfer();

    GUI.getView().setTitle(i18n.tr("SEPA-Überweisung bearbeiten"));
    GUI.getView()
        .addPanelButton(
            new PanelButton(
                "edit-select-all.png",
                new SepaExportUeberweisung(transfer),
                i18n.tr("Als SEPA-XML-Datei exportieren...")));
    GUI.getView()
        .addPanelButton(new PanelButtonPrint(new PrintSupportAuslandsUeberweisung(transfer)));

    Container cl = new SimpleContainer(getParent());
    cl.addHeadline(i18n.tr("Konto"));
    cl.addInput(control.getKontoAuswahl());

    ColumnLayout cols = new ColumnLayout(getParent(), 2);

    // Linke Seite
    {
      Container container = new SimpleContainer(cols.getComposite());
      container.addHeadline(i18n.tr("Empfänger"));
      container.addLabelPair(i18n.tr("Name"), control.getEmpfaengerName());
      container.addLabelPair(i18n.tr("IBAN"), control.getEmpfaengerKonto());
      container.addLabelPair(i18n.tr("BIC"), control.getEmpfaengerBic());
      container.addCheckbox(control.getStoreEmpfaenger(), i18n.tr("In Adressbuch übernehmen"));
    }

    // Rechte Seite
    {
      Container container = new SimpleContainer(cols.getComposite());
      container.addHeadline(i18n.tr("SEPA"));
      container.addInput(control.getEndToEndId());
      container.addHeadline(i18n.tr("Sonstige Informationen (nur Hibiscus-intern)"));
      container.addText(i18n.tr("Diese Daten werden nicht an die Bank übertragen."), true);
      container.addInput(control.getTermin());
      container.addInput(control.getReminderInterval());
    }

    Container container = new SimpleContainer(getParent());
    container.addHeadline(i18n.tr("Details"));
    container.addLabelPair(i18n.tr("Verwendungszweck"), control.getZweck());
    container.addLabelPair(i18n.tr("Betrag"), control.getBetrag());

    ButtonArea buttonArea = new ButtonArea();
    buttonArea.addButton(
        i18n.tr("Löschen"), new DBObjectDelete(), transfer, false, "user-trash-full.png");
    buttonArea.addButton(
        i18n.tr("Duplizieren..."),
        new Action() {
          public void handleAction(Object context) throws ApplicationException {
            if (control.handleStore()) // BUGZILLA 1181
            new Duplicate().handleAction(transfer);
          }
        },
        null,
        false,
        "edit-copy.png");

    Button execute =
        new Button(
            i18n.tr("Jetzt ausführen..."),
            new Action() {
              public void handleAction(Object context) throws ApplicationException {
                if (control.handleStore()) new AuslandsUeberweisungExecute().handleAction(transfer);
              }
            },
            null,
            false,
            "emblem-important.png");
    execute.setEnabled(!transfer.ausgefuehrt());

    Button store =
        new Button(
            i18n.tr("Speichern"),
            new Action() {
              public void handleAction(Object context) throws ApplicationException {
                control.handleStore();
              }
            },
            null,
            !transfer.ausgefuehrt(),
            "document-save.png");
    store.setEnabled(!transfer.ausgefuehrt());

    buttonArea.addButton(execute);
    buttonArea.addButton(store);

    buttonArea.paint(getParent());

    Application.getMessagingFactory().registerMessageConsumer(this.mc);
  }