X-Git-Url: http://git.nikiroo.be/?p=fanfix.git;a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Futils%2Fui%2FListSnapshot.java;fp=src%2Fbe%2Fnikiroo%2Futils%2Fui%2FListSnapshot.java;h=d2e89c86884491996cf75a40056079d5bb03038e;hp=0000000000000000000000000000000000000000;hb=3177622aa63d2e126ce9426b440a3443a2ea8bab;hpb=97654d115d9f0286f9eea9fe50216cb3737e9ed6 diff --git a/src/be/nikiroo/utils/ui/ListSnapshot.java b/src/be/nikiroo/utils/ui/ListSnapshot.java new file mode 100644 index 0000000..d2e89c8 --- /dev/null +++ b/src/be/nikiroo/utils/ui/ListSnapshot.java @@ -0,0 +1,62 @@ +package be.nikiroo.utils.ui; + +import java.util.ArrayList; +import java.util.List; + +import javax.swing.JList; + +public class ListSnapshot { + private JList list; + private List elements = new ArrayList(); + + public ListSnapshot(JList list) { + this.list = list; + + for (int index : list.getSelectedIndices()) { + elements.add(list.getModel().getElementAt(index)); + } + } + + public void apply() { + applyTo(list); + } + + public void applyTo(JList list) { + List indices = new ArrayList(); + for (int i = 0; i < list.getModel().getSize(); i++) { + Object newObject = list.getModel().getElementAt(i); + for (Object oldObject : elements) { + if (isSameElement(oldObject, newObject)) { + indices.add(i); + break; + } + } + } + + int a[] = new int[indices.size()]; + for (int i = 0; i < indices.size(); i++) { + a[i] = indices.get(i); + } + list.setSelectedIndices(a); + } + + // You can override this + protected boolean isSameElement(Object oldElement, Object newElement) { + if (oldElement == null || newElement == null) + return oldElement == null && newElement == null; + + return oldElement.toString().equals(newElement.toString()); + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + builder.append("List Snapshot of: ").append(list).append("\n"); + builder.append("Selected elements:\n"); + for (Object element : elements) { + builder.append("\t").append(element).append("\n"); + } + + return builder.toString(); + } +}