This message comes to you from MacDev-1(tm) -- the Mac(tm) OS Developer News and Info server. See below for more info on this list (including sub/unsub details). __________________________
Navigation Services support extended to Customization: Version History Navigation Services for MacOS 8, 9 and X. Version 3.0, September 14, 2002 --added a new class: NavCustomization that allows the client to customize a NavDialog Window. To allow this, NavReply was extended with an additional call: IsFolder. NavCustomization depends on usage of a DITL resource, and for this a new plugin was designed: ResourceEdit Plugin. See the documentation for this plugin, to obtain the details. NavDialog Plugin: Yes a bunch of classes have been implemented to support the Navigation Services, but they all make sense. Let's go over them one by one starting with probably the most important one. Don't make the mistake that one does the actual saving or opening of a folderItem. This plugin supports the Navigation DialogWindows and their manipulations. These manipulations are the key to set the NavServices to your own needs. And that's what it's all about. But why this plugin when REALbasic currently support some of these manipulations? Well, for one thing, this plugin tries to support almost every aspect of the Navigation Services. The classes have been numerous to provide easy support with little or no coding required in the REALbasic environment. NavDialog: The class that calls one of the Navigation Services, i.e., putting up the window. The class has different methods to call the NavDialog Window and has properties that allows you to determine what file(s) should be listed you can determine with the NavTypeList class. You can further manipulate the appearance of items in the NavDialog Window with the NavDialogOptions class. The NavDialogOptions are numerous, i.e., you can define an extended popupMenu, listing categories of FileTypes. This means that while the NavDialog is up, you can adjust the filtering of files. Another important property of the NavDialog class is the NavUserAction class. This class messages the final reply to the Navigation Services in the form of a NavReply class. NavReply: An instance of the NavReply class is obtained via the NavUserAction class. NavReply can return multiple folderItems, depending how the NavDialog Class was set up. In addition, NavReply can be obtained from the NavDialog.reply property. Retrieval of the Reply in this case can be hazardous, specifically in the OSX environment. The reason is the immediate returning from the methods defined in NavDialog. It may be a difficult concept, but immediate returning means that additional code after calling a method of the NavDialog instance is already executed, while the user has not done anything yet with the NavDialog Window. It's the carbon way. The classical way does not deal with the immediate returning; Your code halts at the method until the user has done something with the window. It would be a very good habit to use the UserAction class to obtain the instance of the NavReply, and it'll also work in the classic environment. NavTypeList: This class is used to provide a list of fileTypes the NavDialog Window should expose to the user. it is up to you to populate this list, while you also can omit the NavTypeList. It is specifically important when your application has its own signature. The creator type becomes very important in a build. NavDialogOptions: This class is required to drive the NavDialog Window into a cetain state. The class has numerous methods to set a banner or message in the Navdialog window, changing captions, setting the windowModality of the NavDialog (MacOSX). This class also has another class as property, NavDialogOptionsFlags, which is automatically instantiated when you instantiate the NavDialogOptions class. NavDialogOptionFlags: A class that manipulates the behavior of the NavDialog window. The property names in principle provide information about the effect it will have. NavUserAction: A class that provide access to the user action. If the user accepts a Navigation dialog, one of the events is being fired, and you as the programmer can respond accordingly. Why not having defined these events as events of the NavDialog Class? Well, you can keep one instance of the NavDialog Class, and exchange instances of NavUserAction. NavCallback: NavCallback provides additional info and manipulates a NavDialog. When subclassed, you can block opening, or saving or block creation of a new folder. You can monitor what files are being selected by the client, such that when the client cancels the Navdialog, you still know what the last folderitem was that was selected. NavCallback is a natural enhancement of the Navigation Services the MacOS provides. NavCustomization: This class is required when the client wants to add additional controls in the Navdialog. The class relies on usage of a DITL and a DLOG resource. DITL is a list of dialog items, each of the items has a unique id, starting with 1 for the first item. Navigation services, however, will offset these id's by the number of navDialog items present. NavCustomization has numerous methods to influence responses to the NavDialog; the events provide information required to implement the customized behavior of the Navdialog. You need to utilize the ResourceEdit Plugin to take advantage. Sincerely, Alfred N. Van Hoek, Ph.D. http://homepage.mac.com/vanhoek/ __________________________ Please visit our sponsors: RadGad(sm): The Place for Useful Gifts & Gadgets.(sm) http://www.radgad.com/, mailto:[EMAIL PROTECTED], or 877-5-RADGAD MacTech(r) Magazine: The journal of Macintosh technology and development http://www.mactech.com, mailto:[EMAIL PROTECTED], or 805-494-9797 DevDepot(sm): Your Source for RAM, Technical & Developer Products http://www.devdepot.com, mailto:[EMAIL PROTECTED] or call 877-DEPOT-NOW To submit a posting to MacDev-1, mailto:[EMAIL PROTECTED]. To subscribe to MacDev-1, send mail to [EMAIL PROTECTED] with the SUBJECT line reading "SUBSCRIBE MACDEV-1". To unsubscribe, the SUBJECT line should read "UNSUBSCRIBE MACDEV-1". MacTech, Developer Depot, RadGad, and Xplain Corporation are not responsible for any errors, omissions, or other inaccuracies in this message. News may be propagated freely, but please attribute your source as MacTech Magazine, <http://www.mactech.com>. --
