All Downloads are FREE. Search and download functionalities are using the official Maven repository.

it.unibo.scafi.simulation.frontend.controller.GeneralController.scala Maven / Gradle / Ivy

The newest version!
/*
 * Copyright (C) 2016-2017, Roberto Casadei, Mirko Viroli, and contributors.
 * See the LICENCE.txt file distributed with this work for additional
 * information regarding copyright ownership.
 *
 * 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 it.unibo.scafi.simulation.frontend.controller

import java.awt.Image

import it.unibo.scafi.simulation.frontend.model.NodeValue
import javax.swing.JFrame

/**
 * An interface with the main methods used by controllers.
 * */
trait GeneralController {
  /**
   * Starts the simulation.
   * */
  def startSimulation(): Unit

  /**
   * Stops the simulation.
   * */
  def stopSimulation(): Unit

  /**
   * Pauses the simulation.
   * */
  def pauseSimulation(): Unit

  /**
   * Resumes the simulation.
   * */
  def resumeSimulation(): Unit

  /**
   * Advances the simulation by the specified number of steps.
   * @param stepCount the number of simulation steps that should be done
   * */
  def stepSimulation(stepCount: Int): Unit

  /**
   * Clears the currently running simulation.
   * */
  def clearSimulation(): Unit

  /**
   * Shows the provided background image.
   * @param img the image to be shown
   * @param showed whether the image should be showed or not
   * */
  def showImage(img: Image, showed: Boolean): Unit

  /**
   * @return whether the user is currently trying to select nodes or not
   * */
  def selectionAttempted: Boolean

  /**
   * @return the JFrame of the UI.
   * */
  def getUI: JFrame

  /**
   * Sets the kind of value that each node's label should show.
   * @param valueKind the kind of value to be shown
   * */
  def setShowValue(valueKind: NodeValue): Unit

  /**
   * Sets the observation function.
   * @param observation the observation function
   * */
  def setObservation(observation: Any=>Boolean): Unit

  /**
   * @return the observation function
   * */
  def getObservation: Any=>Boolean

  /**
   * Sets the specified sensor value.
   * @param sensorName the name of the chosen sensor
   * @param value the value to be set
   * */
  def setSensor(sensorName: String, value: Any): Unit
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy