package org.eclipse.iee.pad.formula.ui;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import org.eclipse.iee.editor.core.container.TextRenderCtx;
import org.eclipse.iee.pad.formula.FormulaPart;
import org.eclipse.iee.pad.formula.InputPart;
import org.eclipse.iee.pad.formula.ui.utils.UIFormulaRenderer;
public class InputPad extends AbstractFormulaPad<InputPart> {
private PropertyChangeListener fListener;
public InputPad(UIFormulaRenderer formulaRenderer, TextRenderCtx renderCtx) {
super(formulaRenderer, renderCtx);
fListener = new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent evt) {
if ("variable".equals(evt.getPropertyName())
|| "defaultValue".equals(evt.getPropertyName())) {
onValueChanged((InputPart) evt.getSource());
}
}
};
}
@Override
public void processInput() {
super.processInput();
getDocumentPart().setDefaultValue(getDefaultValue());
getDocumentPart().setVariable(getVariableExpression());
getContainer().updateDocument();
}
@Override
public String getType() {
return "Input";
}
public String getVariableExpression() {
String[] expressions = fTranslatingExpression.split("=");
String varName = expressions[0];
return varName;
}
public String getDefaultValue() {
String[] expressions = fTranslatingExpression.split("=");
return expressions.length > 1 ? expressions[1] : "";
}
protected void onValueChanged(InputPart part) {
String expression = "";
if (!part.getVariable().isEmpty()) {
expression += part.getVariable();
}
if (!part.getDefaultValue().isEmpty()) {
expression += "=" + part.getDefaultValue();
}
setTranslatingExpression(expression);
setOriginalExpression(expression);
}
@Override
protected void doBindValue(InputPart value) {
value.addPropertyChangeListener(fListener);
onValueChanged(value);
}
@Override
protected void doUnbindValue(InputPart oldValue) {
oldValue.removePropertyChangeListener(fListener);
}
}