blob: 36000e7296fb2d506cf8505837f1682863a53292 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2012, 2020 Original authors and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Original authors and others - initial API and implementation
******************************************************************************/
package org.eclipse.nebula.widgets.nattable.painter.cell.decorator;
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.util.GUIHelper;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.graphics.Rectangle;
public class XPBackgroundDecorator extends BackgroundPainter {
public final Color separatorColor;
public final Color gradientColor1;
public final Color gradientColor2;
public final Color gradientColor3;
public final Color highlightColor1;
public final Color highlightColor2;
public final Color highlightColor3;
public XPBackgroundDecorator(ICellPainter interiorPainter) {
super(interiorPainter);
this.separatorColor = GUIHelper.getColor(199, 197, 178);
this.gradientColor1 = GUIHelper.getColor(226, 222, 205);
this.gradientColor2 = GUIHelper.getColor(214, 210, 194);
this.gradientColor3 = GUIHelper.getColor(203, 199, 184);
this.highlightColor1 = GUIHelper.getColor(250, 171, 0);
this.highlightColor2 = GUIHelper.getColor(252, 194, 71);
this.highlightColor3 = GUIHelper.getColor(250, 178, 24);
}
@Override
public int getPreferredWidth(ILayerCell cell, GC gc,
IConfigRegistry configRegistry) {
return super.getPreferredWidth(cell, gc, configRegistry) + 4;
}
@Override
public int getPreferredHeight(ILayerCell cell, GC gc,
IConfigRegistry configRegistry) {
return super.getPreferredHeight(cell, gc, configRegistry) + 4;
}
@Override
public void paintCell(ILayerCell cell, GC gc, Rectangle rectangle,
IConfigRegistry configRegistry) {
// Draw background
super.paintCell(cell, gc, rectangle, configRegistry);
// Draw interior
Rectangle interiorBounds = new Rectangle(rectangle.x + 2,
rectangle.y + 2, rectangle.width - 4, rectangle.height - 4);
super.paintCell(cell, gc, interiorBounds, configRegistry);
// Save GC settings
Color originalBackground = gc.getBackground();
Color originalForeground = gc.getForeground();
// Draw separator
int x = rectangle.x;
gc.setForeground(GUIHelper.COLOR_WHITE);
gc.drawLine(x, rectangle.y + 3, x, rectangle.y + rectangle.height - 6);
x = rectangle.x + rectangle.width - 1;
gc.setForeground(this.separatorColor);
gc.drawLine(x, rectangle.y + 3, x, rectangle.y + rectangle.height - 6);
// Restore GC settings
gc.setBackground(originalBackground);
gc.setForeground(originalForeground);
// Draw bottom edge
int y = rectangle.y + rectangle.height - 3;
gc.setForeground(this.gradientColor1);
gc.drawLine(rectangle.x, y, rectangle.x + rectangle.width, y);
y++;
gc.setForeground(this.gradientColor2);
gc.drawLine(rectangle.x, y, rectangle.x + rectangle.width, y);
y++;
gc.setForeground(this.gradientColor3);
gc.drawLine(rectangle.x, y, rectangle.x + rectangle.width, y);
}
}