blob: 3e8401af80233b98abd4dc76012aaae2e18fefbd [file] [log] [blame]
/******************************************************************************
* Copyright (c) 2004 Actuate Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Actuate Corporation - Initial implementation.
*****************************************************************************/
/**
* BirtTabedDialogBase
* ...
*/
BirtTabedDialogBase = Class.create( );
BirtTabedDialogBase.prototype = Object.extend( new AbstractBaseDialog( ),
{
/**
* Current tabs
*/
__tabs_caption : { },
/**
* Current sections
*/
__tabs_content : { },
/**
* Current tabs
*/
__current_tab : null,
__neh_switchTab_closure : null,
__neh_hoverTab_closure : null,
/**
* Initialization routine required by "ProtoType" lib.
*
* @return, void
*/
initialize : function( id )
{
this.__initBase(id);
this.__z_index = 300;
// TODO: need a better way to identify the dialog layout.
var oTabs = $( 'tabs' );
var oDivs = $( 'aaacontent' );
if ( oTabs && oDivs )
{
var oCells = oTabs.getElementsByTagName( 'td' );
var oTables = oDivs.getElementsByTagName( 'div' );
for ( var i = 0; i < oCells.length; i++ )
{
this.__tabs_caption[ oCells[i].firstChild.data ] = oCells[i];
this.__tabs_content[ oCells[i].firstChild.data ] = oTables[i];
}
this.__current_tab = oCells[0].firstChild.data;
}
// Closures
this.__neh_switchTab_closure = this.__neh_switchTab.bindAsEventListener( this );
this.__neh_hoverTab_closure = this.__neh_hoverTab.bindAsEventListener( this );
this.__initialize( id );
},
/**
* Install native/birt event handlers.
*
* @id, toolbar id (optional since there is only one toolbar)
* @return, void
*/
__tabBase_installEventHandlers : function( id )
{
// Tabs
if ( this.__tabs_caption )
{
for ( var i in this.__tabs_caption )
{
Event.observe( this.__tabs_caption[ i ], 'click', this.__neh_switchTab_closure, false );
Event.observe( this.__tabs_caption[ i ], 'mouseover', this.__neh_hoverTab_closure, false );
Event.observe( this.__tabs_caption[ i ], 'mouseout', this.__neh_hoverTab_closure, false );
}
}
this.__installEventHandlers( id );
},
/**
* Handle native event 'click'.
*
* @event, incoming browser native event
* @return, void
*/
__neh_hoverTab : function( event )
{
var oCell = Event.element( event );
if ( this.__current_tab != oCell.firstChild.data )
{
this.__tabs_caption[oCell.firstChild.data].style.backgroundColor = ( event.type == 'mouseover' )? "#4682b4" : "#dbe4ee";
this.__tabs_caption[oCell.firstChild.data].style.color = ( event.type == 'mouseover' )? "white" : "black";
}
},
/**
* Handle native event 'click'.
*
* @event, incoming browser native event
* @return, void
*/
__neh_switchTab : function( event )
{
var oCell = Event.element( event );
if ( this.__current_tab != oCell.firstChild.data )
{
this.__tabs_caption[this.__current_tab].style.borderStyle = "outset";
this.__tabs_caption[this.__current_tab].style.cursor = "hand";
this.__tabs_caption[oCell.firstChild.data].style.borderStyle = "inset";
this.__tabs_caption[oCell.firstChild.data].style.cursor = "default";
this.__tabs_caption[oCell.firstChild.data].style.backgroundColor = "#dbe4ee";
this.__tabs_caption[oCell.firstChild.data].style.color = "black";
this.__tabs_content[this.__current_tab].style.display = "none";
this.__tabs_content[oCell.firstChild.data].style.display = "block";
this.__current_tab = oCell.firstChild.data;
}
}
});