package org.eclipse.iee.pad.formula.ui.editors; import org.eclipse.draw2d.Figure; import org.eclipse.draw2d.FlowLayout; import org.eclipse.draw2d.IFigure; import org.eclipse.iee.editor.core.container.TextRenderCtx; import org.eclipse.iee.editor.core.pad.common.text.AbstractVisualTextEditor; import org.eclipse.iee.pad.formula.ui.EditorVisitor; import org.eclipse.iee.pad.formula.ui.EditorVisitorContext; import org.eclipse.iee.pad.formula.ui.IExpressionEditor; import org.eclipse.iee.translator.antlr.translator.model.Expression; import com.google.common.base.Optional; public class ExpressionEditor extends AbstractVisualTextEditor<Expression, Figure> { private TextRenderCtx fRenderCtx; private EditorVisitor fEditorVisitor = new EditorVisitor(); private Optional<? extends IExpressionEditor<? extends Expression, ? extends IFigure>> fSubeditor = Optional.absent(); public ExpressionEditor(TextRenderCtx fRenderCtx) { this.fRenderCtx = fRenderCtx; } @Override public boolean isSelectable() { // TODO Auto-generated method stub return false; } @Override public void setSelected(boolean b) { // TODO Auto-generated method stub } @Override public void setActive(boolean b) { // TODO Auto-generated method stub } @Override protected Figure createFigure() { Figure figure = new Figure(); FlowLayout manager = new FlowLayout(true); manager.setStretchMinorAxis(false); figure.setLayoutManager(manager); return figure; } @Override protected void onValueChanged(Expression oldValue, Expression newValue) { if (fSubeditor.isPresent()) { getFigure().remove(fSubeditor.get().getView().getWrapped(IFigure.class)); removeEditor(fSubeditor.get()); fSubeditor = Optional.absent(); } if (newValue != null) { fSubeditor = Optional.of(newValue.accept(fEditorVisitor, new EditorVisitorContext(fRenderCtx))); addEditor(fSubeditor.get()); getFigure().add(fSubeditor.get().getView().getWrapped(IFigure.class)); } } }