package senseiTests.domainsTest; import sensei.middleware.domains.DomainGroupHandler; import sensei.middleware.domains.MemberStateException; import sensei.middleware.domains.PropertiesDisabledException; import sensei.middleware.domains.PropertiesListenerBaseImpl; import sensei.middleware.domains.Property; //import sensei.util.Debug; import java.util.Iterator; import java.util.Map; class TesterPropertiesUser extends PropertiesListenerBaseImpl implements UIPropertiesUser { public TesterPropertiesUser(DomainGroupHandler domainGroup, Map properties) throws Exception { this.domainGroup = domainGroup; this.display = null; useProperties = false; changedProps=null; int length=properties.size(); if (length>0) { enableProperties(); Property [] initialProps = new Property[length]; Iterator it = properties.entrySet().iterator(); while(it.hasNext()) { //Debug.assert(length>0, Consts.AREA, "TesterPropertiesUser::TesterPropertiesUser::1"); Map.Entry entry = (Map.Entry)(it.next()); initialProps[--length]=new Property((String)(entry.getKey()), (String)(entry.getValue())); } //Debug.assert(length==0, Consts.AREA, "TesterPropertiesUser::TesterPropertiesUser::2"); domainGroup.setProperties(initialProps); } changedProps=new Property[1]; } public void setDisplay(UIFrame display) { this.display = display; } public void propertiesUpdated (int loc) { if ((display!=null) && useProperties) try { Property [] props = domainGroup.getMemberProperties(loc); display.setProperties(loc, props); } catch (Exception mse) { display.showError(mse); } } public void enableProperties() { try { domainGroup.enableProperties(); useProperties=true; } catch(Exception ex) { if (display!=null) display.showError(ex); } } public void updatePropertiesAutomatically(boolean set, boolean alreadyJoined) { try { if (set) { domainGroup.setPropertiesListener(this.thePropertiesListener()); if (alreadyJoined && (display!=null)) updateProperties(); } else domainGroup.setPropertiesListener(null); } catch(PropertiesDisabledException ex) { if (alreadyJoined && (display!=null)) display.showError(ex); } catch(Exception ex) { if (display!=null) display.showError(ex); } } public Property[] getProperties() { Property[] ret=null; try { ret=domainGroup.getProperties(); } catch(Exception pde) { if (display!=null) display.showError(pde); } return ret; } public void addProperty(Property prop) { changedProps[0]=prop; try { domainGroup.addProperties(changedProps); } catch(Exception ex) { if (display!=null) display.showError(ex); } } public void removeProperty(Property prop) { changedProps[0]=prop; try { domainGroup.removeProperties(changedProps); } catch(Exception igex) { display.showError(igex); } } public void updateProperties() { display.clearProperties(); try { int members[]=domainGroup.getStatefulMembers(); int size=members.length; while(size-->0) propertiesUpdated(members[size]); } catch(Exception ex) { display.showError(ex); } } DomainGroupHandler domainGroup; UIFrame display; Property[] changedProps; boolean useProperties; }