/*******************************************************************************
* 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
******************************************************************************/
package org.eclipse.rap.demo.controls;
import org.eclipse.rap.rwt.RWT;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.TabFolder;
import org.eclipse.swt.widgets.TabItem;
import org.eclipse.swt.widgets.Text;
public class TabFolderTab extends ExampleTab {
protected static final int MAX_ITEMS = 3;
private boolean onDemandContent;
private TabFolder folder;
private Button[] tabRadios;
private int counter;
public TabFolderTab() {
super( "TabFolder" );
}
@Override
protected void createStyleControls( Composite parent ) {
createStyleButton( "BORDER", SWT.BORDER );
createStyleButton( "TOP", SWT.TOP );
createStyleButton( "BOTTOM", SWT.BOTTOM );
createOrientationButton();
createVisibilityButton();
createEnablementButton();
createOnDemandButton( parent );
createFgColorButton();
createBgColorButton();
createFontChooser();
tabRadios = new Button[ MAX_ITEMS ];
for( int i = 0; i < MAX_ITEMS; i++ ) {
tabRadios[ i ] = createPropertyButton( "Select TabItem at index " + i, SWT.RADIO );
final int itemIndex = i;
tabRadios[ i ].addSelectionListener( new SelectionAdapter() {
@Override
public void widgetSelected( SelectionEvent event ) {
Button radio = ( Button )event.getSource();
if( radio.getSelection() ) {
folder.setSelection( itemIndex );
}
}
} );
}
tabRadios[ 0 ].setSelection( true );
createChangeContentButton( parent );
createInsertItemButton( parent );
createDisposeSelectedItemButton( parent );
createDisposeFirstItemButton( parent );
createSetFirstItemBadge( parent );
}
@Override
protected void createExampleControls( Composite parent ) {
parent.setLayout( new FillLayout() );
counter = 0;
folder = new TabFolder( parent, getStyle() );
folder.setToolTipText( "Tab Folder Tooltip" );
folder.addSelectionListener( new SelectionAdapter() {
@Override
public void widgetSelected( SelectionEvent event ) {
TabItem item = ( TabItem )event.item;
if( tabRadios != null ) {
int index = item.getParent().indexOf( item );
for( int i = 0; i < MAX_ITEMS; i++ ) {
if( checkControl( tabRadios[ i ] ) ) {
tabRadios[ i ].setSelection( index == i );
}
}
}
if( item.getData( "id" ) == null ) {
item.setData( "id", Integer.valueOf( counter ) );
}
createItemContent( item );
}
} );
for( int i = 0; i < MAX_ITEMS; i++ ) {
TabItem item = new TabItem( folder, SWT.NONE );
item.setData( "id", Integer.valueOf( counter ) );
item.setText( "TabItem " + counter );
item.setImage( loadImage( "resources/newfolder_wiz.gif" ) );
item.setToolTipText( "Tooltip for TabItem " + counter );
counter++;
if( !onDemandContent ) {
createItemContent( item );
}
}
registerControl( folder );
}
private void createOnDemandButton( Composite parent ) {
Button button = new Button( parent, SWT.CHECK );
button.setText( "Create Item Content on Demand" );
button.addSelectionListener( new SelectionAdapter() {
@Override
public void widgetSelected( SelectionEvent event ) {
Button button = ( Button )event.widget;
onDemandContent = button.getSelection();
createNew();
}
} );
}
private void createChangeContentButton( Composite parent ) {
Button btnChangeContent = new Button( parent, SWT.PUSH );
btnChangeContent.setText( "Change Content for Selected Item" );
btnChangeContent.addSelectionListener( new SelectionAdapter() {
@Override
public void widgetSelected( 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( Composite parent ) {
Button button = new Button( parent, SWT.PUSH );
button.setText( "Insert item before first item" );
button.addSelectionListener( new SelectionAdapter() {
@Override
public void widgetSelected( SelectionEvent event ) {
TabItem item = new TabItem( folder, SWT.NONE, 0 );
item.setData( "id", Integer.valueOf( counter ) );
item.setText( "TabItem " + counter );
item.setToolTipText( "Tooltip for TabItem " + counter );
counter++;
if( !onDemandContent ) {
createItemContent( item );
}
}
} );
}
private void createDisposeSelectedItemButton( Composite parent ) {
Button button = new Button( parent, SWT.PUSH );
button.setText( "Dispose selected item" );
button.addSelectionListener( new SelectionAdapter() {
@Override
public void widgetSelected( SelectionEvent event ) {
TabItem[] selection = folder.getSelection();
if( selection.length > 0 ) {
selection[ 0 ].dispose();
}
}
} );
}
private void createDisposeFirstItemButton( Composite parent ) {
Button button = new Button( parent, SWT.PUSH );
button.setText( "Dispose first item" );
button.addSelectionListener( new SelectionAdapter() {
@Override
public void widgetSelected( SelectionEvent event ) {
if( folder.getItemCount() > 0 ) {
folder.getItem( 0 ).dispose();
}
}
} );
}
private void createSetFirstItemBadge( Composite parent ) {
Composite composite = new Composite( parent, SWT.NONE );
composite.setLayout( new GridLayout( 3, false ) );
new Label( composite, SWT.NONE ).setText( "Badge:" );
final Text text = new Text( composite, SWT.BORDER );
Listener setBadgeListener = new Listener() {
@Override
public void handleEvent( Event event ) {
if( folder.getItemCount() > 0 ) {
folder.getItem( 0 ).setData( RWT.BADGE, text.getText() );
}
}
};
Button button = new Button( composite, SWT.PUSH );
button.setText( "Set" );
button.addListener( SWT.Selection, setBadgeListener );
text.addListener( SWT.DefaultSelection, setBadgeListener );
}
private void createItemContent( TabItem item ) {
if( item.getControl() == null ) {
TabFolder folder = item.getParent();
Text content = new Text( folder, SWT.WRAP | SWT.MULTI | SWT.READ_ONLY );
String text = "This is the content for TabItem " + item.getData( "id" );
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 );
}
}
}