FileDocCategorySizeDatePackage
StringParameter.javaAPI DocAzureus 3.0.3.44786Tue Jun 05 00:46:58 BST 2007org.gudy.azureus2.ui.swt.config

StringParameter

public class StringParameter extends Parameter
author
Olivier

Fields Summary
private String
name
private Text
inputField
private String
defaultValue
Constructors Summary
public StringParameter(Composite composite, String name)

    this(composite, name, COConfigurationManager.getStringParameter(name));
  
public StringParameter(Composite composite, String name, String defaultValue)

	  this( composite, name, defaultValue, true );
  
public StringParameter(Composite composite, String name, String defaultValue, boolean generateIntermediateEvents)

  	super(name);
    this.name = name;
    this.defaultValue = defaultValue;
    inputField = new Text(composite, SWT.BORDER) {
  		// I know what I'm doing. Maybe ;)
  		public void checkSubclass() {
  		}

    	// @see org.eclipse.swt.widgets.Text#computeSize(int, int, boolean)
    	public Point computeSize(int wHint, int hHint, boolean changed) {
    		// Text widget, at least on Windows, forces the preferred width
    		// to the width of the text inside of it
    		// Fix this by forcing to LayoutData's minWidth
    		Point pt = super.computeSize(wHint, hHint, changed);
    		
    		if (wHint == SWT.DEFAULT) {
      		Object ld = getLayoutData();
      		if (ld instanceof GridData) {
      			if (((GridData)ld).grabExcessHorizontalSpace) {
      				pt.x = 10;
      			}
      		}
    		}
    		return pt;
    	}
    };
    String value = COConfigurationManager.getStringParameter(name, defaultValue);
    inputField.setText(value);
    inputField.addListener(SWT.Verify, new Listener() {
        public void handleEvent(Event e) {
          e.doit = COConfigurationManager.verifyParameter(name, e.text );
        }
    });
    
    if ( generateIntermediateEvents ){
	    inputField.addListener(SWT.Modify, new Listener() {
	      public void handleEvent(Event event) {
	    	  checkValue();
	      }
	    });
    }
    
    inputField.addListener(SWT.FocusOut, new Listener() {
        public void handleEvent(Event event) {
        	checkValue();
        }
    });
  
Methods Summary
protected voidcheckValue()

	  String	old_value = COConfigurationManager.getStringParameter( name, defaultValue );
	  String	new_value = inputField.getText();
	  
	  if ( !old_value.equals( new_value )){
	      COConfigurationManager.setParameter(name,new_value );
	      
	      if( change_listeners != null ) {
	        for (int i=0;i<change_listeners.size();i++){
	          ((ParameterChangeListener)change_listeners.get(i)).parameterChanged(StringParameter.this,false);
	        }
	      }
	  }
  
public ControlgetControl()

    return inputField;
  
public java.lang.StringgetValue()

    return inputField.getText();
  
public java.lang.ObjectgetValueObject()

  	return COConfigurationManager.getStringParameter(name);
  
public voidsetLayoutData(java.lang.Object layoutData)

    inputField.setLayoutData(layoutData);
  
public voidsetValue(java.lang.String value)

		Utils.execSWTThread(new AERunnable() {
			public void runSupport() {
				if (inputField == null || inputField.isDisposed()
						|| inputField.getText().equals(value)) {
					return;
				}
				inputField.setText(value);
			}
		});

		if (!COConfigurationManager.getStringParameter(name).equals(value)) {
			COConfigurationManager.setParameter(name, value);
		}
	
public voidsetValue(java.lang.Object value)

  	if (value instanceof String) {
  		setValue((String)value);
  	}