blob: 488c44547d8f09736ef9b9dd7967b50c734b1806 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2002-2006 Innoopract Informationssysteme GmbH.
* 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:
* Innoopract Informationssysteme GmbH - initial API and implementation
******************************************************************************/
qx.OO.defineClass( "org.eclipse.swt.TabUtil" );
org.eclipse.swt.TabUtil.createTabItem = function( id, parent ) {
var tabButton = new qx.ui.pageview.tabview.Button();
tabButton.setTabIndex( -1 );
tabButton.setEnableElementFocus( false );
// TODO [rh] remove event listener when tabButton gets disposed of
tabButton.addEventListener( "changeFocused",
org.eclipse.swt.TabUtil._onTabItemChangeFocus );
tabButton.addEventListener( "click",
org.eclipse.swt.TabUtil._onTabItemClick );
var tabView
= org.eclipse.swt.WidgetManager.getInstance().findWidgetById( parent );
tabView.getBar().add( tabButton );
tabButton.tabView = tabView;
var tabViewPage = new qx.ui.pageview.tabview.Page( tabButton );
tabView.getPane().add( tabViewPage );
org.eclipse.swt.WidgetManager.getInstance().add( tabButton, id );
org.eclipse.swt.WidgetManager.getInstance().add( tabViewPage, id + "pg" );
}
org.eclipse.swt.TabUtil._onTabItemChangeFocus = function( evt ) {
// Focus the tabFolder the item belongs to when the item is focused
if( evt.getTarget().getFocused() ) {
evt.getTarget().getParent().getParent().focus();
}
}
org.eclipse.swt.TabUtil._onTabItemClick = function( evt ) {
// Focus the tabFolder the item belongs to when the item is clicked
var folder = evt.getTarget().getParent().getParent();
if( !folder.getFocused() ) {
folder.focus();
}
}
org.eclipse.swt.TabUtil.onTabFolderKeyPress = function( evt ) {
var folder = evt.getTarget();
if( folder.classname == "qx.ui.pageview.tabview.TabView" ) {
var manager = folder.getBar().getManager();
var item = manager.getSelected();
if( item != null ) {
switch( evt.getKeyIdentifier() ) {
case "Left":
manager.selectPrevious( item );
org.eclipse.swt.TabUtil.markTabItemFocused( folder, evt.getTarget() );
evt.stopPropagation();
break;
case "Right":
manager.selectNext( item );
org.eclipse.swt.TabUtil.markTabItemFocused( folder, evt.getTarget() );
evt.stopPropagation();
break;
}
}
}
}
/**
* Listener for change of property enabled on TabView, passes enablement to
* children
* TODO: [rst] Once qx can properly disable a TabView, this listener can be
* removed
*/
org.eclipse.swt.TabUtil.onChangeEnabled = function( evt ) {
var enabled = evt.getData();
var items = this._bar.getChildren();
for( var i = 0; i < items.length; i++ ) {
var item = items[ i ];
item.setEnabled( enabled );
}
}
org.eclipse.swt.TabUtil.onTabFolderChangeFocused = function( evt ) {
var folder = evt.getTarget();
var item = folder.getBar().getManager().getSelected();
org.eclipse.swt.TabUtil.markTabItemFocused( folder, item );
}
org.eclipse.swt.TabUtil.markTabItemFocused = function( folder, item ) {
var items = folder.getBar().getManager().getItems();
for( var i = 0; i < items.length; i++ ) {
items[ i ].removeState( "focused" );
}
// add state to the selected item if the tabFolder is focused
if( item != null && folder.getFocused() ) {
item.addState( "focused" );
}
}
org.eclipse.swt.TabUtil.tabSelected = function( evt ) {
if( !org_eclipse_rap_rwt_EventUtil_suspend ) {
var widgetManager = org.eclipse.swt.WidgetManager.getInstance();
var req = org.eclipse.swt.Request.getInstance();
var id = widgetManager.findIdByWidget( evt.getTarget() );
req.addParameter( id + ".checked", evt.getTarget().getChecked() );
}
}
org.eclipse.swt.TabUtil.tabSelectedAction = function( evt ) {
org.eclipse.swt.TabUtil.tabSelected( evt );
if( !org_eclipse_rap_rwt_EventUtil_suspend && evt.getTarget().getChecked() ) {
var widgetManager = org.eclipse.swt.WidgetManager.getInstance();
// TODO [rst] Add item parameter in doWidgetSelected
var itemId = widgetManager.findIdByWidget( evt.getTarget() );
req.addParameter( "org.eclipse.swt.events.widgetSelected.item", itemId );
var id = widgetManager.findIdByWidget( evt.getTarget().tabView );
org.eclipse.swt.EventUtil.doWidgetSelected( id, 0, 0, 0, 0 );
}
}