![JAR search and dependency download from the Maven repository](/logo.png)
rwt.widgets.util.TabUtil.js Maven / Gradle / Ivy
/*******************************************************************************
* Copyright (c) 2002, 2015 Innoopract Informationssysteme GmbH 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:
* Innoopract Informationssysteme GmbH - initial API and implementation
* EclipseSource - ongoing development
******************************************************************************/
rwt.qx.Class.define( "rwt.widgets.util.TabUtil", {
statics : {
createTabItem : function( id, parentId, index ) {
var widgetManager = rwt.remote.WidgetManager.getInstance();
var tabFolder = widgetManager.findWidgetById( parentId );
var tabItem = new rwt.widgets.TabItem();
tabItem.setTabIndex( null );
tabItem.setEnableElementFocus( false );
tabItem.setDirection( tabFolder.getDirection() );
tabItem.addEventListener( "changeFocused", rwt.widgets.util.TabUtil._onTabItemChangeFocus );
tabItem.addEventListener( "changeChecked", rwt.widgets.util.TabUtil._onTabItemSelected );
tabItem.addEventListener( "click", rwt.widgets.util.TabUtil._onTabItemClick );
tabFolder.addEventListener( "changeDirection", function() {
tabItem.setDirection( tabFolder.getDirection() );
} );
tabFolder.getBar().addAt( tabItem, index );
var tabViewPage = new rwt.widgets.base.TabFolderPage( tabItem );
tabFolder.getPane().add( tabViewPage );
widgetManager.add( tabViewPage, id + "pg" );
return tabItem;
},
releaseTabItem : function( tabItem ) {
tabItem.removeEventListener( "changeFocused", rwt.widgets.util.TabUtil._onTabItemChangeFocus );
tabItem.removeEventListener( "changeChecked", rwt.widgets.util.TabUtil._onTabItemSelected );
tabItem.removeEventListener( "click", rwt.widgets.util.TabUtil._onTabItemClick );
var widgetManager = rwt.remote.WidgetManager.getInstance();
var itemId = widgetManager.findIdByWidget( tabItem );
widgetManager.dispose( itemId + "pg" );
widgetManager.dispose( itemId );
},
_onTabItemChangeFocus : function( evt ) {
// Focus the tabFolder the item belongs to when the item is focused
if( evt.getTarget().getFocused() ) {
evt.getTarget().getParent().getParent().focus();
}
},
_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();
}
},
_onTabItemSelected : function( evt ) {
var tab = evt.getTarget();
if( !rwt.remote.EventUtil.getSuspended() && tab.getChecked() ) {
var itemId = rwt.remote.WidgetManager.getInstance().findIdByWidget( tab );
var folder = tab.getParent().getParent();
var remoteObject = rwt.remote.Connection.getInstance().getRemoteObject( folder );
remoteObject.set( "selection", itemId );
rwt.remote.EventUtil.notifySelected( folder, { "item" : itemId } );
}
},
onTabFolderKeyPress : function( evt ) {
var folder = evt.getTarget();
if( folder.classname == "rwt.widgets.TabFolder" ) {
var manager = folder.getBar().getManager();
var item = manager.getSelected();
if( item != null ) {
switch( evt.getKeyIdentifier() ) {
case "Left":
manager.selectPrevious( item );
rwt.widgets.util.TabUtil.markTabItemFocused( folder, evt.getTarget() );
evt.stopPropagation();
break;
case "Right":
manager.selectNext( item );
rwt.widgets.util.TabUtil.markTabItemFocused( folder, evt.getTarget() );
evt.stopPropagation();
break;
}
}
}
},
onTabFolderChangeFocused : function( evt ) {
var folder = evt.getTarget();
var item = folder.getBar().getManager().getSelected();
rwt.widgets.util.TabUtil.markTabItemFocused( folder, item );
},
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" );
}
}
}
});
© 2015 - 2025 Weber Informatics LLC | Privacy Policy