/******************************************************************************* * Copyright (c) 2008 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 ******************************************************************************/ package org.eclipse.swt.internal.widgets.sliderkit; import java.io.IOException; import org.eclipse.rwt.lifecycle.*; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.internal.widgets.Props; import org.eclipse.swt.widgets.Slider; import org.eclipse.swt.widgets.Widget; public class SliderLCA extends AbstractWidgetLCA { // Property names for preserveValues static final String PROP_SELECTION = "selection"; static final String PROP_MAXIMUM = "maximum"; static final String PROP_MINIMUM = "minimum"; static final String PROP_PAGE_INCREMENT = "pageIncrement"; static final String PROP_INCREMENT = "increment"; static final String PROP_THUMB = "thumb"; // Default values static final Integer DEFAULT_SELECTION = new Integer( 0 ); static final Integer DEFAULT_MAXIMUM = new Integer( 100 ); static final Integer DEFAULT_MINIMUM = new Integer( 0 ); static final Integer DEFAULT_PAGE_INCREMENT = new Integer( 10 ); static final Integer DEFAULT_INCREMENT = new Integer( 1 ); static final Integer DEFAULT_THUMB = new Integer( 10 ); public void preserveValues( final Widget widget ) { Slider slider = ( Slider )widget; ControlLCAUtil.preserveValues( slider ); IWidgetAdapter adapter = WidgetUtil.getAdapter( slider ); boolean hasListeners = SelectionEvent.hasListener( slider ); adapter.preserve( Props.SELECTION_LISTENERS, Boolean.valueOf( hasListeners ) ); adapter.preserve( PROP_SELECTION, new Integer( slider.getSelection() ) ); adapter.preserve( PROP_MAXIMUM, new Integer( slider.getMaximum() ) ); adapter.preserve( PROP_MINIMUM, new Integer( slider.getMinimum() ) ); adapter.preserve( PROP_PAGE_INCREMENT, new Integer( slider.getPageIncrement() ) ); adapter.preserve( PROP_INCREMENT, new Integer( slider.getIncrement() ) ); adapter.preserve( PROP_THUMB, new Integer( slider.getThumb() ) ); } public void readData( final Widget widget ) { Slider slider = ( Slider )widget; String value = WidgetLCAUtil.readPropertyValue( slider, PROP_SELECTION ); if( value != null ) { slider.setSelection( Integer.parseInt( value ) ); } ControlLCAUtil.processSelection( slider, null, true ); ControlLCAUtil.processMenuDetect( slider ); WidgetLCAUtil.processHelp( slider ); } public void renderInitialization( final Widget widget ) throws IOException { Slider slider = ( Slider )widget; JSWriter writer = JSWriter.getWriterFor( slider ); String style = ""; if( ( slider.getStyle() & SWT.HORIZONTAL ) != 0 ) { style = "horizontal"; } else { style = "vertical"; } Object[] args = new Object[]{ style }; writer.newWidget( "org.eclipse.swt.widgets.Slider", args ); WidgetLCAUtil.writeCustomVariant( widget ); ControlLCAUtil.writeStyleFlags( slider ); } public void renderChanges( final Widget widget ) throws IOException { Slider slider = ( Slider )widget; ControlLCAUtil.writeChanges( slider ); writeMaximum( slider ); writeMinimum( slider ); writePageIncrement( slider ); writeSelection( slider ); writeIncrement( slider ); writeThumb( slider ); writeListener( slider ); } public void renderDispose( final Widget widget ) throws IOException { JSWriter writer = JSWriter.getWriterFor( widget ); writer.dispose(); } ////////////////// // Helping methods private void writeMaximum( final Slider slider ) throws IOException { Integer newValue = new Integer( slider.getMaximum() ); if( WidgetLCAUtil.hasChanged( slider, PROP_MAXIMUM, newValue, DEFAULT_MAXIMUM ) ) { JSWriter writer = JSWriter.getWriterFor( slider ); writer.set( PROP_MAXIMUM, newValue ); } } private void writeMinimum( final Slider slider ) throws IOException { Integer newValue = new Integer( slider.getMinimum() ); String prop = PROP_MINIMUM; Integer defValue = DEFAULT_MINIMUM; if( WidgetLCAUtil.hasChanged( slider, prop, newValue, defValue ) ) { JSWriter writer = JSWriter.getWriterFor( slider ); writer.set( PROP_MINIMUM, newValue ); } } private void writeSelection( final Slider slider ) throws IOException { Integer newValue = new Integer( slider.getSelection() ); String prop = PROP_SELECTION; Integer defValue = DEFAULT_SELECTION; if( WidgetLCAUtil.hasChanged( slider, prop, newValue, defValue ) ) { JSWriter writer = JSWriter.getWriterFor( slider ); writer.set( PROP_SELECTION, newValue ); } } private void writeIncrement( final Slider slider ) throws IOException { Integer newValue = new Integer( slider.getIncrement() ); String prop = PROP_INCREMENT; Integer defValue = DEFAULT_INCREMENT; if( WidgetLCAUtil.hasChanged( slider, prop, newValue, defValue ) ) { JSWriter writer = JSWriter.getWriterFor( slider ); writer.set( PROP_INCREMENT, newValue ); } } private void writePageIncrement( final Slider slider ) throws IOException { Integer newValue = new Integer( slider.getPageIncrement() ); String prop = PROP_PAGE_INCREMENT; Integer defValue = DEFAULT_PAGE_INCREMENT; if( WidgetLCAUtil.hasChanged( slider, prop, newValue, defValue ) ) { JSWriter writer = JSWriter.getWriterFor( slider ); writer.set( PROP_PAGE_INCREMENT, newValue ); } } private void writeThumb( final Slider slider ) throws IOException { Integer newValue = new Integer( slider.getThumb() ); String prop = PROP_THUMB; Integer defValue = DEFAULT_THUMB; if( WidgetLCAUtil.hasChanged( slider, prop, newValue, defValue ) ) { JSWriter writer = JSWriter.getWriterFor( slider ); writer.set( PROP_THUMB, newValue ); } } private void writeListener( final Slider slider ) throws IOException { boolean hasListener = SelectionEvent.hasListener( slider ); Boolean newValue = Boolean.valueOf( hasListener ); String prop = Props.SELECTION_LISTENERS; if( WidgetLCAUtil.hasChanged( slider, prop, newValue, Boolean.FALSE ) ) { JSWriter writer = JSWriter.getWriterFor( slider ); writer.set( "hasSelectionListener", newValue ); } } }