use of org.eclipse.nebula.widgets.nattable.data.convert.IDisplayConverter in project nebula.widgets.nattable by eclipse.
the class DefaultGlazedListsFilterStrategy method applyFilter.
/**
* Create GlazedLists matcher editors and apply them to facilitate
* filtering.
*/
@Override
@SuppressWarnings({ "unchecked", "rawtypes" })
public void applyFilter(Map<Integer, Object> filterIndexToObjectMap) {
if (filterIndexToObjectMap.isEmpty()) {
// wait until all listeners had the chance to handle the clear event
try {
this.filterLock.writeLock().lock();
this.matcherEditor.getMatcherEditors().clear();
} finally {
this.filterLock.writeLock().unlock();
}
return;
}
try {
EventList<MatcherEditor<T>> matcherEditors = new BasicEventList<MatcherEditor<T>>();
for (Entry<Integer, Object> mapEntry : filterIndexToObjectMap.entrySet()) {
Integer columnIndex = mapEntry.getKey();
String filterText = getStringFromColumnObject(columnIndex, mapEntry.getValue());
String textDelimiter = this.configRegistry.getConfigAttribute(FilterRowConfigAttributes.TEXT_DELIMITER, DisplayMode.NORMAL, FilterRowDataLayer.FILTER_ROW_COLUMN_LABEL_PREFIX + columnIndex);
TextMatchingMode textMatchingMode = this.configRegistry.getConfigAttribute(FilterRowConfigAttributes.TEXT_MATCHING_MODE, DisplayMode.NORMAL, FilterRowDataLayer.FILTER_ROW_COLUMN_LABEL_PREFIX + columnIndex);
IDisplayConverter displayConverter = this.configRegistry.getConfigAttribute(FilterRowConfigAttributes.FILTER_DISPLAY_CONVERTER, DisplayMode.NORMAL, FilterRowDataLayer.FILTER_ROW_COLUMN_LABEL_PREFIX + columnIndex);
Comparator comparator = this.configRegistry.getConfigAttribute(FilterRowConfigAttributes.FILTER_COMPARATOR, DisplayMode.NORMAL, FilterRowDataLayer.FILTER_ROW_COLUMN_LABEL_PREFIX + columnIndex);
final Function<T, Object> columnValueProvider = getColumnValueProvider(columnIndex);
List<ParseResult> parseResults = FilterRowUtils.parse(filterText, textDelimiter, textMatchingMode);
EventList<MatcherEditor<T>> stringMatcherEditors = new BasicEventList<MatcherEditor<T>>();
for (ParseResult parseResult : parseResults) {
try {
MatchType matchOperation = parseResult.getMatchOperation();
if (matchOperation == MatchType.NONE) {
stringMatcherEditors.add(getTextMatcherEditor(columnIndex, textMatchingMode, displayConverter, parseResult.getValueToMatch()));
} else {
Object threshold = displayConverter.displayToCanonicalValue(parseResult.getValueToMatch());
matcherEditors.add(getThresholdMatcherEditor(columnIndex, threshold, comparator, columnValueProvider, matchOperation));
}
} catch (PatternSyntaxException e) {
// $NON-NLS-1$
LOG.warn("Error on applying a filter: " + e.getLocalizedMessage());
}
}
if (stringMatcherEditors.size() > 0) {
final CompositeMatcherEditor<T> stringCompositeMatcherEditor = new CompositeMatcherEditor<T>(stringMatcherEditors);
stringCompositeMatcherEditor.setMode(CompositeMatcherEditor.OR);
matcherEditors.add(stringCompositeMatcherEditor);
}
}
// wait until all listeners had the chance to handle the clear event
try {
this.filterLock.writeLock().lock();
// Remove the existing matchers that are removed from
// 'filterIndexToObjectMap'
final Iterator<MatcherEditor<T>> existingMatcherEditors = this.matcherEditor.getMatcherEditors().iterator();
while (existingMatcherEditors.hasNext()) {
final MatcherEditor<T> existingMatcherEditor = existingMatcherEditors.next();
if (!containsMatcherEditor(matcherEditors, existingMatcherEditor)) {
existingMatcherEditors.remove();
}
}
// 'filterIndexToObjectMap'
for (final MatcherEditor<T> matcherEditor : matcherEditors) {
if (!containsMatcherEditor(this.matcherEditor.getMatcherEditors(), matcherEditor)) {
this.matcherEditor.getMatcherEditors().add(matcherEditor);
}
}
} finally {
this.filterLock.writeLock().unlock();
}
} catch (Exception e) {
// $NON-NLS-1$
LOG.error("Error on applying a filter", e);
}
}
use of org.eclipse.nebula.widgets.nattable.data.convert.IDisplayConverter in project nebula.widgets.nattable by eclipse.
the class NatTableCSSHandler method retrieveCSSProperty.
@Override
public String retrieveCSSProperty(Object control, String property, String pseudo, CSSEngine engine) throws Exception {
NatTable natTable = null;
String label = null;
String displayMode = NatTableCSSHelper.getDisplayMode(pseudo);
if (control instanceof NatTable) {
natTable = (NatTable) control;
} else if (control instanceof NatTableWrapper) {
natTable = ((NatTableWrapper) control).getNatTable();
label = ((NatTableWrapper) control).getLabel();
}
if (natTable != null) {
// check property
if (NatTableCSSConstants.BACKGROUND_COLOR.equalsIgnoreCase(property)) {
return CSSPropertyBackgroundSWTHandler.INSTANCE.retrieveCSSPropertyBackgroundColor(control, pseudo, engine);
} else if (NatTableCSSConstants.BACKGROUND_IMAGE.equalsIgnoreCase(property)) {
return CSSPropertyBackgroundSWTHandler.INSTANCE.retrieveCSSPropertyBackgroundImage(control, pseudo, engine);
} else if (NatTableCSSConstants.CELL_BACKGROUND_COLOR.equalsIgnoreCase(property)) {
ICSSValueConverter cssValueConverter = engine.getCSSValueConverter(String.class);
return cssValueConverter.convert(NatTableCSSHelper.getNatTableStyle(natTable, CellStyleAttributes.BACKGROUND_COLOR, displayMode, label), engine, null);
} else if (NatTableCSSConstants.CELL_BACKGROUND_IMAGE.equalsIgnoreCase(property)) {
// TODO : manage path of Image.
return "none";
} else if (NatTableCSSConstants.FOREGROUND_COLOR.equalsIgnoreCase(property)) {
ICSSValueConverter cssValueConverter = engine.getCSSValueConverter(String.class);
return cssValueConverter.convert(NatTableCSSHelper.getNatTableStyle(natTable, CellStyleAttributes.FOREGROUND_COLOR, displayMode, label), engine, null);
} else if (NatTableCSSConstants.HORIZONTAL_ALIGNMENT.equalsIgnoreCase(property)) {
HorizontalAlignmentEnum align = NatTableCSSHelper.getNatTableStyle(natTable, CellStyleAttributes.HORIZONTAL_ALIGNMENT, displayMode, label);
switch(align) {
case CENTER:
return "center";
case LEFT:
return "left";
case RIGHT:
return "right";
}
} else if (NatTableCSSConstants.VERTICAL_ALIGNMENT.equalsIgnoreCase(property)) {
VerticalAlignmentEnum align = NatTableCSSHelper.getNatTableStyle(natTable, CellStyleAttributes.VERTICAL_ALIGNMENT, displayMode, label);
switch(align) {
case TOP:
return "top";
case MIDDLE:
return "middle";
case BOTTOM:
return "bottom";
}
} else if (NatTableCSSConstants.FONT.equalsIgnoreCase(property)) {
Font font = NatTableCSSHelper.getNatTableStyle(natTable, CellStyleAttributes.FONT, displayMode, label);
return CSSSWTFontHelper.getFontComposite(font);
} else if (NatTableCSSConstants.FONT_FAMILY.equalsIgnoreCase(property)) {
Font font = NatTableCSSHelper.getNatTableStyle(natTable, CellStyleAttributes.FONT, displayMode, label);
return CSSSWTFontHelper.getFontFamily(font);
} else if (NatTableCSSConstants.FONT_SIZE.equalsIgnoreCase(property)) {
Font font = NatTableCSSHelper.getNatTableStyle(natTable, CellStyleAttributes.FONT, displayMode, label);
return CSSSWTFontHelper.getFontSize(font);
} else if (NatTableCSSConstants.FONT_STYLE.equalsIgnoreCase(property)) {
Font font = NatTableCSSHelper.getNatTableStyle(natTable, CellStyleAttributes.FONT, displayMode, label);
return CSSSWTFontHelper.getFontStyle(font);
} else if (NatTableCSSConstants.FONT_WEIGHT.equalsIgnoreCase(property)) {
Font font = NatTableCSSHelper.getNatTableStyle(natTable, CellStyleAttributes.FONT, displayMode, label);
return CSSSWTFontHelper.getFontWeight(font);
} else if (NatTableCSSConstants.IMAGE.equalsIgnoreCase(property)) {
// TODO : manage path of Image.
return "none";
} else if (NatTableCSSConstants.BORDER.equalsIgnoreCase(property)) {
BorderStyle border = NatTableCSSHelper.getNatTableStyle(natTable, CellStyleAttributes.BORDER_STYLE, displayMode, label);
ICSSValueConverter cssValueConverter = engine.getCSSValueConverter(String.class);
return border.getThickness() + " " + border.getLineStyle().toString().toLowerCase() + " " + border.getBorderMode().toString().toLowerCase() + " " + cssValueConverter.convert(border.getColor(), engine, null);
} else if (NatTableCSSConstants.BORDER_COLOR.equalsIgnoreCase(property)) {
BorderStyle border = NatTableCSSHelper.getNatTableStyle(natTable, CellStyleAttributes.BORDER_STYLE, displayMode, label);
ICSSValueConverter cssValueConverter = engine.getCSSValueConverter(String.class);
return cssValueConverter.convert(border.getColor(), engine, null);
} else if (NatTableCSSConstants.BORDER_STYLE.equalsIgnoreCase(property)) {
BorderStyle border = NatTableCSSHelper.getNatTableStyle(natTable, CellStyleAttributes.BORDER_STYLE, displayMode, label);
return border.getLineStyle().toString().toLowerCase();
} else if (NatTableCSSConstants.BORDER_WIDTH.equalsIgnoreCase(property)) {
BorderStyle border = NatTableCSSHelper.getNatTableStyle(natTable, CellStyleAttributes.BORDER_STYLE, displayMode, label);
return "" + border.getThickness();
} else if (NatTableCSSConstants.BORDER_MODE.equalsIgnoreCase(property)) {
BorderStyle border = NatTableCSSHelper.getNatTableStyle(natTable, CellStyleAttributes.BORDER_STYLE, displayMode, label);
return "" + border.getBorderMode();
} else if (NatTableCSSConstants.PASSWORD_ECHO_CHAR.equalsIgnoreCase(property)) {
return "" + NatTableCSSHelper.getNatTableStyle(natTable, CellStyleAttributes.PASSWORD_ECHO_CHAR, displayMode, label);
} else if (NatTableCSSConstants.TEXT_DECORATION.equalsIgnoreCase(property)) {
TextDecorationEnum decoration = NatTableCSSHelper.getNatTableStyle(natTable, CellStyleAttributes.TEXT_DECORATION, displayMode, label);
switch(decoration) {
case NONE:
return "none";
case STRIKETHROUGH:
return "line-through";
case UNDERLINE:
return "underline";
case UNDERLINE_STRIKETHROUGH:
return "underline line-through";
}
} else if (NatTableCSSConstants.FREEZE_SEPARATOR_COLOR.equalsIgnoreCase(property)) {
ICSSValueConverter cssValueConverter = engine.getCSSValueConverter(String.class);
return cssValueConverter.convert(natTable.getConfigRegistry().getConfigAttribute(IFreezeConfigAttributes.SEPARATOR_COLOR, displayMode, label), engine, null);
} else if (NatTableCSSConstants.GRID_LINE_COLOR.equalsIgnoreCase(property)) {
ICSSValueConverter cssValueConverter = engine.getCSSValueConverter(String.class);
return cssValueConverter.convert(natTable.getConfigRegistry().getConfigAttribute(CellConfigAttributes.GRID_LINE_COLOR, displayMode, label), engine, null);
} else if (NatTableCSSConstants.GRID_LINE_WIDTH.equalsIgnoreCase(property)) {
Integer width = natTable.getConfigRegistry().getConfigAttribute(CellConfigAttributes.GRID_LINE_WIDTH, displayMode, label);
if (width == null) {
return "0";
} else {
return width.toString();
}
} else if (NatTableCSSConstants.RENDER_GRID_LINES.equalsIgnoreCase(property)) {
Boolean render = natTable.getConfigRegistry().getConfigAttribute(CellConfigAttributes.RENDER_GRID_LINES, displayMode, label);
if (render == null) {
return Boolean.TRUE.toString();
} else {
return render.toString();
}
} else if (NatTableCSSConstants.CONVERSION_ERROR_FONT.equalsIgnoreCase(property)) {
IStyle style = natTable.getConfigRegistry().getConfigAttribute(EditConfigAttributes.CONVERSION_ERROR_STYLE, displayMode, label);
Font font = style.getAttributeValue(CellStyleAttributes.FONT);
return CSSSWTFontHelper.getFontComposite(font);
} else if (NatTableCSSConstants.CONVERSION_ERROR_FONT_FAMILY.equalsIgnoreCase(property)) {
IStyle style = natTable.getConfigRegistry().getConfigAttribute(EditConfigAttributes.CONVERSION_ERROR_STYLE, displayMode, label);
Font font = style.getAttributeValue(CellStyleAttributes.FONT);
return CSSSWTFontHelper.getFontFamily(font);
} else if (NatTableCSSConstants.CONVERSION_ERROR_FONT_SIZE.equalsIgnoreCase(property)) {
IStyle style = natTable.getConfigRegistry().getConfigAttribute(EditConfigAttributes.CONVERSION_ERROR_STYLE, displayMode, label);
Font font = style.getAttributeValue(CellStyleAttributes.FONT);
return CSSSWTFontHelper.getFontSize(font);
} else if (NatTableCSSConstants.CONVERSION_ERROR_FONT_STYLE.equalsIgnoreCase(property)) {
IStyle style = natTable.getConfigRegistry().getConfigAttribute(EditConfigAttributes.CONVERSION_ERROR_STYLE, displayMode, label);
Font font = style.getAttributeValue(CellStyleAttributes.FONT);
return CSSSWTFontHelper.getFontStyle(font);
} else if (NatTableCSSConstants.CONVERSION_ERROR_FONT_WEIGHT.equalsIgnoreCase(property)) {
IStyle style = natTable.getConfigRegistry().getConfigAttribute(EditConfigAttributes.CONVERSION_ERROR_STYLE, displayMode, label);
Font font = style.getAttributeValue(CellStyleAttributes.FONT);
return CSSSWTFontHelper.getFontWeight(font);
} else if (NatTableCSSConstants.CONVERSION_ERROR_BACKGROUND_COLOR.equalsIgnoreCase(property)) {
ICSSValueConverter cssValueConverter = engine.getCSSValueConverter(String.class);
IStyle style = natTable.getConfigRegistry().getConfigAttribute(EditConfigAttributes.CONVERSION_ERROR_STYLE, displayMode, label);
return cssValueConverter.convert(style.getAttributeValue(CellStyleAttributes.BACKGROUND_COLOR), engine, null);
} else if (NatTableCSSConstants.CONVERSION_ERROR_FOREGROUND_COLOR.equalsIgnoreCase(property)) {
ICSSValueConverter cssValueConverter = engine.getCSSValueConverter(String.class);
IStyle style = natTable.getConfigRegistry().getConfigAttribute(EditConfigAttributes.CONVERSION_ERROR_STYLE, displayMode, label);
return cssValueConverter.convert(style.getAttributeValue(CellStyleAttributes.FOREGROUND_COLOR), engine, null);
} else if (NatTableCSSConstants.VALIDATION_ERROR_FONT.equalsIgnoreCase(property)) {
IStyle style = natTable.getConfigRegistry().getConfigAttribute(EditConfigAttributes.VALIDATION_ERROR_STYLE, displayMode, label);
Font font = style.getAttributeValue(CellStyleAttributes.FONT);
return CSSSWTFontHelper.getFontComposite(font);
} else if (NatTableCSSConstants.VALIDATION_ERROR_FONT_FAMILY.equalsIgnoreCase(property)) {
IStyle style = natTable.getConfigRegistry().getConfigAttribute(EditConfigAttributes.VALIDATION_ERROR_STYLE, displayMode, label);
Font font = style.getAttributeValue(CellStyleAttributes.FONT);
return CSSSWTFontHelper.getFontFamily(font);
} else if (NatTableCSSConstants.VALIDATION_ERROR_FONT_SIZE.equalsIgnoreCase(property)) {
IStyle style = natTable.getConfigRegistry().getConfigAttribute(EditConfigAttributes.VALIDATION_ERROR_STYLE, displayMode, label);
Font font = style.getAttributeValue(CellStyleAttributes.FONT);
return CSSSWTFontHelper.getFontSize(font);
} else if (NatTableCSSConstants.VALIDATION_ERROR_FONT_STYLE.equalsIgnoreCase(property)) {
IStyle style = natTable.getConfigRegistry().getConfigAttribute(EditConfigAttributes.VALIDATION_ERROR_STYLE, displayMode, label);
Font font = style.getAttributeValue(CellStyleAttributes.FONT);
return CSSSWTFontHelper.getFontStyle(font);
} else if (NatTableCSSConstants.VALIDATION_ERROR_FONT_WEIGHT.equalsIgnoreCase(property)) {
IStyle style = natTable.getConfigRegistry().getConfigAttribute(EditConfigAttributes.VALIDATION_ERROR_STYLE, displayMode, label);
Font font = style.getAttributeValue(CellStyleAttributes.FONT);
return CSSSWTFontHelper.getFontWeight(font);
} else if (NatTableCSSConstants.VALIDATION_ERROR_BACKGROUND_COLOR.equalsIgnoreCase(property)) {
ICSSValueConverter cssValueConverter = engine.getCSSValueConverter(String.class);
IStyle style = natTable.getConfigRegistry().getConfigAttribute(EditConfigAttributes.VALIDATION_ERROR_STYLE, displayMode, label);
return cssValueConverter.convert(style.getAttributeValue(CellStyleAttributes.BACKGROUND_COLOR), engine, null);
} else if (NatTableCSSConstants.VALIDATION_ERROR_FOREGROUND_COLOR.equalsIgnoreCase(property)) {
ICSSValueConverter cssValueConverter = engine.getCSSValueConverter(String.class);
IStyle style = natTable.getConfigRegistry().getConfigAttribute(EditConfigAttributes.VALIDATION_ERROR_STYLE, displayMode, label);
return cssValueConverter.convert(style.getAttributeValue(CellStyleAttributes.FOREGROUND_COLOR), engine, null);
} else if (NatTableCSSConstants.WORD_WRAP.equalsIgnoreCase(property)) {
Boolean wrap = Boolean.FALSE;
ICellPainter painter = natTable.getConfigRegistry().getConfigAttribute(CellConfigAttributes.CELL_PAINTER, displayMode, label);
if (painter != null) {
while (painter instanceof CellPainterWrapper) {
painter = ((CellPainterWrapper) painter).getWrappedPainter();
}
}
if (painter instanceof AbstractTextPainter) {
wrap = ((AbstractTextPainter) painter).isWordWrapping();
}
return wrap.toString();
} else if (NatTableCSSConstants.TEXT_WRAP.equalsIgnoreCase(property)) {
Boolean wrap = Boolean.FALSE;
ICellPainter painter = natTable.getConfigRegistry().getConfigAttribute(CellConfigAttributes.CELL_PAINTER, displayMode, label);
if (painter != null) {
while (painter instanceof CellPainterWrapper) {
painter = ((CellPainterWrapper) painter).getWrappedPainter();
}
}
if (painter instanceof AbstractTextPainter) {
wrap = ((AbstractTextPainter) painter).isWrapText();
}
return wrap.toString();
} else if (NatTableCSSConstants.TEXT_TRIM.equalsIgnoreCase(property)) {
Boolean trim = Boolean.FALSE;
ICellPainter painter = natTable.getConfigRegistry().getConfigAttribute(CellConfigAttributes.CELL_PAINTER, displayMode, label);
if (painter != null) {
while (painter instanceof CellPainterWrapper) {
painter = ((CellPainterWrapper) painter).getWrappedPainter();
}
}
if (painter instanceof AbstractTextPainter) {
trim = ((AbstractTextPainter) painter).isTrimText();
}
return trim.toString();
} else if (NatTableCSSConstants.LINE_SPACING.equalsIgnoreCase(property)) {
int spacing = 0;
ICellPainter painter = natTable.getConfigRegistry().getConfigAttribute(CellConfigAttributes.CELL_PAINTER, displayMode, label);
if (painter != null) {
while (painter instanceof CellPainterWrapper) {
painter = ((CellPainterWrapper) painter).getWrappedPainter();
}
}
if (painter instanceof AbstractTextPainter) {
spacing = ((AbstractTextPainter) painter).getLineSpacing();
}
return "" + spacing;
} else if (NatTableCSSConstants.TEXT_DIRECTION.equalsIgnoreCase(property)) {
String direction = "horizontal";
ICellPainter painter = natTable.getConfigRegistry().getConfigAttribute(CellConfigAttributes.CELL_PAINTER, displayMode, label);
if (painter != null) {
while (painter instanceof CellPainterWrapper) {
painter = ((CellPainterWrapper) painter).getWrappedPainter();
}
}
if (painter instanceof VerticalTextPainter) {
direction = "vertical";
}
return direction;
} else if (NatTableCSSConstants.COLUMN_WIDTH.equalsIgnoreCase(property)) {
// inherit is not supported here
return "default";
} else if (NatTableCSSConstants.ROW_HEIGHT.equalsIgnoreCase(property)) {
// inherit is not supported here
return "default";
} else if (NatTableCSSConstants.PADDING.equalsIgnoreCase(property)) {
ICellPainter painter = natTable.getConfigRegistry().getConfigAttribute(CellConfigAttributes.CELL_PAINTER, displayMode, label);
if (painter != null) {
while (painter instanceof CellPainterWrapper) {
painter = ((CellPainterWrapper) painter).getWrappedPainter();
if (painter instanceof PaddingDecorator) {
PaddingDecorator decorator = (PaddingDecorator) painter;
return new StringBuilder().append(decorator.getTopPadding()).append(" ").append(decorator.getRightPadding()).append(" ").append(decorator.getBottomPadding()).append(" ").append(decorator.getLeftPadding()).toString();
}
}
}
} else if (NatTableCSSConstants.PADDING_TOP.equalsIgnoreCase(property)) {
ICellPainter painter = natTable.getConfigRegistry().getConfigAttribute(CellConfigAttributes.CELL_PAINTER, displayMode, label);
if (painter != null) {
while (painter instanceof CellPainterWrapper) {
painter = ((CellPainterWrapper) painter).getWrappedPainter();
if (painter instanceof PaddingDecorator) {
return "" + ((PaddingDecorator) painter).getTopPadding();
}
}
}
return "0";
} else if (NatTableCSSConstants.PADDING_RIGHT.equalsIgnoreCase(property)) {
ICellPainter painter = natTable.getConfigRegistry().getConfigAttribute(CellConfigAttributes.CELL_PAINTER, displayMode, label);
if (painter != null) {
while (painter instanceof CellPainterWrapper) {
painter = ((CellPainterWrapper) painter).getWrappedPainter();
if (painter instanceof PaddingDecorator) {
return "" + ((PaddingDecorator) painter).getRightPadding();
}
}
}
return "0";
} else if (NatTableCSSConstants.PADDING_BOTTOM.equalsIgnoreCase(property)) {
ICellPainter painter = natTable.getConfigRegistry().getConfigAttribute(CellConfigAttributes.CELL_PAINTER, displayMode, label);
if (painter != null) {
while (painter instanceof CellPainterWrapper) {
painter = ((CellPainterWrapper) painter).getWrappedPainter();
if (painter instanceof PaddingDecorator) {
return "" + ((PaddingDecorator) painter).getBottomPadding();
}
}
}
return "0";
} else if (NatTableCSSConstants.PADDING_LEFT.equalsIgnoreCase(property)) {
ICellPainter painter = natTable.getConfigRegistry().getConfigAttribute(CellConfigAttributes.CELL_PAINTER, displayMode, label);
if (painter != null) {
while (painter instanceof CellPainterWrapper) {
painter = ((CellPainterWrapper) painter).getWrappedPainter();
if (painter instanceof PaddingDecorator) {
return "" + ((PaddingDecorator) painter).getLeftPadding();
}
}
}
return "0";
} else if (NatTableCSSConstants.TABLE_BORDER_COLOR.equalsIgnoreCase(property)) {
for (Iterator<IOverlayPainter> it = natTable.getOverlayPainters().iterator(); it.hasNext(); ) {
IOverlayPainter painter = it.next();
if (painter instanceof NatTableBorderOverlayPainter) {
return engine.getCSSValueConverter(String.class).convert(((NatTableBorderOverlayPainter) painter).getBorderColor(), engine, null);
}
}
} else if (NatTableCSSConstants.FILL_HANDLE_BORDER.equalsIgnoreCase(property)) {
BorderStyle border = NatTableCSSHelper.getNatTableStyle(natTable, FillHandleConfigAttributes.FILL_HANDLE_BORDER_STYLE, displayMode, label);
ICSSValueConverter cssValueConverter = engine.getCSSValueConverter(String.class);
return border.getThickness() + " " + border.getLineStyle().toString().toLowerCase() + " " + border.getBorderMode().toString().toLowerCase() + " " + cssValueConverter.convert(border.getColor(), engine, null);
} else if (NatTableCSSConstants.FILL_HANDLE_COLOR.equalsIgnoreCase(property)) {
ICSSValueConverter cssValueConverter = engine.getCSSValueConverter(String.class);
return cssValueConverter.convert(natTable.getConfigRegistry().getConfigAttribute(FillHandleConfigAttributes.FILL_HANDLE_COLOR, displayMode, label), engine, null);
} else if (NatTableCSSConstants.FILL_REGION_BORDER.equalsIgnoreCase(property)) {
BorderStyle border = NatTableCSSHelper.getNatTableStyle(natTable, FillHandleConfigAttributes.FILL_HANDLE_REGION_BORDER_STYLE, displayMode, label);
ICSSValueConverter cssValueConverter = engine.getCSSValueConverter(String.class);
return border.getThickness() + " " + border.getLineStyle().toString().toLowerCase() + " " + border.getBorderMode().toString().toLowerCase() + " " + cssValueConverter.convert(border.getColor(), engine, null);
} else if (NatTableCSSConstants.INVERT_ICONS.equalsIgnoreCase(property)) {
// not able to determine it easily here
return Boolean.FALSE.toString();
} else if (NatTableCSSConstants.DECORATION.equalsIgnoreCase(property)) {
// TODO : manage path of Image.
return "none";
} else if (NatTableCSSConstants.PERCENTAGE_DECORATOR_COLORS.equalsIgnoreCase(property)) {
IStyle style = natTable.getConfigRegistry().getConfigAttribute(CellConfigAttributes.CELL_STYLE, displayMode, label);
Color c1 = style.getAttributeValue(PercentageBarDecorator.PERCENTAGE_BAR_COMPLETE_REGION_START_COLOR);
Color c2 = style.getAttributeValue(PercentageBarDecorator.PERCENTAGE_BAR_COMPLETE_REGION_END_COLOR);
Color c3 = style.getAttributeValue(PercentageBarDecorator.PERCENTAGE_BAR_INCOMPLETE_REGION_COLOR);
ICSSValueConverter cssValueConverter = engine.getCSSValueConverter(String.class);
return cssValueConverter.convert(c1, engine, null) + " " + cssValueConverter.convert(c2, engine, null) + " " + cssValueConverter.convert(c3, engine, null);
} else if (NatTableCSSConstants.CONVERTER.equalsIgnoreCase(property)) {
IDisplayConverter converter = natTable.getConfigRegistry().getConfigAttribute(CellConfigAttributes.DISPLAY_CONVERTER, displayMode, label);
return NatTableCSSHelper.getDisplayConverterString(converter);
}
}
return null;
}
use of org.eclipse.nebula.widgets.nattable.data.convert.IDisplayConverter in project nebula.widgets.nattable by eclipse.
the class GroupByDisplayConverter method getDisplayValue.
/**
* Searches for the {@link IDisplayConverter} to use for the given
* {@link ILayerCell} and converts the given canonical value to the display
* value using the found converter.
*
* @param cell
* The {@link ILayerCell} for which the display value is asked.
* @param configRegistry
* The {@link ConfigRegistry} necessary to retrieve the
* {@link IDisplayConverter}.
* @param canonicalValue
* The canonical value to convert.
* @return The canonical value converted to the display value.
*/
protected Object getDisplayValue(ILayerCell cell, IConfigRegistry configRegistry, Object canonicalValue) {
IDisplayConverter converter = null;
Object canonical = canonicalValue;
if (this.wrappedConverters.containsKey(cell.getColumnIndex())) {
converter = this.wrappedConverters.get(cell.getColumnIndex());
} else if (canonicalValue instanceof GroupByObject) {
GroupByObject groupByObject = (GroupByObject) canonicalValue;
int lastGroupingIndex = -1;
for (Map.Entry<Integer, Object> groupEntry : groupByObject.getDescriptor().entrySet()) {
lastGroupingIndex = groupEntry.getKey();
}
if (lastGroupingIndex >= 0) {
canonical = ((GroupByObject) canonicalValue).getValue();
// cache
if (this.converterCache.containsKey(lastGroupingIndex)) {
converter = this.converterCache.get(lastGroupingIndex);
} else {
int rowPosition = cell.getRowPosition() + 1;
LabelStack stackBelow = this.groupByDataLayer.getConfigLabelsByPosition(lastGroupingIndex, rowPosition);
while (stackBelow.hasLabel(GroupByDataLayer.GROUP_BY_OBJECT)) {
stackBelow = this.groupByDataLayer.getConfigLabelsByPosition(lastGroupingIndex, ++rowPosition);
}
converter = configRegistry.getConfigAttribute(CellConfigAttributes.DISPLAY_CONVERTER, DisplayMode.NORMAL, stackBelow.getLabels());
// this converter additionally
if (!this.converterCache.containsKey(lastGroupingIndex)) {
this.converterCache.put(lastGroupingIndex, converter);
}
}
}
} else {
// create a copy of the label stack to avoid finding this
// converter again
// Note: this displayConverter needs to be registered for the
// GroupByDataLayer.GROUP_BY_OBJECT label
List<String> labels = new ArrayList<String>(cell.getConfigLabels().getLabels());
labels.remove(GroupByDataLayer.GROUP_BY_OBJECT);
converter = configRegistry.getConfigAttribute(CellConfigAttributes.DISPLAY_CONVERTER, DisplayMode.NORMAL, labels);
if (converter == this) {
// we found ourself again, so let's skip this
converter = null;
}
}
if (converter == null) {
converter = new DefaultDisplayConverter();
}
return converter.canonicalToDisplayValue(cell, configRegistry, canonical);
}
use of org.eclipse.nebula.widgets.nattable.data.convert.IDisplayConverter in project nebula.widgets.nattable by eclipse.
the class MultiCellEditDialogRunner method shouldOpenDefaultDialogWithoutIncrementDecrementBox.
public void shouldOpenDefaultDialogWithoutIncrementDecrementBox() {
CellFixture cell = new CellFixture();
cell.setBounds(new Rectangle(100, 100, 100, 20));
cell.setConfigLabels(new LabelStack("Cell_Edit"));
cell.setDataValue("123");
cell.setDisplayMode(DisplayMode.NORMAL);
TextCellEditor cellEditor = new TextCellEditor();
IDisplayConverter dataTypeConverter = new DisplayConverter() {
@Override
public Object canonicalToDisplayValue(Object canonicalValue) {
return canonicalValue;
}
@Override
public Object displayToCanonicalValue(Object displayValue) {
return displayValue;
}
};
final Character newValue = Character.valueOf('4');
IDataValidator dataValidator = new DataValidator() {
@Override
public boolean validate(int columnIndex, int rowIndex, Object newValue) {
Assert.assertEquals(newValue, newValue);
return false;
}
};
Shell shell = new Shell(Display.getDefault(), SWT.H_SCROLL | SWT.V_SCROLL | SWT.RESIZE);
ConfigRegistry configRegistry = new ConfigRegistry();
configRegistry.registerConfigAttribute(CellConfigAttributes.DISPLAY_CONVERTER, dataTypeConverter);
configRegistry.registerConfigAttribute(EditConfigAttributes.DATA_VALIDATOR, dataValidator);
final CellEditDialog dialog = new CellEditDialog(shell, newValue, cell, cellEditor, configRegistry);
if (!this.interactive) {
Display.getDefault().asyncExec(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
dialog.close();
}
}
});
}
dialog.open();
}
use of org.eclipse.nebula.widgets.nattable.data.convert.IDisplayConverter in project nebula.widgets.nattable by eclipse.
the class EditUtils method isConverterSame.
/**
* Checks if all selected cells have the same {@link IDisplayConverter}
* configured. This is needed for the multi edit feature to determine if a
* multi edit is possible. If the collection of selected cells is
* <code>null</code> or empty, this method will also return
* <code>true</code>.
* <p>
* Let's assume there are two columns, one containing an Integer, the other
* a Date. Both have a TextCellEditor configured, so if only the editor is
* checked, the multi edit dialog would open. On committing a changed value
* an error would occur because of wrong conversion.
* </p>
*
* @param selectedCells
* The collection of selected cells that should be checked.
* @param configRegistry
* The {@link IConfigRegistry} needed to access the configured
* {@link IDisplayConverter}s.
* @return <code>true</code> if all selected cells have the same
* {@link IDisplayConverter} configured, <code>false</code> if at
* least one cell has another {@link IDisplayConverter} configured.
*/
@SuppressWarnings("rawtypes")
public static boolean isConverterSame(Collection<ILayerCell> selectedCells, IConfigRegistry configRegistry) {
if (selectedCells != null) {
Set<Class> converterSet = new HashSet<Class>();
for (ILayerCell selectedCell : selectedCells) {
LabelStack labelStack = selectedCell.getConfigLabels();
IDisplayConverter dataTypeConverter = configRegistry.getConfigAttribute(CellConfigAttributes.DISPLAY_CONVERTER, DisplayMode.EDIT, labelStack.getLabels());
if (dataTypeConverter != null) {
converterSet.add(dataTypeConverter.getClass());
}
if (converterSet.size() > 1)
return false;
}
}
return true;
}
Aggregations