/* Copyright 2012 Google, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.arbeitspferde.groningen.display; import org.arbeitspferde.groningen.common.EvaluatedSubject; /** * Provides a unified interface to monitor Groningen. It stores and encapsulates the * Groningen objects to be displayed on the HUD. */ public interface MonitorGroningen { /** * Closes out accounting on a generation and starts accounting on a new * generation. */ public void processGeneration(); /** * Adds an {@link EvaluatedSubject}. The interface does not define how the * representation will be laid out. Layout details left to implementing * classes. */ public void addIndividual(EvaluatedSubject evaluatedSubject); /** Adds a warning to the warning list */ public void addWarning(String warning); /** * Determines the maximum number of distinct individuals we care about */ public void maxIndividuals(int max); /** * Adds an {@link Object} to be monitored, with a description string. The * interface does not define how the representation will be laid out. Layout * details left to implementing classes. */ public void monitorObject(Object obj, String infoString); /** * Given a monitored {@link Object}, the class stops monitoring it. It * {@code true} if the object was being monitored. The interface does not * define how the representation will be laid out. Layout details left to * implementing classes. */ public boolean stopMonitoringObject(Object obj); }