
com.extjs.gxt.ui.client.widget.CheckBoxListView Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of gxt Show documentation
Show all versions of gxt Show documentation
Rich Internet Application Framework for GWT
/*
* Sencha GXT 2.3.1 - 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