| /******************************************************************************* |
| * 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; |
| } |
| } |