/** @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));
  }
 /**
  * Prueft, ob seit der letzten Aktion Eingaben geaendert wurden. Ist das nicht der Fall, muss die
  * Tabelle nicht neu geladen werden.
  *
  * @return true, wenn sich wirklich was geaendert hat.
  */
 protected boolean hasChanged() {
   try {
     return (konto != null && konto.hasChanged())
         || (from != null && from.hasChanged())
         || (to != null && to.hasChanged())
         || (text != null && text.hasChanged());
   } catch (Exception e) {
     Logger.error("unable to check change status", e);
     return true;
   }
 }
  /**
   * Ueberschrieben, um einen DisposeListener an das Composite zu haengen.
   *
   * @see de.willuhn.jameica.gui.parts.TablePart#paint(org.eclipse.swt.widgets.Composite)
   */
  public synchronized void paint(Composite parent) throws RemoteException {
    final TabFolder folder = new TabFolder(parent, SWT.NONE);
    folder.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
    TabGroup tab = new TabGroup(folder, i18n.tr("Anzeige einschränken"));

    ColumnLayout cols = new ColumnLayout(tab.getComposite(), 2);

    {
      this.left = new SimpleContainer(cols.getComposite());

      Input t = this.getText();
      this.left.addInput(t);

      // Duerfen wir erst nach dem Zeichnen
      t.getControl().addKeyListener(new DelayedAdapter());

      this.left.addInput(this.getKonto());
    }

    {
      Container right = new SimpleContainer(cols.getComposite());

      right.addInput(this.getRange());
      MultiInput range = new MultiInput(this.getFrom(), this.getTo());
      right.addInput(range);
    }

    this.buttons.addButton(
        i18n.tr("Aktualisieren"),
        new Action() {
          public void handleAction(Object context) throws ApplicationException {
            handleReload(true);
          }
        },
        null,
        true,
        "view-refresh.png");
    this.buttons.paint(parent);

    // Erstbefuellung
    GenericIterator items =
        getList(
            getKonto().getValue(),
            (Date) getFrom().getValue(),
            (Date) getTo().getValue(),
            (String) getText().getValue());
    if (items != null) {
      items.begin();
      while (items.hasNext()) addItem(items.next());
    }

    super.paint(parent);
  }