/*******************************************************************************
* Copyright (c) 2002, 2009 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
* EclipseSource - ongoing development
******************************************************************************/
package org.eclipse.rap.demo.controls;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CTabFolder;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.*;
public class TabFolderTab extends ExampleTab {
protected static final int MAX_ITEMS = 3;
private boolean onDemandContent;
private TabFolder folder;
private TabItem[] tabItems;
private Button[] tabRadios;
public TabFolderTab( final CTabFolder topFolder ) {
super( topFolder, "TabFolder" );
}
protected void createStyleControls( final Composite parent ) {
createStyleButton( "BORDER", SWT.BORDER );
createStyleButton( "TOP", SWT.TOP );
createStyleButton( "BOTTOM", SWT.BOTTOM );
createVisibilityButton();
createEnablementButton();
createOnDemandButton( parent );
createFgColorButton();
createBgColorButton();
createFontChooser();
tabRadios = new Button[ MAX_ITEMS ];
for( int i = 0; i < MAX_ITEMS; i++ ) {
tabRadios[ i ] = createPropertyButton( "Select Tab " + i, SWT.RADIO );
final int itemIndex = i;
tabRadios[ i ].addSelectionListener( new SelectionAdapter() {
public void widgetSelected( final SelectionEvent event ) {
Button radio = ( Button )event.getSource();
if( radio.getSelection() ) {
folder.setSelection( itemIndex );
}
}
} );
}
tabRadios[ 0 ].setSelection( true );
createChangeContentButton( parent );
createInsertItemButton( parent );
createDisposeItemButton( parent );
}
protected void createExampleControls( final Composite parent ) {
parent.setLayout( new FillLayout() );
folder = new TabFolder( parent, getStyle() );
folder.setToolTipText( "Tab Folder Tooltip" );
tabItems = new TabItem[ MAX_ITEMS ];
folder.addSelectionListener( new SelectionAdapter() {
public void widgetSelected( final SelectionEvent event ) {
TabItem item = ( TabItem )event.item;
if( tabRadios != null ) {
int index = item.getParent().indexOf( item );
for( int i = 0; i < MAX_ITEMS; i++ ) {
tabRadios[ i ].setSelection( index == i );
}
}
createItemContent( item );
}
} );
for( int i = 0; i < MAX_ITEMS; i++ ) {
tabItems[ i ] = new TabItem( folder, SWT.NONE );
tabItems[ i ].setText( "TabItem " + i );
tabItems[ i ].setToolTipText( "Tooltip for TabItem " + i );
if( !onDemandContent ) {
createItemContent( tabItems[ i ] );
}
}
registerControl( folder );
}
private void createOnDemandButton( final Composite parent ) {
Button button = new Button( parent, SWT.CHECK );
button.setText( "Create Item Content on Demand" );
button.addSelectionListener( new SelectionAdapter() {
public void widgetSelected( final SelectionEvent event ) {
Button button = ( Button )event.widget;
onDemandContent = button.getSelection();
createNew();
}
} );
}
private void createChangeContentButton( final Composite parent ) {
Button btnChangeContent = new Button( parent, SWT.PUSH );
btnChangeContent.setText( "Change Content for Selected Item" );
btnChangeContent.addSelectionListener( new SelectionAdapter() {
public void widgetSelected( final SelectionEvent event ) {
TabItem item = folder.getSelection()[ 0 ];
Label content = new Label( folder, SWT.NONE );
int index = folder.indexOf( item );
content.setText( "Alternate content for tab item " + index );
item.setControl( content );
}
} );
}
private void createInsertItemButton( final Composite parent ) {
Button button = new Button( parent, SWT.PUSH );
button.setText( "Insert item before first item" );
button.addSelectionListener( new SelectionAdapter() {
public void widgetSelected( final SelectionEvent event ) {
TabItem tabItem = new TabItem( folder, SWT.NONE, 0 );
tabItem.setText( "TabItem " + folder.indexOf( tabItem ) );
tabItem.setToolTipText( "Tooltip for TabItem " + folder.indexOf( tabItem ) );
if( !onDemandContent ) {
createItemContent( tabItem );
}
}
} );
}
private void createDisposeItemButton( final Composite parent ) {
Button button = new Button( parent, SWT.PUSH );
button.setText( "Dispose of selected item" );
button.addSelectionListener( new SelectionAdapter() {
public void widgetSelected( final SelectionEvent event ) {
TabItem[] selection = folder.getSelection();
if( selection.length > 0 ) {
selection[ 0 ].dispose();
}
}
} );
}
private void createItemContent( final TabItem item ) {
if( item.getControl() == null ) {
TabFolder folder = item.getParent();
Text content = new Text( folder, SWT.WRAP | SWT.MULTI | SWT.READ_ONLY );
int index = folder.indexOf( item );
String text = "This is the content for item " + index;
if( onDemandContent ) {
text += "\nIt was created on demand, when the item was selected "
+ "for the first time through user interaction.";
}
content.setText( text );
item.setControl( content );
}
}
}