package senseiTests.domainsTest; import sensei.middleware.domains.DomainGroupHandler; import sensei.util.RestartableThread; public class StateChanger extends RestartableThread { class Info { ColoursInfoPanel panel; boolean add; Info(ColoursInfoPanel panel, boolean add) { this.panel=panel; this.add=add;} } public StateChanger(DomainGroupHandler groupHandler, ColoursSubgroup coloursSubgroup) { this.coloursSubgroup=coloursSubgroup; this.groupHandler=groupHandler; } public boolean addColour(ColoursInfoPanel panel) { try { activate(0, new Info(panel, true)); return true; } catch(InterruptedException ex) { } return false; } public boolean remColour(ColoursInfoPanel panel) { try { activate(0, new Info(panel, false)); return true; } catch(InterruptedException ex) { } return false; } public boolean activated(Object task) { Info info = (Info) task; try { if (info.add) { String toAdd = coloursSubgroup.getAColour(); info.panel.setStatus("Adding colour " + toAdd); coloursSubgroup.addColour(toAdd); } else { info.panel.setStatus("Removing a colour"); coloursSubgroup.remColour(); } info.panel.colourChangePropagated(); } catch(Exception ex) { info.panel.showError(ex); return false; } return true; } ColoursSubgroup coloursSubgroup; DomainGroupHandler groupHandler; }