![JAR search and dependency download from the Maven repository](/logo.png)
com.extjs.gxt.ui.client.widget.CheckBoxListView Maven / Gradle / Ivy
/*
* Sencha GXT 2.3.1a - Sencha for GWT
* Copyright(c) 2007-2013, Sencha, Inc.
* [email protected]
*
* http://www.sencha.com/products/gxt/license/
*/
package com.extjs.gxt.ui.client.widget;
import java.util.ArrayList;
import java.util.List;
import com.extjs.gxt.ui.client.GXT;
import com.extjs.gxt.ui.client.core.XTemplate;
import com.extjs.gxt.ui.client.data.ModelData;
import com.google.gwt.dom.client.InputElement;
import com.google.gwt.dom.client.NodeList;
import com.google.gwt.user.client.Element;
import com.google.gwt.user.client.Event;
public class CheckBoxListView extends ListView {
protected List checkedPreRender;
private String checkBoxSelector = ".x-view-item-checkbox";
public CheckBoxListView() {
rowSelectorDepth = 10;
}
public String getCheckBoxSelector() {
return checkBoxSelector;
}
public List getChecked() {
if (rendered) {
List l = new ArrayList();
NodeList 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(checkedPreRender) : new ArrayList();
}
}
@Override
public void onBrowserEvent(Event event) {
if (disabled && event.getTypeInt() == Event.ONCLICK && Element.is(event.getEventTarget())
&& fly((Element) Element.as(event.getEventTarget())).is(checkBoxSelector)) {
event.preventDefault();
}
super.onBrowserEvent(event);
}
@Override
public void refresh() {
List checked = getChecked();
super.refresh();
if (checkedPreRender != null) {
for (M m : checkedPreRender) {
setChecked(m, true);
}
checkedPreRender = null;
} else if (checked != null) {
for (M m : checked) {
setChecked(m, true);
}
}
}
public void setCheckBoxSelector(String checkBoxSelector) {
this.checkBoxSelector = checkBoxSelector;
}
/**
* Selects a specific item in the view
*
* @param m the modeldata that should be checked
* @param checked true to check
*/
public void setChecked(M m, boolean checked) {
if (rendered) {
NodeList nodes = el().select(checkBoxSelector);
int index = store.indexOf(m);
if (index != -1) {
Element e = nodes.getItem(index);
if (InputElement.is(e)) {
InputElement i = InputElement.as(e);
i.setChecked(checked);
}
}
} else {
if (checkedPreRender == null) {
checkedPreRender = new ArrayList();
}
if (checked) {
if (!checkedPreRender.contains(m)) {
checkedPreRender.add(m);
}
} else {
checkedPreRender.remove(m);
}
}
}
@Override
protected void onRender(Element target, int index) {
if (getTemplate() == null) {
String spacing = GXT.isIE && !GXT.isStrict ? "0" : "3";
setTemplate(XTemplate.create("{"
+ getDisplayProperty() + "}
"));
}
super.onRender(target, index);
}
@Override
protected void onUpdate(M model, int index) {
boolean isChecked = getChecked().contains(model);
super.onUpdate(model, index);
if (isChecked) {
setChecked(model, true);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy