⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 localcontrolhelpergui.java.svn-base

📁 這是一個JAVA語言寫的多代理人程式用來模擬飛機起飛或是降落的程式
💻 SVN-BASE
📖 第 1 页 / 共 2 页
字号:
package gui;
/**
 * Class: LocalControlHelperGUI
 * 
 * @author Niels-David Yogi
 * v1.0
 */
import java.awt.*;
import java.awt.event.*;
import java.util.ArrayList;
import java.util.List;
import java.util.HashMap;
import java.util.Iterator;

import javax.swing.*;

import world.*;

import base.*;
import interfaces.*;

public class LocalControlHelperGUI extends WorldObject implements LocalControllerInterface {
	// Instance Variables (General) 
	private Tower myTower;
	private LocalControlGUI lGUI;
	private List <Runway> alRunways;
	private List <Taxiway> alTaxiways;
	
	// Instance Variables for Arrival
	private HashMap <String, LocalHelperArriv> alAirplaneInfoArriv;
	private List <Taxiway> colTaxiwaysArriv;
	
	// Instance Variables for Departure
	private HashMap <String, LocalHelperDep> alAirplaneInfoDep;
	
	Animation animation = new Animation();
	
	/**
	 * Overloaded Constructor
	 *  
	 *  @param name String for name of Local Controller
	 *  @param t a Tower object
	 */	
	public LocalControlHelperGUI(String name, Tower t) {
		super(name);
		myTower = t;
		myTower.ctrlAssumeLocalControllerRole(this); // TODO: this should be in an action
		lGUI = new LocalControlGUI();
		initializeCollections();
		setupRunTaxiways();
		setupListeners();
	}
	/**
	 * Overloaded Constructor2
	 *  
	 *  @param name String for name of Local Controller
	 *  @param t a Tower object
	 *  @param objectState a WorldObjectState object
	 */	
	public LocalControlHelperGUI(String name, Tower t, WorldObjectState objectState) {
		super(name, objectState);
		myTower = t;
		myTower.ctrlAssumeLocalControllerRole(this); // TODO: this should be in an action
		lGUI = new LocalControlGUI();
		initializeCollections();
		setupRunTaxiways();
		setupListeners();
	}
	/**
	 * Overloaded Constructor3
	 *  
	 *  @param name String for name of Local Controller
	 *  @param t a Tower object
	 *  @param objectState a WorldObjectState object
	 *  @param guiObject a GuiObjectInterface object
	 */	
	public LocalControlHelperGUI(String name, Tower t, WorldObjectState objectState , GuiObjectInterface guiObject) {
		super(name, objectState, guiObject);
		myTower = t;
		myTower.ctrlAssumeLocalControllerRole(this); // TODO: this should be in an action
		lGUI = new LocalControlGUI();
		initializeCollections();
		setupRunTaxiways();
		setupListeners();
	}
	/**
	 * Overloaded Constructor4
	 *  
	 *  @param name String for name of Local Controller
	 *  @param t a Tower object
	 *  @param objectState a WorldObjectState object
	 *  @param guiObject a GuiObjectInterface object
	 *  @param animation an Animation object
	 */	
	public LocalControlHelperGUI(String name, Tower t, WorldObjectState objectState , GuiObjectInterface guiObject, Animation animation) {
		super(name, objectState, guiObject);
		this.animation = animation;
		myTower = t;
		myTower.ctrlAssumeLocalControllerRole(this); // TODO: this should be in an action
		lGUI = new LocalControlGUI();
		initializeCollections();
		setupRunTaxiways();
		setupListeners();
	}
	
	/**
	 * Messages - Received
	 * These methods are called by other classes sending messages to them.
	 * This class utilizes the information being sent and updates the stored panel
	 */
	
	//** Arrival **\\
	/**
	 *  Tells this panel that there is a new arriving flight
	 *  
	 *  @param plane      the plane
	 *  @param callNumber plane number
	 *  @param runway     the runway plane is using
	 *  @param gate       the gate the plane is entering
	 *  @return void
	 */	
	public void msgNewArrivingFlight(Plane plane, String callNumber, Runway runway, Gate gate)
	{
		myTower.addPlane(callNumber, plane);
		logMessage("msgNewArrivingFlight", callNumber, runway, gate);
		alAirplaneInfoArriv.put(callNumber, new LocalHelperArriv(callNumber,runway,gate) );
		lGUI.cbCallNumArriv.addItem(callNumber);
	}
	/**
	 *  Asks this panel for request for plane to land 
	 *  
	 *  @param callNumber plane number
	 *  @param runway     the runway plane is using
	 *  @param approach   
	 *  @return void
	 */	
	public void msgRequestToLand(String callNumber, String approach, Runway runway)
	{
		logMessage("msgRequestToLand", callNumber, approach, runway);
		updateImagesArriv(callNumber);
	}
	
	public void msgNotReadyToRequestLanding(String callNumber)
	{
		logMessage("msgNotReadyToRequestLanding", callNumber);
	}
	/**
	 *  Asks this panel to confirm clearance to land
	 *  
	 *  @param callNumber plane number
	 *  @param runway     the runway plane is using
	 *  @return void
	 */	
	public void msgConfirmClearanceToLand(String callNumber, Runway runway)
	{
		logMessage("msgConfirmClearanceToLand", callNumber, runway);
		alAirplaneInfoArriv.get(callNumber).setBClearance(true);
		updateImagesArriv(callNumber);
	}
	/**
	 *  Confirms landing path
	 *  
	 *  @param callNumber plane number
	 *  @param path       a collection of taxiways
	 *  @param approach   
	 *  @param gc         a ground control object
	 *  @return void
	 */	
	public void msgConfirmLandingPath(String callNumber, List<Taxiway> path, GroundControllerInterface gc)
	{
		logMessage("msgConfirmLandingPath", callNumber, path, gc);
		if(alAirplaneInfoArriv.get(callNumber) == null) {
			System.out.println("fuck this");
		} else {
		alAirplaneInfoArriv.get(callNumber).setBConfirmation(true);
		}
		updateImagesArriv(callNumber);
                removeArriv(callNumber);
	}
	
	//** Departure **\\
	/**
	 *  Creates new Departure Strip
	 *  
	 *  @param departure a Strip object
	 *  @return void
	 */	
	public void msgNewDepartureStrip(Strip departure)
	{
		logMessage("msgNewDepartureStrip", departure);
		LocalHelperDep insert = new LocalHelperDep();
    	insert.setSStrip(departure);
		alAirplaneInfoDep.put(departure.callNum, insert);
		lGUI.cbCallNumDep.addItem(departure.callNum);
	}
	/**
	 *  Tells panel plane is ready for takeoff
	 *  
	 *  @param callNumber      plane number
	 *  @param currentPosition current runway
	 *  @return void
	 */	
	public void msgReadyForTakeoff(String callNumber, Runway currentPosition)
	{
		logMessage("msgReadyForTakeoff", callNumber, currentPosition);
		//alAirplaneInfoDep.put(callNumber, new LocalHelperDep(callNumber,currentPosition) );
		//System.out.println("the current runway " + currentPosition.toString());
		alAirplaneInfoDep.get(callNumber).setRRunwayCurrent(currentPosition);
		alAirplaneInfoDep.get(callNumber).setBReady(true);
		updateImagesDep(callNumber);
	}
	/**
	 *  Tells panel that plane is holding
	 *  
	 *  @param callNumber      plane number
	 *  @return void
	 */	
	public void msgConfirmPositionAndHold(String callNumber)
	{
		logMessage("msgConfirmPositionAndHold", callNumber);
		alAirplaneInfoDep.get(callNumber).setBHold(true);
		updateImagesDep(callNumber);
	}
	/**
	 *  Tells panel plane is cleared for takeoff
	 *  
	 *  @param callNumber    plane number
	 *  @param takeoffRunway takeoff runway
	 *  @return void
	 */	
	public void msgConfirmClearedForTakeoff(String callNumber, Runway takeoffRunway)
	{
		logMessage("msgConfirmClearedForTakeoff", callNumber, takeoffRunway);
		alAirplaneInfoDep.get(callNumber).getSStrip().runway = takeoffRunway;
		alAirplaneInfoDep.get(callNumber).setBTakeOff(true);
		updateImagesDep(callNumber);
	}
	/**
	 *  Tells panel to confirm Departure Control
	 *  
	 *  @param callNumber    plane number
	 *  @return void
	 */	
	public void msgConfirmDepartureControl(String callNumber)
	{
		logMessage("msgConfirmDepartureControl", callNumber);
		alAirplaneInfoDep.get(callNumber).setBControl(true);
		updateImagesDep(callNumber);
		removeDep(callNumber);
	}
	public void msgEmergencyLanding(String callNumber, String approach, Runway runway)
	{
		logMessage("msgEmergencyLanding", callNumber, approach, runway);

	}
	
	/**
	 * Messages - Sent
	 * These methods are called by this class through buttons being pressed and such.
	 */
    
    //** Arrival **\\
	/**
	 *  Gives pilot message to land
	 *  
	 *  @param callNumber    plane number
	 *  @return void
	 */	
	private void GiveClearanceToLand(String callNumber) {
		myTower.getPlane(callNumber).radio().msgClearanceToLand(alAirplaneInfoArriv.get(callNumber).getSStrip().runway);
		Strip s = alAirplaneInfoArriv.get(callNumber).getSStrip();
		s.callNum = callNumber;
		print("Strip call number: " + s.callNum);
		print("Strip runway: " + s.runway);
		print("Strip gate: "  + s.gate);
		myTower.groundController.msgNewArrivalStrip(s);
	}
	/**
	 *  Gives pilot the landing path
	 *  
	 *  @param callNumber    plane number
	 *  @return void
	 */	
	private void GiveLandingPath(String callNumber) {
		GroundControllerInterface gc = myTower.groundController;
		myTower.getPlane(callNumber).radio().msgLandingPath(getPathArriv(), gc);
		
	}
	/**
	 *  Gives pilot the TRACON
	 *  
	 *  @param callNumber    plane number
	 *  @return void
	 */	
	private void GiveDepartureControlContact(String callNumber) {
		myTower.getPlane(callNumber).radio().msgContactDepartureControl(new TRACON("TRACON sucks#1"));
	}
	/**
	 *  Gives ground control the strip
	 *  
	 *  @param callNumber    plane number
	 *  @return void
	 */	
	private void GiveStripToGroundController(String callNumber) {
		myTower.groundController.msgNewArrivalStrip(alAirplaneInfoArriv.get(callNumber).getSStrip());
	}
	
	//** Departure **\\
	/**
	 *  Gives plane clearance for takeoff
	 *  
	 *  @param callNumber    plane number
	 *  @return void
	 */	
	private void GiveClearFlightForTakeoff(String callNumber) {
		myTower.getPlane(callNumber).radio().msgClearedForTakeoff(alAirplaneInfoDep.get(callNumber).getSStrip().runway);
	}
	/**
	 *  Tells plane to hold 
	 *  
	 *  @param callNumber    plane number
	 *  @return void
	 */	
	private void GivePositionAndHold(String callNumber) {
		myTower.getPlane(callNumber).radio().msgPositionAndHold();
	}

	/**
	 * General Methods [Updating, Button Status Check, etc.]
	 */
	// General Methods
	/**
	 *  Initializes General variables
	 *  
	 *  @return void
 	 */	
	private void initializeCollections()
	{
		alRunways = new ArrayList<Runway>();
		alTaxiways = new ArrayList<Taxiway>();
		//** Arrival **\\
		alAirplaneInfoArriv = new HashMap <String , LocalHelperArriv>();
		colTaxiwaysArriv = new ArrayList<Taxiway>();
		
		//** Departure **\\
		alAirplaneInfoDep = new HashMap <String, LocalHelperDep>();
	}
	/**
	 *  Sets up listeners for buttons and comboboxes
	 *  
	 *  @return void
 	 */	
	private void setupListeners()
	{
		//** Arrival **\\
		lGUI.cbCallNumArriv.addActionListener(new ComboArriv());
		lGUI.bRunwayClearArriv.addActionListener(new ComboArriv());
		lGUI.bTaxiwayArriv.addActionListener(new ComboArriv());
		lGUI.bTaxiwaySubmitArriv.addActionListener(new ComboArriv());

		//** Departure **\\
		lGUI.cbCallNumDep.addActionListener(new ComboDep());
		lGUI.bHoldDep.addActionListener(new ComboDep());
		lGUI.bClearedDep.addActionListener(new ComboDep());
		lGUI.bContactDep.addActionListener(new ComboDep());
	}
	/**
	 *  Sets up the runways and taxiways for both panels
	 *  
	 *  @return void
 	 */
	private void setupRunTaxiways()
	{
		addRunways((ArrayList)this.myTower.airport.runways);
		addTaxiways((ArrayList)this.myTower.airport.taxiways);
	}
	
	/**
	 *  Adds runways to alRunways
	 *  
	 *  @param runways list of runways
	 *  @return void
 	 */	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -