package pm; import java.util.Calendar; import java.util.HashMap; import java.util.Map; import javax.swing.JToggleButton; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import pm.manager.SelectButton; import pm.manager.Titled; public class Manager extends Worker { protected Log log = LogFactory.getLog(getClass()); protected static final long serialVersionUID = 1L; protected static final int INTERVAL = 100; protected T[] manageableArray; protected Map> buttonMap; public Manager(String title) { log.debug("Manager constructed"); } public Manager(T[] manageableArray) { this.manageableArray = manageableArray; createButtons(); } public void stop() { super.stop(); for (T manageable : manageableArray) { manageable.exit(); } super.stop(); } protected void createButtons() { buttonMap = new HashMap>(); for (T manageable : manageableArray) { SelectButton button = new SelectButton(manageable); buttonMap.put(manageable, button); } } protected JToggleButton[] getButtons() { return buttonMap.values().toArray(new JToggleButton[]{}); } protected void work() { long before = Calendar.getInstance().getTimeInMillis(); for (T manageable : manageableArray) { boolean active = manageable.active(); buttonMap.get(manageable).setPressed(active); } long after = Calendar.getInstance().getTimeInMillis(); int sleep = INTERVAL - (int) (after - before); sleep(sleep); } }