📄 localcontrolhelpergui.java.svn-base
字号:
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 + -