blob: 72e32eab26ee282a06df2f5dbf0a425250e7b291 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2002, 2012 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.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Spinner;
import org.eclipse.swt.widgets.Text;
public class SpinnerTab extends ExampleTab {
private Spinner spinner;
private Spinner modifySpinner;
private int minimum;
private int maximum;
private int digits;
private int increment;
private int pageIncrement;
private int selection;
public SpinnerTab() {
super( "Spinner" );
minimum = 0;
maximum = 100;
digits = 0;
increment = 1;
pageIncrement = 10;
selection = 0;
}
@Override
protected void createStyleControls( final Composite parent ) {
createStyleButton( "BORDER", SWT.BORDER );
createStyleButton( "READ_ONLY", SWT.READ_ONLY );
createStyleButton( "WRAP", SWT.WRAP );
createVisibilityButton();
createEnablementButton();
createRangeControls( parent );
createFgColorButton();
createBgColorButton();
createFontChooser();
createCursorCombo();
}
@Override
protected void createExampleControls( final Composite parent ) {
GridLayout gridLayout = new GridLayout( 2, false );
parent.setLayout( gridLayout );
Label label = new Label( parent, SWT.NONE );
label.setText( "Simple Spinner" );
spinner = new Spinner( parent, getStyle() );
label = new Label( parent, SWT.NONE );
label.setText( "Spinner with ModifyListener" );
modifySpinner = new Spinner( parent, getStyle() );
label = new Label( parent, SWT.NONE );
label.setText( "Current value" );
final Label lblSpinnerValue = new Label( parent, SWT.NONE );
lblSpinnerValue.setLayoutData( new GridData( SWT.FILL, SWT.FILL, true, false ) );
lblSpinnerValue.setText( String.valueOf( modifySpinner.getSelection() ) );
modifySpinner.addModifyListener( new ModifyListener() {
public void modifyText( final ModifyEvent event ) {
String value = String.valueOf( modifySpinner.getSelection() );
lblSpinnerValue.setText( value );
}
} );
updateSpinners();
registerControl( spinner );
registerControl( modifySpinner );
}
private void createRangeControls( final Composite parent ) {
Group group = new Group( parent, SWT.NONE );
group.setText( "Settings" );
group.setLayout( new GridLayout( 2, false ) );
final Text txtMin
= createLabeledText( group, "Minimum", String.valueOf( minimum ) );
final Text txtMax
= createLabeledText( group, "Maximum", String.valueOf( maximum ) );
final Spinner spnDigits
= createLabeledSpinner( group, "Digits", digits );
final Text txtInc
= createLabeledText( group, "Increment", String.valueOf( increment ) );
final Text txtPageInc = createLabeledText( group,
"PageIncrement",
String.valueOf( pageIncrement ) );
final Text txtSelection
= createLabeledText( group, "Selection", String.valueOf( selection ) );
Button btnApply = new Button( group, SWT.PUSH );
btnApply.setText( "Apply" );
GridData btnApplyData = new GridData( GridData.HORIZONTAL_ALIGN_END );
btnApplyData.horizontalSpan = 2;
btnApply.setLayoutData( btnApplyData );
btnApply.addSelectionListener( new SelectionAdapter() {
@Override
public void widgetSelected( final SelectionEvent event ) {
minimum = parseInt( txtMin, spinner.getMinimum() );
maximum = parseInt( txtMax, spinner.getMaximum() );
digits = spnDigits.getSelection();
increment = parseInt( txtInc, spinner.getIncrement() );
pageIncrement = parseInt( txtPageInc, spinner.getPageIncrement() );
selection = parseInt( txtSelection, spinner.getSelection() );
updateSpinners();
}
} );
}
private Text createLabeledText( final Composite parent,
final String text,
final String value )
{
final Label label = new Label( parent, SWT.NONE );
label.setText( text );
final Text result = new Text( parent, SWT.BORDER );
result.setText( value );
result.setLayoutData( new GridData( GridData.FILL_HORIZONTAL ) );
return result;
}
private Spinner createLabeledSpinner( final Composite parent,
final String text,
final int value )
{
final Label label = new Label( parent, SWT.NONE );
label.setText( text );
final Spinner result = new Spinner( parent, SWT.BORDER );
result.setSelection( value );
result.setLayoutData( new GridData( GridData.FILL_HORIZONTAL ) );
return result;
}
private void updateSpinners() {
spinner.setValues( selection,
minimum,
maximum,
digits,
increment,
pageIncrement );
modifySpinner.setValues( selection,
minimum,
maximum,
digits,
increment,
pageIncrement );
}
private int parseInt( final Text text, final int oldValue ) {
int result;
try {
result = Integer.parseInt( text.getText() );
} catch( NumberFormatException e ) {
text.setText( String.valueOf( oldValue ) );
result = oldValue;
}
return result;
}
}