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); }
public void handleEvent(Event evt) { super.handleEvent(evt); ItsNatHTMLSelectMultImpl comp = getItsNatHTMLSelectMult(); // if (comp.isServerUpdatingFromClient()) // return; String type = evt.getType(); if (type.equals("DOMCharacterDataModified")) { MutationEvent mutEvent = (MutationEvent) evt; CharacterData charDataNode = (CharacterData) mutEvent.getTarget(); HTMLOptionElement option = (HTMLOptionElement) charDataNode.getParentNode(); int index = option.getIndex(); String value = charDataNode.getData(); DefaultListModel dataModel = (DefaultListModel) comp.getListModel(); if (!value.equals(dataModel.get(index))) dataModel.set(index, value); } }