package de.calette.mephisto3.control; import callete.api.Callete; import callete.api.services.Service; import java.util.HashMap; import java.util.List; import java.util.Map; /** * Model that represents the current state of the UI. */ public class ServiceState { public final static String SETTING_SERVICE_NAME = "service.name"; public final static String SETTING_SERVICE_SELECTION = "service.selection"; private Service service; private List<?> models; private Map<Service, Integer> serviceIndex = new HashMap<>(); public List<?> getModels() { return models; } public void setModels(List<?> models) { this.models = models; } public Service getService() { return service; } public void setService(Service service) { if(!serviceIndex.containsKey(service)) { serviceIndex.put(service, 0); } this.service = service; } /** * Returns the last active service model of * the service of this model. */ public int getServiceIndex() { return serviceIndex.get(service); } /** * Remembers the last selected position for the service. */ public void setServiceIndex(int pos) { serviceIndex.put(service, pos); } public void decrementIndex() { int index = getServiceIndex(); if(index == 0) { index = models.size() - 1; } else { index--; } setServiceIndex(index); // System.out.println(service + " has index " + index); } public void incrementIndex() { int index = getServiceIndex(); if(index == models.size() - 1) { index = 0; } else { index++; } setServiceIndex(index); // System.out.println(service + " has index " + index); } public Object getSelection() { return models.get(getServiceIndex()); } public void saveState() { //Callete.saveSetting(SETTING_SERVICE_NAME, service.toString()); Callete.saveSetting(SETTING_SERVICE_SELECTION, getServiceIndex()); } }