package org.atdl4j.ui.swt.widget;
import java.util.ArrayList;
import java.util.List;
import org.atdl4j.ui.impl.ControlHelper;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.Widget;
public class SWTTextFieldWidget
extends AbstractSWTWidget<String>
{
private Text textField;
private Label label;
public Widget createWidget(Composite parent, int style)
{
String tooltip = getTooltip();
GridData controlGD = new GridData( SWT.FILL, SWT.CENTER, true, false );
// label
if ( control.getLabel() != null ) {
label = new Label( parent, SWT.NONE );
label.setText( control.getLabel() );
if ( tooltip != null ) label.setToolTipText( tooltip );
controlGD.horizontalSpan = 1;
} else {
controlGD.horizontalSpan = 2;
}
// textField
textField = new Text( parent, style | SWT.BORDER );
textField.setLayoutData( controlGD );
// init value
if ( ControlHelper.getInitValue( control, getAtdl4jOptions() ) != null )
textField.setText( (String) ControlHelper.getInitValue( control, getAtdl4jOptions() ) );
// tooltip
if ( tooltip != null ) textField.setToolTipText( tooltip );
return parent;
}
public String getControlValueRaw()
{
String value = textField.getText();
if ( "".equals( value ) )
{
return null;
}
else
{
return value;
}
}
public void setValue(String value)
{
textField.setText( ( value == null ) ? "" : value.toString() );
}
public List<Control> getControls()
{
List<Control> widgets = new ArrayList<Control>();
if (label != null) widgets.add( label );
widgets.add( textField );
return widgets;
}
public List<Control> getControlsExcludingLabel()
{
List<Control> widgets = new ArrayList<Control>();
widgets.add( textField );
return widgets;
}
public void addListener(Listener listener)
{
textField.addListener( SWT.Modify, listener );
}
public void removeListener(Listener listener)
{
textField.removeListener( SWT.Modify, listener );
}
/**
* Overridden -- makes the textField appear non-editable vs. the default of disabled.
*/
public void processConstValueHasBeenSet()
{
textField.setEditable( false );
}
/*
*
*/
protected void processNullValueIndicatorChange(Boolean aOldNullValueInd, Boolean aNewNullValueInd)
{
if ( Boolean.FALSE.equals( aNewNullValueInd ) )
{
textField.setText( "" );
}
}
/* (non-Javadoc)
* @see org.atdl4j.ui.Atdl4jWidget#reinit()
*/
@Override
public void processReinit( Object aControlInitValue )
{
if ( ( textField != null ) && ( ! textField.isDisposed() ) )
{
textField.setText( (aControlInitValue != null ) ? (String) aControlInitValue : "" );
}
}
}