Navigator
Tree
|
|
Navigation
Tree presents an inventory of all the available Forms that are invoke-able
within an application. The each tree node can be encapsulated with a
folder. The leaf of the tree are the Forms, URL or Java actions that
can be invoked. The tree ties into the security mechanism within InPowerForms
such that it display only the invoke-able objects that are accessible
to a user who belongs to a designated Role. The security setting is
by User, by Role and by Objects. See security setting below. The navigator
is an Eclipse View. |
Form
|
A
Form encapsulate a database transaction. It normally contains zero or
more Blocks. There is also non-data bounded Form where no database transaction
is involved. In such Form it acts as a place-holder for UI presentation.
Multiple Forms will be displayed as Eclipse Editors. Close a Form release
all the resource consumed by the Form. |
Block
|
A
Block is an encapsulation of some user interface composites that display
one underlying Data Source. Normally table composite are used
to display the data source in a tabular style. There could be more than
one Block within a Form. These Blocks can be peers or chained in a master-detail
relationship such that the navigation of a parent automatically fetched
its corresponding children for presentation. Note one can have an arbitrary
depth of hierarchy of master-detail relationship within a single Form.
There are many Block layout organizer (managers). The picture shows
there is a master block Customers with two children Blocks Contracts
and Contact Info. The children Blocks are arranged in this particular
organizer with a CTabFolder composite. |
Block Title Bar
|
Each
Block has a title bar that is used to display the name of the Block.
When a Block is active, it will show the active color plus a orange
diamond symbol. To the right end of the title bar, developer can add
icons such that action can be invoked. Most actions are Block related
by convention. |
Tool Bar
|
There
is only one Tool Bar in the entire application. However, the tool bar
will be attached to an active Block at run time. The Tool Bar provides
a place where transaction can be saved or rolled back, the records within
the active Block can be navigated, insertion or deletion of records
can be initiated, query mode can be entered or canceled, the Block can
be refreshed of data from the database and Presentations within a Block
can be rotated. |
Status Bar
|
The status bar shows the current Block's
Data Source name, the record number within the Data Source. In addition,
it shows the memory consumption by the application. Double clicking
on the memory gauge will cause the application to do garbage collecting.
The current user, the role and the machine IP are shown in the icons.
Developer can add custom icons. If warnings occur such as enter malformed
data, they will be displayed on the status bar for 3 seconds. |
Data Source
|
|
Data Source is an object that binds into the hibernate entity Java
objects. A Data Source can be a sophisticated SQL statements that
spans across multiple entities and thus multiple database tables.
Each Data Source consists of Data Attributes. Developer can set a
wide variety of properties on these Data Attributes to affect its
run time behaviors.
public String getSql()
{
return "select e,o.tableName from ElementsEntity e, ObjtypeRegistriesEntity o" +
" where e.ownerObjType = o.otSeqId and o.otSeqId <> 0 order by o.tableName asc";
}
public DataAttribute[] defineAttributes()
{
return new DataAttribute[]{
new DataAttribute(eleSeqId, queryAble, ElementsEntity.class),
new DataAttribute(entityName, allPermission, ElementsEntity.class),
new DataAttribute(ownerId, allPermission, ElementsEntity.class),
new DataAttribute(description, modifyAble | queryAble, ElementsEntity.class),
new DataAttribute(ownerObjType, allPermission, ElementsEntity.class),
new DataAttribute(objectOwner, modifyAble | required | queryAble | reference,
ObjtypeRegistriesEntity.class, "o", "tableName")};
}
Below is an explaination of the properties:
| queryAble |
Indicates the DataAttribute can be used for sorting
and filtering. Make sure there is an underlying index on the corresponding
database column to ensure faster performance on larger data set.
|
| insertAble |
Indicates the DataAttribute can accept a value when
the user interface is under the insert new record mode. |
| updateAble |
Indicates the DataAttribute can be updated via
the user interface. |
| required |
Indicates the DataAttribute is required (i.e., the
user interface will not accept null values). |
| reference |
Indicates the owner object of this DataAttribute
is a reference entity such that it will not be altered. If any
attribute of the same entity object is marked as a reference,
the owning entity is immutable. |
| allPermission |
Indicates the DataAttribute is updateAble AND insertAble
AND queryAble AND required. |
| noPermission |
Indicates the DataAttribute is NOT updateAble NOR
insertAble NOR queryAble NOR required. |
| modifyAble |
Indicates the DataAttribute is insertAble AND updateAble. |
| insertAbleLookup |
Indicates the DataAttribute is insertAble AND required
AND queryAble AND reference. |
| modifyAbleLookup |
Indicates the DataAttribute is insertAble AND updateAble
AND required AND queryAble AND reference. |
|
Presentation
|
Each Block can contain multiple
presentations. Only one presentation can be visible at any given time
within a Block. A user can use
to switch or rotate the presentation. A presentation is a InPowerForms
object that will take up the client area of the Block. By convention,
a Block can contain two presentations, one in tabular view and another
in single record view (see below). Single record is convenient for data
entry while tabular is good for navigation. A user will normally switch
in tabular presentation , quickly choose a record and switch to single
record for more finer manipulation of record. Both tabular and single
record presentations can good for all allowable data manipulations.
All presentations are in-synchronization at all time. A block can have
more than one presentations is needed. All the subsequent presentation
can be made to instantiate on-demand. |
Tabular UI
|
|
Data
Source normal got displayed in Tabular style for a bird's eye view
of data within a Block.
|
Single Record UI
|
Developer
may choose to add a Single Record UI and form another Presentation for
data entry. All UI and within each presentation are completed synchronized
in its access and modifications of the underlying Data Source. |
Filter/Sort
|
|
In
any given presentation, for any tabular or single record composite,
a user can filter on a particular Data Source Attributes displayed
by the UI composite or can sort each Data Attribute by invoking the
Pop-up menu or clicking on the column header of a tabular composite.
As soon as the filter or sorting is completed, the Tool Bar's cancel
query symbol appears
indicating there is a filter apply on the Block's querying logic.
Unless a user click this button, the filtering logic will persist
as long as the owning Form exists.
|
Popup-Menu
|
|
Developer
can add their custom Popup Menu item onto the standard Popup Menu.
Developer can decide what menu item should be added when the mouse
cursor is on a particular column/field that display a Data Source's
attribute. The Popup Menu will be available to all Presentations.
|
Jump
|
|
InPowerForms
has a special type of filtering a Block. It is a Jump. A Jump gather
one or more data attributes from the current Block's Data Source,
use these data attributes and open a different Form by applying these
attributes to formulate a filter strategy on any block within the
target Form. This feature is particular useful for example you have
a customer's contract Block (see picture above), and you want to zoom
in the actual contract Form to see more contract detail. Developer
can install these Jump very easily. Once the target Form is open,
it will only display the records that fulfill the filter conditions.
The picture shows the filtered contract details in the contract Form.
|
Query Dialog
|
|
A
Query Dialog allows very sophisticated filtering of data within a
particular block. Upon invoking the dialog, it will display all the
query-able data attributes the current Presentation display. Note
you can have more data attributes than what is displayed in the UI.
If a data attribute is marked non-query-able, it will be participate
in the Query Dialog. Normally database columns that does not have
efficient index built for query will be marked non-query-able. Each
data attribute can be marked of its comparison type as scalar or string.
Scalar comparison type is normally for number and derivative data
types such that all the comparison operators including BETWEEN can
be application. String comparison operator will have LIKE and NOT
LIKE operators. Sometime you might have only = operator for data type
such as a image or binary data. On each data attribute, you can choose
to do # (OR), +(AND) concatenation of the filter conditions. All data
types that has a editor or renderer will be used to capture and display
the input and output.
|
Editors
|
|
Editors and its associate infrastructure are the most crucial constructs
within InPowerForms. Each data type has its own characteristics. For
example, a date time data will allow user to input a variety of data
time convention according to the user's locale. The editor should
parse and detect erroneous user input and reject them by not committing
to the database which would surely raise an exception. The idea of
InPowerForms is to do as much validation as possible up front and
give user a very pleasant and interactive experience of using the
application. There are many possible derived data types such as social
security number that requires a specific mask for data entry. InPowerForms
internally has several generic editors to handle these derived data
types that require validation of input data according to prescribed
mask. Whenever an editor is invoked in place, it will show a light
blue background color in addition to other visible border cues.
How
to work the editors?
- Double clicking or type ENTER key will cause the editor
to appear if the field is editable. You are in edit mode now.
- While in edit mode, another ENTER key will exit and post
the changes. type ESCAPE key will always cancel the edit.
- Whenever an editor fails to validate the data input according
to the mask, it will warn the user and revert the cell's data
to its original value. A waning will be appearing at the status
bar for 3 second advising user of invalid inputs.
- Only when the new input is valid and it is different from the
underlying Data Source, will it try to post the changes. Note,
InPowerForms also takes non-required field into consideration
which typically required more sophisticate testing logic within
the editors.
- For those editors such as DateTime, Lookup and
LargeText editors, they have a secondary dialog that could
popup to provide further choose for a user to pick. While you
are in edit mode, type CTRL-DOWNARRAOW or CTRL-MouseClick
will bring up these secondary popup dialogs. Type ESCAPE
will dismiss these dialogs.
|
Date Time Editor
|
Date
Time editor allows user to pick from a pop-up calendar (CTRL-Down Arrow
or CTRL click), The calendar has both the date and time portion. Many
keys allow fast navigation of choosing a date in addition to traditional
mouse support. The calendar is fully internationalized and will display
appropriately according to each Locale. There are six built-in verification
masks when a user choose to type instead of picking. In addition, developer
can also supply addition date format for input verification. |
Lookup Editor
|
|
Using
foreign key relationship is a very common database design. Normally
you will have foreign keys in a child table to a parent table where
more detail information are kept. InPowerForms allows you to compose
a list of value from the parent table and present to a user as possible
candidates to modify the foreign key association. Developer can choose
what to display in the lookup editors and how many column's data attribute
to copy from the parent table to the child table. Note, the parent
table can be of underdetermine length of entries. InPowerForms will
cache the display of parent table entries on-demand. A user can also
filter the Lookup Editor by typing in few characters, available choices
will be present if there are partial matches, it a full match is typed,
the editor will accept the entry without pop-up the list picker When
the Lookup Editor's choice pick is display (by mean of CTRL-DOWN KEY
or CTRL click), a user can type in the search box and incrementally
filter the choice list as well.
|
Combo Lookup Editor
|
|
Similar
to LookupEditor, but if you have a shorter or fixed size list, normally
no longer than 20-30 entries, using Combo Lookup Editor is more efficient
because it does not involve issue SQL to database for incremental
lookup. This editor also only allow you to pick rather than offering
additional typing capability. The choices from the parent table are
displayed in ComboBox composite.
|
Money Editor
|
InPowerForms
offers a Money data type and its corresponding editor. The Money type
support Java Locales for parsing the type input and displaying the output
correctly. The example shows a user in Taiwan showing Taiwanese money
format.
|
Boolean Editor
|
Boolean
Editor is used to display true or false value. It maps to the Java Boolean
data type. While in the editor, you can press DOWN KEY to rotate the
value or key Y/N, T/F to set the value in addition of using the mouse. |
Large Text Editor
|
This
is a special string editor that if the underlying string size exceed
200 characters, user has the option to bring up a larger area to edit. |
Other Editors
|
There
are many other editors for basic Java types such as BigDecimal, String,
Long, etc. In addition, developer can extend more specific editors in
their domain of work. An example shown here is an editor for picking
icons bundled with the application. |
Presenter
|
Developer can choose the
implement the Presenter interface such that a underlying data type can
present in various visual form such as an icon or apply a Java Format
object to print the text differently than the underlying data type would
normally convert using toString() function.
|
Data Attribute Indicators
|
 Either
in tabular or single record composites, a tool tip will pop-up if you
hover the mouse over the title or column header areas. The tool tip
indicates if a data field is required, update-able, insert-able, query-able.
|
Data Type Input Verifier
|
Each
data type can be provided a data mask to verify the type inputs. For
example, a social security, or U.S, telephone number or U.S postal code
all have their verifier. The verifier can be any Java code but typically
is written in regular expression syntax.
|
Block Organizers
|
Block organizer are specialized composite
objects that layout blocks in a variety of positions. Organizers are
not the SWT layout manager. Blocks many often are linked together into
parent-child relationship. Organizers are the best way to contain and
present these relationship without much coding.
|
OrganizerSingleDetail
|
|
OrganizerSingleDetail organizers a parent block and only one child
block using a sash composite. The style and proportion of the sash
can be specified.

|
OrganizerMultipleDetails
|
OrganizerMultipleDetails organizers
a parent block and multiple child blocks using a Sash and CTabFolder
composite. The style and proportion of the sash can be specified. 
|
OrganizerMultiBlocks
|
OrganizerMultiBlocks organizers multiple
peer blocks using a CTabFolder composite.
|
OrganizerCollapsableDetail
|
|
OrganizerCollapsableDetail normally is used to represent "properties"
of a specific block. The child block can be hidden and shown at user's
request.

|
InPowerForms
Objects
|
I nPowerForms
has many Form level objects the are displayed within the Navigator.
They are Folder, Form, URL and Java Code. Each object has its capability
that can be set dynamically by an administrator according to one's role.
Each time a user log into the system, the appropriate objects available
according to the security setting will be displayed for that user. In
addition available capability will be provide or restricted on the objects
from the user. Objects have to be registered with InPowerForms runtime
system via a Objects Form. Developer can register custom capability
on special objects to provide security by value. For example, a billing
analyst can access a submit bill button within a Form but the button
will be invisible to a clerk. |
Capability
|
Each
object can be defined a set of capability available. For example, a
data bound Form can have INSERT,DELETE,UPDATE,QUERY,ACCESS as its base
capabilities. Additional capabilities can be defined by administrator
and developer. The entire security protocol within InPowerForms can
also be implemented and integrated with an external authentication or
directory services via API. The enterprise edition use database datable
to store the capability attributes. Administrator register the capability
via the Capabilities Form. |
Roles
|
InPowerForms
enterprise edition use database table to store Roles mechanism. A Role
is a membership which a group of users belong. The role has a set of
capabilities granted by the security system at runtime. Use Roles Form
to administer the roles. |
User/Users
|
|
Administrator
will use Users Form to maintain users information. Note, administrator
an deny a particular capability to an object to a specific user enough
whose role was granted access to that capability. This is a fine tune
feature in InPowerForms.
A
user will use User Form to maintain his/her information.
|
Role
Tree
|
Role
tree is a Form where administrator can design run time security setting
by pointing and clicking. Capabilities can be assigned or denied by
object and by role. The Navigation tree can be designed into any hierarchical
structure with the desired objects accessible to a role. Administrator
can also drag and drop many of these objects from one place to another.
The Combo Box display the role of interested and can be changed. The
bottom pane display the granted or denied capability of currently selected
object to the role. Again, interface API are available for integration
with an external directory service. |
Screen Captured
|
| InPowerForms can allow user to capture
the screen for documentation or diagnostic purpose. The captured screen
picture can be save on file, send off as an email or printed. |
System
Logger
|
InPowerForms
provides a table driven system logger. The logger can chain a bunch
of log events for diagnostic purpose. This logger is especially useful
to captured server side events. Other forms normally use Jump mechanism
to filter the View Logs Form. |
Java
Invoke-able Object
|
Developer
can install executable Java code such that when a user click on it within
the Navigator, it will execute the code. This mechanism is particular
useful to automate some tasks such as opening all Forms for regression
test purpose. |
Externalized
Text
|
Externalized
texts are normally handle with Java message bundles. However, in a multiple
developer environment adding or deleting handle by any individual cause
synchronization problems for the others. InPowerForms use a database
drive approach to ensure uniqueness of the text handle and instance
propagation of new handles to all developers at development. At production
time, the external texts will be put into Java properties files. Use
UIText Form to manage the mechanism. |
Generic
Properties
|
Many
enterprise applications use generic properties table to store custom
information at the customization phase. InPowerForms has made a Properties
Form to manage the generic property table. |
Generic
Elements
|
Elements
is another pattern in the database design to store custom information.
The element does not change value but its children normally change values
across some date effectively. InPowerForms has Element Forms for such
use. |
Generic
Short List
|
Many
database architecture use a generic list to store finite list of data
such as a list of 50 States. This architecture will reduce the number
of tables substantially for trivial storage of auxiliary data. InPowerForms
use ShortList Form for such use. |
|
| |