package org.eclipse.iee.pad.formula.ui.editors; import java.util.ArrayList; import java.util.List; import org.eclipse.draw2d.Figure; import org.eclipse.iee.editor.core.bindings.DefaultObservableValue; import org.eclipse.iee.editor.core.container.TextRenderCtx; import org.eclipse.iee.editor.core.pad.common.text.AbstractVisualTextEditor; import org.eclipse.iee.editor.core.pad.common.text.TextPartEditor; import org.eclipse.iee.pad.formula.ui.EditorVisitor; import org.eclipse.iee.translator.antlr.translator.model.Expression; import com.google.common.base.Optional; public class ExpressionsListEditor extends AbstractVisualTextEditor<List<Expression>, Figure> { private TextRenderCtx fRenderCtx; private List<ExpressionEditor> fEditors = new ArrayList<>(); public ExpressionsListEditor(TextRenderCtx renderCtx) { this.fRenderCtx = renderCtx; } @Override public boolean isSelectable() { return false; } @Override public void setSelected(boolean b) { } @Override public void setActive(boolean b) { } @Override protected Figure createFigure() { Figure figure = EditorVisitor.createTextContainerFigure(); return figure; } @Override protected void doBindValue(List<Expression> value) { for (int i = 0; i < value.size(); i++) { if (i > 0) { TextPartEditor t = new TextPartEditor(fRenderCtx); t.setValue(Optional.of(DefaultObservableValue.fromValue(","))); addEditor(t); getFigure().add(t.getFigure()); } ExpressionEditor e = new ExpressionEditor(fRenderCtx); e.setValue(Optional.of(DefaultObservableValue.fromValue(value.get(i)))); addEditor(e); fEditors.add(e); getFigure().add(e.getFigure()); } } @Override protected void doUnbindValue(List<Expression> oldValue) { for (ExpressionEditor expressionEditor : fEditors) { removeEditor(expressionEditor); expressionEditor.dispose(); } fEditors.clear(); getFigure().removeAll(); } }