package rocks.inspectit.ui.rcp.details.generator.impl; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.forms.widgets.FormToolkit; import rocks.inspectit.shared.all.communication.DefaultData; import rocks.inspectit.shared.all.communication.IAggregatedData; import rocks.inspectit.shared.all.communication.data.InvocationAwareData; import rocks.inspectit.ui.rcp.details.DetailsCellContent; import rocks.inspectit.ui.rcp.details.DetailsTable; import rocks.inspectit.ui.rcp.details.YesNoDetailsCellContent; import rocks.inspectit.ui.rcp.details.generator.IDetailsGenerator; import rocks.inspectit.ui.rcp.formatter.TextFormatter; import rocks.inspectit.ui.rcp.repository.RepositoryDefinition; /** * Details about invocation affiliation read from the {@link InvocationAwareData}. * * @author Ivan Senic * */ public class InvocationAffiliationDetailsGenerator implements IDetailsGenerator { /** * {@inheritDoc} * <p> * Display only for aggregated data. */ @Override public boolean canGenerateFor(DefaultData defaultData) { return (defaultData instanceof InvocationAwareData) && (defaultData instanceof IAggregatedData); } /** * {@inheritDoc} */ @Override public DetailsTable generate(DefaultData defaultData, RepositoryDefinition repositoryDefinition, Composite parent, FormToolkit toolkit) { InvocationAwareData invocationAwareData = (InvocationAwareData) defaultData; DetailsTable table = new DetailsTable(parent, toolkit, "Invocation Affiliation", 1); table.addContentRow("In Invocations:", null, new DetailsCellContent[] { new YesNoDetailsCellContent(!invocationAwareData.isOnlyFoundOutsideInvocations()) }); if (!invocationAwareData.isOnlyFoundOutsideInvocations()) { int percentage = (int) (invocationAwareData.getInvocationAffiliationPercentage() * 100); int invocations = invocationAwareData.getInvocationParentsIdSet().size(); String affiliation = TextFormatter.getInvocationAffilliationPercentageString(percentage, invocations).getString(); table.addContentRow("Affiliation:", null, new DetailsCellContent[] { new DetailsCellContent(affiliation) }); } return table; } }