SimpleValueSource.java :  » Math » migen » uk » ac » lkl » migen » system » expresser » model » Java Open Source

Java Open Source » Math » migen 
migen » uk » ac » lkl » migen » system » expresser » model » SimpleValueSource.java
package uk.ac.lkl.migen.system.expresser.model;

import uk.ac.lkl.common.util.expression.Expression;
import uk.ac.lkl.common.util.value.Value;

public class SimpleValueSource<T extends Value<T>> extends ValueSource<T> {

    private T value;

    public SimpleValueSource() {
  this(null);
    }

    public SimpleValueSource(T value) {
  setValue(value);
    }

    @Override
    public boolean isPermanent() {
  return false;
    }

    @Override
    public SimpleValueSource<T> createCopy() {
  // note: casting to T can be removed once have generic sub-class arg for
  // value again
  if (value == null)
      return new SimpleValueSource<T>();
  T copy = (T) value.createCopy();
  return new SimpleValueSource<T>(copy);
    }

    @Override
    public boolean setValue(T newValue) {
  T oldValue = this.value;
  if (oldValue == null) {
      if (newValue == null)
    return false;
  } else if (newValue.equals(oldValue))
      return false;

  this.value = newValue;
  fireObjectUpdated();
  return true;
    }

    @Override
    public T getValue() {
  return value;
    }
    
    @Override
    public Expression<T> getExpression() {
  return value;
    }

    @Override
    public boolean isValueSettable() {
  return true;
    }

}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.