in openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java [481:518]
public void select(BaseFileItem fi, AjaxRequestTarget target, boolean shift, boolean ctrl) {
updateSelected(target); //all previously selected are in update list
if (ctrl) {
if (isSelected(fi)) {
selected.remove(fi.getHash());
} else {
selected.put(fi.getHash(), fi);
}
lastSelected = fi;
} else if (shift && lastSelected != null && !lastSelected.getHash().equals(fi.getHash()) && sameParent(roomId, fi, lastSelected)) {
selected.clear();
String lastHash = null;
for (BaseFileItem f : tree.getProvider().getByParent(fi, fi.getParentId())) {
if (lastHash == null) {
if (f.getHash().equals(lastSelected.getHash())) {
lastHash = fi.getHash();
}
if (f.getHash().equals(fi.getHash())) {
lastHash = lastSelected.getHash();
}
}
if (lastHash != null) {
selected.put(f.getHash(), f);
if (f.getHash().equals(lastHash)) {
break;
}
}
}
} else {
selected.clear();
selected.put(fi.getHash(), fi);
lastSelected = fi;
}
updateSelected(target); //all finally selected are in the update list
if (target != null) {
target.add(trash, buttons);
}
}