Search in sources :

Example 1 with CSSPrimitiveValue

use of org.w3c.dom.css.CSSPrimitiveValue in project nebula.widgets.nattable by eclipse.

the class NatTableCSSHandler method applyCSSProperty.

@Override
public boolean applyCSSProperty(Object element, String property, CSSValue value, String pseudo, CSSEngine engine) throws Exception {
    Object control = null;
    if (element instanceof CSSStylableElement) {
        CSSStylableElement elt = (CSSStylableElement) element;
        control = elt.getNativeWidget();
    }
    NatTable natTable = null;
    String label = null;
    String displayMode = NatTableCSSHelper.getDisplayMode(pseudo);
    CSSElementContext context = null;
    CSSElementContext natTableContext = null;
    if (control instanceof NatTable) {
        natTable = (NatTable) control;
    } else if (control instanceof NatTableWrapper) {
        natTable = ((NatTableWrapper) control).getNatTable();
        label = ((NatTableWrapper) control).getLabel();
        natTableContext = engine.getCSSElementContext(natTable);
    }
    if (natTable != null) {
        context = engine.getCSSElementContext(control);
        Boolean resolvePainter = NatTableCSSHelper.resolvePainter(context, natTableContext, displayMode);
        // check property
        if (NatTableCSSConstants.PAINTER_RESOLUTION.equalsIgnoreCase(property)) {
            NatTableCSSHelper.storeContextValue(context, displayMode, NatTableCSSConstants.PAINTER_RESOLUTION, NatTableCSSHelper.getBoolean(value, true));
        } else if (NatTableCSSConstants.PAINTER.equalsIgnoreCase(property)) {
            NatTableCSSHelper.storeContextValue(context, displayMode, NatTableCSSConstants.PAINTER, NatTableCSSHelper.resolvePainterRepresentation(value));
        } else if (NatTableCSSConstants.BACKGROUND_COLOR.equalsIgnoreCase(property)) {
            CSSPropertyBackgroundSWTHandler.INSTANCE.applyCSSPropertyBackgroundColor(element, value, pseudo, engine);
        } else if (NatTableCSSConstants.BACKGROUND_IMAGE.equalsIgnoreCase(property)) {
            CSSPropertyBackgroundSWTHandler.INSTANCE.applyCSSPropertyBackgroundImage(element, value, pseudo, engine);
        } else if (NatTableCSSConstants.CELL_BACKGROUND_COLOR.equalsIgnoreCase(property)) {
            if (value.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE) {
                Color newColor = (Color) engine.convert(value, Color.class, natTable.getDisplay());
                NatTableCSSHelper.applyNatTableStyle(natTable, CellStyleAttributes.BACKGROUND_COLOR, newColor, displayMode, label);
                if (resolvePainter) {
                    NatTableCSSHelper.storeContextValue(context, displayMode, NatTableCSSConstants.CV_BACKGROUND_PAINTER, CellPainterFactory.BACKGROUND_PAINTER_KEY);
                }
            } else if (value.getCssValueType() == CSSValue.CSS_VALUE_LIST) {
                Gradient grad = (Gradient) CSSValueSWTGradientConverterImpl.INSTANCE.convert(value, engine, natTable.getDisplay());
                if (grad != null) {
                    List<?> values = grad.getValues();
                    if (values.size() == 2) {
                        Color background = (Color) engine.convert((CSSPrimitiveValue) values.get(0), Color.class, natTable.getDisplay());
                        NatTableCSSHelper.applyNatTableStyle(natTable, CellStyleAttributes.GRADIENT_BACKGROUND_COLOR, background, displayMode, label);
                        Color foreground = (Color) engine.convert((CSSPrimitiveValue) values.get(1), Color.class, natTable.getDisplay());
                        NatTableCSSHelper.applyNatTableStyle(natTable, CellStyleAttributes.GRADIENT_FOREGROUND_COLOR, foreground, displayMode, label);
                        NatTableCSSHelper.getPainterProperties(context, displayMode).put(NatTableCSSConstants.GRADIENT_BACKGROUND_VERTICAL, grad.getVerticalGradient());
                        if (resolvePainter) {
                            NatTableCSSHelper.storeContextValue(context, displayMode, NatTableCSSConstants.CV_BACKGROUND_PAINTER, CellPainterFactory.GRADIENT_BACKGROUND_PAINTER_KEY);
                        }
                    }
                }
            }
        } else if (NatTableCSSConstants.CELL_BACKGROUND_IMAGE.equalsIgnoreCase(property)) {
            Image image = (Image) engine.convert(value, Image.class, natTable.getDisplay());
            if (image != null) {
                NatTableCSSHelper.getPainterProperties(context, displayMode).put(NatTableCSSConstants.CELL_BACKGROUND_IMAGE, image);
                if (resolvePainter) {
                    NatTableCSSHelper.storeContextValue(context, displayMode, NatTableCSSConstants.CV_BACKGROUND_PAINTER, CellPainterFactory.BACKGROUND_IMAGE_PAINTER_KEY);
                }
            }
        } else if (NatTableCSSConstants.FOREGROUND_COLOR.equalsIgnoreCase(property) && (value.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE)) {
            Color newColor = (Color) engine.convert(value, Color.class, natTable.getDisplay());
            NatTableCSSHelper.applyNatTableStyle(natTable, CellStyleAttributes.FOREGROUND_COLOR, newColor, displayMode, label);
        } else if (NatTableCSSConstants.HORIZONTAL_ALIGNMENT.equalsIgnoreCase(property) && (value.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE)) {
            String stringValue = value.getCssText().toLowerCase();
            HorizontalAlignmentEnum align = HorizontalAlignmentEnum.CENTER;
            if ("left".equals(stringValue) || "lead".equals(stringValue)) {
                align = HorizontalAlignmentEnum.LEFT;
            } else if ("right".equals(stringValue) || "trail".equals(stringValue)) {
                align = HorizontalAlignmentEnum.RIGHT;
            } else if ("center".equals(stringValue)) {
                align = HorizontalAlignmentEnum.CENTER;
            }
            NatTableCSSHelper.applyNatTableStyle(natTable, CellStyleAttributes.HORIZONTAL_ALIGNMENT, align, displayMode, label);
        } else if (NatTableCSSConstants.VERTICAL_ALIGNMENT.equalsIgnoreCase(property) && (value.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE)) {
            String stringValue = value.getCssText().toLowerCase();
            VerticalAlignmentEnum align = VerticalAlignmentEnum.MIDDLE;
            if ("top".equals(stringValue) || "up".equals(stringValue)) {
                align = VerticalAlignmentEnum.TOP;
            } else if ("bottom".equals(stringValue) || "down".equals(stringValue)) {
                align = VerticalAlignmentEnum.BOTTOM;
            } else if ("middle".equals(stringValue)) {
                align = VerticalAlignmentEnum.MIDDLE;
            }
            NatTableCSSHelper.applyNatTableStyle(natTable, CellStyleAttributes.VERTICAL_ALIGNMENT, align, displayMode, label);
        } else if (NatTableCSSConstants.FONT.equalsIgnoreCase(property) && (value.getCssValueType() == CSSValue.CSS_VALUE_LIST)) {
            NatTableCSSHelper.setFontProperties((CSSValueList) value, NatTableCSSHelper.getFontProperties(context, CSS2FontPropertiesHelpers.CSS2FONT_KEY, natTable, displayMode, label));
        } else if (NatTableCSSConstants.FONT_FAMILY.equalsIgnoreCase(property) && (value.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE)) {
            CSS2FontProperties font = NatTableCSSHelper.getFontProperties(context, CSS2FontPropertiesHelpers.CSS2FONT_KEY, natTable, displayMode, label);
            font.setFamily((CSSPrimitiveValue) value);
        } else if (NatTableCSSConstants.FONT_SIZE.equalsIgnoreCase(property) && (value.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE)) {
            CSS2FontProperties font = NatTableCSSHelper.getFontProperties(context, CSS2FontPropertiesHelpers.CSS2FONT_KEY, natTable, displayMode, label);
            font.setSize((CSSPrimitiveValue) value);
        } else if (NatTableCSSConstants.FONT_STYLE.equalsIgnoreCase(property) && (value.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE)) {
            CSS2FontProperties font = NatTableCSSHelper.getFontProperties(context, CSS2FontPropertiesHelpers.CSS2FONT_KEY, natTable, displayMode, label);
            font.setStyle((CSSPrimitiveValue) value);
        } else if (NatTableCSSConstants.FONT_WEIGHT.equalsIgnoreCase(property) && (value.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE)) {
            CSS2FontProperties font = NatTableCSSHelper.getFontProperties(context, CSS2FontPropertiesHelpers.CSS2FONT_KEY, natTable, displayMode, label);
            font.setWeight((CSSPrimitiveValue) value);
        } else if (NatTableCSSConstants.IMAGE.equalsIgnoreCase(property)) {
            Image image = (Image) engine.convert(value, Image.class, natTable.getDisplay());
            NatTableCSSHelper.applyNatTableStyle(natTable, CellStyleAttributes.IMAGE, image, displayMode, label);
            if (resolvePainter) {
                NatTableCSSHelper.storeContextValue(context, displayMode, NatTableCSSConstants.CV_CONTENT_PAINTER, CellPainterFactory.IMAGE_PAINTER_KEY);
            }
        } else if (NatTableCSSConstants.BORDER.equalsIgnoreCase(property) && (value.getCssValueType() == CSSValue.CSS_VALUE_LIST)) {
            CSSValueList valueList = (CSSValueList) value;
            BorderStyle borderStyle = NatTableCSSHelper.getBorderStyle(context, displayMode);
            NatTableCSSHelper.storeBorderStyle(valueList, borderStyle, engine, natTable.getDisplay());
        } else if (NatTableCSSConstants.BORDER_COLOR.equalsIgnoreCase(property) && (value.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE)) {
            BorderStyle borderStyle = NatTableCSSHelper.getBorderStyle(context, displayMode);
            borderStyle.setColor((Color) engine.convert(value, Color.class, natTable.getDisplay()));
        } else if (NatTableCSSConstants.BORDER_STYLE.equalsIgnoreCase(property) && (value.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE)) {
            BorderStyle borderStyle = NatTableCSSHelper.getBorderStyle(context, displayMode);
            CSSPrimitiveValue primitiveValue = (CSSPrimitiveValue) value;
            borderStyle.setLineStyle(LineStyleEnum.valueOf(primitiveValue.getStringValue().toUpperCase()));
        } else if (NatTableCSSConstants.BORDER_WIDTH.equalsIgnoreCase(property) && (value.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE)) {
            BorderStyle borderStyle = NatTableCSSHelper.getBorderStyle(context, displayMode);
            borderStyle.setThickness((int) ((CSSPrimitiveValue) value).getFloatValue(CSSPrimitiveValue.CSS_PT));
        } else if (NatTableCSSConstants.BORDER_MODE.equalsIgnoreCase(property) && (value.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE)) {
            BorderStyle borderStyle = NatTableCSSHelper.getBorderStyle(context, displayMode);
            CSSPrimitiveValue primitiveValue = (CSSPrimitiveValue) value;
            borderStyle.setBorderMode(BorderModeEnum.valueOf(primitiveValue.getStringValue().toUpperCase()));
        } else if (NatTableCSSConstants.PASSWORD_ECHO_CHAR.equalsIgnoreCase(property) && (value.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE)) {
            String stringValue = value.getCssText();
            NatTableCSSHelper.applyNatTableStyle(natTable, CellStyleAttributes.PASSWORD_ECHO_CHAR, stringValue.charAt(0), displayMode, label);
        } else if (NatTableCSSConstants.TEXT_DECORATION.equalsIgnoreCase(property)) {
            if (value.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE) {
                String stringValue = value.getCssText();
                if ("none".equals(stringValue)) {
                    NatTableCSSHelper.applyNatTableStyle(natTable, CellStyleAttributes.TEXT_DECORATION, null, displayMode, label);
                } else if ("underline".equals(stringValue)) {
                    NatTableCSSHelper.applyNatTableStyle(natTable, CellStyleAttributes.TEXT_DECORATION, TextDecorationEnum.UNDERLINE, displayMode, label);
                } else if ("line-through".equals(stringValue)) {
                    NatTableCSSHelper.applyNatTableStyle(natTable, CellStyleAttributes.TEXT_DECORATION, TextDecorationEnum.STRIKETHROUGH, displayMode, label);
                }
            } else if (value.getCssValueType() == CSSValue.CSS_VALUE_LIST) {
                CSSValueList valueList = (CSSValueList) value;
                int length = valueList.getLength();
                boolean strikethrough = false;
                boolean underline = false;
                for (int i = 0; i < length; i++) {
                    CSSValue value2 = valueList.item(i);
                    if (value2.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE) {
                        String stringValue = value2.getCssText();
                        if ("none".equals(stringValue)) {
                            strikethrough = false;
                            underline = false;
                            break;
                        } else if ("underline".equals(stringValue)) {
                            underline = true;
                        } else if ("line-through".equals(stringValue)) {
                            strikethrough = true;
                        }
                    }
                }
                if (!strikethrough && !underline) {
                    NatTableCSSHelper.applyNatTableStyle(natTable, CellStyleAttributes.TEXT_DECORATION, null, displayMode, label);
                } else if (!strikethrough && underline) {
                    NatTableCSSHelper.applyNatTableStyle(natTable, CellStyleAttributes.TEXT_DECORATION, TextDecorationEnum.UNDERLINE, displayMode, label);
                } else if (strikethrough && !underline) {
                    NatTableCSSHelper.applyNatTableStyle(natTable, CellStyleAttributes.TEXT_DECORATION, TextDecorationEnum.STRIKETHROUGH, displayMode, label);
                } else if (strikethrough && underline) {
                    NatTableCSSHelper.applyNatTableStyle(natTable, CellStyleAttributes.TEXT_DECORATION, TextDecorationEnum.UNDERLINE_STRIKETHROUGH, displayMode, label);
                }
            }
        } else if (NatTableCSSConstants.FREEZE_SEPARATOR_COLOR.equalsIgnoreCase(property) && (value.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE)) {
            natTable.getConfigRegistry().registerConfigAttribute(IFreezeConfigAttributes.SEPARATOR_COLOR, (Color) engine.convert(value, Color.class, natTable.getDisplay()), displayMode, label);
        } else if (NatTableCSSConstants.GRID_LINE_COLOR.equalsIgnoreCase(property) && (value.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE)) {
            natTable.getConfigRegistry().registerConfigAttribute(CellConfigAttributes.GRID_LINE_COLOR, (Color) engine.convert(value, Color.class, natTable.getDisplay()), displayMode, label);
        } else if (NatTableCSSConstants.GRID_LINE_WIDTH.equalsIgnoreCase(property) && (value.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE)) {
            natTable.getConfigRegistry().registerConfigAttribute(CellConfigAttributes.GRID_LINE_WIDTH, (int) ((CSSPrimitiveValue) value).getFloatValue(CSSPrimitiveValue.CSS_PT), displayMode, label);
        } else if (NatTableCSSConstants.RENDER_GRID_LINES.equalsIgnoreCase(property) && (value.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE)) {
            natTable.getConfigRegistry().registerConfigAttribute(CellConfigAttributes.RENDER_GRID_LINES, NatTableCSSHelper.getBoolean(value, true), displayMode, label);
        } else if (NatTableCSSConstants.CONVERSION_ERROR_FONT.equalsIgnoreCase(property) && (value.getCssValueType() == CSSValue.CSS_VALUE_LIST)) {
            NatTableCSSHelper.setFontProperties((CSSValueList) value, NatTableCSSHelper.getFontProperties(context, NatTableCSSConstants.CV_CONVERSION_ERROR_FONT_PROPERTIES, natTable, displayMode, label));
        } else if (NatTableCSSConstants.CONVERSION_ERROR_FONT_FAMILY.equalsIgnoreCase(property) && (value.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE)) {
            CSS2FontProperties font = NatTableCSSHelper.getFontProperties(context, NatTableCSSConstants.CV_CONVERSION_ERROR_FONT_PROPERTIES, natTable, displayMode, label);
            font.setFamily((CSSPrimitiveValue) value);
        } else if (NatTableCSSConstants.CONVERSION_ERROR_FONT_SIZE.equalsIgnoreCase(property) && (value.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE)) {
            CSS2FontProperties font = NatTableCSSHelper.getFontProperties(context, NatTableCSSConstants.CV_CONVERSION_ERROR_FONT_PROPERTIES, natTable, displayMode, label);
            font.setSize((CSSPrimitiveValue) value);
        } else if (NatTableCSSConstants.CONVERSION_ERROR_FONT_STYLE.equalsIgnoreCase(property) && (value.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE)) {
            CSS2FontProperties font = NatTableCSSHelper.getFontProperties(context, NatTableCSSConstants.CV_CONVERSION_ERROR_FONT_PROPERTIES, natTable, displayMode, label);
            font.setStyle((CSSPrimitiveValue) value);
        } else if (NatTableCSSConstants.CONVERSION_ERROR_FONT_WEIGHT.equalsIgnoreCase(property) && (value.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE)) {
            CSS2FontProperties font = NatTableCSSHelper.getFontProperties(context, NatTableCSSConstants.CV_CONVERSION_ERROR_FONT_PROPERTIES, natTable, displayMode, label);
            font.setWeight((CSSPrimitiveValue) value);
        } else if (NatTableCSSConstants.CONVERSION_ERROR_BACKGROUND_COLOR.equalsIgnoreCase(property) && (value.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE)) {
            Color newColor = (Color) engine.convert(value, Color.class, natTable.getDisplay());
            NatTableCSSHelper.applyNatTableStyle(natTable, EditConfigAttributes.CONVERSION_ERROR_STYLE, CellStyleAttributes.BACKGROUND_COLOR, newColor, displayMode, label);
        } else if (NatTableCSSConstants.CONVERSION_ERROR_FOREGROUND_COLOR.equalsIgnoreCase(property) && (value.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE)) {
            Color newColor = (Color) engine.convert(value, Color.class, natTable.getDisplay());
            NatTableCSSHelper.applyNatTableStyle(natTable, EditConfigAttributes.CONVERSION_ERROR_STYLE, CellStyleAttributes.FOREGROUND_COLOR, newColor, displayMode, label);
        } else if (NatTableCSSConstants.VALIDATION_ERROR_FONT.equalsIgnoreCase(property) && (value.getCssValueType() == CSSValue.CSS_VALUE_LIST)) {
            NatTableCSSHelper.setFontProperties((CSSValueList) value, NatTableCSSHelper.getFontProperties(context, NatTableCSSConstants.CV_VALIDATION_ERROR_FONT_PROPERTIES, natTable, displayMode, label));
        } else if (NatTableCSSConstants.VALIDATION_ERROR_FONT_FAMILY.equalsIgnoreCase(property) && (value.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE)) {
            CSS2FontProperties font = NatTableCSSHelper.getFontProperties(context, NatTableCSSConstants.CV_VALIDATION_ERROR_FONT_PROPERTIES, natTable, displayMode, label);
            font.setFamily((CSSPrimitiveValue) value);
        } else if (NatTableCSSConstants.VALIDATION_ERROR_FONT_SIZE.equalsIgnoreCase(property) && (value.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE)) {
            CSS2FontProperties font = NatTableCSSHelper.getFontProperties(context, NatTableCSSConstants.CV_VALIDATION_ERROR_FONT_PROPERTIES, natTable, displayMode, label);
            font.setSize((CSSPrimitiveValue) value);
        } else if (NatTableCSSConstants.VALIDATION_ERROR_FONT_STYLE.equalsIgnoreCase(property) && (value.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE)) {
            CSS2FontProperties font = NatTableCSSHelper.getFontProperties(context, NatTableCSSConstants.CV_VALIDATION_ERROR_FONT_PROPERTIES, natTable, displayMode, label);
            font.setStyle((CSSPrimitiveValue) value);
        } else if (NatTableCSSConstants.VALIDATION_ERROR_FONT_WEIGHT.equalsIgnoreCase(property) && (value.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE)) {
            CSS2FontProperties font = NatTableCSSHelper.getFontProperties(context, NatTableCSSConstants.CV_VALIDATION_ERROR_FONT_PROPERTIES, natTable, displayMode, label);
            font.setWeight((CSSPrimitiveValue) value);
        } else if (NatTableCSSConstants.VALIDATION_ERROR_BACKGROUND_COLOR.equalsIgnoreCase(property) && (value.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE)) {
            Color newColor = (Color) engine.convert(value, Color.class, natTable.getDisplay());
            NatTableCSSHelper.applyNatTableStyle(natTable, EditConfigAttributes.VALIDATION_ERROR_STYLE, CellStyleAttributes.BACKGROUND_COLOR, newColor, displayMode, label);
        } else if (NatTableCSSConstants.VALIDATION_ERROR_FOREGROUND_COLOR.equalsIgnoreCase(property) && (value.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE)) {
            Color newColor = (Color) engine.convert(value, Color.class, natTable.getDisplay());
            NatTableCSSHelper.applyNatTableStyle(natTable, EditConfigAttributes.VALIDATION_ERROR_STYLE, CellStyleAttributes.FOREGROUND_COLOR, newColor, displayMode, label);
        } else if (NatTableCSSConstants.WORD_WRAP.equalsIgnoreCase(property) && (value.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE)) {
            NatTableCSSHelper.getPainterProperties(context, displayMode).put(NatTableCSSConstants.WORD_WRAP, NatTableCSSHelper.getBoolean(value, false));
        } else if (NatTableCSSConstants.TEXT_WRAP.equalsIgnoreCase(property) && (value.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE)) {
            NatTableCSSHelper.getPainterProperties(context, displayMode).put(NatTableCSSConstants.TEXT_WRAP, NatTableCSSHelper.getBoolean(value, false));
        } else if (NatTableCSSConstants.TEXT_TRIM.equalsIgnoreCase(property) && (value.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE)) {
            NatTableCSSHelper.getPainterProperties(context, displayMode).put(NatTableCSSConstants.TEXT_TRIM, NatTableCSSHelper.getBoolean(value, true));
        } else if (NatTableCSSConstants.TEXT_DIRECTION.equalsIgnoreCase(property) && (value.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE)) {
            NatTableCSSHelper.getPainterProperties(context, displayMode).put(NatTableCSSConstants.TEXT_DIRECTION, value.getCssText());
        } else if (NatTableCSSConstants.LINE_SPACING.equalsIgnoreCase(property) && (value.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE)) {
            NatTableCSSHelper.getPainterProperties(context, displayMode).put(NatTableCSSConstants.LINE_SPACING, (int) ((CSSPrimitiveValue) value).getFloatValue(CSSPrimitiveValue.CSS_PT));
        } else if (NatTableCSSConstants.COLUMN_WIDTH.equalsIgnoreCase(property) && (value.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE)) {
            CSSPrimitiveValue primitiveValue = (CSSPrimitiveValue) value;
            short type = primitiveValue.getPrimitiveType();
            switch(type) {
                case CSSPrimitiveValue.CSS_IDENT:
                    if ("auto".equalsIgnoreCase(value.getCssText())) {
                        NatTableCSSHelper.getPainterProperties(context, displayMode).put(NatTableCSSConstants.CALCULATE_CELL_WIDTH, true);
                    } else if ("percentage".equalsIgnoreCase(value.getCssText())) {
                        // set column percentage sizing
                        natTable.doCommand(new ColumnSizeConfigurationCommand(label, null, true));
                    }
                    break;
                case CSSPrimitiveValue.CSS_PERCENTAGE:
                    // set column percentage sizing
                    int percentage = (int) ((CSSPrimitiveValue) value).getFloatValue(CSSPrimitiveValue.CSS_PERCENTAGE);
                    natTable.doCommand(new ColumnSizeConfigurationCommand(label, percentage, true));
                    break;
                case CSSPrimitiveValue.CSS_PT:
                case CSSPrimitiveValue.CSS_NUMBER:
                case CSSPrimitiveValue.CSS_PX:
                    // set column width by label
                    int width = (int) ((CSSPrimitiveValue) value).getFloatValue(CSSPrimitiveValue.CSS_PT);
                    natTable.doCommand(new ColumnSizeConfigurationCommand(label, width, false));
                    break;
            }
        } else if (NatTableCSSConstants.ROW_HEIGHT.equalsIgnoreCase(property) && (value.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE)) {
            CSSPrimitiveValue primitiveValue = (CSSPrimitiveValue) value;
            short type = primitiveValue.getPrimitiveType();
            switch(type) {
                case CSSPrimitiveValue.CSS_IDENT:
                    if ("auto".equalsIgnoreCase(value.getCssText())) {
                        NatTableCSSHelper.getPainterProperties(context, displayMode).put(NatTableCSSConstants.CALCULATE_CELL_HEIGHT, true);
                    } else if ("percentage".equalsIgnoreCase(value.getCssText())) {
                        // set column percentage sizing
                        natTable.doCommand(new RowSizeConfigurationCommand(label, null, true));
                    }
                    break;
                case CSSPrimitiveValue.CSS_PERCENTAGE:
                    // set column percentage sizing
                    int percentage = (int) ((CSSPrimitiveValue) value).getFloatValue(CSSPrimitiveValue.CSS_PERCENTAGE);
                    natTable.doCommand(new RowSizeConfigurationCommand(label, percentage, true));
                    break;
                case CSSPrimitiveValue.CSS_PT:
                case CSSPrimitiveValue.CSS_NUMBER:
                case CSSPrimitiveValue.CSS_PX:
                    // set column width by label
                    int width = (int) ((CSSPrimitiveValue) value).getFloatValue(CSSPrimitiveValue.CSS_PT);
                    natTable.doCommand(new RowSizeConfigurationCommand(label, width, false));
                    break;
            }
        } else if (NatTableCSSConstants.CONVERTER.equalsIgnoreCase(property)) {
            if (value.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE) {
                if (NatTableCSSHelper.isConverterString(value.getCssText())) {
                    natTable.getConfigRegistry().registerConfigAttribute(CellConfigAttributes.DISPLAY_CONVERTER, NatTableCSSHelper.getDisplayConverter(value.getCssText(), true, null, null, null), displayMode, label);
                }
            } else if (value.getCssValueType() == CSSValue.CSS_VALUE_LIST) {
                String converterKey = null;
                boolean format = true;
                Integer minFractionDigits = null;
                Integer maxFractionDigits = null;
                String pattern = null;
                CSSValueList valueList = (CSSValueList) value;
                int length = valueList.getLength();
                for (int i = 0; i < length; i++) {
                    CSSValue value2 = valueList.item(i);
                    if (value2.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE) {
                        CSSPrimitiveValue primitiveValue = (CSSPrimitiveValue) value2;
                        short type = primitiveValue.getPrimitiveType();
                        switch(type) {
                            case CSSPrimitiveValue.CSS_IDENT:
                                if (NatTableCSSHelper.isConverterString(primitiveValue.getCssText())) {
                                    converterKey = primitiveValue.getCssText();
                                } else if ("true".equals(primitiveValue.getCssText()) || "false".equals(primitiveValue.getCssText())) {
                                    format = NatTableCSSHelper.getBoolean(primitiveValue, true);
                                }
                                break;
                            case CSSPrimitiveValue.CSS_STRING:
                                pattern = primitiveValue.getCssText();
                                break;
                            case CSSPrimitiveValue.CSS_PT:
                            case CSSPrimitiveValue.CSS_NUMBER:
                            case CSSPrimitiveValue.CSS_PX:
                                if (minFractionDigits == null) {
                                    minFractionDigits = (int) primitiveValue.getFloatValue(CSSPrimitiveValue.CSS_PT);
                                } else {
                                    maxFractionDigits = (int) primitiveValue.getFloatValue(CSSPrimitiveValue.CSS_PT);
                                }
                                break;
                        }
                    }
                }
                if (converterKey != null) {
                    natTable.getConfigRegistry().registerConfigAttribute(CellConfigAttributes.DISPLAY_CONVERTER, NatTableCSSHelper.getDisplayConverter(converterKey, format, minFractionDigits, maxFractionDigits, pattern), displayMode, label);
                }
            }
        } else if (NatTableCSSConstants.PADDING.equalsIgnoreCase(property)) {
            if (value.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE) {
                NatTableCSSHelper.storePadding(NatTableCSSConstants.PADDING_TOP, value, context, displayMode);
                NatTableCSSHelper.storePadding(NatTableCSSConstants.PADDING_RIGHT, value, context, displayMode);
                NatTableCSSHelper.storePadding(NatTableCSSConstants.PADDING_BOTTOM, value, context, displayMode);
                NatTableCSSHelper.storePadding(NatTableCSSConstants.PADDING_LEFT, value, context, displayMode);
            } else if (value.getCssValueType() == CSSValue.CSS_VALUE_LIST) {
                CSSValueList valueList = (CSSValueList) value;
                int length = valueList.getLength();
                if (length == 4) {
                    NatTableCSSHelper.storePadding(NatTableCSSConstants.PADDING_TOP, valueList.item(0), context, displayMode);
                    NatTableCSSHelper.storePadding(NatTableCSSConstants.PADDING_RIGHT, valueList.item(1), context, displayMode);
                    NatTableCSSHelper.storePadding(NatTableCSSConstants.PADDING_BOTTOM, valueList.item(2), context, displayMode);
                    NatTableCSSHelper.storePadding(NatTableCSSConstants.PADDING_LEFT, valueList.item(3), context, displayMode);
                } else if (length == 3) {
                    NatTableCSSHelper.storePadding(NatTableCSSConstants.PADDING_TOP, valueList.item(0), context, displayMode);
                    NatTableCSSHelper.storePadding(NatTableCSSConstants.PADDING_RIGHT, valueList.item(1), context, displayMode);
                    NatTableCSSHelper.storePadding(NatTableCSSConstants.PADDING_BOTTOM, valueList.item(2), context, displayMode);
                    NatTableCSSHelper.storePadding(NatTableCSSConstants.PADDING_LEFT, valueList.item(1), context, displayMode);
                } else if (length == 2) {
                    NatTableCSSHelper.storePadding(NatTableCSSConstants.PADDING_TOP, valueList.item(0), context, displayMode);
                    NatTableCSSHelper.storePadding(NatTableCSSConstants.PADDING_RIGHT, valueList.item(1), context, displayMode);
                    NatTableCSSHelper.storePadding(NatTableCSSConstants.PADDING_BOTTOM, valueList.item(0), context, displayMode);
                    NatTableCSSHelper.storePadding(NatTableCSSConstants.PADDING_LEFT, valueList.item(1), context, displayMode);
                }
            }
        } else if (NatTableCSSConstants.PADDING_TOP.equalsIgnoreCase(property)) {
            NatTableCSSHelper.storePadding(NatTableCSSConstants.PADDING_TOP, value, context, displayMode);
        } else if (NatTableCSSConstants.PADDING_RIGHT.equalsIgnoreCase(property)) {
            NatTableCSSHelper.storePadding(NatTableCSSConstants.PADDING_RIGHT, value, context, displayMode);
        } else if (NatTableCSSConstants.PADDING_BOTTOM.equalsIgnoreCase(property)) {
            NatTableCSSHelper.storePadding(NatTableCSSConstants.PADDING_BOTTOM, value, context, displayMode);
        } else if (NatTableCSSConstants.PADDING_LEFT.equalsIgnoreCase(property)) {
            NatTableCSSHelper.storePadding(NatTableCSSConstants.PADDING_LEFT, value, context, displayMode);
        } else if (NatTableCSSConstants.TABLE_BORDER_COLOR.equals(property) && value.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE) {
            // remove any prior configured NatTableBorderOverlayPainter
            for (Iterator<IOverlayPainter> it = natTable.getOverlayPainters().iterator(); it.hasNext(); ) {
                IOverlayPainter painter = it.next();
                if (painter instanceof NatTableBorderOverlayPainter) {
                    it.remove();
                }
            }
            // add the new NatTableBorderOverlayPainter
            if ("auto".equalsIgnoreCase(value.getCssText())) {
                natTable.addOverlayPainter(new NatTableBorderOverlayPainter(true, natTable.getConfigRegistry()));
            } else {
                Color newColor = (Color) engine.convert(value, Color.class, natTable.getDisplay());
                natTable.addOverlayPainter(new NatTableBorderOverlayPainter(newColor, true));
            }
        } else if (NatTableCSSConstants.FILL_HANDLE_BORDER.equalsIgnoreCase(property) && (value.getCssValueType() == CSSValue.CSS_VALUE_LIST)) {
            CSSValueList valueList = (CSSValueList) value;
            BorderStyle borderStyle = new BorderStyle();
            NatTableCSSHelper.storeBorderStyle(valueList, borderStyle, engine, natTable.getDisplay());
            natTable.getConfigRegistry().registerConfigAttribute(FillHandleConfigAttributes.FILL_HANDLE_BORDER_STYLE, borderStyle);
        } else if (NatTableCSSConstants.FILL_HANDLE_COLOR.equalsIgnoreCase(property) && (value.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE)) {
            natTable.getConfigRegistry().registerConfigAttribute(FillHandleConfigAttributes.FILL_HANDLE_COLOR, (Color) engine.convert(value, Color.class, natTable.getDisplay()));
        } else if (NatTableCSSConstants.FILL_REGION_BORDER.equalsIgnoreCase(property) && (value.getCssValueType() == CSSValue.CSS_VALUE_LIST)) {
            CSSValueList valueList = (CSSValueList) value;
            BorderStyle borderStyle = new BorderStyle();
            NatTableCSSHelper.storeBorderStyle(valueList, borderStyle, engine, natTable.getDisplay());
            natTable.getConfigRegistry().registerConfigAttribute(FillHandleConfigAttributes.FILL_HANDLE_REGION_BORDER_STYLE, borderStyle);
        } else if (NatTableCSSConstants.DECORATION.equalsIgnoreCase(property) && (value.getCssValueType() == CSSValue.CSS_VALUE_LIST)) {
            CSSValueList valueList = (CSSValueList) value;
            int length = valueList.getLength();
            for (int i = 0; i < length; i++) {
                CSSValue value2 = valueList.item(i);
                if (value2.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE) {
                    CSSPrimitiveValue primitiveValue = (CSSPrimitiveValue) value2;
                    short type = primitiveValue.getPrimitiveType();
                    switch(type) {
                        case CSSPrimitiveValue.CSS_IDENT:
                            if ("true".equalsIgnoreCase(value2.getCssText()) || "false".equalsIgnoreCase(value2.getCssText())) {
                                NatTableCSSHelper.getPainterProperties(context, displayMode).put(NatTableCSSConstants.PAINT_DECORATION_DEPENDENT, NatTableCSSHelper.getBoolean(value2, true));
                            } else {
                                CellEdgeEnum edge = NatTableCSSHelper.getCellEdgeEnum(value2.getCssText());
                                NatTableCSSHelper.getPainterProperties(context, displayMode).put(NatTableCSSConstants.DECORATOR_EDGE, edge);
                            }
                            break;
                        case CSSPrimitiveValue.CSS_URI:
                            Image image = (Image) engine.convert(value2, Image.class, natTable.getDisplay());
                            if (image != null) {
                                NatTableCSSHelper.getPainterProperties(context, displayMode).put(NatTableCSSConstants.DECORATOR_IMAGE, image);
                            }
                            break;
                        case CSSPrimitiveValue.CSS_PT:
                        case CSSPrimitiveValue.CSS_NUMBER:
                        case CSSPrimitiveValue.CSS_PX:
                            int spacing = (int) ((CSSPrimitiveValue) value2).getFloatValue(CSSPrimitiveValue.CSS_PT);
                            NatTableCSSHelper.getPainterProperties(context, displayMode).put(NatTableCSSConstants.DECORATOR_SPACING, spacing);
                            break;
                    }
                }
            }
            List<String> decoratorKeys = NatTableCSSHelper.getDecoratorPainter(context, displayMode);
            if (!decoratorKeys.contains(CellPainterFactory.DECORATOR_KEY)) {
                decoratorKeys.add(CellPainterFactory.DECORATOR_KEY);
            }
        } else if (NatTableCSSConstants.INVERT_ICONS.equalsIgnoreCase(property) && (value.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE)) {
            NatTableCSSHelper.getPainterProperties(context, displayMode).put(NatTableCSSConstants.INVERT_ICONS, NatTableCSSHelper.getBoolean(value, false));
        } else if (NatTableCSSConstants.PERCENTAGE_DECORATOR_COLORS.equalsIgnoreCase(property)) {
            if (value.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE) {
                Color newColor = (Color) engine.convert(value, Color.class, natTable.getDisplay());
                NatTableCSSHelper.applyNatTableStyle(natTable, PercentageBarDecorator.PERCENTAGE_BAR_COMPLETE_REGION_START_COLOR, newColor, displayMode, label);
            } else if (value.getCssValueType() == CSSValue.CSS_VALUE_LIST) {
                CSSValueList valueList = (CSSValueList) value;
                int length = valueList.getLength();
                for (int i = 0; i < length; i++) {
                    CSSValue value2 = valueList.item(i);
                    if (value2.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE) {
                        Color newColor = (Color) engine.convert(value2, Color.class, natTable.getDisplay());
                        ConfigAttribute<Color> percentageConfig = null;
                        switch(i) {
                            case 0:
                                percentageConfig = PercentageBarDecorator.PERCENTAGE_BAR_COMPLETE_REGION_START_COLOR;
                                break;
                            case 1:
                                percentageConfig = PercentageBarDecorator.PERCENTAGE_BAR_COMPLETE_REGION_END_COLOR;
                                break;
                            case 2:
                                percentageConfig = PercentageBarDecorator.PERCENTAGE_BAR_INCOMPLETE_REGION_COLOR;
                                break;
                        }
                        if (percentageConfig != null) {
                            NatTableCSSHelper.applyNatTableStyle(natTable, percentageConfig, newColor, displayMode, label);
                        }
                    }
                }
            }
        } else if (NatTableCSSConstants.TREE_STRUCTURE_PAINTER.equalsIgnoreCase(property)) {
            List<String> painterValues = NatTableCSSHelper.resolvePainterRepresentation(value);
            Map<String, Object> painterProperties = NatTableCSSHelper.getPainterPropertiesInherited(context, natTableContext, displayMode);
            // painter
            if (CellPainterFactory.getInstance().isContentPainterKey(painterValues.get(painterValues.size() - 1))) {
                painterValues.remove(painterValues.size() - 1);
            }
            // add none to the end to ensure that the content painter is
            // resolved dynamically by the TreeLayer
            painterValues.add(CellPainterFactory.NONE);
            ICellPainter painter = CellPainterFactory.getInstance().getCellPainter(painterValues, painterProperties);
            if (painter != null) {
                natTable.getConfigRegistry().registerConfigAttribute(TreeConfigAttributes.TREE_STRUCTURE_PAINTER, painter, displayMode);
            }
        }
        return true;
    }
    return false;
}
Also used : CSS2FontProperties(org.eclipse.e4.ui.css.core.dom.properties.css2.CSS2FontProperties) Image(org.eclipse.swt.graphics.Image) CSSStylableElement(org.eclipse.e4.ui.css.core.dom.CSSStylableElement) ICellPainter(org.eclipse.nebula.widgets.nattable.painter.cell.ICellPainter) CSSValue(org.w3c.dom.css.CSSValue) CSSElementContext(org.eclipse.e4.ui.css.core.engine.CSSElementContext) Iterator(java.util.Iterator) NatTable(org.eclipse.nebula.widgets.nattable.NatTable) CSSValueList(org.w3c.dom.css.CSSValueList) List(java.util.List) NatTableBorderOverlayPainter(org.eclipse.nebula.widgets.nattable.painter.NatTableBorderOverlayPainter) Gradient(org.eclipse.e4.ui.css.core.dom.properties.Gradient) ColumnSizeConfigurationCommand(org.eclipse.nebula.widgets.nattable.resize.command.ColumnSizeConfigurationCommand) IOverlayPainter(org.eclipse.nebula.widgets.nattable.painter.IOverlayPainter) BorderStyle(org.eclipse.nebula.widgets.nattable.style.BorderStyle) Color(org.eclipse.swt.graphics.Color) CellEdgeEnum(org.eclipse.nebula.widgets.nattable.ui.util.CellEdgeEnum) CSSPrimitiveValue(org.w3c.dom.css.CSSPrimitiveValue) RowSizeConfigurationCommand(org.eclipse.nebula.widgets.nattable.resize.command.RowSizeConfigurationCommand) VerticalAlignmentEnum(org.eclipse.nebula.widgets.nattable.style.VerticalAlignmentEnum) HorizontalAlignmentEnum(org.eclipse.nebula.widgets.nattable.style.HorizontalAlignmentEnum) CSSValueList(org.w3c.dom.css.CSSValueList)

Example 2 with CSSPrimitiveValue

use of org.w3c.dom.css.CSSPrimitiveValue in project webtools.sourceediting by eclipse.

the class CSSFontFaceRuleTest method testInsertRule.

public void testInsertRule() {
    final String RULE = "@font-face { font-family: \"Swiss 721\"; src: url(swiss721.pfr); /* The expanded Swiss 721 */ font-stretch: expanded; }";
    CSSStyleSheet sheet = getStyleSheet();
    assertEquals(0, sheet.insertRule(RULE, 0));
    CSSRuleList ruleList = sheet.getCssRules();
    CSSRule rule = ruleList.item(0);
    assertTrue(rule instanceof CSSFontFaceRule);
    CSSStyleDeclaration declaration = ((CSSFontFaceRule) rule).getStyle();
    assertEquals(3, declaration.getLength());
    CSSValue value;
    CSSPrimitiveValue primitiveValue;
    value = declaration.getPropertyCSSValue("font-family");
    assertTrue(value instanceof CSSPrimitiveValue);
    primitiveValue = (CSSPrimitiveValue) value;
    assertEquals(CSSPrimitiveValue.CSS_STRING, primitiveValue.getPrimitiveType());
    assertEquals("Swiss 721", primitiveValue.getStringValue());
    value = declaration.getPropertyCSSValue("src");
    assertTrue(value instanceof CSSPrimitiveValue);
    primitiveValue = (CSSPrimitiveValue) value;
    assertEquals(CSSPrimitiveValue.CSS_URI, primitiveValue.getPrimitiveType());
    assertEquals("swiss721.pfr", primitiveValue.getStringValue());
    value = declaration.getPropertyCSSValue("font-stretch");
    assertTrue(value instanceof CSSPrimitiveValue);
    primitiveValue = (CSSPrimitiveValue) value;
    assertEquals(CSSPrimitiveValue.CSS_IDENT, primitiveValue.getPrimitiveType());
    assertEquals("expanded", primitiveValue.getStringValue());
}
Also used : CSSValue(org.w3c.dom.css.CSSValue) CSSRule(org.w3c.dom.css.CSSRule) CSSStyleSheet(org.w3c.dom.css.CSSStyleSheet) CSSFontFaceRule(org.w3c.dom.css.CSSFontFaceRule) CSSPrimitiveValue(org.w3c.dom.css.CSSPrimitiveValue) ICSSPrimitiveValue(org.eclipse.wst.css.core.internal.provisional.document.ICSSPrimitiveValue) CSSStyleDeclaration(org.w3c.dom.css.CSSStyleDeclaration) CSSRuleList(org.w3c.dom.css.CSSRuleList)

Example 3 with CSSPrimitiveValue

use of org.w3c.dom.css.CSSPrimitiveValue in project webtools.sourceediting by eclipse.

the class AbstractModelTest method checkPrimitiveCounter.

/* for counter */
protected void checkPrimitiveCounter(CSSValue actual, String identifier, String listStyle, String separator) {
    assertTrue(actual instanceof CSSPrimitiveValue);
    assertEquals(CSSPrimitiveValue.CSS_COUNTER, ((CSSPrimitiveValue) actual).getPrimitiveType());
    Counter counter = ((CSSPrimitiveValue) actual).getCounterValue();
    assertEquals(identifier, counter.getIdentifier());
    assertEquals(listStyle, counter.getListStyle());
    assertEquals(separator, counter.getSeparator());
}
Also used : Counter(org.w3c.dom.css.Counter) CSSPrimitiveValue(org.w3c.dom.css.CSSPrimitiveValue)

Example 4 with CSSPrimitiveValue

use of org.w3c.dom.css.CSSPrimitiveValue in project nebula.widgets.nattable by eclipse.

the class NatTableCSSHelper method storePadding.

/**
 * Convert and store the padding value for the given key in the painter
 * properties map.
 *
 * @param paddingKey
 *            The key of the padding property.
 * @param value
 *            The {@link CSSValue} of the padding that should be converted
 *            and stored.
 * @param context
 *            The {@link CSSElementContext} to search for the configuration
 *            value.
 * @param displayMode
 *            The target {@link DisplayMode} to check for the value.
 */
public static void storePadding(String paddingKey, CSSValue value, CSSElementContext context, String displayMode) {
    if (value.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE) {
        CSSPrimitiveValue primitiveValue = (CSSPrimitiveValue) value;
        short type = primitiveValue.getPrimitiveType();
        if (type == CSSPrimitiveValue.CSS_PT || type == CSSPrimitiveValue.CSS_NUMBER || type == CSSPrimitiveValue.CSS_PX) {
            int padding = (int) primitiveValue.getFloatValue(CSSPrimitiveValue.CSS_PT);
            getPainterProperties(context, displayMode).put(paddingKey, padding);
        }
    }
}
Also used : CSSPrimitiveValue(org.w3c.dom.css.CSSPrimitiveValue)

Example 5 with CSSPrimitiveValue

use of org.w3c.dom.css.CSSPrimitiveValue in project nebula.widgets.nattable by eclipse.

the class NatTableCSSHelper method storeBorderStyle.

/**
 * Convert and store the values of the given {@link CSSValueList} to the
 * given {@link BorderStyle}.
 *
 * @param valueList
 *            The {@link CSSValueList} with the values to convert.
 * @param borderStyle
 *            The {@link BorderStyle} to store the converted values to.
 * @param engine
 *            The {@link CSSEngine} needed for conversion.
 * @param display
 *            The display needed for color conversion.
 * @throws Exception
 *             if the value conversion fails
 */
public static void storeBorderStyle(CSSValueList valueList, BorderStyle borderStyle, CSSEngine engine, Display display) throws Exception {
    int length = valueList.getLength();
    for (int i = 0; i < length; i++) {
        CSSValue value2 = valueList.item(i);
        if (value2.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE) {
            CSSPrimitiveValue primitiveValue = (CSSPrimitiveValue) value2;
            short type = primitiveValue.getPrimitiveType();
            switch(type) {
                case CSSPrimitiveValue.CSS_IDENT:
                    if (CSS2ColorHelper.isColorName(primitiveValue.getStringValue())) {
                        borderStyle.setColor((Color) engine.convert(value2, Color.class, display));
                    } else if (isLineStyle(primitiveValue.getStringValue().toUpperCase())) {
                        borderStyle.setLineStyle(LineStyleEnum.valueOf(primitiveValue.getStringValue().toUpperCase()));
                    } else {
                        borderStyle.setBorderMode(BorderModeEnum.valueOf(primitiveValue.getStringValue().toUpperCase()));
                    }
                    break;
                case CSSPrimitiveValue.CSS_RGBCOLOR:
                    borderStyle.setColor((Color) engine.convert(value2, Color.class, display));
                    break;
                case CSSPrimitiveValue.CSS_PT:
                case CSSPrimitiveValue.CSS_NUMBER:
                case CSSPrimitiveValue.CSS_PX:
                    borderStyle.setThickness((int) ((CSSPrimitiveValue) value2).getFloatValue(CSSPrimitiveValue.CSS_PT));
                    break;
            }
        }
    }
}
Also used : CSSValue(org.w3c.dom.css.CSSValue) CSSPrimitiveValue(org.w3c.dom.css.CSSPrimitiveValue)

Aggregations

CSSPrimitiveValue (org.w3c.dom.css.CSSPrimitiveValue)7 CSSValue (org.w3c.dom.css.CSSValue)3 Iterator (java.util.Iterator)1 List (java.util.List)1 CSSStylableElement (org.eclipse.e4.ui.css.core.dom.CSSStylableElement)1 Gradient (org.eclipse.e4.ui.css.core.dom.properties.Gradient)1 CSS2FontProperties (org.eclipse.e4.ui.css.core.dom.properties.css2.CSS2FontProperties)1 CSSElementContext (org.eclipse.e4.ui.css.core.engine.CSSElementContext)1 NatTable (org.eclipse.nebula.widgets.nattable.NatTable)1 IOverlayPainter (org.eclipse.nebula.widgets.nattable.painter.IOverlayPainter)1 NatTableBorderOverlayPainter (org.eclipse.nebula.widgets.nattable.painter.NatTableBorderOverlayPainter)1 ICellPainter (org.eclipse.nebula.widgets.nattable.painter.cell.ICellPainter)1 ColumnSizeConfigurationCommand (org.eclipse.nebula.widgets.nattable.resize.command.ColumnSizeConfigurationCommand)1 RowSizeConfigurationCommand (org.eclipse.nebula.widgets.nattable.resize.command.RowSizeConfigurationCommand)1 BorderStyle (org.eclipse.nebula.widgets.nattable.style.BorderStyle)1 HorizontalAlignmentEnum (org.eclipse.nebula.widgets.nattable.style.HorizontalAlignmentEnum)1 VerticalAlignmentEnum (org.eclipse.nebula.widgets.nattable.style.VerticalAlignmentEnum)1 CellEdgeEnum (org.eclipse.nebula.widgets.nattable.ui.util.CellEdgeEnum)1 Color (org.eclipse.swt.graphics.Color)1 Image (org.eclipse.swt.graphics.Image)1