CIB jView form technischer Leitfaden

7. Schneller Einstieg: Dynamische Anbindung an die Formularkomponente JView&form

In CIB JView sind auch Funktionen zur Anbindung an die  Formularkomponente JView&form integriert.

Dazu sind Datenstrukturen und Callback-Methoden definiert, die in den folgenden Abschnitten beschrieben werden.

Interface FormFieldInfo zum Austausch von Informationen über ein Formularfeld

Die Datenstruktur FormFieldInfo dient zum Austausch von Informationen über ein Formularfeld, sie ist im CIB jView (package de.cib.view.modules.form) definiert.

Interface FormFieldInfo (extends FieldInfo):

package de.cib.view.modules.form;

import de.cib.view.modules.FieldInfo;

 

/**

 * Interface representing the form field info for information exchange.

 *

 * It allows information exchange about a list of form fields e.g. via

 * interface FormFieldCallback.

 * @see FieldInfo

 * @see FormFieldCallback

 */

public interface FormFieldInfo extends FieldInfo {

 

      public Object getContent();

 

      public void setContent(Object content);

 

      public Object getStates();

}

 

Interface FieldInfo:

package de.cib.view.modules;

 

/**

 * Interface representing the field info.

 *

 * It allows information exchange about a field.

 *

 */

public interface FieldInfo {

 

      public boolean isMandatory();

 

// Setter for setMandatory - for later use

//    public void setMandatory(boolean isMandatory);

 

      public String getType();

 

      public String getName();

 

      public String getTooltip();

 

      public void setTooltip(String tooltip);

 

      public int getCount();

 

      public boolean isLocked();

 

// Setter for setLocked - for later use

//    public void setLocked(boolean isLocked);

}

Interface FormFieldCallback mit Callback-Methoden zur Information über die Anzahl und den Status der Formularfelder sowie ihre Aktualisierung

Zur Information über die Anzahl und den Status der Formularfelder und ihre Aktualisierung wird eine Datenstruktur FormFieldInfo sowie ein Interface FormFieldCallback eingeführt.

Das Interface FormFieldCallback ist eine Erweiterung des Interfaces FieldCallback:

Interface FieldCallback:

package de.cib.view.modules;

 

/**

 * Interface FieldCallback

 *

 * This interface is used to exchange information about current fields.

 *

 */

public interface FieldCallback {

 

      public static final int ON_LOAD = 1;

     

      public static final int ON_SAVE = 2;

 

      public static final int ON_EXIT = 8;


Der Aufrufer muss sich dazu bei der JView-Instanz als Listener anmelden.

Es gibt verschiedene Zeitpunkte, zu denen die Aufrufe des FormFieldCallback an den Listener geschickt werden, was durch den Parameter „eventType“ signalisiert wird:

-          ON_LOAD – beim Laden eines Dokuments

-          ON_SAVE – beim Speichern eines Dokuments

-          ON_EXIT – beim Beenden des Viewers

Welches Dokument geladen oder gespeichert wird, wird im Parameter „fileName“ mitgeteilt.

Das Interface FormFieldCallback ist im CIB jView (package de.cib.view.modules.form) definiert und umfasst folgende Methoden.

Interface FormFieldCallback:

package de.cib.view.modules.form;

 

import java.util.List;

 

/**

 * Interface FormFieldCallback

 *

 * This interface is used to exchange information about current form fields.

 *

 */

public interface FormFieldCallback extends FieldCallback {

 

      /**

       * Notifies about the current number of logical form fields

       * @param countFormFields

       * @param fileName

       * @param eventType

       */

      public void numberOfFormFields(int countFormFields,
            String fileName, int eventType);

     

      /**

       * Provides the list of FormFieldInfo for all logical form fields.

       * It allows to read and update current values for each form field.

       *

       * @param formFieldInfoList

       * @param fileName

       * @param eventType

       * @return true if successful otherwise false

       */

      public boolean updateFormFieldInformation(
            List<FormFieldInfo> formFieldInfoList,
            String fileName, int eventType);

Code-Beispiel zum Setzen eines FormFieldCallback Listeners bei der JView-Instanz:

// Definition eines FormFieldCallback Listeners

      static class FormFieldCallbackTester implements FormFieldCallback {
           

            public void numberOfFormFields(int countFormFields,
                  String fileName, int eventType)
            {

                  JCibTrace.info("FormFieldCallback - numberOfFormFields = "
                              + countFormFields + ", fileName = " + fileName
                              + ", eventType = " + eventType);

            }

 

            public boolean updateFormFieldInformation(
                  List<FormFieldInfo> formFieldInfoList,
                  String fileName, int eventType)
            {

                  JCibTrace.info("FormFieldCallback -
                        updateFormFieldInformation: fileName = " + fileName
                        + ", eventType = " + eventType);

                  // Example how to read and update form field information

                  if (formFieldInfoList == null)

                        return false;

                  if (eventType == FormFieldCallback.ON_LOAD) {
                        int i = 0;

                        for (FormFieldInfo info : formFieldInfoList) {

                              i++;

                              JCibTrace.info("Read form field " +info.getName()
                                   + ", Type = " + info.getType()
                                   + ", Content = " + info.getContent()
                                   + ", Tooltip = " + info.getTooltip()
                                    + ", isMandatory = " + info.isMandatory()
                                   + ", isLocked = " + info.isLocked());

                              info.setTooltip("Tooltip-" + info.getName());
                              boolean isEvenIndex = (i % 2 == 0);

                              if ("Text".equals(info.getType())) {

                                   info.setContent("Con-" + i);

                                   // Set each text field with even index to
                                   // mandatory, with odd index to optional

                                   info.setMandatory(isEvenIndex);

                              }

                              else if ("Check".equals(info.getType())) {

                                   // Deactivate all check boxes for even index

                                   // else activate last check box of group
                                   if (isEvenIndex)
                                         info.setContent(0);
                                   else
                                         info.setContent(info.getCount());
                              }

                              else if ("Radio".equals(info.getType())) {

                                   // Deactivate radio buttons for even index

                                   // else activate last radio button of group
                                   if (isEvenIndex)
                                         info.setContent(0);
                                   else
                                         info.setContent(info.getCount());
                              }

                              info.setTooltip("Tooltip-" + info.getName());

                              JCibTrace.info("Form field changed: Content = "
                                   + info.getContent()
                                   + ": Tooltip = " + info.getTooltip());                           }

                  }

                  else if (eventType == FormFieldCallback.ON_SAVE) {

                        for (FormFieldInfo info : formFieldInfoList) {

                              JCibTrace.info("Read form field " +info.getName()
                                   + ": Type = " + info.getType()
                                   + ": Content = " + info.getContent()
                                   + ", isMandatory = " + info.isMandatory()
                                   + ", isLocked = " + info.isLocked());

                        }

                  }

                  else if (eventType == FormFieldCallback.ON_EXIT) {

                        for (FormFieldInfo info : formFieldInfoList) {

                              JCibTrace.info("Read form field " +info.getName()
                                   + ": Type = " + info.getType()
                                   + ": Content = " + info.getContent()
                                   + ", isMandatory = " + info.isMandatory()
                                   + ", isLocked = " + info.isLocked());

                        }

                  }

                  return true;

            }

      }

 

      // Beim Start von JView

            // Register FormFieldCallback Listener

            viewer.setFormFieldCallback(new FormFieldCallbackTester());

      ...

 

      // Beim Beenden von JView

            // do post processing here

            viewer.stop();

            // Unregister FormFieldCallback Listener

            viewer.setFormFieldCallback(null);
      ...