/*******************************************************************************
* Copyright (c) 2012, 2015 Original authors and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Original authors and others - initial API and implementation
******************************************************************************/
package org.eclipse.nebula.widgets.nattable.selection.config;
import org.eclipse.nebula.widgets.nattable.config.AbstractRegistryConfiguration;
import org.eclipse.nebula.widgets.nattable.config.CellConfigAttributes;
import org.eclipse.nebula.widgets.nattable.config.IConfigRegistry;
import org.eclipse.nebula.widgets.nattable.grid.GridRegion;
import org.eclipse.nebula.widgets.nattable.style.BorderStyle;
import org.eclipse.nebula.widgets.nattable.style.BorderStyle.LineStyleEnum;
import org.eclipse.nebula.widgets.nattable.style.CellStyleAttributes;
import org.eclipse.nebula.widgets.nattable.style.DisplayMode;
import org.eclipse.nebula.widgets.nattable.style.SelectionStyleLabels;
import org.eclipse.nebula.widgets.nattable.style.Style;
import org.eclipse.nebula.widgets.nattable.util.GUIHelper;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.FontData;
/**
* Sets up rendering style used for selected areas and the selection anchor.
*/
public class DefaultSelectionStyleConfiguration extends AbstractRegistryConfiguration {
// Selection style
public Font selectionFont =
GUIHelper.getFont(new FontData("Verdana", 8, SWT.BOLD | SWT.ITALIC)); //$NON-NLS-1$
public Color selectionBgColor = GUIHelper.COLOR_TITLE_INACTIVE_BACKGROUND;
public Color selectionFgColor = GUIHelper.COLOR_BLACK;
// Anchor style
public Color anchorBorderColor = GUIHelper.COLOR_DARK_GRAY;
public BorderStyle anchorBorderStyle =
new BorderStyle(1, this.anchorBorderColor, LineStyleEnum.SOLID);
public Color anchorBgColor = GUIHelper.COLOR_GRAY;
public Color anchorFgColor = GUIHelper.COLOR_WHITE;
// Selected headers style
public Color selectedHeaderBgColor = GUIHelper.COLOR_GRAY;
public Color selectedHeaderFgColor = GUIHelper.COLOR_WHITE;
public Font selectedHeaderFont =
GUIHelper.getFont(new FontData("Verdana", 10, SWT.BOLD)); //$NON-NLS-1$
public BorderStyle selectedHeaderBorderStyle =
new BorderStyle(-1, this.selectedHeaderFgColor, LineStyleEnum.SOLID);
public Color fullySelectedHeaderBgColor = GUIHelper.COLOR_WIDGET_NORMAL_SHADOW;
// Anchor grid line style
public Color anchorGridBorderColor = GUIHelper.COLOR_BLACK;
public BorderStyle anchorGridBorderStyle =
new BorderStyle(1, this.anchorGridBorderColor, LineStyleEnum.DOTTED);
@Override
public void configureRegistry(IConfigRegistry configRegistry) {
configureSelectionStyle(configRegistry);
configureSelectionAnchorStyle(configRegistry);
configureSelectionAnchorGridLineStyle(configRegistry);
configureHeaderHasSelectionStyle(configRegistry);
configureHeaderFullySelectedStyle(configRegistry);
}
protected void configureSelectionStyle(IConfigRegistry configRegistry) {
Style cellStyle = new Style();
cellStyle.setAttributeValue(
CellStyleAttributes.FONT,
this.selectionFont);
cellStyle.setAttributeValue(
CellStyleAttributes.BACKGROUND_COLOR,
this.selectionBgColor);
cellStyle.setAttributeValue(
CellStyleAttributes.FOREGROUND_COLOR,
this.selectionFgColor);
configRegistry.registerConfigAttribute(
CellConfigAttributes.CELL_STYLE,
cellStyle, DisplayMode.SELECT);
}
protected void configureSelectionAnchorStyle(IConfigRegistry configRegistry) {
// Selection anchor style for normal display mode
Style cellStyle = new Style();
cellStyle.setAttributeValue(
CellStyleAttributes.BORDER_STYLE,
this.anchorBorderStyle);
configRegistry.registerConfigAttribute(
CellConfigAttributes.CELL_STYLE,
cellStyle,
DisplayMode.NORMAL,
SelectionStyleLabels.SELECTION_ANCHOR_STYLE);
// Selection anchor style for select display mode
cellStyle = new Style();
cellStyle.setAttributeValue(
CellStyleAttributes.BACKGROUND_COLOR,
this.anchorBgColor);
cellStyle.setAttributeValue(
CellStyleAttributes.FOREGROUND_COLOR,
this.anchorFgColor);
cellStyle.setAttributeValue(
CellStyleAttributes.BORDER_STYLE,
this.anchorBorderStyle);
configRegistry.registerConfigAttribute(
CellConfigAttributes.CELL_STYLE,
cellStyle,
DisplayMode.SELECT,
SelectionStyleLabels.SELECTION_ANCHOR_STYLE);
}
protected void configureSelectionAnchorGridLineStyle(IConfigRegistry configRegistry) {
Style cellStyle = new Style();
cellStyle.setAttributeValue(
CellStyleAttributes.BORDER_STYLE,
this.anchorGridBorderStyle);
configRegistry.registerConfigAttribute(
CellConfigAttributes.CELL_STYLE,
cellStyle,
DisplayMode.SELECT,
SelectionStyleLabels.SELECTION_ANCHOR_GRID_LINE_STYLE);
}
protected void configureHeaderHasSelectionStyle(IConfigRegistry configRegistry) {
Style cellStyle = new Style();
cellStyle.setAttributeValue(
CellStyleAttributes.FOREGROUND_COLOR,
this.selectedHeaderFgColor);
cellStyle.setAttributeValue(
CellStyleAttributes.BACKGROUND_COLOR,
this.selectedHeaderBgColor);
cellStyle.setAttributeValue(
CellStyleAttributes.FONT,
this.selectedHeaderFont);
cellStyle.setAttributeValue(
CellStyleAttributes.BORDER_STYLE,
this.selectedHeaderBorderStyle);
configRegistry.registerConfigAttribute(
CellConfigAttributes.CELL_STYLE,
cellStyle,
DisplayMode.SELECT,
GridRegion.COLUMN_HEADER);
configRegistry.registerConfigAttribute(
CellConfigAttributes.CELL_STYLE,
cellStyle.clone(),
DisplayMode.SELECT,
GridRegion.CORNER);
configRegistry.registerConfigAttribute(
CellConfigAttributes.CELL_STYLE,
cellStyle.clone(),
DisplayMode.SELECT,
GridRegion.ROW_HEADER);
}
protected void configureHeaderFullySelectedStyle(IConfigRegistry configRegistry) {
// Header fully selected
Style cellStyle = new Style();
cellStyle.setAttributeValue(
CellStyleAttributes.BACKGROUND_COLOR,
this.fullySelectedHeaderBgColor);
configRegistry.registerConfigAttribute(
CellConfigAttributes.CELL_STYLE,
cellStyle,
DisplayMode.SELECT,
SelectionStyleLabels.COLUMN_FULLY_SELECTED_STYLE);
configRegistry.registerConfigAttribute(
CellConfigAttributes.CELL_STYLE,
cellStyle.clone(),
DisplayMode.SELECT,
SelectionStyleLabels.ROW_FULLY_SELECTED_STYLE);
}
}