/** * */ package fr.inria.soctrace.framesoc.ui.model; import org.eclipse.jface.action.Action; import fr.inria.soctrace.framesoc.core.bus.FramesocBus; import fr.inria.soctrace.framesoc.core.bus.FramesocBusTopic; import fr.inria.soctrace.framesoc.ui.perspective.FramesocPart; import fr.inria.soctrace.framesoc.ui.perspective.FramesocPartManager; /** * Base class for all the actions to show a trace time interval in another view. * * @author "Generoso Pagano <generoso.pagano@inria.fr>" */ public abstract class TraceIntervalAction extends Action { private FramesocPart part; /** * Get the describing the time interval we want to show in another analysis view. * * @return the <code>TraceIntervalDescriptor</code> we want to show */ public abstract TraceIntervalDescriptor getTraceIntervalDescriptor(); /** * Get the Framesoc bus topic this action will send a message on. * * @return the Framesoc topic used by this action */ protected abstract FramesocBusTopic getTopic(); /** * Constructor * * @param part * the FramesocPart this action is related to */ public TraceIntervalAction(FramesocPart part) { this.part = part; } @Override public void run() { TraceIntervalDescriptor des = getTraceIntervalDescriptor(); des.setGroup(FramesocPartManager.getInstance().getPartGroup(des.getTrace(), part)); des.setSender(part); if (des != null) { FramesocBus.getInstance().send(getTopic(), des); } } }