/* * Copyright (c) 2016, MGrossmann * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the jo-widgets.org nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL jo-widgets.org BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. */ package org.jowidgets.nattable.impl.plugin.painter; import org.eclipse.nebula.widgets.nattable.config.IConfigRegistry; import org.eclipse.nebula.widgets.nattable.layer.cell.ILayerCell; import org.eclipse.nebula.widgets.nattable.painter.cell.BackgroundPainter; import org.eclipse.nebula.widgets.nattable.painter.cell.ICellPainter; import org.eclipse.nebula.widgets.nattable.style.DisplayMode; import org.eclipse.swt.graphics.Color; import org.jowidgets.common.color.IColorConstant; import org.jowidgets.common.model.ITableCell; import org.jowidgets.spi.impl.swt.common.color.IColorCache; import org.jowidgets.spi.impl.swt.common.color.RememberLastColorCache; import org.jowidgets.spi.impl.swt.common.options.SwtOptions; final class JoCellBackgroundPainter extends BackgroundPainter { private final IColorConstant defaultSelectedBackgroundColor; private final IColorCache backgroundColorCache; private final IColorCache selectedBackgroundColorCache; JoCellBackgroundPainter(final ICellPainter painter) { super(painter); this.defaultSelectedBackgroundColor = SwtOptions.getTableSelectedBackgroundColor(); this.backgroundColorCache = new RememberLastColorCache(); this.selectedBackgroundColorCache = new RememberLastColorCache(); } @Override protected Color getBackgroundColour(final ILayerCell cell, final IConfigRegistry configRegistry) { final ITableCell tableCell = (ITableCell) cell.getDataValue(); if (DisplayMode.NORMAL.equals(cell.getDisplayMode())) { final IColorConstant backgroundColor = tableCell.getBackgroundColor(); if (backgroundColor != null) { return backgroundColorCache.getColor(backgroundColor); } } else if (DisplayMode.SELECT.equals(cell.getDisplayMode())) { IColorConstant selectedBackgroundColor = tableCell.getSelectedBackgroundColor(); if (selectedBackgroundColor == null) { selectedBackgroundColor = defaultSelectedBackgroundColor; } if (selectedBackgroundColor != null) { return selectedBackgroundColorCache.getColor(selectedBackgroundColor); } } return super.getBackgroundColour(cell, configRegistry); } }