@Override
 protected CellColorProvider getCellColorProvider(ExtendedJTable table, Object renderable) {
   NumericalMatrix matrix = (NumericalMatrix) renderable;
   // matrix viewer
   double min = Double.POSITIVE_INFINITY;
   double max = Double.NEGATIVE_INFINITY;
   for (int x = 0; x < matrix.getNumberOfRows(); x++) {
     for (int y = 0; y < matrix.getNumberOfColumns(); y++) {
       double value = Math.abs(matrix.getValue(x, y));
       if (!Double.isNaN(value)) {
         min = Math.min(min, value);
         max = Math.max(max, value);
       }
     }
   }
   return new CellColorProviderScaled(table, true, min, max);
 }
 @Override
 public DataTable getDataTable(Object renderable, IOContainer ioContainer, boolean isRendering) {
   NumericalMatrix matrix = (NumericalMatrix) renderable;
   return matrix.createMatrixDataTable();
 }