Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Vaadin CSSInject / 6 сообщений из 6, страница 1 из 1
16.08.2016, 12:50
    #39292523
Nixic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Vaadin CSSInject
Использую Vaadin 7, менял раньше цвета ячеек заранее прописывая стиль в scss файл.
пример:
Код: css
1.
2.
3.
4.
5.
.colored-table .v-table-cell-content-lightorange{
        background: #F9B34A;
        color:      black;
        border-bottom: 1px solid #AAAAAA;
    }



таблице указывал:
Код: java
1.
table.addStyleName("colored-table");



и вроде как все нормально, но в цветах-то я ограничен. Прикрутил колорпикер недавно, его цвета записываю в БД и оттуда их естественно можно вместе с данными вытащить.

Попробовал использовать CSSInject, но видимо не до конца понимаю как он работает. Стиль-то он добавляет, но в инспекторе кода в хроме я не вижу чтобы он использовал мой новый стиль, который называется по цвету без решетки в начале, т.е. не #b6ffff, а просто b6ffff. Получается: v-table-cell-content v-table-cell-content-b6ffff
Вот код в котором я пытаюсь это сделать.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
 private void createOfferTableListener() {
        final CSSInject css = new CSSInject(UI.getCurrent());
        offerTable.addStyleName("colored-table");
        offerTable.setCellStyleGenerator(new Table.CellStyleGenerator() {
            @Override
            public String getStyle(Table source, Object itemId, Object propertyId) {
                Offer offer = (Offer) itemId;
                String styleNameAsIsColor = "";
                if (offer.getOfferColor() != null && !"".equalsIgnoreCase(offer.getOfferColor())) {
                    styleNameAsIsColor = offer.getOfferColor().replaceAll("#", "");
                }
                css.setStyles(".colored-table .v-table-cell-content-" + styleNameAsIsColor + " { background: " + offer.getOfferColor() + "; } "
                        + ".colored-table .v-selected .v-table-cell-content-" + styleNameAsIsColor + ", "
                        + ".colored-table .black .v-selected .v-table-cell-content-" + styleNameAsIsColor + "{ background: " + offer.getOfferColor() + "; }");
                String prop = "";
                if (propertyId == null) {
                    prop = "";
                } else {
                    prop = (String) propertyId;
                }
                if (prop.equals("№ пр-я")) {
                    return styleNameAsIsColor;
                }
                return null;
            }
        });


В общем надо чтобы, цвет фона ячейки менялся на тот цвет, который прописан в БД. А туда он попал, когда юзер выбрал цвет пипеткой. Не знаю что пока делать, может кто подскажет...
...
Рейтинг: 0 / 0
16.08.2016, 13:38
    #39292579
no56892
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Vaadin CSSInject
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
grid.getColumn("color").setRenderer(new HtmlRenderer());
grid.getColumn("color").setConverter(new Converter<String, Integer>() {

            @Override
            public Integer convertToModel(String value, Class<? extends Integer> targetType, Locale locale) throws ConversionException {
                return null;
            }

            @Override
            public String convertToPresentation(Integer value, Class<? extends String> targetType, Locale locale) throws ConversionException {
                if(value != null) {
                    String rgbColorCode = String.format("#%06X", (0xFFFFFF & value));
                    return "<div style=\"height: 100%; width: 100%;background-color:" + rgbColorCode + ";\"/>";
                }
                return "";

            }

            @Override
            public Class<Integer> getModelType() {
                return Integer.class;
            }

            @Override
            public Class<String> getPresentationType() {
                return String.class;
            }
        });
...
Рейтинг: 0 / 0
16.08.2016, 14:08
    #39292616
Nixic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Vaadin CSSInject
no56892,

Спасибо, с гридами, я уверен это работает, попробую можно ли то же самое прикрутить к таблице.
...
Рейтинг: 0 / 0
17.08.2016, 11:42
    #39293140
Nixic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Vaadin CSSInject
Нет у таблицы метода getColumn(...), поэтому решение выше, только для гридов подходит.
А меня гриды не устраивают на данный момент своим функционалом.
...
Рейтинг: 0 / 0
17.08.2016, 11:46
    #39293145
Nixic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Vaadin CSSInject
хотяя... можно использовать в качестве ContainerProperty, Label, а лейблу уже прикрутить ContentMode.HTML, тогда можно будет фон у текста подсветить, ну хотя бы так сейчас попробую, должно сработать
...
Рейтинг: 0 / 0
17.08.2016, 11:55
    #39293158
Nixic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Vaadin CSSInject
Во! Так нормально, через Label пойдет.
теперь можно и код повылизывать :)
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Vaadin CSSInject / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]