/*******************************************************************************
* 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.graphics.Image;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.ToolBar;
import org.eclipse.swt.widgets.ToolItem;
public class ToolBarTab extends ExampleTab {
private ToolBar toolBar;
private ToolItem pushItem1;
private ToolItem pushItem2;
private ToolItem pushItem3;
private ToolItem checkItem;
private ToolItem radioItem1;
private ToolItem radioItem2;
private ToolItem dropDownItem;
private int count = 0;
public ToolBarTab() {
super( "ToolBar" );
}
@Override
protected void createStyleControls( Composite parent ) {
createStyleButton( "HORIZONTAL", SWT.HORIZONTAL );
createStyleButton( "VERTICAL", SWT.VERTICAL );
createStyleButton( "RIGHT", SWT.RIGHT );
createStyleButton( "BORDER", SWT.BORDER );
createStyleButton( "FLAT", SWT.FLAT );
createStyleButton( "NO_RADIO_GROUP", SWT.NO_RADIO_GROUP );
createOrientationButton();
createVisibilityButton();
createEnablementButton();
createFgColorButton();
createBgColorButton();
createBgImageButton();
createFontChooser();
createNewItemButton();
createBadgeComposite( parent );
}
private void createNewItemButton() {
Group group = new Group( styleComp, SWT.NONE );
group.setLayout( new GridLayout( 2, false ) );
group.setText( "New Item" );
Label label = new Label( group, SWT.NONE );
label.setLayoutData( new GridData( SWT.LEFT, SWT.CENTER, false, false ) );
label.setText( "Index:" );
final Text index = new Text( group, SWT.SINGLE | SWT.LEAD | SWT.BORDER );
index.setLayoutData( new GridData( SWT.FILL, SWT.CENTER, true, false ) );
index.setText( "0" );
Button addItemButton = new Button( group, SWT.PUSH );
GridData gridData = new GridData( SWT.BEGINNING, SWT.CENTER, false, false );
gridData.horizontalSpan = 2;
addItemButton.setLayoutData( gridData );
addItemButton.setText( "Add Item" );
addItemButton.addSelectionListener( new SelectionAdapter() {
@Override
public void widgetSelected( SelectionEvent e ) {
int newIndex = Integer.parseInt( index.getText() );
ToolItem toolItem = new ToolItem( toolBar, SWT.RADIO, newIndex );
toolItem.setText( "Item" );
}
} );
}
@Override
protected void createExampleControls( Composite parent ) {
parent.setLayout( new RowLayout() );
Image imageNewFile = loadImage( "resources/newfile_wiz.gif" );
Image imagenewFolder = loadImage( "resources/newfolder_wiz.gif" );
Image imageNewProj = loadImage( "resources/newprj_wiz.gif" );
Image imageSearch = loadImage( "resources/search_src.gif" );
toolBar = new ToolBar( parent, getStyle() );
addContextMenu( toolBar );
registerControl( toolBar );
pushItem1 = new ToolItem( toolBar, SWT.PUSH );
pushItem1.setText( "new" );
pushItem1.setImage( imageNewFile );
pushItem2 = new ToolItem( toolBar, SWT.PUSH );
pushItem2.setText( "open" );
pushItem2.setEnabled( false );
pushItem2.setImage( imagenewFolder );
new ToolItem( toolBar, SWT.SEPARATOR );
dropDownItem = new ToolItem( toolBar, SWT.DROP_DOWN );
dropDownItem.setText( "select" );
dropDownItem.setImage( imageNewProj );
new ToolItem( toolBar, SWT.SEPARATOR );
// Text item
ToolItem itemText = new ToolItem( toolBar, SWT.SEPARATOR );
Text text = new Text( toolBar, SWT.BORDER );
text.setText( "A Text Field" );
itemText.setControl( text );
itemText.setWidth( 100 );
checkItem = new ToolItem( toolBar, SWT.CHECK );
checkItem.setImage( imageSearch );
checkItem.addSelectionListener( new SelectionAdapter() {
@Override
public void widgetSelected( final SelectionEvent event ) {
log( "check changed" + event );
}
} );
radioItem1 = new ToolItem( toolBar, SWT.RADIO );
radioItem1.setImage( imageSearch );
radioItem2 = new ToolItem( toolBar, SWT.RADIO );
SelectionAdapter radioSelectionListener = new SelectionAdapter() {
@Override
public void widgetSelected( SelectionEvent event ) {
log( "radio changed - " + event );
}
};
radioItem2.setImage( imageSearch );
radioItem1.addSelectionListener( radioSelectionListener);
radioItem2.addSelectionListener( radioSelectionListener);
final Menu dropDownMenu = new Menu( toolBar.getShell(), SWT.POP_UP );
for( int i = 0; i < 5; i++ ) {
MenuItem item = new MenuItem( dropDownMenu, SWT.PUSH );
item.setText( "Item " + count++ );
}
dropDownItem.addSelectionListener( new SelectionAdapter() {
@Override
public void widgetSelected( final SelectionEvent event ) {
if( event.detail == SWT.ARROW ) {
Point point = toolBar.toDisplay( event.x, event.y );
dropDownMenu.setOrientation( toolBar.getOrientation() );
dropDownMenu.setLocation( point );
dropDownMenu.setVisible( true );
}
}
} );
pushItem3 = new ToolItem( toolBar, SWT.PUSH );
pushItem3.setText( "w/o <image>" );
}
private static void addContextMenu( ToolBar toolbar ) {
Menu menu = new Menu( toolbar );
MenuItem item = new MenuItem( menu, SWT.PUSH );
item.setText( "ToolBar context menu item" );
toolbar.setMenu( menu );
}
private void createBadgeComposite( 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 ) {
pushItem1.setData( RWT.BADGE, text.getText() );
pushItem2.setData( RWT.BADGE, text.getText() );
pushItem3.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 );
}
}