blob: 4e1293f6640037a3ff93f0e0a4b63b291c6517f5 [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.sort.config;
import org.eclipse.nebula.widgets.nattable.config.CellConfigAttributes;
import org.eclipse.nebula.widgets.nattable.config.DefaultComparator;
import org.eclipse.nebula.widgets.nattable.config.IConfigRegistry;
import org.eclipse.nebula.widgets.nattable.config.IConfiguration;
import org.eclipse.nebula.widgets.nattable.grid.GridRegion;
import org.eclipse.nebula.widgets.nattable.layer.ILayer;
import org.eclipse.nebula.widgets.nattable.painter.cell.ICellPainter;
import org.eclipse.nebula.widgets.nattable.painter.cell.decorator.BeveledBorderDecorator;
import org.eclipse.nebula.widgets.nattable.sort.SortConfigAttributes;
import org.eclipse.nebula.widgets.nattable.sort.action.SortColumnAction;
import org.eclipse.nebula.widgets.nattable.sort.painter.SortableHeaderTextPainter;
import org.eclipse.nebula.widgets.nattable.style.DisplayMode;
import org.eclipse.nebula.widgets.nattable.ui.binding.UiBindingRegistry;
import org.eclipse.nebula.widgets.nattable.ui.matcher.MouseEventMatcher;
import org.eclipse.swt.SWT;
public class DefaultSortConfiguration implements IConfiguration {
/**
* Config label that is added if a column is sorted.
*
* @since 1.4
*/
public static final String SORT_CONFIG_TYPE = "SORT"; //$NON-NLS-1$
/**
* Config label that is added if a column is sorted descending.
*/
public static final String SORT_DOWN_CONFIG_TYPE = "SORT_DOWN"; //$NON-NLS-1$
/**
* Config label that is added if a column is sorted ascending.
*/
public static final String SORT_UP_CONFIG_TYPE = "SORT_UP"; //$NON-NLS-1$
/**
* The sort sequence can be appended to this base
*/
public static final String SORT_SEQ_CONFIG_TYPE = "SORT_SEQ_"; //$NON-NLS-1$
private ICellPainter cellPainter;
public DefaultSortConfiguration() {
this(new BeveledBorderDecorator(new SortableHeaderTextPainter()));
}
public DefaultSortConfiguration(ICellPainter cellPainter) {
this.cellPainter = cellPainter;
}
@Override
public void configureLayer(ILayer layer) {
// no specific layer configuration applied
}
@Override
public void configureRegistry(IConfigRegistry configRegistry) {
configRegistry.registerConfigAttribute(
SortConfigAttributes.SORT_COMPARATOR,
DefaultComparator.getInstance());
configRegistry.registerConfigAttribute(
CellConfigAttributes.CELL_PAINTER,
this.cellPainter,
DisplayMode.NORMAL,
SORT_DOWN_CONFIG_TYPE);
configRegistry.registerConfigAttribute(
CellConfigAttributes.CELL_PAINTER,
this.cellPainter,
DisplayMode.NORMAL,
SORT_UP_CONFIG_TYPE);
}
@Override
public void configureUiBindings(UiBindingRegistry uiBindingRegistry) {
uiBindingRegistry.registerSingleClickBinding(
new MouseEventMatcher(SWT.MOD3, GridRegion.COLUMN_HEADER.toString(), 1),
new SortColumnAction(false));
uiBindingRegistry.registerSingleClickBinding(
new MouseEventMatcher(SWT.MOD3 | SWT.MOD2, GridRegion.COLUMN_HEADER.toString(), 1),
new SortColumnAction(true));
}
}