blob: e24ce8117ba825fb0da977d8678ce938453aec24 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2008, 2013 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.jface.dialogs.MessageDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ExpandEvent;
import org.eclipse.swt.events.ExpandListener;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Image;
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.Display;
import org.eclipse.swt.widgets.ExpandBar;
import org.eclipse.swt.widgets.ExpandItem;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.Spinner;
import org.eclipse.swt.widgets.Text;
class ExpandBarTab extends ExampleTab {
private static final String PROP_CONTEXT_MENU = "contextMenu";
private static final String PROP_EXPAND_LISTENER = "expandListener";
private ExpandBar expandBar;
private Spinner spinner;
ExpandBarTab() {
super( "ExpandBar" );
setDefaultStyle( SWT.BORDER | SWT.V_SCROLL );
}
@Override
protected void createStyleControls( Composite parent ) {
createStyleButton( "V_SCROLL", SWT.V_SCROLL, true );
createStyleButton( "BORDER", SWT.BORDER, true );
createVisibilityButton();
createEnablementButton();
spinner = createSpacingControl( parent );
createFontChooser();
createFgColorButton();
createBgColorButton();
createBgImageButton();
createInsertItemButton( parent );
createRemoveItemButton( parent );
createPropertyCheckbox( "Add Context Menu", PROP_CONTEXT_MENU );
createPropertyCheckbox( "Add Expand Listener", PROP_EXPAND_LISTENER );
}
@Override
protected void createExampleControls( Composite parent ) {
parent.setLayout( new RowLayout( SWT.VERTICAL ) );
expandBar = new ExpandBar( parent, getStyle() );
if( hasCreateProperty( PROP_CONTEXT_MENU ) ) {
Menu expandBarMenu = new Menu( expandBar );
MenuItem expandBarMenuItem = new MenuItem( expandBarMenu, SWT.PUSH );
expandBarMenuItem.addSelectionListener( new SelectionAdapter() {
@Override
public void widgetSelected( SelectionEvent event ) {
String message = "You requested a context menu for the expand bar";
MessageDialog.openInformation( expandBar.getShell(),
"Information",
message );
}
} );
expandBarMenuItem.setText( "Expand Bar context menu item" );
expandBar.setMenu( expandBarMenu );
}
if( hasCreateProperty( PROP_EXPAND_LISTENER ) ) {
expandBar.addExpandListener( new ExpandListener() {
public void itemCollapsed( ExpandEvent event ) {
int index = 0;
int itemCount = expandBar.getItemCount();
for( int i = 0; i < itemCount; i++ ) {
if( expandBar.getItem( i ) == event.item ) {
index = i;
}
}
String message = "Expand item " + index + " collapsed!";
MessageDialog.openInformation( expandBar.getShell(),
"Information",
message );
}
public void itemExpanded( ExpandEvent event ) {
int index = 0;
int itemCount = expandBar.getItemCount();
for( int i = 0; i < itemCount; i++ ) {
if( expandBar.getItem( i ) == event.item ) {
index = i;
}
}
String message = "Expand item " + index + " expanded!";
MessageDialog.openInformation( expandBar.getShell(),
"Information",
message );
}
} );
}
Display display = expandBar.getDisplay();
Composite composite = new Composite( expandBar, SWT.NONE );
composite.setLayout( new GridLayout() );
new Button( composite, SWT.PUSH ).setText( "SWT.PUSH" );
new Button( composite, SWT.RADIO ).setText( "SWT.RADIO" );
new Button( composite, SWT.CHECK ).setText( "SWT.CHECK" );
new Button( composite, SWT.TOGGLE ).setText( "SWT.TOGGLE" );
ExpandItem item = new ExpandItem( expandBar, SWT.NONE, 0 );
item.setText( "What is your favorite button?" );
item.setHeight( composite.computeSize( SWT.DEFAULT, SWT.DEFAULT ).y );
item.setControl( composite );
item.setImage( Util.loadImage( display, "resources/newfolder_wiz.gif" ) );
composite = new Composite( expandBar, SWT.NONE );
composite.setLayout( new GridLayout( 2, false ) );
Image image = display.getSystemImage( SWT.ICON_ERROR );
new Label( composite, SWT.NONE ).setImage( image );
new Label( composite, SWT.NONE ).setText( "SWT.ICON_ERROR" );
image = display.getSystemImage( SWT.ICON_INFORMATION );
new Label( composite, SWT.NONE ).setImage( image );
new Label( composite, SWT.NONE ).setText( "SWT.ICON_INFORMATION" );
image = display.getSystemImage( SWT.ICON_WARNING );
new Label( composite, SWT.NONE ).setImage( image );
new Label( composite, SWT.NONE ).setText( "SWT.ICON_WARNING" );
image = display.getSystemImage( SWT.ICON_QUESTION );
new Label( composite, SWT.NONE ).setImage( image );
new Label( composite, SWT.NONE ).setText( "SWT.ICON_QUESTION" );
item = new ExpandItem( expandBar, SWT.NONE, 1 );
item.setText( "What is your favorite icon?" );
item.setHeight( composite.computeSize( SWT.DEFAULT, SWT.DEFAULT ).y );
item.setControl( composite );
item.setImage( Util.loadImage( display, "resources/newprj_wiz.gif" ) );
item.setExpanded( true );
expandBar.computeSize( SWT.DEFAULT, SWT.DEFAULT );
registerControl( expandBar );
if( checkControl( spinner ) ) {
expandBar.setSpacing( spinner.getSelection() );
}
}
private Spinner createSpacingControl( Composite parent ) {
Composite composite = new Composite( parent, SWT.NONE );
composite.setLayout( new GridLayout( 3, false ) );
Label label = new Label( composite, SWT.NONE );
label.setText( "Spacing" );
final Spinner spinner = new Spinner( composite, SWT.BORDER );
spinner.setSelection( 4 );
spinner.setMinimum( 0 );
spinner.setMaximum( 20 );
spinner.addModifyListener( new ModifyListener() {
public void modifyText( ModifyEvent event ) {
int spacing = spinner.getSelection();
expandBar.setSpacing( spacing );
}
} );
return spinner;
}
private void createInsertItemButton( Composite parent ) {
Button button = new Button( parent, SWT.PUSH );
button.setText( "Insert ExpandItem before first item" );
button.addSelectionListener( new SelectionAdapter() {
@Override
public void widgetSelected( SelectionEvent event ) {
ExpandItem item = new ExpandItem( expandBar, SWT.NONE, 0 );
item.setText( "ExpandItem text" );
item.setImage( Util.loadImage( item.getDisplay(), "resources/newfile_wiz.gif" ) );
item.setExpanded( false );
createItemContent( item );
}
} );
}
private void createRemoveItemButton( Composite parent ) {
Button button = new Button( parent, SWT.PUSH );
button.setText( "Remove first ExpandItem" );
button.addSelectionListener( new SelectionAdapter() {
@Override
public void widgetSelected( SelectionEvent event ) {
ExpandItem item = expandBar.getItem( 0 );
item.dispose();
}
} );
}
private void createItemContent( ExpandItem item ) {
if( item.getControl() == null ) {
ExpandBar bar = item.getParent();
Text content = new Text( bar, SWT.WRAP | SWT.MULTI | SWT.READ_ONLY );
String text = "This is the item's content";
content.setText( text );
item.setHeight( content.computeSize( SWT.DEFAULT, SWT.DEFAULT ).y );
item.setControl( content );
}
}
}