
de.tsl2.nano.incubation.terminal.item.Option Maven / Gradle / Ivy
/*
* File: $HeadURL$
* Id : $Id$
*
* created by: Tom
* created on: 24.12.2014
*
* Copyright: (c) Thomas Schneider 2014, all rights reserved
*/
package de.tsl2.nano.incubation.terminal.item;
import java.io.InputStream;
import java.io.PrintStream;
import java.util.Properties;
import org.simpleframework.xml.Element;
import de.tsl2.nano.action.IConstraint;
import de.tsl2.nano.core.util.Util;
import de.tsl2.nano.incubation.terminal.IContainer;
import de.tsl2.nano.incubation.terminal.IItem;
/**
*
* @author Tom
* @version $Revision$
*/
public class Option extends AItem {
/** serialVersionUID */
private static final long serialVersionUID = 7608860141435727313L;
@Element
T defaultValue;
/**
* constructor
*/
public Option() {
super();
type = Type.Option;
}
public Option(IContainer> parent, String name, IConstraint constraints, T defaultValue, String description) {
this(parent, name, constraints, defaultValue, true, description);
}
/**
* constructor
*
* @param name
* @param constraints
* @param type
* @param value
*/
public Option(IContainer> parent, String name, IConstraint constraints, T defaultValue, boolean active, String description) {
super(name, constraints, Type.Option, defaultValue, description);
this.parent = parent;
this.defaultValue = defaultValue;
if (!active) {
this.value = null;
}
}
/**
* {@inheritDoc}
*/
@Override
public boolean isEditable() {
return false;
}
@Override
public IItem react(IItem caller, String input, InputStream in, PrintStream out, Properties env) {
if (!Util.isEmpty(input)) {
env.put(getName(), getValue());
} else {
env.remove(getName());
}
changed = !changed;
return caller == this ? getParent().next(in, out, env) : caller;
}
/**
* {@inheritDoc}
*/
@Override
public String getPresentationPrefix() {
prefix.setCharAt(PREFIX, changed ? 'v' : 'o');
return super.getPresentationPrefix();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy