More comfortable StringSelection for stats GUI.
This commit is contained in:
parent
461ea04cda
commit
b735e9402b
@ -144,16 +144,35 @@ public class StringSelection implements Serializable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Apply the selection state of the given instance to this instance. Is only done
|
* Apply the selection state of the given instance to this instance. Compares
|
||||||
* for Strings which are equivalent and at the same index.
|
* Strings and takes over the selection state if they are equal.
|
||||||
*
|
*
|
||||||
* @param sel
|
* @param sel
|
||||||
*/
|
*/
|
||||||
public void takeOverSelection(StringSelection sel) {
|
public void takeOverSelection(StringSelection sel) {
|
||||||
// try to apply the same selection for equivalent string (must be in same order)
|
// try to apply the same selection for equivalent string (should be in same order)
|
||||||
for (int i=0; i<sel.getLength() && i<getLength(); i++) {
|
int mismatchAt = -1;
|
||||||
|
for (int i=0; i<sel.getLength() && i<getLength(); i++) {
|
||||||
|
// hope that elements are aligned at the beginning and take over selection state
|
||||||
if (sel.getElement(i).equals(getElement(i))) {
|
if (sel.getElement(i).equals(getElement(i))) {
|
||||||
|
// System.out.println("Fit: " + getElement(i) + " / " + sel.getElement(i));
|
||||||
setSelected(i, sel.isSelected(i));
|
setSelected(i, sel.isSelected(i));
|
||||||
|
} else {
|
||||||
|
// System.out.println(" - does not fit: " + getElement(i) + " vs " + sel.getElement(i));
|
||||||
|
mismatchAt = i; // if elements are not aligned, start double loop search at that point
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (mismatchAt>=0) {
|
||||||
|
// double look search to find matching elements (equal strings)
|
||||||
|
for (int i=mismatchAt; i<getLength(); i++) {
|
||||||
|
for (int j=mismatchAt; j<sel.getLength(); j++) {
|
||||||
|
if (sel.getElement(j).equals(getElement(i))) {
|
||||||
|
// if strings match, take over the selection state
|
||||||
|
// System.out.println("Fit: " + getElement(i) + " / " + sel.getElement(j));
|
||||||
|
setSelected(i, sel.isSelected(j));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user