package org.molgenis.matrix.component.legacy; import java.util.List; // TODO merge this with the rendere as it is MatrixMetadata // J: in the original design we wanted to keep this seperate. // A RenderableMatrix is created by the logic in MatrixRenderer // and contains the GUI-display-ready, validated result. To achieve this, // MatrixRenderer uses a 'minimal set' of user-supplied information // in the form of Source- and Sliceable matrix. public interface SourceMatrix<R, C, V> { /** * Describes what is in the rows. Displayed at the row pager. E.g. when * returning "Individual" -> "Individual 1-10 of 430". * * @throws Exception */ public String getRowType() throws Exception; /** * Describes what is in the columns. Displayed at the column pager. E.g. * when returning "Marker" -> "Marker 1-50 of 3000". */ public String getColType() throws Exception; /** * Get an instance of RenderDescriptor which tells the render how to * visualize matrix headers and values. This is only a default, individual * renders can decide to render otherwise. */ @Deprecated // In my mind this should be part of renderable matrix? // J: sounds more logical, but 'RenderableMatrix' is a model-only type of // object which only contains values to be visualized on screen, and no // logic such as 'how to render the values'. Also, the renderablematrix is // created by the component and not supplied. But yeah, I don't know where // to put this really.. // In particular because you can derive this from ColType, RowType // J: how? public RenderDescriptor<R, C, V> getRenderDescriptor() throws Exception; /** * The maximum number of rows in this matrix you could possible browse or * filter. */ public int getTotalNumberOfRows(); /** * The maximum number of columns in this matrix you could possible browse or * filter. */ public int getTotalNumberOfCols(); }