package rocks.inspectit.ui.rcp.details.generator;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.forms.widgets.FormToolkit;
import rocks.inspectit.shared.all.communication.DefaultData;
import rocks.inspectit.ui.rcp.details.DetailsTable;
import rocks.inspectit.ui.rcp.repository.RepositoryDefinition;
/**
* Interface for details generator.
* <p>
* Each generator generates one composite.
*
* @author Ivan Senic
*
*/
public interface IDetailsGenerator {
/**
* Specifies if generator can generate composite for given {@link DefaultData} object.
*
* @param defaultData
* {@link DefaultData}.
* @return Return <code>true</code> if generator can generate the details for the
* {@link DefaultData} object.
*/
boolean canGenerateFor(DefaultData defaultData);
/**
* Creates details composite on the given parent composite for the {@link DefaultData} object.
*
* @param defaultData
* {@link DefaultData}
* @param repositoryDefinition
* Repository definition data belongs to.
* @param parent
* Parent {@link Composite}
* @param toolkit
* {@link FormToolkit}
* @return Returns the created composite.
*/
DetailsTable generate(DefaultData defaultData, RepositoryDefinition repositoryDefinition, Composite parent, FormToolkit toolkit);
}