MatrixPanelViewer component

This component goals are :
  • display a list of matrix to manipulate

  • display dimension of selected matrix with semantic

  • render selected matrix with selected dimensions

Simple matrix viewing

This component can be used to display only one matrix.

Use following code

MatrixViewerPanel matrixViewerPanel = new MatrixViewerPanel();
matrixViewerPanel.setMatrix(myMatrix);

Then MatrixViewerPanel is a simple swing component, you can place it wherever you want.

Display a list of matrix

You can display multiples matrix in a MatrixViewerPanel. User will have to select it in a ComboBox.

For performance reason, instantiating multiples huge matrix at init time can't be done. The matrix list can only contains matrix name, and matrix data will be loaded with a provider when user select it.

Code example:

MatrixViewerPanel matrixViewerPanel = new MatrixViewerPanel();
matrixViewerPanel.setComboBoxVisible(true);
matrixViewerPanel.addMatrix("myMatrix1");
matrixViewerPanel.addMatrix("myMatrix2");
matrixViewerPanel.setMatrixLabelProvider(new MyMatrixLabelProvider());

Use various renderer

MatrixPanelViewer can render matrix in various way, including your own (just implements MatrixRenderer interface)

MatrixViewerPanel matrixViewerPanel = new MatrixViewerPanel();
matrixViewerPanel.addMatrixRenderer(new MatrixChartRenderer());
matrixViewerPanel.addMatrixRenderer(new MatrixInfoTableRenderer());
matrixViewerPanel.addMatrixRenderer(new MyCustomMatrixRenderer());

Use matrix filter

You can also add a matrix filter to modify matrix just after dimension selection and before applying all renderers.

For example, you can use a filter to remove non significant values from a matrix (0 at each bounds).

To do so:

MatrixViewerPanel matrixViewerPanel = new MatrixViewerPanel();
matrixViewerPanel.addMatrixFilter(new MyCustomFilter());

Use matrix proxy and data provider

When matrix contains huge set of data, render then is not possible. Do solve this, you can use a matrix "empty" just filled with semantics for each dimension. At rendering phase, MatrixViewerPanel will call getSubMatrix() with selected semantics on proxy witch is implemented by a call to MatrixProvider to get filled data.

Example:

MatrixND matrix = MatrixFactory.getInstance().createProxy("myMatrixName,
new List<?>[] { semantic1 , semantic2, semantic3, semantic4},
new String[] {"semantic1", "semantic2", "semantic3", "semantic4"},
new MyMatrixProvider());
MatrixViewerPanel matrixViewerPanel = new MatrixViewerPanel();
matrixViewerPanel.setMatrix(matrix);