Search in sources :

Example 21 with AbstractHistogramVizModel

use of org.knime.base.node.viz.histogram.datamodel.AbstractHistogramVizModel in project knime-core by knime.

the class AbstractHistogramPlotter method setShowGridLines.

/**
 * @param showGridLines set to <code>true</code> if the grid lines of the
 * y axis should be shown
 */
public void setShowGridLines(final boolean showGridLines) {
    final AbstractHistogramVizModel vizModel = getHistogramVizModel();
    if (vizModel == null) {
        throw new IllegalStateException("Exception in setShowGridLines: " + "Viz model must not be null");
    }
    if (vizModel.setShowGridLines(showGridLines)) {
        final HistogramDrawingPane drawingPane = getHistogramDrawingPane();
        if (showGridLines) {
            final Coordinate yCoordinates = getYAxis().getCoordinate();
            if (yCoordinates == null) {
                return;
            }
            final double drawingHeight = vizModel.getDrawingSpace().getHeight();
            final int[] gridLines = getGridLineCoordinates(yCoordinates, drawingHeight);
            drawingPane.setGridLines(gridLines);
        } else {
            drawingPane.setGridLines(null);
        }
        repaint();
    }
}
Also used : AbstractHistogramVizModel(org.knime.base.node.viz.histogram.datamodel.AbstractHistogramVizModel) Coordinate(org.knime.base.util.coordinate.Coordinate) NumericCoordinate(org.knime.base.util.coordinate.NumericCoordinate)

Example 22 with AbstractHistogramVizModel

use of org.knime.base.node.viz.histogram.datamodel.AbstractHistogramVizModel in project knime-core by knime.

the class AbstractHistogramPlotter method getXColumnSpec.

/**
 * Returns the <code>DataColumnSpec</code> of the x column.
 *
 * @return the <code>DataColumnSpec</code> of the x column
 */
private DataColumnSpec getXColumnSpec() {
    final AbstractHistogramVizModel vizModel = getHistogramVizModel();
    if (vizModel == null) {
        throw new IllegalStateException("Exception in getXColumnSpec: " + "Viz model must not be null");
    }
    final DataColumnSpec xColSpec = vizModel.getXColumnSpec();
    String colName = xColSpec.getName();
    final Set<DataCell> binCaptions = vizModel.getBinCaptions();
    if (vizModel.isBinNominal()) {
        colName = "Binned " + xColSpec.getName();
    }
    // case set one value which indicates this
    if (binCaptions.size() < 1) {
        binCaptions.add(new StringCell("No bins available"));
        final DataColumnSpec colSpec = createColumnSpec(colName, StringCell.TYPE, Double.NaN, Double.NaN, binCaptions);
        return colSpec;
    }
    final DataColumnSpec colSpec = createColumnSpec(colName, StringCell.TYPE, Double.NaN, Double.NaN, binCaptions);
    return colSpec;
}
Also used : DataColumnSpec(org.knime.core.data.DataColumnSpec) AbstractHistogramVizModel(org.knime.base.node.viz.histogram.datamodel.AbstractHistogramVizModel) StringCell(org.knime.core.data.def.StringCell) DataCell(org.knime.core.data.DataCell)

Example 23 with AbstractHistogramVizModel

use of org.knime.base.node.viz.histogram.datamodel.AbstractHistogramVizModel in project knime-core by knime.

the class AbstractHistogramPlotter method hiLiteSelected.

/**
 * {@inheritDoc}
 */
@Override
public void hiLiteSelected() {
    final AbstractHistogramVizModel vizModel = getHistogramVizModel();
    if (vizModel == null || !vizModel.supportsHiliting()) {
        LOGGER.debug("VizModel doesn't support hiliting or was null");
        return;
    }
    final Set<RowKey> selectedKeys = vizModel.getSelectedKeys();
    delegateHiLite(selectedKeys);
    repaint();
}
Also used : AbstractHistogramVizModel(org.knime.base.node.viz.histogram.datamodel.AbstractHistogramVizModel) RowKey(org.knime.core.data.RowKey)

Example 24 with AbstractHistogramVizModel

use of org.knime.base.node.viz.histogram.datamodel.AbstractHistogramVizModel in project knime-core by knime.

the class HistogramDrawingPane method paintContent.

// **********************************************
/*--------- the drawing methods ----------------*/
// **********************************************
/**
 * {@inheritDoc}
 */
@Override
public void paintContent(final Graphics g) {
    final Graphics2D g2 = (Graphics2D) g;
    final Rectangle2D bounds = getBounds();
    String msg = m_infoMsg;
    final AbstractHistogramVizModel vizModel = m_vizModel;
    if (vizModel == null || vizModel.getBins() == null) {
        // if we have no bins and no info message display a no bars info
        if (msg == null) {
            msg = "No bins to display";
        }
    }
    // check if we have to display an information message
    if (msg != null) {
        DrawingUtils.drawMessage(g2, INFO_MSG_FONT, msg, bounds);
        return;
    }
    if (m_updatePropertiesPanel && m_properties != null) {
        m_properties.updateHistogramSettings(vizModel);
        m_updatePropertiesPanel = false;
    }
    // check if we have to draw the grid lines
    if (vizModel.isShowGridLines() && m_gridLines != null) {
        for (final int gridLine : m_gridLines) {
            DrawingUtils.paintHorizontalLine(g2, 0, gridLine, (int) bounds.getWidth(), GRID_LINE_COLOR, GRID_LINE_STROKE);
        }
    }
    // get all variables which are needed multiple times
    final AggregationMethod aggrMethod = vizModel.getAggregationMethod();
    // final Collection<ColorColumn> aggrColumns =
    // vizModel.getAggrColumns();
    final HistogramLayout layout = vizModel.getHistogramLayout();
    // if the user has selected more then one aggregation column we have to
    // draw the bar outline to how him which bar belongs to which aggregation
    // column
    final boolean drawBinOutline = vizModel.isShowBinOutline();
    final boolean drawBarOutline = vizModel.isShowBarOutline();
    // (aggrColumns != null
    // && aggrColumns.size() > 1)
    // || HistogramLayout.SIDE_BY_SIDE.equals(
    // m_vizModel.getHistogramLayout());
    final boolean showElementOutline = vizModel.isShowElementOutline();
    final LabelDisplayPolicy labelDisplayPolicy = vizModel.getLabelDisplayPolicy();
    final boolean showLabelVertical = vizModel.isShowLabelVertical();
    final float barOutlineAlpha;
    if (HistogramLayout.SIDE_BY_SIDE.equals(vizModel.getHistogramLayout())) {
        barOutlineAlpha = BAR_SIDE_BY_SIDE_SURROUNDING_ALPHA;
    } else {
        barOutlineAlpha = BAR_STACKED_SURROUNDING_ALPHA;
    }
    // loop over all bins and paint them
    for (final BinDataModel bin : vizModel.getBins()) {
        if (drawBinOutline) {
            DrawingUtils.drawRectangle(g2, bin.getSurroundingRectangle(), BIN_SURROUNDING_COLOR, BIN_SURROUNDING_STROKE);
        }
        if (!bin.isPresentable()) {
            // the bars doen't fit in this bin so we have to
            // fill the complete bin in black to show it to the user
            DrawingUtils.drawBlock(g2, bin.getBinRectangle(), OVERLOADED_ELEMENT_FILLING, OVERLOADED_ELEMENT_ALPHA);
            if (bin.isSelected()) {
                DrawingUtils.drawRectangle(g2, bin.getBinRectangle(), ELEMENT_SELECTED_OUTLINE_COLOR, ELEMENT_SELECTED_OUTLINE_STROKE);
            }
            if (bin instanceof InteractiveBinDataModel) {
                final InteractiveBinDataModel interactiveBin = (InteractiveBinDataModel) bin;
                drawHiliteRect(g2, interactiveBin.getHiliteRectangle());
            }
            continue;
        }
        final Collection<BarDataModel> bars = bin.getBars();
        for (final BarDataModel bar : bars) {
            if (drawBarOutline) {
                // draw the outline of the bar if we have multiple
                // aggregation columns
                DrawingUtils.drawBlock(g2, bar.getSurroundingRectangle(), bar.getColor(), barOutlineAlpha);
            }
            if (bar.isPresentable()) {
                drawElements(g2, bar.getElements(), showElementOutline);
            } else {
                // the elements doen't fit in this bar so we have to
                // fill the complete bar to show it to the user
                final Rectangle2D barRectangle = bar.getShape();
                DrawingUtils.drawBlock(g2, barRectangle, OVERLOADED_ELEMENT_FILLING, OVERLOADED_ELEMENT_ALPHA);
                if (bar.isSelected()) {
                    DrawingUtils.drawRectangle(g2, barRectangle, ELEMENT_SELECTED_OUTLINE_COLOR, ELEMENT_SELECTED_OUTLINE_STROKE);
                }
                if (bar instanceof InteractiveBarDataModel) {
                    final InteractiveBarDataModel interactiveBar = (InteractiveBarDataModel) bar;
                    drawHiliteRect(g2, interactiveBar.getHiliteShape());
                }
            }
            // draw the bar label at last to have them on top
            drawLabels(g2, bar, aggrMethod, layout, bounds, labelDisplayPolicy, showLabelVertical);
        }
    // end of bar loop
    }
    // check if we have to draw the base line
    if (m_baseLine != null) {
        DrawingUtils.paintHorizontalLine(g2, 0, m_baseLine.intValue(), (int) bounds.getWidth(), BASE_LINE_COLOR, BASE_LINE_STROKE);
    }
    return;
}
Also used : AggregationMethod(org.knime.base.node.viz.aggregation.AggregationMethod) LabelDisplayPolicy(org.knime.base.node.viz.aggregation.util.LabelDisplayPolicy) AbstractHistogramVizModel(org.knime.base.node.viz.histogram.datamodel.AbstractHistogramVizModel) Rectangle2D(java.awt.geom.Rectangle2D) BinDataModel(org.knime.base.node.viz.histogram.datamodel.BinDataModel) InteractiveBinDataModel(org.knime.base.node.viz.histogram.datamodel.InteractiveBinDataModel) InteractiveBinDataModel(org.knime.base.node.viz.histogram.datamodel.InteractiveBinDataModel) TexturePaint(java.awt.TexturePaint) Paint(java.awt.Paint) Graphics2D(java.awt.Graphics2D) InteractiveBarDataModel(org.knime.base.node.viz.histogram.datamodel.InteractiveBarDataModel) BarDataModel(org.knime.base.node.viz.histogram.datamodel.BarDataModel) InteractiveBarDataModel(org.knime.base.node.viz.histogram.datamodel.InteractiveBarDataModel) HistogramLayout(org.knime.base.node.viz.histogram.HistogramLayout)

Example 25 with AbstractHistogramVizModel

use of org.knime.base.node.viz.histogram.datamodel.AbstractHistogramVizModel in project knime-core by knime.

the class FixedColumnHistogramNodeView method modelChanged.

/**
 * Whenever the model changes an update for the plotter is triggered and new
 * HiLiteHandler are set.
 */
@Override
public void modelChanged() {
    final FixedColumnHistogramNodeModel model = getNodeModel();
    if (model == null) {
        return;
    }
    final DataTableSpec tableSpec = model.getTableSpec();
    if (m_plotter != null) {
        m_plotter.reset();
    }
    final AbstractHistogramVizModel vizModel = model.getHistogramVizModel();
    if (vizModel == null) {
        return;
    }
    if (m_plotter == null) {
        final FixedHistogramProperties props = new FixedHistogramProperties(tableSpec, vizModel);
        m_plotter = new FixedHistogramPlotter(props, model.getInHiLiteHandler(0));
    // hiliting is not supported in the fixed column histogram
    }
    m_plotter.setHiLiteHandler(model.getInHiLiteHandler(0));
    m_plotter.setHistogramVizModel(tableSpec, vizModel);
    m_plotter.updatePaintModel();
    if (getComponent() != m_plotter) {
        setComponent(m_plotter);
    }
    if (m_plotter != null) {
        m_plotter.fitToScreen();
    }
}
Also used : DataTableSpec(org.knime.core.data.DataTableSpec) AbstractHistogramVizModel(org.knime.base.node.viz.histogram.datamodel.AbstractHistogramVizModel) FixedHistogramProperties(org.knime.base.node.viz.histogram.impl.fixed.FixedHistogramProperties) FixedHistogramPlotter(org.knime.base.node.viz.histogram.impl.fixed.FixedHistogramPlotter)

Aggregations

AbstractHistogramVizModel (org.knime.base.node.viz.histogram.datamodel.AbstractHistogramVizModel)27 ColorColumn (org.knime.base.node.viz.histogram.util.ColorColumn)4 DataColumnSpec (org.knime.core.data.DataColumnSpec)4 RowKey (org.knime.core.data.RowKey)4 Dimension (java.awt.Dimension)3 Point (java.awt.Point)3 AggregationMethod (org.knime.base.node.viz.aggregation.AggregationMethod)3 InteractiveHistogramVizModel (org.knime.base.node.viz.histogram.datamodel.InteractiveHistogramVizModel)3 Coordinate (org.knime.base.util.coordinate.Coordinate)3 NumericCoordinate (org.knime.base.util.coordinate.NumericCoordinate)3 DataTableSpec (org.knime.core.data.DataTableSpec)3 BinDataModel (org.knime.base.node.viz.histogram.datamodel.BinDataModel)2 AbstractHistogramProperties (org.knime.base.node.viz.histogram.impl.AbstractHistogramProperties)2 DataCell (org.knime.core.data.DataCell)2 DoubleCell (org.knime.core.data.def.DoubleCell)2 Color (java.awt.Color)1 Graphics2D (java.awt.Graphics2D)1 Paint (java.awt.Paint)1 TexturePaint (java.awt.TexturePaint)1 ActionEvent (java.awt.event.ActionEvent)1