public void initialSyncUIWithDataModel() { // Esto es necesario por ejemplo porque al inicializarse el UI se eliminan todos // los nodos, volverán a crearse al sincronizarse con el data model, // pero ahora sin el atributo selected que había originalmente en los nodos // seleccionados ItsNatHTMLSelectMultImpl comp = getItsNatHTMLSelectMult(); ListSelectionModel selModel = comp.getListSelectionModel(); int len = comp.getListModel().getSize(); ItsNatListMultSelUIInternal compUI = comp.getItsNatListMultSelUIInternal(); for (int i = 0; i <= len; i++) { boolean selected = selModel.isSelectedIndex(i); compUI.setSelectedIndex(i, selected); } HTMLSelectElement elem = getItsNatHTMLSelectMult().getHTMLSelectElement(); ((ItsNatNodeInternal) elem) .addEventListenerInternal( "DOMCharacterDataModified", this, false); // Para cuando cambie el contenido de una opción ((ItsNatNodeInternal) elem) .addEventListenerInternal("DOMAttrModified", this, false); // Para el atributo selected super.initialSyncUIWithDataModel(); }
public void dispose() { super.dispose(); HTMLSelectElement elem = getItsNatHTMLSelect().getHTMLSelectElement(); ((ItsNatNodeInternal) elem) .removeEventListenerInternal("DOMCharacterDataModified", this, false); ((ItsNatNodeInternal) elem).removeEventListenerInternal("DOMAttrModified", this, false); }
private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { in.defaultReadObject(); // Hay que tener en cuenta que los event listeners internos no se serializan if (!comp.isDisposed()) { HTMLSelectElement elem = getItsNatHTMLSelectMult().getHTMLSelectElement(); ((ItsNatNodeInternal) elem) .addEventListenerInternal( "DOMCharacterDataModified", this, false); // Para cuando cambie el contenido de una opción ((ItsNatNodeInternal) elem) .addEventListenerInternal("DOMAttrModified", this, false); // Para el atributo selected } }