001    package videoautomat;
002    import sale.Gate;
003    import sale.SaleProcess;
004    import sale.UIGate;
005    import sale.stdforms.MsgForm;
006    import users.UserManager;
007    import users.stdforms.LogOnForm;
008    import videoautomat.contentcreator.LogOnLOFContentCreator;
009    import videoautomat.contentcreator.LogOnMFContentCreator;
010    import videoautomat.contentcreator.LogOnSTFSContentCreator;
011    import data.stdforms.SingleTableFormSheet;
012    
013    /**
014     * This class implements a <code>SaleProcess</code> used to log on and choose which activity should follow.
015     *  
016     */
017    public class SaleProcessLogOn extends SaleProcess {
018            
019            /**
020             * Constructs a new <code>SaleProcessLogOn</code>
021             *  
022             */
023            public SaleProcessLogOn() {
024                    super("SaleProcessLogOn");
025            }
026    
027            /**
028             * Implementation of the inherited abstract method.
029             * 
030             * @return a <code>Gate</code> where the user selects it`s user-name and is asked for his/her password.
031             * 
032             * @see sale.SaleProcess#getInitialGate()
033             */
034            protected Gate getInitialGate() {
035                
036                UIGate uig_log_on = new UIGate(null, null);
037    
038                LogOnForm lof_initial = new LogOnForm(
039                        "Are you a registered user?",
040                                    "Select your user name!",
041                                    "Enter your passphrase!",
042                                    true,
043                                    UserManager.getGlobalUM(),
044                                    null,
045                                    null);
046                
047                lof_initial.addContentCreator(new LogOnLOFContentCreator());
048                
049                uig_log_on.setFormSheet(lof_initial);
050    
051                return uig_log_on;
052            }
053            
054            public Gate restart()
055            {
056                return getInitialGate();
057            }
058            
059            
060            /**
061             * @return a <code>Gate</code> that shows an error-message.
062             */
063            public Gate getFaultGate() {
064                
065                UIGate uig_fault = new UIGate(null, null);
066                
067                MsgForm mf_fault = new MsgForm(
068                        "Log on failed!",
069                                    "You didn`t choose a user name or the passphrase didn`t match!");
070                
071                mf_fault.addContentCreator(new LogOnMFContentCreator());
072                
073                uig_fault.setFormSheet(mf_fault);
074                
075                return uig_fault;
076            }
077    
078            /**
079             * @return a <code>Gate</code> where the user can select the next activity, like renting a video.
080             */
081            public Gate getMainGate() {
082                
083                UIGate uig_main = new UIGate(null, null);
084                
085                SingleTableFormSheet stfs_main =
086                    SingleTableFormSheet.create(
087                            "Select an action!",
088                            VideoShop.getVideoStock(),
089                            uig_main,
090                            false,
091                            new TEDVideoStock());
092                
093                stfs_main.addContentCreator(new LogOnSTFSContentCreator(this));
094                
095                return uig_main;
096            }
097    }