/** @see de.willuhn.jameica.gui.dialogs.AbstractDialog#paint(org.eclipse.swt.widgets.Composite) */
  protected void paint(Composite parent) throws Exception {
    Container group = new SimpleContainer(parent);
    group.addHeadline(i18n.tr("Details des Dauerauftrages"));

    Input kto = new LabelInput(auftrag.getKonto().getKontonummer());
    kto.setComment(auftrag.getKonto().getBezeichnung());
    group.addLabelPair(i18n.tr("Eigenes Konto"), kto);

    Input empfName = new LabelInput(auftrag.getGegenkontoName());
    group.addLabelPair(i18n.tr("Name des Empfänger"), empfName);

    Input empfKto = new LabelInput(auftrag.getGegenkontoNummer());
    empfKto.setComment(
        auftrag.getGegenkontoBLZ() + "/" + HBCIUtils.getNameForBLZ(auftrag.getGegenkontoBLZ()));
    group.addLabelPair(i18n.tr("Konto des Empfängers"), empfKto);

    LabelInput betrag =
        new LabelInput(
            HBCI.DECIMALFORMAT.format(auftrag.getBetrag())
                + " "
                + auftrag.getKonto().getWaehrung());
    betrag.setColor(Color.ERROR);
    group.addLabelPair(i18n.tr("Betrag"), betrag);

    group.addSeparator();

    Date e = auftrag.getErsteZahlung();
    String se = i18n.tr("Zum nächstmöglichen Termin");
    if (e != null) se = HBCI.DATEFORMAT.format(e);
    Input ersteZahlung = new LabelInput(se);
    group.addLabelPair(i18n.tr("Erste Zahlung"), ersteZahlung);

    Date l = auftrag.getLetzteZahlung();
    String sl = i18n.tr("keine End-Datum vorgegeben");
    if (l != null) sl = HBCI.DATEFORMAT.format(l);
    Input letzteZahlung = new LabelInput(sl);
    group.addLabelPair(i18n.tr("Letzte Zahlung"), letzteZahlung);

    Input turnus = new LabelInput(TurnusHelper.createBezeichnung(auftrag.getTurnus()));
    group.addLabelPair(i18n.tr("Zahlungsturnus"), turnus);

    group.addHeadline(i18n.tr("Verwendungszweck"));
    group.addText(VerwendungszweckUtil.toString(auftrag, "\n"), false);

    if (auftrag.isActive())
      group.addText(
          i18n.tr("Sind Sie sicher, daß Sie diese Änderungen jetzt zur Bank senden wollen?") + "\n",
          true);
    else
      group.addText(
          i18n.tr("Sind Sie sicher, daß Sie diesen Dauerauftrag jetzt ausführen wollen?") + "\n",
          true);

    super.paint(parent);
    getShell().setMinimumSize(getShell().computeSize(SWT.DEFAULT, SWT.DEFAULT));
  }
  /** @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);
  }