blob: db50fb058714aeb1b5ff9dd59536759ab451110c [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2002, 2012 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.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
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.Label;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.Slider;
import org.eclipse.swt.widgets.Spinner;
public class SliderTab extends ExampleTab {
private static final String PROP_CONTEXT_MENU = "contextMenu";
private static final String PROP_SELECTION_LISTENER = "selectionListener";
Slider slider;
Spinner minimumSpinner, maximumSpinner, selectionSpinner, thumbSpinner,
incrementSpinner, pageIncrementSpinner;
public SliderTab() {
super( "Slider" );
setDefaultStyle( SWT.HORIZONTAL );
}
@Override
protected void createStyleControls( Composite parent ) {
createStyleButton( parent, "HORIZONTAL", SWT.HORIZONTAL, SWT.RADIO, true );
createStyleButton( parent, "VERTICAL", SWT.VERTICAL, SWT.RADIO, false );
createVisibilityButton();
createEnablementButton();
createBgColorButton();
createBgImageButton();
minimumSpinner = createSpinnerControl( parent, "Minimum",
0, 100000, 0 );
minimumSpinner.addModifyListener( new ModifyListener() {
public void modifyText( ModifyEvent event ) {
int minimum = minimumSpinner.getSelection();
slider.setMinimum( minimum );
}
} );
maximumSpinner = createSpinnerControl( parent, "Maximum",
0, 100000, 100 );
maximumSpinner.addModifyListener( new ModifyListener() {
public void modifyText( ModifyEvent event ) {
int maximum = maximumSpinner.getSelection();
slider.setMaximum( maximum );
}
} );
selectionSpinner = createSpinnerControl( parent, "Selection",
0, 100000, 0 );
selectionSpinner.addModifyListener( new ModifyListener() {
public void modifyText( ModifyEvent event ) {
int selection = selectionSpinner.getSelection();
slider.setSelection( selection );
}
} );
thumbSpinner = createSpinnerControl( parent, "Thumb",
1, 100000, 10 );
thumbSpinner.addModifyListener( new ModifyListener() {
public void modifyText( ModifyEvent event ) {
int thumb = thumbSpinner.getSelection();
slider.setThumb( thumb );
}
} );
incrementSpinner = createSpinnerControl( parent, "Increment",
0, 100000, 1 );
incrementSpinner.addModifyListener( new ModifyListener() {
public void modifyText( ModifyEvent event ) {
int increment = incrementSpinner.getSelection();
slider.setIncrement( increment );
}
} );
pageIncrementSpinner = createSpinnerControl( parent, "Page Increment",
0, 100000, 10 );
pageIncrementSpinner.addModifyListener( new ModifyListener() {
public void modifyText( ModifyEvent event ) {
int pageIncrement = pageIncrementSpinner.getSelection();
slider.setPageIncrement( pageIncrement );
}
} );
createPropertyCheckbox( "Add Context Menu", PROP_CONTEXT_MENU );
createPropertyCheckbox( "Add Selection Listener", PROP_SELECTION_LISTENER );
}
@Override
protected void createExampleControls( Composite parent ) {
parent.setLayout( new RowLayout( SWT.VERTICAL ) );
int style = getStyle();
slider = new Slider( parent, style );
if( hasCreateProperty( PROP_CONTEXT_MENU ) ) {
Menu sliderMenu = new Menu( slider );
MenuItem sliderMenuItem = new MenuItem( sliderMenu, SWT.PUSH );
sliderMenuItem.addSelectionListener( new SelectionAdapter() {
@Override
public void widgetSelected( final SelectionEvent event ) {
String message = "You requested a context menu for the Slider";
MessageDialog.openInformation( slider.getShell(),
"Information",
message );
}
} );
sliderMenuItem.setText( "Slider context menu item" );
slider.setMenu( sliderMenu );
}
if( hasCreateProperty( PROP_SELECTION_LISTENER ) ) {
slider.addSelectionListener( new SelectionListener() {
public void widgetSelected( final SelectionEvent event ) {
String message = "Slider WidgetSelected! Current selection: " + slider.getSelection();
log( message );
selectionSpinner.setSelection( slider.getSelection() );
}
public void widgetDefaultSelected( final SelectionEvent event ) {
String message = "Slider WidgetDefaultSelected! Current selection: " + slider.getSelection();
log( message );
selectionSpinner.setSelection( slider.getSelection() );
}
} );
}
if( checkControl( minimumSpinner ) ) {
slider.setMinimum( minimumSpinner.getSelection() );
}
if( checkControl( maximumSpinner ) ) {
slider.setMaximum( maximumSpinner.getSelection() );
}
if( checkControl( selectionSpinner ) ) {
slider.setSelection( selectionSpinner.getSelection() );
}
if( checkControl( thumbSpinner ) ) {
slider.setThumb( thumbSpinner.getSelection() );
}
if( checkControl( incrementSpinner ) ) {
slider.setIncrement( incrementSpinner.getSelection() );
}
if( checkControl( pageIncrementSpinner ) ) {
slider.setPageIncrement( pageIncrementSpinner.getSelection() );
}
registerControl( slider );
}
protected Button createStyleButton( Composite parent,
String name,
int style,
int buttonStyle,
boolean checked )
{
Button button = new Button( parent, buttonStyle );
button.setText( name );
button.addSelectionListener( new SelectionAdapter() {
@Override
public void widgetSelected( final SelectionEvent event ) {
createNew();
}
} );
button.setData( "style", new Integer( style ) );
button.setSelection( checked );
return button;
}
private Spinner createSpinnerControl( Composite parent,
String labelText,
int minimum,
int maximum,
int selection ) {
Composite composite = new Composite( parent, SWT.NONE );
composite.setLayout( new GridLayout( 4, false ) );
Label label = new Label( composite, SWT.NONE );
label.setText( labelText );
final Spinner spinner = new Spinner( composite, SWT.BORDER );
spinner.setSelection( selection );
spinner.setMinimum( minimum );
spinner.setMaximum( maximum );
return spinner;
}
}