/**
   * Versucht eine SEPA-Ueberweisung aus der Zwischenablage zu erstellen.
   *
   * @return die Ueberweisung, wenn eine erstellt werden konnte oder null.
   */
  public AuslandsUeberweisung getUeberweisung() {
    try {
      // BUGZILLA 336
      final Clipboard cb = new Clipboard(GUI.getDisplay());
      TextTransfer transfer = TextTransfer.getInstance();
      String text = (String) cb.getContents(transfer);

      if (text == null || text.length() == 0) return null;

      text = text.trim();

      // Fuer den Fall, dass wir Key+Value nicht nur durch Doppelpunkt sondern zusaetzlich
      // auch noch durch einen Zeilenumbruch getrennt sind, entfernen wir Zeilen-Umbrueche,
      // wenn sie auf einen Doppelpunkt folgen
      // Siehe http://www.onlinebanking-forum.de/phpBB2/viewtopic.php?p=82519#82519
      text = PT_SPLIT.matcher(text).replaceAll(":");

      StringTokenizer st = new StringTokenizer(text, System.getProperty("line.separator", "\n"));
      HashMap values = new HashMap();

      while (st.hasMoreTokens()) {
        String line = st.nextToken();
        if (line == null || line.length() <= 0) continue;

        line = line.replaceAll("\\s", " ");

        int sep = line.indexOf(":");
        if (sep == -1) continue;

        values.put(line.substring(0, sep).trim(), line.substring(sep + 1).trim());
      }

      AuslandsUeberweisung u =
          (AuslandsUeberweisung)
              Settings.getDBService().createObject(AuslandsUeberweisung.class, null);

      Iterator i = values.keySet().iterator();
      while (i.hasNext()) {
        String s = (String) i.next();
        String value = (String) values.get(s);
        if (value == null || s == null) continue;
        if (PT_BLZ.matcher(s).matches()) u.setGegenkontoBLZ(value.replaceAll(" ", ""));
        else if (PT_KONTO.matcher(s).matches()) u.setGegenkontoNummer(value.replaceAll(" ", ""));
        else if (PT_NAME.matcher(s).matches()) u.setGegenkontoName(value);
        else if (PT_ZWECK.matcher(s).matches()) u.setZweck(value);
      }
      return u;
    } catch (Throwable t) {
      Logger.debug("unable to parse clipboard data: " + t.getMessage());
    }
    return null;
  }
Ejemplo n.º 2
0
 /**
  * Setzt den anzuzeigenden Titel.
  *
  * @param text der Titel.
  */
 public void setTitle(String text) {
   this.titleText = text;
   if (this.title != null) {
     GUI.getDisplay()
         .syncExec(
             new Runnable() {
               public void run() {
                 if (title.isDisposed()) return;
                 title.redraw();
               }
             });
   }
 }
Ejemplo n.º 3
0
  /** Aktualisiert die Buttons. */
  private void updateButtons() {
    if (panelButtons == null || panelButtons.isDisposed()) return;

    GUI.getDisplay()
        .syncExec(
            new Runnable() {
              public void run() {
                if (panelButtons.isDisposed()) return;

                try {
                  // Kurz ausblenden - sieht beim Aufbau sauberer aus
                  panelButtons.setVisible(false);

                  int size = buttons.size();

                  // Aktuelle Buttons disposen
                  SWTUtil.disposeChildren(panelButtons);

                  // Neues Layout basierend auf der Anzahl der Buttons anlegen
                  panelButtons.setLayout(SWTUtil.createGrid(size, false));

                  // Breite errechnen
                  Image background = SWTUtil.getImage(PanelButton.BG_DEFAULT);
                  GridData gd = (GridData) panelButtons.getLayoutData();
                  gd.widthHint = background.getBounds().width * size;

                  // Alle Buttons zeichnen - von rechts nach links
                  for (int i = size - 1; i >= 0; i--) {
                    buttons.get(i).paint(panelButtons);
                  }

                  // Das Neuberechnen des Parent fuehrt dazu, dass wir mehr Breite fuer die neuen
                  // Buttons kriegen
                  panelButtons.getParent().layout();

                  // Und wir zeichnen uns selbst neu
                  panelButtons.layout();
                } catch (Exception e) {
                  Logger.error("unable to paint panel buttons", e);
                } finally {
                  panelButtons.setVisible(true);
                }
              }
            });
  }
Ejemplo n.º 4
0
    /**
     * @see
     *     de.willuhn.jameica.messaging.MessageConsumer#handleMessage(de.willuhn.jameica.messaging.Message)
     */
    public void handleMessage(Message message) throws Exception {
      if (message == null || !(message instanceof QueryMessage)) return;

      final Object data = ((QueryMessage) message).getData();
      if (data == null || !(data instanceof Kontenrahmen)) return;

      GUI.getDisplay()
          .asyncExec(
              new Runnable() {
                public void run() {
                  try {
                    addItem(data);
                    sort();
                  } catch (Exception e) {
                    Logger.error("error while adding new data", e);
                  }
                }
              });
    }
Ejemplo n.º 5
0
  /** @see de.willuhn.jameica.gui.Part#paint(org.eclipse.swt.widgets.Composite) */
  public void paint(Composite parent) {
    if (myParent != null) return;

    // BUGZILLA 286 Wenn die Ueberschriftengroesse hoeher als die Bild-Groesse ist, dann strecken
    Image image = SWTUtil.getImage("panelbar.png");
    int imageHeight = image.getBounds().height;
    int fontHeight =
        Font.getHeight(FONT)
            + (2 * TITLE_OFFSET_Y); // Abstand oben und unten brauchen wir auch etwas
    int height = fontHeight > imageHeight ? fontHeight : imageHeight;

    ///////////////////////////////
    // Eigenes Parent, damit wir ein GridLayout verwenden koennen
    myParent = new Composite(parent, this.border ? SWT.BORDER : SWT.NONE);
    myParent.setLayout(SWTUtil.createGrid(1, false));
    myParent.setLayoutData(new GridData(GridData.FILL_BOTH));
    //
    ///////////////////////////////

    ///////////////////////////////
    // Titelleiste
    Composite head = new Composite(myParent, SWT.NONE);
    head.setLayout(SWTUtil.createGrid(2, false));
    {
      GridData gd = new GridData(GridData.FILL_HORIZONTAL);
      gd.heightHint = height;
      head.setLayoutData(gd);
    }

    //
    ///////////////////////////////

    ///////////////////////////////
    // Der Titel selbst
    title = SWTUtil.getCanvas(head, image, SWT.TOP | SWT.BOTTOM);
    title.setBackground(GUI.getDisplay().getSystemColor(SWT.COLOR_LIST_BACKGROUND));
    title.setLayout(SWTUtil.createGrid(1, false));
    {
      GridData gd = new GridData(GridData.FILL_HORIZONTAL);
      gd.heightHint = height;
      title.setLayoutData(gd);
    }
    title.addListener(
        SWT.Paint,
        new Listener() {
          public void handleEvent(Event event) {
            GC gc = event.gc;
            gc.setFont(FONT.getSWTFont());
            // kein Hintergrund hinter dem Text malen
            // Ist zumindest unter Linux nicht noetig. Windows und OSX muesste man mal noch testen
            gc.setBackground(GUI.getDisplay().getSystemColor(SWT.TRANSPARENT));
            // gc.setForeground(GUI.getDisplay().getSystemColor(SWT.COLOR_BLACK)); // Siehe Mail von
            // Hermann vom 29.03.2012
            gc.drawText(titleText == null ? "" : titleText, TITLE_OFFSET_X, TITLE_OFFSET_Y, true);
          }
        });
    //
    ///////////////////////////////

    ///////////////////////////////
    // Bereich fuer die Buttons
    this.panelButtons = new Composite(head, SWT.NONE);
    {
      GridData gd = new GridData();
      gd.heightHint = height;
      gd.widthHint = 0; // Erstmal ohne Breitenangabe - gibts erst, wenn wirklich Buttons da sind
      this.panelButtons.setLayoutData(gd);
    }
    //
    ///////////////////////////////

    ///////////////////////////////
    // Separator
    Label sep = new Label(myParent, SWT.SEPARATOR | SWT.HORIZONTAL);
    sep.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
    //
    ///////////////////////////////

    // Einmal initial die Buttons zeichnen
    updateButtons();
  }