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);
...