package org.jactr.eclipse.runtime.ui.buffer; /* * default logging */ import java.util.Collection; import javolution.util.FastList; import org.antlr.runtime.tree.CommonTree; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.jactr.eclipse.runtime.buffer2.BufferData; import org.jactr.eclipse.runtime.buffer2.IBufferSessionDataStream; import org.jactr.eclipse.runtime.session.ISession; import org.jactr.eclipse.runtime.session.data.ISessionData; import org.jactr.eclipse.runtime.ui.simple.IOrientedComponent; import org.jactr.eclipse.runtime.ui.simple.SimpleConfigurableASTView; import org.jactr.eclipse.runtime.ui.simple.SimpleHorizontalASTViewComponent; import org.jactr.eclipse.runtime.ui.simple.SimpleVerticalASTViewComponent; public class BufferView extends SimpleConfigurableASTView { static public final String ID = "org.jactr.eclipse.runtime.ui.buffer.bufferView"; /** * Logger definition */ static private final transient Log LOGGER = LogFactory .getLog(BufferView.class); public BufferView() { super(true); } @Override protected IOrientedComponent instantiateVertical() { return new SimpleVerticalASTViewComponent() { @Override protected void getAST(ISession session, String modelName, double time, boolean isPostConflictResolution, Collection<CommonTree> container) { getASTInternal(session, modelName, time, isPostConflictResolution, container); } }; } @Override protected IOrientedComponent instantiateHorizontal() { return new SimpleHorizontalASTViewComponent() { @Override protected void getAST(ISession session, String modelName, double time, boolean isPostConflictResolution, Collection<CommonTree> container) { getASTInternal(session, modelName, time, isPostConflictResolution, container); } }; } protected void getASTInternal(ISession session, String modelName, double time, boolean isPostConflict, Collection<CommonTree> container) { ISessionData sessionData = session.getData(modelName); if (sessionData == null) return; IBufferSessionDataStream bsds = (IBufferSessionDataStream) sessionData .getDataStream("buffer"); if (bsds == null) return; FastList<BufferData> bufferData = FastList.newInstance(); try { bsds.getLatestData(time, bufferData); if (bufferData.size() == 0) return; BufferData bd = bufferData.getLast(); for (String buffer : bd.getBufferNames()) { CommonTree data = bd.getBufferContents(buffer, isPostConflict); if (data != null) container.add(data); } } finally { FastList.recycle(bufferData); } } @Override protected boolean isSensitiveToConflictResolution() { return true; } }