/* -*- Mode: Java; tab-width: 4; c-basic-offset: 4; -*- * * The contents of this file are subject to the Netscape Public License * Version 1.0 (the "NPL"); you may not use this file except in * compliance with the NPL. You may obtain a copy of the NPL at * http://www.mozilla.org/NPL/ * * Software distributed under the NPL is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL * for the specific language governing rights and limitations under the * NPL. * * The Initial Developer of this code under the NPL is Netscape * Communications Corporation. Portions created by Netscape are * Copyright (C) 1998 Netscape Communications Corporation. All Rights * Reserved. * * Contributor(s): * Ben "Count XULula" Goodger */ /** class WizardManager( string frame_id, string tagURLPrefix, * string tagURLPostfix, object wizardMap ) ; * purpose: class for managing the state of a generic wizard * in: string frame_id content frame id/name * string tagURLPrefix prefix root of wizard pages * string tagURLPostfix extension suffix of wizard pages (e.g. ".xul") * object wizardMap navigation map object * out: nothing. **/ function WizardManager( frame_id, tagURLPrefix, tagURLPostfix, wizardMap ) { // current page this.currentPageTag = null; // data grid of navigable pages this.wizardMap = ( wizardMap ) ? wizardMap : null; // current page this.currentPageNumber = 0; // flag to signify no page-change occurred. this.firstTime = true; // was false, let's see what this does. o_O // frame which holds data this.content_frame = document.getElementById( frame_id ); // wizard state manager this.WSM = new WidgetStateManager( frame_id ); // wizard button handler set this.WHANDLER = new WizardHandlerSet( this.WSM, this ); // url handling this.URL_PagePrefix = ( tagURLPrefix ) ? tagURLPrefix : null; this.URL_PagePostfix = ( tagURLPostfix ) ? tagURLPrefix : null; // string bundle this.bundle = srGetStrBundle("chrome://global/locale/wizardManager.properties"); this.LoadPage = WM_LoadPage; this.GetURLFromTag = WM_GetURLFromTag; this.GetTagFromURL = WM_GetTagFromURL; this.SetHandlers = WM_SetHandlers; this.SetPageData = WM_SetPageData; this.SavePageData = WM_SavePageData; this.ProgressUpdate = WM_ProgressUpdate; this.GetMapLength = WM_GetMapLength; // set up handlers from wizard overlay // #include chrome://global/content/wizardOverlay.js doSetWizardButtons( this ); } /** void LoadPage( string page ) ; * purpose: loads a page into the content frame * in: string page tag referring to the complete file name of the current page * string frame_id optional supply of page frame, if content_frame is not * defined * out: boolean success indicator. **/ function WM_LoadPage( pageURL, absolute ) { if( pageURL != "" ) { if ( this.firstTime && !absolute ) this.ProgressUpdate( this.currentPageNumber ); // 1.1: REMOVED to fix no-field-page-JS error bug. reintroduce if needed. // if ( !this.firstTime ) // this.WSM.SavePageData( this.content_frame ); // build a url from a tag, or use an absolute url if( !absolute ) { var src = this.GetURLFromTag( pageURL ); } else { src = pageURL; } if( this.content_frame ) this.content_frame.setAttribute("src", src); else return false; this.firstTime = false; return true; } return false; } /** string GetUrlFromTag( string tag ) ; * - purpose: creates a complete URL based on a tag. * - in: string tag representing the specific page to be loaded * - out: string url representing the complete location of the page. **/ function WM_GetURLFromTag( tag ) { return this.URL_PagePrefix + tag + this.URL_PagePostfix; } /** string GetTagFromURL( string tag ) ; * - purpose: fetches a tag from a URL * - in: string url representing the complete location of the page. * - out: string tag representing the specific page to be loaded **/ function WM_GetTagFromURL( url ) { return url.substring(this.URL_PagePrefix.length, this.URL_PagePostfix.length); } // SetHandlers pass-through for setting wizard button handlers easily function WM_SetHandlers( onNext, onBack, onFinish, onCancel, onPageLoad, enablingFunc ) { this.WHANDLER.SetHandlers( onNext, onBack, onFinish, onCancel, onPageLoad, enablingFunc ); } // SetPageData pass-through function WM_SetPageData() { this.WSM.SetPageData(); } // SavePageData pass-through function WM_SavePageData() { this.WSM.SavePageData(); } /** int GetMapLength() * - purpose: returns the number of pages in the wizardMap * - in: nothing * - out: integer number of pages in wizardMap **/ function WM_GetMapLength() { var count = 0; for ( i in this.wizardMap ) count++; return count; } /** void ProgressUpdate ( int currentPageNumber ); * - purpose: updates the "page x of y" display if available * - in: integer representing current page number. * - out: nothing **/ function WM_ProgressUpdate( currentPageNumber ) { var statusbar = document.getElementById ( "status" ); if ( statusbar ) { var string; try { string = this.bundle.formatStringFromName("oflabel", [currentPageNumber+1, this.GetMapLength()], 2); } catch (e) { string = ""; } statusbar.setAttribute( "progress", string ); } }