GlazedLists

lumo

Top Contributor
Ich habe folgendes 'Setup'
meine Daten werden in einer (EMF) EList gehalten.
ein GUI greift darauf zu und macht draus eine ObservableElementList (eine GUI-komponente braucht GlazedLists)

hier der code, mit dem ich aus meiner liste eine ObservableElementList mache:
Java:
public void setList(List<E> list, Class<?> clazz) {
	if (observableList == null) {
		EventList<E> eventList = new BasicEventList<E>();
		TransformedList<E, E> objectList = GlazedLists
				.threadSafeList(eventList);
		observableList = new ObservableElementList<E>(objectList, (Connector<? super E>) GlazedLists.beanConnector(clazz));
	} else {
		observableList.clear();
	}
	if (list != null && !list.isEmpty()) {
		try {
			observableList.addAll(list);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}
HINWEIS: wenn ich statt der bestehenden observableList jedesmal eine neue nehme, funktioniert das dataBinding natürlich nicht mehr!

kommen neue daten rein wird die funktion setList aufgerufen. klappt alles perfekt.
nun kommt allerdings ein zweiter GUI hinzu. (anderer Thread - keine ahnung ob das relevant ist - denn die TransformedList sollte threadSafe sein!)
stelle ich in dem GUI elemente dar, die auch in der anderen Liste vorhanden sind fliegt eine Exception.
Ist das nicht der Fall, dann klappt alles problemlos (also wenn ich die Elemente aus der 1. Liste rausnehme und sie in die 2. stecke dann ist das O.K. lasse ich sie allerdings in der anderen, dann fliegt die Exception.

hier der Stacktrace der IndexOutOfBoundsException
(warum die kommt ist mir ein rätsel, denn beim debuggen ist die observableList leer (aber nicht null) und die list, die als parameter beim addAll rein geht hat 3 elmente!)
Java:
java.lang.IndexOutOfBoundsException
	at ca.odell.glazedlists.impl.adt.barcode2.FourColorTree.get(FourColorTree.java:160)
	at ca.odell.glazedlists.impl.event.Tree4Deltas.targetUpdate(Tree4Deltas.java:80)
	at ca.odell.glazedlists.impl.event.Tree4Deltas.addAll(Tree4Deltas.java:220)
	at ca.odell.glazedlists.event.ListEventAssembler.addChange(ListEventAssembler.java:230)
	at ca.odell.glazedlists.event.ListEventAssembler.forwardEvent(ListEventAssembler.java:278)
	at ca.odell.glazedlists.ObservableElementList.listChanged(ObservableElementList.java:199)
	at ca.odell.glazedlists.event.ListEventAssembler$ListEventFormat.fire(ListEventAssembler.java:424)
	at ca.odell.glazedlists.event.ListEventAssembler$ListEventFormat.fire(ListEventAssembler.java:421)
	at ca.odell.glazedlists.event.SequenceDependenciesEventPublisher$SubjectAndListener.firePendingEvent(SequenceDependenciesEventPublisher.java:445)
	at ca.odell.glazedlists.event.SequenceDependenciesEventPublisher.fireEvent(SequenceDependenciesEventPublisher.java:344)
	at ca.odell.glazedlists.event.ListEventAssembler.commitEvent(ListEventAssembler.java:317)
	at ca.odell.glazedlists.BasicEventList.add(BasicEventList.java:130)
	at ca.odell.glazedlists.impl.ThreadSafeList.add(ThreadSafeList.java:279)
	at ca.odell.glazedlists.TransformedList.add(TransformedList.java:75)
	at ca.odell.glazedlists.AbstractEventList.addAll(AbstractEventList.java:336)
	at ca.odell.glazedlists.TransformedList.addAll(TransformedList.java:84)
	at ca.odell.glazedlists.AbstractEventList.addAll(AbstractEventList.java:295)
	at lumo.swt.widget.table.datasource.AbstractDataSource.setList(AbstractDataSource.java:82)

any ideas?
lumo

PS: ich habe versucht mich bei der newsgroup von glazedlists anzumelden, da bekommt man allerdings nur fehlermeldungen per email, dass eine anmeldung nicht möglich ist. (ev hat jemand von euch einen bestehenden account?)
 

lumo

Top Contributor
Zeile 82 in meinem .java file entspricht der Zeile 13 im oberen code schnipsel, also in
Java:
observableList.addAll(list);
 

Neue Themen


Oben