private boolean mustSendItemsetUpdate( PropertyContext propertyContext, XFormsSelect1Control otherSelect1Control) { if (getSelectionControl().hasStaticItemset()) { // There is no need to send an update: // // 1. Items are static... // 2. ...and they have been outputted statically in the HTML page, directly or in repeat // template return false; } else if (isStaticReadonly()) { // There is no need to send an update for static readonly controls return false; } else { // There is a possible change if (XFormsSingleNodeControl.isRelevant(otherSelect1Control) != isRelevant()) { // Relevance changed // Here we decide to send an update only if we become relevant, as the client will know that // the // new state of the control is non-relevant and can handle the itemset on the client as it // wants. return isRelevant(); } else if (!XFormsSingleNodeControl.isRelevant(this)) { // We were and are non-relevant, no update return false; } else { // If the itemsets changed, then we need to send an update // NOTE: This also covers the case where the control was and is non-relevant return !Itemset.compareItemsets( otherSelect1Control.getItemset(propertyContext), getItemset(propertyContext)); } } }