001    package market.stdform;
002    
003    import market.SMarket;
004    import sale.GateChangeTransition;
005    import sale.MenuSheet;
006    import sale.MenuSheetItem;
007    import sale.SaleProcess;
008    import sale.SalesPoint;
009    import sale.Transition;
010    import sale.UIGate;
011    
012    /**
013     * This MenuSheet class provides a simple log-off MenuSheet.
014     */
015    public class MSLogOff extends MenuSheet{
016    
017        /**
018             * ID for serialization.
019             */
020            private static final long serialVersionUID = 2099559124315233565L;
021    
022            /**
023         * Creates a MenuSheet with one MenuSheetItem, which`s action closes the SalesPoint related to the MenuSheet.
024         *
025         * @param trans Transition that gets set in the MenuSheetItem`s action to the current Gate of a SaleProcess,
026         * if someone runs on the SalesPoint related to this MenuSheet.
027         */
028        public MSLogOff(final Transition trans) {
029            super("System", null, 'S');
030            this.add(new MenuSheetItem("Abmelden", "exit", new sale.Action() {
031                            private static final long serialVersionUID = 708299138129393449L;
032                            public void doAction(SaleProcess p, SalesPoint sp) throws Throwable {
033                    if(p!=null){
034                        ((UIGate)p.getCurrentGate()).setNextTransition(trans);
035                    }
036                    if (sp != null) {//sp is only null if a JDDShowMessage is active
037                        if(sp.getCurrentProcess()!=null) sp.processFinished(p);
038                        SMarket.getTheMarket().removeSalesPoint(sp);
039                        sp.quit();
040                    }
041                }
042            }, 'A'));
043        }
044    
045        /**
046         * Overloads constructor with GateChangeTransition.CHANGE_TO_STOP_GATE as argument.
047         */
048        public MSLogOff() {
049            this(GateChangeTransition.CHANGE_TO_STOP_GATE);
050        }
051    }