/* * Created on 12.08.2004 * * @author Jens Guenther */ package de.unirostock.Builder.example.gui; import javax.swing.JPanel; import de.unirostock.Builder.example.Shipyard; public class MainController { // ------------------------------------------------------------------- // // ---- private classes ---------------------------------------------- // // ------------------------------------------------------------------- // private class MainControllerState extends State { protected MainController itsController; protected JPanel itsPanel; } private class ChooseShipyardState extends MainControllerState { public ChooseShipyardState( MainController controller ){ itsController = controller; } public void entry() { // set formerly choosed ShipFactory to null itsController.setShipyard( null ); // init HeadPane itsController.setHeadline( "Auswahl des Builders" ); // init ChooseFactoryPanel if( itsPanel == null ){ itsPanel = new ChooseBuilderPanel(); } itsController.setContentPanel( itsPanel ); // init ButtonPane itsController.setOkState( itsController.getCreatePartsState()); } public void exit() { // set ShipFactory to selected ShipFactory Shipyard selShipyard = ((ChooseBuilderPanel)itsPanel).getSelectedShipyard(); itsController.setShipyard( selShipyard ); } } private class CreatePartsState extends MainControllerState { public CreatePartsState( MainController controller ){ itsController = controller; } public void entry() { // init HeadPane itsController.setHeadline( "Teile mittels Director erzeugen" ); // init ViewComponentPane if( itsPanel == null ){ itsPanel = new CreatePartsPanel(); } itsController.setContentPanel( itsPanel ); ((CreatePartsPanel)itsPanel).init( itsController.getSelectedShipyard()); // init ButtonPane itsController.setOkState( itsController.getGetShipState()); } } private class GetShipState extends MainControllerState { public GetShipState( MainController controller ){ itsController = controller; } public void entry() { // init HeadPane itsController.setHeadline( "Produkt vom (bekannten) Builder holen" ); // init AssembledShipPane if( itsPanel == null ){ itsPanel = new GetShipPanel(); } itsController.setContentPanel( itsPanel ); ((GetShipPanel)itsPanel).init( itsController.getSelectedShipyard()); // init ButtonPane itsController.setOkState( itsController.getChooseShipyardState()); } } // ------------------------------------------------------------------- // // ---- attributes --------------------------------------------------- // // ------------------------------------------------------------------- // private State itsChooseShipyardState = null; private State itsCreatePartsState = null; private State itsGetShipState = null; private MainPanel itsMainPanel; private Shipyard itsShipyard; private State itsState = null; // ------------------------------------------------------------------- // // ---- constructor -------------------------------------------------- // // ------------------------------------------------------------------- // public MainController( MainPanel view ) { itsMainPanel = view; } // ------------------------------------------------------------------- // // ---- state management --------------------------------------------- // // ------------------------------------------------------------------- // public void init() { MainHeadPanel mhp = new MainHeadPanel(); MainButtonPanel mbp = new MainButtonPanel( this ); itsMainPanel.setHeadPanel( mhp ); itsMainPanel.setButtonPanel( mbp ); setState( getChooseShipyardState()); } protected void setState(State state) { if (itsState != null) itsState.exit(); itsState = state; if (itsState != null) itsState.entry(); itsMainPanel.repaint(); } private State getChooseShipyardState() { if (itsChooseShipyardState == null) { itsChooseShipyardState = new ChooseShipyardState(this); } return itsChooseShipyardState; } private State getCreatePartsState() { if (itsCreatePartsState == null) { itsCreatePartsState = new CreatePartsState(this); } return itsCreatePartsState; } private State getGetShipState() { if (itsGetShipState == null) { itsGetShipState = new GetShipState(this); } return itsGetShipState; } // ------------------------------------------------------------------- // // ---- data model --------------------------------------------------- // // ------------------------------------------------------------------- // protected MainPanel getMainPanel() { return itsMainPanel; } protected void setShipyard(Shipyard shipyard) { itsShipyard = shipyard; } public Shipyard getSelectedShipyard(){ return itsShipyard; } protected void setHeadline( String headline ){ itsMainPanel.getMainHeadPanel().setHeadline( headline ); } protected void setOkState( State okState ){ itsMainPanel.getMainButtonPanel().setOkState( okState ); } protected void setContentPanel( JPanel contentPanel ){ itsMainPanel.setContentPanel( contentPanel ); } }