previous

Screen Painter Specifications

Several basic concepts have changed in the newer version of Screen Painter. The Screen Painter application can no longer retrieve information about forms from those forms at runtime as it is no longer an integrated part of OPERA. As a standalone application, available only with the Thick Client, Screen Painter can rely only on information stored in the database.

Note: Due to those design differences, forms in Screen Painter will always look slightly different from the forms in the actual OPERA Application. Changes on forms are not immediately reflected in the new Screen Painter, and depending on the change several (new) tables may need to be updated. For the purpose of the Screen Painting application not every function is keyboard accessible.

Data Extraction Prevention

Data Execution Prevention (DEP) is a set of hardware and software technologies that perform additional checks on memory to help prevent malicious code from running on a system. The primary benefit of DEP is to help prevent code execution from data pages. Typically, code is not executed from the default heap and the stack. Hardware-enforced DEP detects code that is running from these locations and raises an exception when execution occurs. Software-enforced DEP can help prevent malicious code from taking advantage of exception-handling mechanisms in Windows. Screen Painter can be set to bypass DEP (See Data Extraction Prevention for details).

Technical Overview

Screen Painter requires Oracle 8.1.7.x client installed and a valid connection to the Database the PMS schema resides on. To support form trigger manipulation the forms compiler (currently 6.0.8.17.1) needs to be installed on that computer as well.

It is recommended to configure the NT/Win2000 user account with permissions to update the registry.

Note: A mouse or other pointing device is required, some of the functions are not keyboard accessible. The new Screen Painter cannot be invoked from OPERA Thin Client. Any change made in Screen Painter is reflected on the actual form only after the form is closed and reopened.

Whenever the Screen Painter is started it will first query the database API version. If the API (package) version does not match, the application cannot continue and will terminate at this point. In this case the Database and/or Client need to be updated.

Once successfully connected the application will query the SCR_PAINT_FORMMODES table to retrieve information on all forms that should be displayed as a selection for screen painting (including supported modes).

User Selects Form/FormMode

Using the internal ID (here PROFILE 0) the Screen Painter loads all related Canvases and updates the Designer Window with all visible canvases.

Once the canvases are loaded, all the visible elements such as fields and labels are loaded from DYNAMIC_FIELDS and painted on the respective canvases.

To support the required functionality three tables have been added:

If you select a Form/Mode, the Screen Painter first retrieves the canvases that need to be displayed and initializes the Designer window with all the visible canvases. If a canvas resides on a popup window this canvas is shown on a separate tab on the Designer window.

Note: The Forms extractor tool will generate scripts that update DYNAMIC_FIELDS, DYNAMIC_FIELDS_SID and SCR_PAINT_CANVASES with any change released in a new build/patch. The extractor does not handle new created canvases. If a new canvas was added and needs to be screen paintable then the insert script must be built manually.

Context Menus

Screen Painter makes extensive use of context menus. Right mouse button clicking on a canvas in Designer, for example, displays a popup menu with available functions; right mouse button clicking on an active/selected element displays the property dialog.

Screen Painter will "remember" the position of all its windows as long as the logged on user has write permissions to the ..\micros\opera\tools) directory where the screen painter executable is located.

For this application a screen resolution of 1024 x 768 or higher is recommended.

Configuration and Updates

Assumptions

Elements that cannot be changed, usually function buttons, are identified right now by the following criteria.

Configuration Tables

Form and Form-Mode Configuration

The new Screen painter relies on information in SCR_PAINT_FORMMODES to display forms and form modes that are paintable. If a form supports multiple modes then for each of those modes all required canvases have to be defined (see table scr paint canvases).

Note: If a form or a form mode is added or deleted this table needs to be updated accordingly.

Table Column

Usage

FORM_NAME

Name of the actual form

FORM_MODE

Form mode if supported

FORM_ID

Internal form id linked to scr paint canvases - usually form name +  n where n is 0,1,& depending on the number of modes that are defined for this form

FORM_DESC

Description of the form - displayed in the main form

MODE_DESC

Description of the form mode

APPLICATION

Indicates to which functionality group the form belongs - SC, PMS

CHECK_LICENSE

Flag to indicate if a license check is enforced

DISPLAY_MODE

Grouping indicator to group multiple form and form modes into one display category (PROFILE for example)

SORT_ORDER

Sort order within the display mode - for display

MODE_SORT_ORDER

Sort order within a form mode - for display

FORM_MULTI_SAVE_YN

Show multi select box to allow save of changes for multiple form / form modes (RESERVATIONS)

FORM_VIEW

Underlying view/table - used for LOV lookup

CHECK_LICENSE_YN

Display option only if license for application is active

Canvas Configuration

The new Screen painter relies on information in SCR_PAINT_CANVASES to display canvases on the designer window.

Note: If a canvas is removed, added or changed (in size) this table needs to be update accordingly.

Table Column

Usage

FORM_ID

Internal form id - linked with scr paint formmodes

CANVAS_NAME

Name of the canvas as in the actual form

PARENT_CANVAS

Name of the parent canvas (that is the canvas this canvas resides on) - if the parent canvas is read only then all contained canvases are as well!

X_POS, Y_POS

Coordinates of top left corner in pixels (relative to parent canvas if defined)

HEIGHT

Height of the canvas in pixels

WIDTH

Width of the canvas in pixels

DISPLAY_MODE

Indicates if and how the canvas should be displayed, supported values are SHOW, EDIT, HIDDEN and the combination SHOW,EDIT see below for details

TABED

Indicates if the canvas is to be placed on a separate pop up or tab sheet

APPEARANCE

Information on non paintable areas on otherwise paintable canvases, special graphical elements, etc.

Display Model

Canvases that cannot be displayed are indicated with a value of "SHOW" in scr paint canvases>display mode, other values and value combinations are "EDIT", "SHOW, EDIT", "HIDDEN" with:

Definition of Special Areas/Rectangular Graphical Elements in "Appearance"

In the Appearance field, special areas or graphical elements can be defined for each canvas. Each area-element contains of the following:

Appearance definition ::= <area element>(;<area element> &)

Area element ::= <area token>(,<area token> &)

Area Token ::= [ integer type ('X1', 'Y1', 'X2', 'Y2', 'LWIDTH', 'COLOR'), char type('SOLID', 'NAVIGABLE')]

Refer also to the Special Options and Canvas Editor sections in this topic.

Example: x1=10,y1=10,x2=100,y2=100,lwidth=1,color=$00C0C0C0,solid=n,navigable=n this will create a pattern filled non navigable (non paintable) area in a dark gray color.

Note: Canvas definitions and special "appearance" elements may need to get updated with each form change in the OPERA application. Those elements are defined to enhance the visual representation of the Designer window and are not required for the Screen Painter to function correctly.

Dynamic Fields and Dynamic Fields SID Configuration

The new Screen painter relies on information in DYNAMIC_FIELDS and DYNAMIC_FIELDS_SID to display fields on the designer window.

Table Column

Usage

FORM_MODE

Stores the modes of each form

STATUS

Status possible values - AVAIL - means the UserDefinable field is available to create a new field in the form, CHANGED - means properties of this field are changed, NULL - means the field remains as it is

NEXT_ITEM

Related to Navigation of the Items in the Screen. Next Navigation Item

PREVIOUS_ITEM

Related to Navigation of the Items in the Screen. Previous navigation item

DYNAMIC_FIELDS_ID

Primary Key for this table. Sequence no. dynamic_fields_seqno is used to fill this value

FORM_NAME

Name of the form which is being screen painted

BLOCK_NAME

Item Block name

ITEM_NAME

Item name in the form which is being screen painted

X_POS

X position of the item at which it is displayed

Y_POS

Y position of the item at which it is displayed

HEIGHT

Height of the item displayed on the screen

WIDTH

Displayed Item width on the screen in that particular mode

DISPLAYED_YN

Possible Values Y - displayed , N - not displayed in that form mode

NAVIGABLE_YN

Possible Values Y - Navigable , N - not navigable in that form mode

VISUAL_ATTRIBUTE

Visual Attribute group name assigned to that item. group contains details related to visual attributes like FONT, COLOR, FONT SIZE, etc.

DBCOLUMNNAME

Table column name if that item is a Database column value is null if that is any temporary item in the form

PRE_TEXT_ITEM_TRIG

Pre-Text-Item trigger PL/SQL code of that particular item to be fired. This code is entered by the user dynamically at runtime using ScreenPainter features

VALIDATE_ITEM_TRIG

When-Validate-Item-trigger PL/SQL code of that particular item to be fired. This code is entered dynamically at runtime using ScreenPainter features. Fires when the user enters some value into a field and moves to next item

POST_TEXT_ITEM_TRIG

POST-Text-Item Trigger PL/SQL code of that particular item to be fired. This code is entered by the user dynamically at runtime using Screenpainter features. Fires when the user navigates to this field on the screen and then uses TAB to move to the next item even though he doesn't enter any value for this field

PROFILETYPE

Exclusively for PRFORM00. Type of the profile I-INDIVIDUAL SSource G-Group T-Travel Agent C-Company

ITEMVALUE

Initial Value of the item defined in the form. For Display Items and Buttons value label is saved. For few buttons value of the item name is saved for which this button acts as a list button to show an LOV

TABORDER

Tab order in the screen

LOV_SQL

If the item is a TEXT ITEM and has an LOV attached then the SQL statement for that LOV is stored in this field. Only for UDF user definable fields

USED_FOR

Purpose of the UDF created

CANVAS_NAME

Name of the canvas on which this field is displayed

TAB_NAME

If the canvas is a tabbed canvas then the name of the tab on which this item is placed

REQUIRED_YN

Allowable values Y column is mandatory and N column may be null

ITEMTYPE

Type of the item DISPLAY ITEM - LabelTEXT ITEM - Can store value if editable,navigable.BUTTON - Push ButtonCHECK BOX IMAGE - For displayLIST ITEM - field with list of values

DYNF_ID_HEADER

Dynamic_Fields_ID of the actual item is stored in this new record for the same item if that item is changed in current form mode for back tracking to find out the actual item in null mode.

PROMPT

Item Prompt

ACCESS_KEY

Internal

TOOLTIP

Bubble Help (if applicable) for the item

VERSION

Build / Revision of item created

ITEM_LENGTH

Length of the Item

DATATYPE

Type of the item (Varchar2, Number, Date)

SUBCLASS_GROUP

Parent Item Information

VALIDATE_FROM_LIST

Should UDF be validated across an LOV

MULTI_SELECT_LOV

Is UDF Multi select LOV (Y,N)

AMOUNT_YN

Indicates if the value is a numeric field and if it should be formatted with an amount format

RESORT

Property this record belongs to

ORG_FIELD_ID

Links to Field ID in dynamic_fields_sid / Used to restore original values in multi property environment

FLAGS

Screen Painter flags to indicate whether an item is changeable/movable, etc.

PROMPT_VA

Prompt Visual Attribute

COMPARE_DATA

Timestamp of last extraction

Other Database Information

The Visual Attribute Sets used in forms need to be defined to be available in the new Screen Painter. This information is stored in table sp syntax.

Table Column

Usage

SYNTAX_ID

Primary key. System Generated. Gets value from sequence number SP_SYNTAX_ID

SYNTAX_MEANING

Explanation of the Syntax Value

SYNTAX_TYPE

Types of Syntax: 1. FIELD - Form fields of PROFILE and RESERVATION 2. OPERATORS - <,>,>=,...etc. 3. BUILT - Functions, Procedures calls 4. EXAMPLE - Examples of how to use the built-ins, operators

SYNTAX

Actual Syntax value

COMMENTS

Internal field used to store indication of what that field belongs to, etc., with keywords required for query in the form

For visual attributes the Comments column contains a visual attribute definition

Visual attribute definition ::= <attribute element>(;< attribute element> &)

Attribute element ::= <attribute token>=<value>

Attribute Token ::= ['NAME', 'DESC', 'BGCOL','FGCOL','FONTCOL','FONTNAME','FONTSTYLE','FONTSIZE']

 NAME: name of the attribute set (same name as in forms!)

 DESC: Description (shown in pick box)

Example: NAME=BLACK;DESC=Black Background Color;BGCOL=BLACK;FGCOL= ;FONTCOL=BLACK;FONTNAME= ;FONTSTYLE= ;FONTSIZE=10

Database Packages

At startup Screen Painter will check the version of the database package, and only if the version matches the application will it continue. The new Screen Painter application also has all required SID data included in the executable file. To force an update of scr paint formmodes and/or scr paint canvases, delete all records from those tables and start the Screen Painter. The application will insert all the required rows. This should not be required.

Special Options

When the program is started with the command line switch "debug," additional options for testing and debugging purposes are available.

Extended Context-Menu in Designer

Edit Canvases: Allows you to review and edit details of the Canvas Configuration. It also allows you to generate and update scripts and to update the current configuration.

Changes/Undo List: Tracks all changes and displays a list of all changes currently in the undo buffer, mainly for debugging purposes.

Canvas Editor

This functionality is provided only for internal use. The forms extractor will update all positional information necessary from the actual form. The forms extractor does not update information on

You can use the Canvas Editor to:

Position: Define the position of a canvas relative to the parent/containing canvas (if one is defined - otherwise relative to the window/form).

Properties: Set properties like Visible and Enabled, Visible and Enabled: a canvas is screen paintable, Visible and not Enabled: a canvas is displayed but cannot be painted.

Protected Areas: Use only on visible canvases. Used to define special graphical elements to enhance the visual image on the designer and/or to protect areas from screen painting on otherwise paintable canvases. Do not use protected areas to disable complete canvases - use the DISPLAY MODE = 'SHOW' instead.

Note: To make changes permanent you have to generate the update script and run it from SQL-Plus, SQL-Navigator or directly from the Canvas Editor. If there are multiple form- modes defined, you will need to repeat this for ALL MODES!

Debug Information

When the Debug functionality is active, then the Settings/Debug Information can be viewed by the user.

 

Show Timings

Selecting the Show Timings button displays information pertaining to the user and parameters that are being used. The following displays a breakdown of the supported parameters:

USER=<connect string>  or  URL for screen painter, has to start with HTTP://
SCHEMAID  references the internal ID for the app server login (most likely SCHEMA_0 "Production")
APPUSRNAME
APPUSRPASS  are optional if not specified the program will assume NA_REPORTS
APPUSER=<opera application user id>
RESORT=<opera resort id>
FORMSCOMP=<forms compiler to use>
PLL=<screen painting pll to recompile>
DEBUG  <run in debug mode>
DUPROWS  <check and remove duplicate rows>

App Server Log

Selecting the App Server Log button displays all of the past activity that has taken place on the application server. To delete all of the information, just select the Clear Log check box and all of the activity information is erased.

Show Me

Adding/Modifying New UDF Field

See Also