beautypg.com

Apple Newton Programmer’s Newton 2.0 (for Newton 2.0) User Manual

Page 611

background image

C H A P T E R 1 6

Find

Using the Find Service

16-23

In the body of this method, you need to do whatever is necessary to display the
soup entry

myEntry

. Typically, you first send a

Close

message to the Overview

and then open the view that displays the entry. The following code fragment shows
the implementation of a typical

ShowFoundItem

method.

// For use with ROM_SoupFinder proto

myApplication.ShowFoundItem:=

func(entry, myFinder)

begin // close my overview if it’s open

if currentView = myOverview then begin

myOverView:Close();

myDisplayView:Open();

// open view that displays the entry

end;

// scroll, highlight, etc. as necessary

// to display the entry

myDisplayView:DisplayEntry(entry, cursor);

end

Your application is always open when the

ShowFoundItem

message is sent to it.

For example, this message is sent when the user scrolls between found items from
within the Find slip. The system also invokes this method when the user taps an
item in the Find overview. In this case, the system opens your application, if
necessary, before sending the

ShowFoundItem

message to it.

Note that if no items are found this message is never sent.

Using ShowFoundItem with ROM_CompatibleFinder

16

If you are using a finder based on

ROM_CompatibleFinder

, you still need to

implement a

ShowFoundItem

in your application’s base view. Your finder also

needs to override the

ShowFakeEntry

method. Your

ShowFakeEntry

method

needs to call your

ShowFoundItem

method, making sure that your application is

open first. Your

ShowFoundItem

method should accept an element of the finder’s

items

array as its first parameter, instead of a soup entry. It should perform the

same actions as a

ShowFoundItem

method that expects a soup entry, as described

in “The ShowFoundItem Method” (page 16-22).

The following example demonstrates a typical

ShowFakeEntry

method:

myFinder :=

{

_proto : ROM_CompatibleFinder,

ShowFakeEntry : func (index)

begin

local myApp;

if myApp := GetRoot.(kAppSymbol) then