package ru.omnicomm.pegasus.gadgets.movementsummaryreportgadget.client.ui.optionspanel;
import com.allen_sauer.gwt.log.client.Log;
import com.extjs.gxt.ui.client.event.DNDEvent;
import com.google.gwt.event.dom.client.ClickEvent;
import com.extjs.gxt.ui.client.data.BaseModel;
import com.extjs.gxt.ui.client.dnd.ListViewDragSource;
import com.extjs.gxt.ui.client.dnd.ListViewDropTarget;
import com.extjs.gxt.ui.client.store.ListStore;
import com.extjs.gxt.ui.client.dnd.DND.Feedback;
import com.extjs.gxt.ui.client.widget.LayoutContainer;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.dom.client.InputElement;
import com.google.gwt.dom.client.NodeList;
import java.util.LinkedList;
import java.util.Map;
import java.util.TreeMap;
import java.util.ArrayList;
import java.util.List;
import ru.omnicomm.pegasus.gadgets.ui.optionsPanel.client.OptionsPanel;
import ru.omnicomm.pegasus.gadgets.movementsummaryreportgadget.client.constants.Constants;
import ru.omnicomm.pegasus.gadgets.movementsummaryreportgadget.client.ServiceLocator;
import ru.omnicomm.pegasus.gadgets.movementsummaryreportgadget.client.ui.reporttable.ReportTable;
import ru.omnicomm.pegasus.gadgets.movementsummaryreportgadget.client.entity.response.SettingsParams;
import com.extjs.gxt.ui.client.core.XTemplate;
import com.extjs.gxt.ui.client.data.ModelData;
import com.extjs.gxt.ui.client.event.Events;
import com.extjs.gxt.ui.client.event.ListViewEvent;
import com.extjs.gxt.ui.client.event.Listener;
import com.extjs.gxt.ui.client.widget.ListView;
import com.google.gwt.user.client.Element;
import com.google.gwt.user.client.Window;
import ru.omnicomm.pegasus.gadgets.movementsummaryreportgadget.client.ui.TimePanelWrapper;
/**
* Панель настроек колонок таблицы. Встраивается в {@link OptionsPanel}.
*
* @author Pomitova Ekaterina <ekaterina.pomitova@vistar.su>
*/
public final class SettingsPanel extends LayoutContainer {
private final Constants constants = (Constants) GWT.create(Constants.class);
/** Настройки: колонки таблицы. */
private TableColumnOptions tcOptions;
/** Панель с настройками. */
private OptionsPanel optionsPanel = null;
/** Флаг, показывающий применены ли стили к ListBox. */
private boolean applyStyleToList = false;
/***/
private SettingsParams settingsParams;
//
private final static String CSS_CLASS_LABEL = "omni-settings-label";
private final static String CSS_CLASS_BOX = "omni-settings-box";
private final static String CSS_CLASS_COLUMN_BOX = "omni-settings-column-list-box";
/** Карта соответствий назаний заголовка колонок таблицы со списком колонок в настроках. */
public final Map<String, String> columnsName = new TreeMap<String, String>() {
{
put(constants.numRow(), constants.settingsNumber());
put(constants.garageNumber(), constants.settingsGarageNumber());
put(constants.stateNumber(), constants.settingsStateNumber());
put(constants.driver(), constants.settingsDriver());
put(constants.run(), constants.settingsRun());
put(constants.averageSpeed(), constants.settingsAverageSpeed());
put(constants.maximumSpeed(), constants.settingsMaximumSpeed());
put(constants.movementTime(), constants.settingsMovementTime());
put(constants.downTime(), constants.settingsDownTime());
put(constants.absenceDate(), constants.settingsAbsenceDate());
}
};
public SettingsPanel() {
super();
// registrJSNI();
tcOptions = new TableColumnOptions();
optionsPanel = new OptionsPanel(ServiceLocator.getResources(), constants.settingsPanel(), tcOptions);
// кнопка "Сохранить"
Button btnSave = optionsPanel.getSaveButton();
btnSave.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
settingsParams = getSettingsParams();
// прменение настроек к гаджету
applySettings(settingsParams);
// отправка запроса с настройками
SettingsParamsHandler.sendSettingsParams(settingsParams);
// скрытие паенели
optionsPanel.hideSettingsPanel();
}
});
btnSave.setText(constants.save());
// кнопака "Отмена" (в настройках)
Button btnCancel = optionsPanel.getCancelButton();
btnCancel.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
tcOptions.checked(ServiceLocator.getReportTable().getVisibleColumns(), tcOptions.getColumnModels());
optionsPanel.hideSettingsPanel();
applySettings(settingsParams);
}
});
btnCancel.setText(constants.cansel());
installRepaint(this);
setOptionsPanelLocale();
}
public OptionsPanel getOptionsPanel() {
return optionsPanel;
}
private SettingsParams getSettingsParams() {
// видимые колонки таблицы
List<String> visibleColumnsId = new ArrayList<String>();
for (ModelData elem : tcOptions.columnView.getStore().getModels()) {
if (tcOptions.columnView.getChecked().contains(elem)) {
visibleColumnsId.add((String) elem.get("columnId"));
}
}
// отображаение панели с фильтрами
boolean criteriaShow = (optionsPanel.isShowFilterPanel());
// формат файла для конвертации
String fileFormat = optionsPanel.getFormat();
// e-mail
String email = optionsPanel.getEmail();
// период по умолчанию
int period = optionsPanel.getPeriod();
// единица времени
int periodUnitIndx = optionsPanel.getPeriodTypeUnitIndx();
// значение единицы времени
int periodUnitValue = optionsPanel.getPeriodValueUnitIndx();
// настройки
SettingsParams curSettingsParams = new SettingsParams(criteriaShow,
fileFormat, email, visibleColumnsId, period, periodUnitIndx,
periodUnitValue);
return curSettingsParams;
}
/**
* Применет настройки к гаджету.
*
* @param settingsParams Параметры настроек {@link SettingsParams}.
*/
public void applySettings(SettingsParams settingsParams) {
this.settingsParams = settingsParams;
Log.debug(settingsParams.toString());
List<String> allColumns = new ArrayList<String>();
List<String> visibleColumns = new ArrayList<String>();
// список всех колонок
List<ColumnModelData> listModel = tcOptions.getColumnModels();
// Если нет данных для колонок, то устанавливаем значение по умолчанию (указываем все колонки)
if (settingsParams.getVisibleColumns().isEmpty()) {
for (ModelData elem : listModel) {
String column = (String) elem.get("columnId");
visibleColumns.add(column);
}
allColumns = visibleColumns;
} else {
// колонки, которые не должны отображаться
List<String> invisibleColumns = new ArrayList<String>();
for (ModelData elem : listModel) {
if (elem instanceof ColumnModelData) {
String column = (String) elem.get("columnId");
if (!settingsParams.getVisibleColumns().contains(column)) {
invisibleColumns.add(column);
}
}
}
visibleColumns = settingsParams.getVisibleColumns();
// формирование колонок таблицы в требуемом порядке
for (String column : visibleColumns) {
allColumns.add(column);
}
for (String column : invisibleColumns) {
allColumns.add(column);
}
}
// применение настроек к панели настроек
applySettingsByOptionsPanel(settingsParams, allColumns, visibleColumns);
// применине настроек к гаджету
applySettingsByGadget(settingsParams, allColumns, visibleColumns);
}
/**
* Применине настроек к гаджету.
*
* @param settingsParams Параметры настроек {@link SettingsParams}.
* @param allColumns Список всех колонки таблицы.
* @param visibleColumns Список только отображаемых колонок таблицы.
*/
private void applySettingsByGadget(SettingsParams settingsParams,
List<String> allColumns, List<String> visibleColumns) {
Log.debug("applySettingsByGadget :: settingsParams : " + settingsParams + " allColumns.size() : " + allColumns.size() + " visibleColumns.size() : " + visibleColumns.size());
// применение настроек колонок таблицы
ServiceLocator.getReportTable().setVisibleColumns(visibleColumns);
ServiceLocator.getReportTable().setColumnOrder(allColumns);
// отображеать/не отображать фильтры
Boolean criteriaShow = settingsParams.getIsVisibleFilter();
if (criteriaShow != null && criteriaShow) {
ServiceLocator.getSelectionFilter().filtersShow();
} else {
ServiceLocator.getSelectionFilter().filtersHide();
}
// период времени
long startDateOffset = new Double(TimePanelWrapper.getOffsetSecondOf_2011_01_01_ByTimestamp(
optionsPanel.getStartDate().getTime())).longValue();
long finishDateOffset = new Double(TimePanelWrapper.getOffsetSecondOf_2011_01_01_ByTimestamp(
optionsPanel.getFinishDate().getTime())).longValue();
Log.debug("settings priod :: startDateOffset : " + startDateOffset + " --- finishDateOffset : " + finishDateOffset);
ServiceLocator.getDateTimePanel().updateTime(startDateOffset, finishDateOffset);
}
/**
* применение настроек к панели настроек.
*
* @param settingsParams Параметры настроек {@link SettingsParams}.
* @param allColumns Список всех колонки таблицы.
* @param visibleColumns Список только отображаемых колонок таблицы.
*/
private void applySettingsByOptionsPanel(SettingsParams settingsParams,
List<String> allColumns, List<String> visibleColumns) {
Log.debug("applySettingsByOptionsPanel :: settingsParams : " + settingsParams + " allColumns.size() : " + allColumns.size() + " visibleColumns.size() : " + visibleColumns.size());
optionsPanel.setPeriod(settingsParams.getDefaulPeriod(), settingsParams.getDefaultPeriodUnit(),
settingsParams.getDefaultPeriodUnitValue());
optionsPanel.setShowFilterPanel(settingsParams.getIsVisibleFilter());
optionsPanel.setEmail(settingsParams.getEmail());
optionsPanel.setFileFormat(settingsParams.getFileFormat());
optionsPanel.hideSettingsPanel();
tcOptions.columnView.getStore().removeAll();
List<ColumnModelData> listModel = tcOptions.getOrderColumns(allColumns);
tcOptions.columnView.getStore().add(listModel);
tcOptions.checked(visibleColumns, listModel);
}
/** Устновка и применение настроек по умолчанию. */
public void applyDefaultSettingsParams() {
// TODO: e-mail и format задавать как index в combobox
SettingsParams defaultSettings = new SettingsParams(
true, "", "", getDefaultVisibleColumn(), OptionsPanel.DEFAULT_PERIOD_WEEK, 0, 0);
setSettingsParams(defaultSettings);
applySettings(defaultSettings);
}
/** Получает список видимых колонок таблицы. */
private List<String> getDefaultVisibleColumn() {
List<String> visibleColumns = new ArrayList<String>();
// список всех колонок
List<ColumnModelData> listModel = tcOptions.getColumnModels();
for (ColumnModelData model : listModel) {
String item = model.getColumnId();
if (!model.getColumnId().equals(ReportTable.ID_STATE_NUMBER)) {
visibleColumns.add(item);
}
}
return visibleColumns;
}
public void setSettingsParams(SettingsParams settingsParams) {
this.settingsParams = settingsParams;
}
private void setOptionsPanelLocale() {
optionsPanel.setPanelHeadCaption(constants.settingsPanel());
optionsPanel.setLblPeriodText(constants.defaultPeriod());
optionsPanel.setRBtnDayText(constants.currDay());
optionsPanel.setRBtnWeekText(constants.currWeek());
optionsPanel.setRBtnMonthText(constants.currMonth());
optionsPanel.setRBtnSomePeriodText(constants.forLast());
Map<Integer, String> mapUnitText = new TreeMap<Integer, String>();
mapUnitText.put(OptionsPanel.PERIOD_UNIT_HOUR_ID, constants.forHours());
mapUnitText.put(OptionsPanel.PERIOD_UNIT_DAY_ID, constants.forDays());
mapUnitText.put(OptionsPanel.PERIOD_UNIT_WEEK_ID, constants.forWeeks());
mapUnitText.put(OptionsPanel.PERIOD_UNIT_MONTH_ID, constants.forMonth());
mapUnitText.put(OptionsPanel.PERIOD_UNIT_YEAR_ID, constants.forYears());
optionsPanel.setLBoxPeriodUnitText(mapUnitText);
optionsPanel.setLblFilterText(constants.filterCriteria());
optionsPanel.setChBoxFilterText(constants.show());
optionsPanel.setLblFormatText(constants.saveFormat());
optionsPanel.setLblEmailText(constants.defaultReceiver());
}
// @Override
// protected void onAttach() {
// super.onAttach();
//
// // применение стилей к ListBox
// if (!applyStyleToList) {
// applyJSLists();
// applyStyleToList = true;
// }
//
// // применение стилей к CheckBox
// applyCheckBoxStyle();
// applyJSCheckBoxes();
// tcOptions.setStyleChkeckBoxListViewSpan();
// }
// TODO: указывать ли порядок невидимых колонок ?
/** Класс с настройками столбцов таблицы. */
private final class TableColumnOptions extends VerticalPanel {
private final Constants constants = (Constants) GWT.create(Constants.class);
/** Элемаенты, содержащий список столбцов таблицы. */
private StyleCheckBoxListView<ModelData> columnView;
private ListStore<ModelData> columnStore = new ListStore<ModelData>();
/** Список моделей колонок таблицы. */
private List<ColumnModelData> columnModels = new LinkedList<ColumnModelData>();
public TableColumnOptions() {
super();
//Колонки
Label columnTxt = new Label(constants.tableColumns());
columnTxt.setStylePrimaryName(CSS_CLASS_LABEL);
add(columnTxt);
columnModels = getListModels();
columnStore.add(getColumnModels());
columnView = new StyleCheckBoxListView<ModelData>() {
@Override
protected void onClick(ListViewEvent<ModelData> e) {
super.onClick(e);
boolean isCheck = this.applyDivStyle(e.getElement().getId());
setChecked(e.getModel(), isCheck);
}
};
columnView.addListener(Events.OnChange, new Listener<ListViewEvent<ModelData>>() {
@Override
public void handleEvent(ListViewEvent<ModelData> be) {
setStyleChkeckBoxListViewSpan();
}
});
columnView.setStore(columnStore);
columnView.setDisplayProperty("columnName");
columnView.setWidth("100%");
columnView.setSelectOnOver(true);
columnView.setId("ColumnSettingsListView");
columnView.setBorders(false);
FlowPanel columnsBox = new FlowPanel();
columnsBox.setStylePrimaryName(CSS_CLASS_COLUMN_BOX);
columnsBox.getElement().setId("ColumnListBox");
columnsBox.add(columnView);
// TODO: при dnd слетают чекбоксы
new ListViewDragSource(columnView) {
@Override
protected void onDragDrop(DNDEvent e) {
super.onDragDrop(e);
applyCheckBoxStyle();
}
};
ListViewDropTarget target = new ListViewDropTarget(columnView) {
@Override
protected void onDragDrop(DNDEvent e) {
super.onDragDrop(e);
applyCheckBoxStyle();
}
};
target.setAllowSelfAsSource(true);
target.setFeedback(Feedback.INSERT);
setStylePrimaryName(CSS_CLASS_BOX);
setStyleChkeckBoxListViewSpan();
add(columnsBox);
}
private void setStyleChkeckBoxListViewSpan() {
List<ModelData> checkedModels = columnView.getChecked();
ListStore<ModelData> store = columnView.getStore();
for (int i = 0; i < store.getCount(); i++) {
ModelData model = store.getAt(i);
if (model instanceof ColumnModelData) {
String columnId = ((ColumnModelData) model).getColumnId();
if (checkedModels.contains(model)) {
applySpanStyle(columnId, "#333333");
} else {
applySpanStyle(columnId, "#999999");
}
}
}
}
@Override
protected void onAttach() {
super.onAttach();
// применение стилей к ListBox
if (!applyStyleToList) {
applyJSLists();
applyStyleToList = true;
}
// применение стилей к CheckBox
applyCheckBoxStyle();
applyJSCheckBoxes();
setStyleChkeckBoxListViewSpan();
applyJSCRadioButton();
repaintColumnOptions();
registrJSNI();
}
public List<ColumnModelData> getColumnModels() {
return columnModels;
}
public ListStore<ModelData> getColumnStore() {
return columnStore;
}
public void setColumnStore(ListStore<ModelData> columnStore) {
this.columnStore = columnStore;
}
/** Возвращает заполненный список названий колонок таблицы. */
private List<ColumnModelData> getListModels() {
List<ColumnModelData> models = new ArrayList<ColumnModelData>();
models.add(new ColumnModelData(ReportTable.ID_NUM_ROW, columnsName.get(ReportTable.columnsById.get(ReportTable.ID_NUM_ROW))));
models.add(new ColumnModelData(ReportTable.ID_STATE_NUMBER, columnsName.get(ReportTable.columnsById.get(ReportTable.ID_STATE_NUMBER))));
models.add(new ColumnModelData(ReportTable.ID_GARAGE_NUMBER, columnsName.get(ReportTable.columnsById.get(ReportTable.ID_GARAGE_NUMBER))));
models.add(new ColumnModelData(ReportTable.ID_DRIVER, columnsName.get(ReportTable.columnsById.get(ReportTable.ID_DRIVER))));
models.add(new ColumnModelData(ReportTable.ID_RUN, columnsName.get(ReportTable.columnsById.get(ReportTable.ID_RUN))));
models.add(new ColumnModelData(ReportTable.ID_AVERAGE_SPEED, columnsName.get(ReportTable.columnsById.get(ReportTable.ID_AVERAGE_SPEED))));
models.add(new ColumnModelData(ReportTable.ID_MAX_SPEED, columnsName.get(ReportTable.columnsById.get(ReportTable.ID_MAX_SPEED))));
models.add(new ColumnModelData(ReportTable.ID_MOVE_TIME, columnsName.get(ReportTable.columnsById.get(ReportTable.ID_MOVE_TIME))));
models.add(new ColumnModelData(ReportTable.ID_DOWN_TIME, columnsName.get(ReportTable.columnsById.get(ReportTable.ID_DOWN_TIME))));
models.add(new ColumnModelData(ReportTable.ID_ABSENCE_DATE, columnsName.get(ReportTable.columnsById.get(ReportTable.ID_ABSENCE_DATE))));
return models;
}
/**
* Возвращает список колонок в требуемом порядке.
*
* @param columns Список колонок в требуемом порядке.
*/
public List<ColumnModelData> getOrderColumns(List<String> columns) {
List<ColumnModelData> listModel = new ArrayList<ColumnModelData>();
for (String column : columns) {
ColumnModelData model = new ColumnModelData(column, columnsName.get(ReportTable.columnsById.get(column)));
listModel.add(model);
}
return listModel;
}
/**
* Помечает те колонки таблицы, которые указаные в заданном списке.
*
* @param visibleColumns Список колонок, которые должны быть помечны как выделенные в настройках.
*/
public void checked(List<String> visibleColumns, List<ColumnModelData> models) {
for (ModelData model : models) {
if (model instanceof ColumnModelData) {
String column = ((ColumnModelData) model).getColumnId();
boolean isChecked = visibleColumns.contains(column) ? true : false;
columnView.setChecked(model, isChecked);
}
}
}
}
////////// Перерисовка компонентов для корректного тображения //////////////
//
/** Перерисовывает компоненты со списком колонок. */
public void repaintColumnOptions() {
tcOptions.columnView.recalculate();
tcOptions.setStyleChkeckBoxListViewSpan();
}
private static native void installRepaint(Object target)/*-{
console.log("installRepaint columns options");
$wnd.repaintColumnOptions = function(){
target.@ru.omnicomm.pegasus.gadgets.movementsummaryreportgadget.client.ui.optionspanel.SettingsPanel::repaintColumnOptions()();
};
}-*/;
/////////////////// JS функции для установки стиля компонентов /////////////
//
private native void applySpanStyle(String id, String color)/*-{
$wnd.jQuery('#'+'span-'+id).css("color", color);
}-*/;
private native void applyJSCRadioButton()/*-{
$wnd.$('.dialogMiddle input[type=radio]').jqTransRadio({
cls:'jqTransformRadio',
empty: @ru.omnicomm.pegasus.gadgets.movementsummaryreportgadget.client.Util::getAppUrl()() + '/images/empty.png'
});
}-*/;
private native void applyJSCheckBoxes()/*-{
$wnd.$('.dialogMiddle input[type=checkbox]').checkbox({
cls:'jquery-safari2-checkbox',
empty: @ru.omnicomm.pegasus.gadgets.movementsummaryreportgadget.client.Util::getAppUrl()() + '/images/empty.png'
});
}-*/;
/** Применение стилей к CheckBox-ам в панели ностроек. */
public native void applyCheckBoxStyle()/*-{
$wnd.$('.dialogMiddle #ColumnSettingsListView .test').checkbox({
// $wnd.$('.dialogMiddle #ColumnSettingsListView .x-view-item-checkbox').checkbox({
cls:'jquery-safari2-checkbox',
empty: @ru.omnicomm.pegasus.gadgets.movementsummaryreportgadget.client.Util::getAppUrl()() + '/images/empty.png'
});
}-*/;
public native void registrJSNI()/*-{
alert('hkjjhjkhjkhjh');
window.checkedColumn = function(id) {
alert('tttttttt');
var current_color = $wnd.jQuery('#'+'span-'+id).css("color");
var check_color = "rgb(51, 51, 51)";
var uncheck_color = "rgb(153, 153, 153)";
var div_id = '#' + id;
if (current_color == check_color) {
$wnd.$('div_id .test').attr('checked', false);
$wnd.jQuery('#'+'span-'+id).css("color", uncheck_color);
return;
}
if (current_color == uncheck_color) {
$wnd.$('div_id .test').attr('checked', true);
$wnd.jQuery('#'+'span-'+id).css("color", check_color);
return;
}
}
}-*/;
/** Применение стилей к ListBox-ам в панели ностроек. */
public native void applyJSLists()/*-{
$wnd.jQuery("#show_interval_value").selectbox();
$wnd.jQuery("#show_interval_param").selectbox();
$wnd.jQuery("#file_save").selectbox();
$wnd.jQuery("#default_email").selectbox();
}-*/;
/** Модель данных списка, содержащего названия колонок таблицы. */
private class ColumnModelData extends BaseModel {
public ColumnModelData() {
}
public ColumnModelData(String columnId, String columnName) {
set("columnId", columnId);
set("columnName", columnName);
}
public String getColumnId() {
return get("columnId");
}
public void setColumnId(String columnId) {
set("columnId", columnId);
}
public String getColumnName() {
return get("columnName");
}
public void setColumnName(String columnName) {
set("columnName", columnName);
}
}
public class StyleCheckBoxListView<M extends ModelData> extends ListView<M> {
// private String checkBoxSelector = ".x-view-item-checkbox";
private String checkBoxSelector = ".test";
protected List<M> checkedPreRender;
@Override
protected void onRender(Element target, int index) {
if (getTemplate() == null) {
// String spacing = GXT.isIE ? "0" : "3";
String spacing = "0";
setTemplate(XTemplate.create(
"<tpl for=\".\">"
+ "<div onclick=\"checkedColumn({columnId})\" id = \"{columnId}\" class='x-view-item x-view-item-check'>"
+ "<table cellspacing='" + spacing + "' cellpadding=0 >"
+ "<tr>"
+ "<td id = \"check-{columnId}\" class = \"test\"></td>"
// + "<td>" + "<input id = \"check-{columnId}\" class=\"x-view-item-checkbox\" type=\"checkbox\" /></td>"
+ "<td></td>"
+ "<td><span id = \"span-{columnId}\" >{" + getDisplayProperty() + "}</span></td>"
+ "</tr>"
+ "</table>"
+ "</div>"
+ "</tpl>"));
}
super.onRender(target, index);
}
public String getCheckBoxSelector() {
return checkBoxSelector;
}
public List<M> getChecked() {
if (rendered) {
List<M> l = new ArrayList<M>();
NodeList<Element> nodes = el().select(checkBoxSelector);
for (int i = 0; i < nodes.getLength(); i++) {
if (InputElement.is(nodes.getItem(i))) {
InputElement e = InputElement.as(nodes.getItem(i));
if (e.isChecked()) {
l.add(getStore().getAt(i));
}
}
}
return l;
} else {
return checkedPreRender != null ? new ArrayList<M>(checkedPreRender) : new ArrayList<M>();
}
}
public void setCheckBoxSelector(String checkBoxSelector) {
this.checkBoxSelector = checkBoxSelector;
}
public void setChecked(M m, boolean checked) {
if (rendered) {
NodeList<Element> nodes = el().select(checkBoxSelector);
int index = store.indexOf(m);
if (index != -1) {
Element e = nodes.getItem(index);
if (e != null) {
((InputElement) e.cast()).setChecked(checked);
}
}
} else {
if (checkedPreRender == null) {
checkedPreRender = new ArrayList<M>();
}
if (checked) {
if (!checkedPreRender.contains(m)) {
checkedPreRender.add(m);
}
} else {
checkedPreRender.remove(m);
}
}
}
public native boolean applyDivStyle(String id)/*-{
var current_color = $wnd.jQuery('#'+'span-'+id).css("color");
var check_color = "rgb(51, 51, 51)";
var uncheck_color = "rgb(153, 153, 153)";
var div_id = '#' + id;
if (current_color == check_color) {
// $wnd.$('div_id .test').attr('checked', false);
$wnd.jQuery('#'+'span-'+id).css("color", uncheck_color);
return false;
}
if (current_color == uncheck_color) {
// $wnd.$('div_id .test').attr('checked', true);
$wnd.jQuery('#'+'span-'+id).css("color", check_color);
return true;
}
}-*/;
@Override
protected void afterRender() {
super.afterRender();
if (checkedPreRender != null) {
for (M m : checkedPreRender) {
setChecked(m, true);
}
checkedPreRender = null;
}
}
}
}