skip to main content
OpenEdge Development: ADM Reference
ADM2 SmartObject API Reference : SmartObjects and their files
 
SmartObjects and their files
This section briefly describes each of the SmartObjects in the current distribution and lists all the files that define it.
SmartObject
The SmartObject is the base object used for defining other objects. It has no special class identity of its own but is an expression of the class Smart.
The file src/adm2/smart.p is the super procedure supporting the base SmartObject. Table 1–2 lists the class and custom files related to smart.p.
 
Table 1–2: Class and custom files for SmartObjects 
Class files
Customer files
Definition
smart.cld
Super
smartcustom.p
Method
smart.i
Method
smartcustom.i
Property
smrtprop.i
Property
smrtpropcustom.i
Prototype
smrtprto.i
Prototype
smrtprtocustom.i
Template
smart.w
Exclude
smartexclcustom.i
Other
admmsgs.i
Instance
smartdefscustom.i
SmartContainer
The SmartContainer provides all functionality from the class Container without the overhead of a visible run-time representation. It has no special class or super-procedure file of its own but is an expression of the Container class and uses containr.p as its super-procedure file. Table 1–3 lists the class and custom files related to containr.p.
 
Table 1–3: Class and custom files for SmartContainers 
Class files
Customer files
Definition
containr.cld
Super
containrcustom.p
Method
containr.i
Method
containrcustom.i
Property
cntnprop.i
Property
cntnpropcustom.i
Prototype
cntnprto.i
Prototype
cntnprtocustom.i
Template
cntnrsimpl.w
Exclude
containrexclcustom.i
Instance
containrdefscustom.i
AppServer class
If the macro {&APP-SERVER-VARS} is defined, the Container and Query classes inherit from the AppServer™ class, represented by the super procedure appserver.p. To force the macro to be defined, set the AppServer-Aware check box in the Procedure Settings dialog box for the object. If there is no such check box, or it is disabled, then you cannot force the definition. Table 1–4 lists the class and custom files related to appserver.p.
 
Table 1–4: Class and custom files for AppServer 
Class files
Customer files
Definition
appserver.cld
Super
appservercustom.p
Method
appserver.i
Method
appservercustom.i
Property
appsprop.i
Property
appspropcustom.i
Prototype
appsprto.i
Prototype
appsprtocustom.i
Template
Exclude
appserverexclcustom.i
Instance
appserverdefscustom.i
SmartBusinessObject
The SmartBusinessObject integrates up to 20 SmartDataObjects. It is a special-purpose organizer object and a member of the class Container. SmartBusinessObjects provide a single point of contact for other objects, and allow you to synchronize updates on multiple SmartDataObjects in a single server-side transaction.
The class name of the object is SBO. It is a user-defined class. The file src/adm2/sbo.p is the super procedure file for the SBO class. Table 1–5 lists the class and custom files related to sbo.p.
 
Table 1–5: Class and custom files for SmartBusinessObjects 
Class files
Customer files
Definition
sbo.cld
Super
sbocustom.p
Method
sbo.i
Method
sbocustom.i
Property
sboprop.i
Property
sbopropcustom.i
Prototype
sboprto.i
Prototype
sboprtocustom.i
Template
sbo.w
Exclude
sboexclcustom.i
Overflow file
sboext.p
Instance
sbodefscustom.i
Additional method files
updtabledefs.i
updparam.i
updtablecase.i
rupdflds.i
SmartB2BObject
The SmartB2BObject transforms data between XML and ABL based on an agreed-upon XML schema mapped to local data representations. It performs this service on behalf of other SmartObjects, particularly the SmartBusinessObject and SmartDataObject.
A single instance transforms either inbound or outbound messages, but not both. Two instances of this object are required when transforming both inbound and outbound messages.
The class name of the object is B2B, and it inherits from classes MsgHandler and XML. All are user-defined classes.
The file src/adm2/b2b.p is the super procedure for the SmartB2BObject class. It contains logic that uses the XML mapping schema to read or store data in data objects. Table 1–6 lists the class and custom files related to b2b.p.
 
Table 1–6: Class and custom files for SmartB2BObjects 
Class files
Customer files
Definition
b2b.cld
Super
b2bcustom.p
Method
b2b.i
Method
b2bcustom.i
Property
b2bprop.i
Property
b2bpropcustom.i
Prototype
b2bprto.i
Prototype
b2bprtocustom.i
Template
b2b.w
dynb2b.w
Exclude
b2bexclcustom.i
Instance
b2bdefscustom.i
MsgHandler class
The MsgHandler class is represented by the super procedure msghandler.p. Table 1–7 lists the class and custom files related to msghandler.p.
 
Table 1–7: Class and custom files for MsgHandler 
Class files
Customer files
Definition
msghandler.cld
Super
msghandlercustom.p
Method
msghandler.i
Method
msghandlercustom.i
Property
msghprop.i
Property
msghpropcustom.i
Prototype
msghprto.i
Prototype
msghprtocustom.i
Template
msghandler.w
Exclude
msghandlerexclcustom.i
Instance
msghandlerdefscustom.i
XML class
The Xml.p file presents a simplified DOM API by encapsulating the ABL DOM statements so that x-noderef handles never need to be exposed to b2b.p. Table 1–8 lists the class and custom files related to xml.p.
 
Table 1–8: Class and custom files for XML 
Class files
Customer files
Definition
xml.cld
Super
xmlcustom.p
Method
xml.i
Method
xmlcustom.i
Property
xmlprop.i
Property
xmlpropcustom.i
Prototype
xmlprto.i
Prototype
xmlprtocustom.i
Template
xml.w
Exclude
xmlexclcustom.i
Instance
xmldefscustom.i
SmartCombo
The SmartCombo extends ADM2 Smart technology to the Combo Box level. The class Combo is a user-defined class. Table 1–9 lists the class and custom files related to combo.p.
 
Table 1–9: Class and custom files for SmartCombo 
Class files
Customer files
Definition
combo.cld
Super
combocustom.p
Method
combo.i
Method
combocustom.i
Property
combprop.i
Property
combopropcustom.i
Prototype
combprto.i
Prototype
comboprtocustom.i
Template
dyncombo.w
Exclude
comboexclcustom.i
Instance
combodefscustom.i
SmartConsumer
See the “SmartProducer and SmartConsumer” section.
SmartDataBrowser
The SmartDataBrowser displays multiple virtual records in a simple, tabular row/column format. It obtains and updates the data in cooperation with a SmartDataObject or SmartBusinessObject. This object is supplied in both dynamic and customizable versions.
The class name of the object is Browser. It is a OpenEdge class, and the file src/adm2/sbo.p is its super procedure. Browser inherits from OpenEdge class DataVis. Table 1–10 lists the class and custom files related to browser.p.
 
Table 1–10: Class and custom files for SmartDataBrowser 
Class files
Customer files
Definition
browser.cld
Super
browsercustom.p
Method
browser.i
Method
browsercustom.i
Property
brsprop.i
Property
brspropcustom.i
Prototype
brsprto.i
Prototype
brsprtocustom.i
Template
browser.w
dynbrowser.w
Exclude
browserexclcustom.i
Additional method files
brschnge.i
brsend.i
brsentry.i
brshome.i
brsleave.i
brsoffhm.i
brsoffnd.i
brsscrol.i
Instance
browserdefscustom.i
SmartDataField
The SmartDataField brings Smart technology down to the field level. You can create a SmartDataField object using any visualization you desire, and insert it as a replacement for one of the standard Fill-ins that make up a SmartDataViewer.
The class name of the object is Field. It is a OpenEdge class, and the file src/adm2/field.p is its super procedure. Table 1–11 lists the class and custom files related to field.p.
 
Table 1–11: Class and custom files for SmartDataField 
Class files
Custom files
Definition
field.cld
Super
fieldcustom.p
Method
field.i
Method
fieldcustom.i
Property
fieldprop.i
Property
fieldpropcustom.i
Prototype
fieldprto.i
Prototype
fieldprtocustom.i
Template
field.w
Exclude
fieldexclcustom.i
Instance
fielddefscustom.i
SmartDataObject
The SmartDataObject is a data pump. It creates and manages a data stream based on the terms of a query that you define within it. You can often avoid complicated JOINs by linking SmartDataObjects together, each managing a single table. If your application runs in a distributed environment, you can update multiple SmartDataObjects on an AppServer by linking them inside a SmartBusinessObject.
The class name of the SmartDataObject is Data, and it inherits from class Query. Both are OpenEdge classes, and the file src/adm2/data.p is Data’s super procedure. Table 1–12 lists the class and custom files related to data.p.
 
Table 1–12: Custom and class files for SmartDataObjects 
Class files
Custom files
Definition
data.cld
Super
datacustom.p
Method
data.i
Method
datacustom.i
Property
dataprop.i
Property
datapropcustom.i
Prototype
dataprto.i
Prototype
dataprtocustom.i
Template
data.w
dyndata.w
Exclude
dataexclcustom.i
Overflow Files
dataext.p
dataextcols.p
Instance
datadefscustom.i
Additional Method Files
cltorsvr.i
robjflds.i
Query class
The super-procedure file for class Query is query.p. Table 1–13 lists the class and custom files related to query.p.
 
Table 1–13: Custom and class files for queries
Class files
Custom files
Definition
query.cld
Super
querycustom.p
Method
query.i
Method
querycustom.i
Property
qryprop.i
Property
qrypropcustom.i
Prototype
qryprto.i
Prototype
qryprtocustom.i
Template
Exclude
queryexclcustom.i
Overflow files
queryext.p
Instance
querydefscustom.i
Additional method files
delrecst.i
tblprep.i
Note: If the macro {&APP-SERVER-VARS} is defined, the Query class inherits from the AppServer class, represented by the super procedure appserver.p. To force the macro to be defined, set the AppServer-Aware check box in the Procedure Settings dialog box for your object. If there is no such check box, or it is disabled, then you cannot force the definition in that instance. For the list of files defining the AppServer class, see the “AppServer class” section.
SmartDataViewer
The SmartDataViewer displays a single virtual record at a time using a combination of basic fill-ins and, if you choose, SmartDataFields. It obtains and updates the data in cooperation with a SmartDataObject or SmartBusinessObject.
Its class is Viewer, a OpenEdge class, for which the file src/adm2/data.p is its super procedure. Table 1–14 lists the class and custom files related to viewer.p.
 
Table 1–14: Class and custom files for SmartDataViewer 
Class files
Custom files
Definition
viewer.cld
Super
viewercustom.p
Method
viewer.i
Method
viewercustom.i
Property
viewprop.i
Property
viewpropcustom.i
Prototype
viewprto.i
Prototype
viewprtocustom.i
Template
viewer.w
Exclude
viewerexclcustom.i
Instance
viewerdefscustom.i
SmartDialog
The SmartDialog is a special type of Frame object supported by a dedicated Window. One of several expressions of the class Container, it is a modal object. Because modal objects completely own the focus while open, they are best used to capture data without which the application cannot continue.
The SmartDialog has no class of its own; the file src/adm2/containr.p is its super procedure. Table 1–15 lists the class and custom files related to containr.p and the SmartDialog.
 
Table 1–15: Class and custom files for SmartDialog 
Class files
Custom files
Definition
Super
containrcustom.p
Method
containr.i
Method
containrcustom.i
Property
cntnprop.i
Property
cntnpropcustom.i
Prototype
cntnprto.i
Prototype
cntnprtocustom.i
Template
cntnrdlg.w
Exclude
containrexclcustom.i
Additional method file
dialogmn.i
Instance
containrdefscustom.i
SmartFilter
The SmartFilter allows the user to reduce a data stream to a more manageable size, in real time. Logically, SmartFilter resides between some SmartDataObject and some visualization object such as a SmartDataBrowser. By choosing different setups for the Filter, you can give the eventual user more or less control over the contents of the data stream being displayed.
This object’s class is Filter, a OpenEdge class, and its super-procedure file is src/adm2/filter.p. Table 1–16 lists the class and custom files related to filter.p.
 
Table 1–16: Class and custom files for SmartFilter 
Class files
Custom files
Definition
filter.cld
Super
filtercustom.p
Method
filter.i
Method
filtercustom.i
Property
filtprop.i
Property
filtpropcustom.i
Prototype
filtprto.i
Prototype
filtprtocustom.i
Template
dynfilter.w
Exclude
filterexclcustom.i
Instance
filterdefscustom.i
SmartFolder
The SmartFolder implements a version of the now-standard tabbed-folders metaphor. SmartFolder is an expression of the Visual class, and has only a template file of its own. The super-procedure file for the Visual class is src/adm2/visual.p. Table 1–17 lists the class and custom files related to visual.p.
 
Table 1–17: Class and custom files for SmartFolder 
Class files
Custom files
Definition
Super
Method
Method
Property
Property
Prototype
Prototype
Template
folder.w
Exclude
Instance
SmartFrame
The SmartFrame provides a platform for constructing reusable subsystems. Like the SmartDialog and the SmartWindow, the SmartFrame has no special class of its own: it is an expression of the Container class, for which the super-procedure file is src/adm2/containr.p. Table 1–18 lists the class and custom files related to container.p and SmartFrame.
 
Table 1–18: Class and custom files for SmartFrame 
Class files
Custom files
Definition
Super
Method
Method
Property
Property
Prototype
Prototype
Template
cntnrfrm.w
Exclude
Instance
SmartLookup
The SmartLookup is a faster but less-general version of the SmartSelect. It provides quick, read-only lookup using a focused, dynamic query. The class Lookup is a user-defined class. Table 1–19 lists the class and custom files related to lookup.p.
 
Table 1–19: Class and custom files for SmartLookup 
Class files
Custom files
Definition
lookup.cld
Super
lookupcustom.p
Method
lookup.i
Method
lookupcustom.i
Property
lookprop.i
Property
lookuppropcustom.i
Prototype
lookprto.i
Prototype
lookupprtocustom.i
Template
dynlookup.w
Exclude
lookupexclcustom.i
Instance
lookupdefscustom.i
SmartPanel
The SmartPanel presents an array of related buttons. Several such arrays, dedicated to different purposes, are supplied with AppBuilder. These arrays are all members of the OpenEdge class Panel. Panel inherits from class Visual, and its super-procedure file is src/adm2/panel.p. Table 1–20 lists the class and custom files related to panel.p.
 
Table 1–20: Class and custom files for SmartPanel  
Class files
Custom files
Definition
panel.cld
Super
panelcustom.p
Method
panel.i
Method
panelcustom.i
Property
panlprop.i
Property
panlpropcustom.i
Prototype
panlprto.i
Prototype
panlprtocustom.i
Template
pcommit.w
pnavico.w
pnavlbl.w
pupdsav.w
Exclude
panelexclcustom.i
Instance
paneldefscustom.i
SmartProducer and SmartConsumer
The SmartMessageProducer sends messages using some message-transport system. At present, the only transport system supported is SonicMQ.
On demand, SmartMessageProducer creates a message body of the appropriate kind, passes it back to the requesting object—such as a SmartB2BObject or SmartSender—to be filled in, and finally inserts the message into the outbound message-transport queue. If it receives a reply to a message, it accepts it and passes it upstream for processing.
The SmartConsumer handles inbound traffic from some message-transport system. It accepts incoming messages and passes them on for processing by some other object such as a SmartB2BObject or SmartReceiver. It also sends reply messages when required.
The class names of the objects are Producer and Consumer, respectively. They are OpenEdge classes derived from the Messaging class.
The file src/adm2/producer.p is the super procedure for the class SmartProducer. The file src/adm2/consumer.p is the super procedure for the class SmartConsumer. Table 1–21 lists the class and custom files related to producer.p.
 
Table 1–21: Class and custom files for SmartProducer
Class files
Custom files
Definition
producer.cld
Super
producercustom.p
Method
producer.i
Method
producercustom.i
Property
prodprop.i
Property
prodpropcustom.i
Prototype
prodprto.i
Prototype
prodprtocustom.i
Template
producer.w
dynproducer.w
Exclude
producerexclcustom.i
Instance
producerdefscustom.i
Table 1–22 lists the files for the Consumer class.
 
Table 1–22: Class and custom files for Consumer 
Class files
Custom files
Definition
consumer.cld
Super
consumercustom.p
Method
consumer.i
Method
consumercustom.i
Property
consprop.i
Property
conspropcustom.i
Prototype
consprto.i
Prototype
consprtocustom.i
Template
consumer.w
dynconsumer.w
Exclude
consumerexclcustom.i
Instance
consumerdefscustom.i
Messaging class
The file src/adm2/messaging.p is the super procedure for the class Messaging. Table 1–23 lists the class and custom files related to messaging.p.
 
Table 1–23: Class and custom files for messaging 
Class files
Custom files
Definition
messaging.cld
Super
messagingcustom.p
Method
messaging.i
Method
messagingcustom.i
Property
messprop.i
Property
messpropcustom.i
Prototype
messprto.i
Prototype
messprtocustom.i
Template
Exclude
messagingexclcustom.i
Instance
messagingdefscustom.i
SmartRouter
The SmartRouter is a utility object that routes incoming documents to the appropriate SmartB2BObject for transformation. The SmartRouter uses the Router class, a user-defined class whose super-procedure file is src/adm2/router.p. Table 1–24 lists the class and custom files related to router.p.
 
Table 1–24: Class and custom files for SmartRouter 
Class files
Custom files
Definition
router.cld
Super
routercustom.p
Method
router.i
Method
routercustom.i
Property
routprop.i
Property
routpropcustom.i
Prototype
routprto.i
Prototype
routprtocustom.i
Template
router.w
Exclude
routerexclcustom.i
Instance
routerdefscustom.i
SmartSelect
The SmartSelect object is a type of SmartDataField. It represents a self-populating Selection List. Its class is a OpenEdge-type class, Select, whose super-procedure file is src/adm2/select.p. Table 1–25 lists the class and custom files related to select.p.
 
Table 1–25: Class and custom files for SmartSelect 
Class files
Custom files
Definition
select.cld
Super
selectcustom.p
Method
select.i
Method
selectcustom.i
Property
seleprop.i
Property
selepropcustom.i
Prototype
seleprto.i
Prototype
seleprtocustom.i
Template
select.w
Exclude
selectexclcustom.i
Instance
selectdefscustom.i
SmartSender and SmartReceiver
These message-handling objects can usually be substituted for the SmartB2BObject when you do not need to perform protocol-based transformation between XML and ABL. To use these objects, you must complete their handler routines to suit your customer’s business needs. You can make the handler functions as simple or complex as you like.
The SmartSender and SmartReceiver objects are based on the msghandler class, whose super procedure is msghandler.p. The Msghandler class is derived from the class Smart. Table 1–26 lists the class and custom files related to msghandler.p for SmartSender and SmartReceiver.
 
Table 1–26: Class and custom files for SmartSender and SmartReceiver  
Class files
Custom files
Definition
msghandler.cld
Super
msghandlercustom.p
Method
msghandler.i
Method
msghandlercustom.i
Property
msghprop.i
Property
msghpropcustom.i
Prototype
msghprto.i
Prototype
msghprtocustom.i
Template
receiver.w
sender.w
Exclude
msghandlerexclcustom.i
Instance
msghandlerdefscustom.i
SmartToolbar
The SmartToolbar object is related to the SmartPanel, combining a menu component with a tool bar. The default SmartToolbar can replace all the dedicated SmartPanels that are also distributed with AppBuilder. The SmartToolbar object also provides access to toolbar and menu actions that you want to define.
Both the menu and the toolbar can be turned off. If you turn off the toolbar, you can use SmartPanels to supply the same capabilities. If you turn off the menu, however, you have no menu at all. You cannot use the menu that is available through the SmartWindow properties dialog box. The two menu designs are not compatible.
The SmartToolbar is an expression of the OpenEdge Toolbar class, descended from the Panel class. The Toolbar super-procedure file is src/adm2/toolbar.p. Table 1–27 lists the class and custom files related to toolbar.p.
 
Table 1–27: Class and custom files for SmartToolbar 
Class files
Custom files
Definition
toolbar.cld
Super
toolbarcustom.p
Method
toolbar.i
Method
toolbarcustom.i
actioncustom.i
Property
toolprop.i
Property
toolpropcustom.i
actiprtocustom.i
Prototype
toolprto.i
Prototype
toolprtocustom.i
actiprtocustom.i
Template
toolbar.w
dyntoolbar.w
Exclude
toolbarexclcustom.i
actionexclcustom.i
Overflow files
toolbarext.p
Instance
toolbardefscustom.i
Instance
actiondefscustom.i
SmartWindow
The SmartWindow™ object is the leading member of the Container class. Unlike other members of that class, SmartWindows are extremely general and versatile. SmartWindow, like SmartFrame™ and SmartDialog, does not have a special class of its own. It is an expression of the Container class. The super-procedure file for the Container class is src/adm2/containr.p. Table 1–28 lists the class and custom files related to container.p for SmartWindow.
 
Table 1–28: Class and custom files for SmartWindow 
Class files
Custom files
Definition
containr.cld
Super
containrcustom.p
Method
containr.i
Method
containrcustom.i
Property
cntnprop.i
Property
cntnpropcustom.i
Prototype
cntnprto.i
Prototype
cntnprtocustom.i
Template
cntnrwin.w
Exclude
containrexclcustom.i
Additional method file
windowmn.i
Instance
containrdefscustom.i