Infofenster
Last updated
Last updated
Infofenster sind fest programmierte modale Fenster, die sich von abstract class Info extends CDialog
ableiten. Info
stellt auch Methoden z.B. showOrder
zum Anzeigen der Fenster in einem Frame:
Einige Infofenster sind wie Formulare form
ausprogrammiert. Auszug aus AEnv.actionPerformed
:
Außerden werden manche Infofenster zum Suchen verwendet.
Generische Formulare sind ein Zwischending. Nicht voll generische Fenster wie AD_Window, aber auch nicht ganz ausprogrammiert wie die meisten FormPanel
Implementierungen. Mit class GenericFormPanel implements FormPanel
haben wir ein Framework, womit für definierte Fenster mit geringem Aufwand Form Panels mit MiniTables implementiert werden können.
UnprocessedDocuments
ist eine Alternative zu Fenster ALL_UNPROCESSED AD_Window_ID = 53087
WorkflowActivities
ist eine Alternative zu Fenster WF_ACTIVITIES AD_Window_ID = 298
Die Beispiele bestehen aus ContentPane im BorderLayout
at PAGE_START a selectionPanel - die Selektionen sind generisch, wie bei Fenstern (für YN werden erweiterte JXComboBox'en aus swingx genutzt: sie sind 3-wertig und können emojis darstellen)
at CENTER a mainPanel with scrollable miniTable
at PAGE_END a statusBar
Das dritte Bespiel ist eine Alternative zu Klasse org.compiere.apps.search.InfoOrder
In der Minitable kann man von den Zellen zu den Entities zoomen. Auch dieses Feature ist generisch.
UnprocessedDocuments
, WorkflowActivities
und InfoOrder
werden genauso in AD registriert wie andere Form Komponenten und können
ins Menü und
die Berechtigung in Rollen
eingetragen werden
Denn GenericFormPanel
implementiert die FormPanel
Schnittstelle.
Ein komplexeres Beispiel mit subPanes ist InfoBPartner
. Ein kommentierter Screenshot ist unter Info Geschäftspartner im Benutzerhandbuch.
... es muss lediglich ein TableSelectionListener für den zoom-Aufruf implementiert und registriert werden. Beispiel InfoOrder
:
Infofenster benutzen swing table, um die Daten anzuzeigen. MiniTable ist nicht direkt von swing JTable abgeleitet class MiniTable extends CTable implements IMiniTable
. Die C*-Komponenten dienen als gemeinsamer Nenner für swing- und web-Client.
Zu einer Fehlentwicklung gehört m.E. mehrere loader. Auch MiniTable hat einen als inner class definiert: class Worker extends Thread
. Der Loader in GridTable erfüllt dieselbe Aufgabe! Ein weiterer leader befindet sich im SmartBrowser.