package org.beanfabrics.samples.properties; import java.util.Properties; import org.beanfabrics.model.IntegerPM; import org.beanfabrics.model.ListPM; import org.beanfabrics.model.PMManager; import org.beanfabrics.model.TextPM; import org.beanfabrics.support.OnChange; /** * The PropertiesPM is a presentation model that shows the contents of a * {@link Properties} object. */ public class PropertiesPM extends ListPM<EntryPM> { public final IntegerPM numberOfSelectedEntries = new IntegerPM(); public final IntegerPM numberOfEntries = new IntegerPM(); public final TextPM status = new TextPM(); public PropertiesPM() { PMManager.setup(this); } public PropertiesPM(Properties props) { this(); setProperties(props); } public void setProperties(Properties props) { clear(); for (Object keyObj : props.keySet()) { String key = (String)keyObj; String value = props.getProperty(key); add(new EntryPM(key, value)); } } @OnChange void updateNumberOfSelectedEntries() { numberOfSelectedEntries.setInteger(getSelection().size()); } @OnChange void updateNumberOfEntries() { numberOfEntries.setInteger(size()); } @OnChange(path = { "numberOfSelectedEntries", "numberOfEntries" }) void updateStatus() { String newText = ""; if (numberOfEntries.getInteger() == 1) { newText = "1 entry"; } else { newText = numberOfEntries.getInteger() + " entries"; } if (numberOfSelectedEntries.getInteger() == 1) { newText = newText + " / 1 selected"; } else if (numberOfSelectedEntries.getInteger() > 1) { newText = newText + " / " + numberOfSelectedEntries.getInteger() + " selected"; } status.setText(newText); } }