Reports Information
To provide a way for creating business expenses for the report, you need to
create an object model for business expenses, add an
OrderedCollection to your application to hold the expenses, add an
interface to your window for displaying business expenses, and create an
object-factory for adding the expenses to the ordered collection in your
application.
Creating an object model
The object model that you create will be a new class that has attributes for
each type of business expense to be reported on: date, reason,
airfare, room, meals, and misc. To create an object
model for business expenses, follow these steps:
- In the VisualAge Organizer, add a part to your application. Name
the part BusinessExpense and select Smalltalk class from
the Part type list and Object from the Inherits
from list.
The Script Editor opens on your new part.
- Switch to the Public Interface Editor and select the Attribute
tab to add the following attributes to your class: date, reason,
airfare, room, meals, and misc.
- Type the name of each attribute in the Attribute name
field.
- Select the Add with defaults push button.
- Modify the Attribute data type field as follows for each
attribute:
- Attribute
- Attribute data type
- date
- Date
- reason
- String
- airfare, room, meals, misc
- ScaledDecimal
- For each attribute you modify, select the Update button.
- To generate the attributes and default getter and setter methods, select
Generate Default Scripts from the File menu, and in the
window that displays select the Generate all push button.
If you switch back to the Script Editor now, you will see that the
attributes have been added to the class definition, and public instance
methods have been generated for each attribute.
|
| You may need to toggle one of the method buttons on the Script Editor to
make the new attributes and methods appear.
|
- Save your new part and close the editor.
You will use these attributes later to help generate the user interface for
creating business expense items.
Adding an OrderedCollection
-
In the Composition Editor for BusinessExpenseView, add an ordered
collection to your visual part.
|
| To add an ordered collection, select the Models category on the parts
palette, and then select the OrderedCollection part and add it to the
free-form surface.
|
- Change the name of the ordered collection part to
BusinessExpenseCollection by selecting Change Name from
the part's pop-up menu.
Creating an object factory
An Object Factory is a VisualAge part available in the Models category of the
parts palette. It creates new instances of a class. You can use
an object factory in the business expense reporting application to create new
instances of the class BusinessExpense and add them to
BusinessExpenseCollection.
To create an object factory for the BusinessExpense part you
just created, follow these steps:
- In the Composition Editor containing BusinessExpenseView, Add
an Object Factory part to the free-form surface.
- Open the settings of the object factory and set the
instanceClass to BusinessExpense and the
partName to BusinessExpenseFactory.
Adding the user interface
To provide a user interface for adding BusinessExpense items to the
BusinessExpenseCollection add a new container details part,
container details columns, and pop-up menus part to your window as
follows:
- Select the Container Details part from the Lists category of the parts
palette and drop it onto the window.
- To set up the columns you will need for each type of business expense you
can record, display the container details part's pop-up menu and select
Initialize columns Based On A Type. In the window that
displays, type Business Expense.
The Initialize columns Based On A Type menu item creates one
column for each instance variable that you specified when you created the
Business Expense part.
- To make your container look nice, you can do the following:
- Change the column labels to Date, Reason, Airfare, Room, Meals
and Misc. by holding down the Alt key and
selecting the column heading with mouse button 1, then directly editing the
heading.
- Resize each column to make the Reason column as wide as
possible, by selecting the resize handles for each column and dragging them to
the width you want.
You can also open the settings for each column to set the
converter as follows:
- Column
- Data type
- Date
- Date
- Reason
- String
- Airfare, Room, Meals, Misc
- Decimal
- Open the settings for the Container Details part. Change the
selectionPolicy property to XmCELLSINGLESELECT
- Add a Popup Menu part to the free-form surface of the Composition Editor
and give it two Menu Choice parts labeled Add Expense and
Delete Expense.
- To add the menu to the Container Details part, connect the menu's
self attribute to the Container Details part's menu
attribute. This connection displays the menu when you place the mouse
pointer over the container and press button 2.
This part of your user interface should appear as follows in the
Composition Editor:

Making the connections
To connect the object factory, ordered collection, table, and menu, do the
following:
- Make the following connections from the Add Expense menu
item:
- Connect the clicked event to the object factory's
new action.
- Connect the normalResult attribute of the connection to the
ordered collection's add: action.
- To display new business expenses in the container details part, connect
the ordered collection's self attribute to the container
details' items attribute.
- Make the following connections from the Delete Expense menu
item:
- Connect the clicked event to the ordered collection's
remove: action.
- Connect the container details part's selectedItem
attribute, to the dashed connection line's anObject
attribute.
This part of your user interface should now appear in the Composition
Editor as follows:

If you test your window, you should see a window very similar to the first
illustration in this chapter. You can add information to the table as
follows:
- Select a name from the Name drop-down list.
- Select Add Expense from the table's pop-up menu.
- Click in the Date column and type a date, then tab to the next
column and type an amount. Continue tabbing through the columns until
you have entered information in each one.
- Select Add Expense again to add another row of information to
the table.
[ Top of Page | Previous Page | Next Page | Table of Contents | Index ]