001 package market; 002 003 import java.util.Calendar; 004 005 import javax.swing.JOptionPane; 006 007 import market.stdform.ButtonIDs; 008 import market.stdform.FSCheckable; 009 import market.stdform.FSTime; 010 import sale.Action; 011 import sale.FormSheet; 012 import sale.FormSheetContentCreator; 013 import sale.SaleProcess; 014 import sale.SalesPoint; 015 016 /** 017 * The tiny window in which one can set the market's time. 018 */ 019 public class SPTime extends SalesPoint { 020 021 /** 022 * ID for serialization. 023 */ 024 private static final long serialVersionUID = 8231169080529401808L; 025 026 public SPTime() { 027 super("Zeitsimulation"); 028 } 029 030 /** 031 * @return <code>true</code>, so this SalesPoint can always be closed. 032 */ 033 public boolean onCanQuit() { 034 return true; 035 } 036 037 /** 038 * Creates and returns the default FormSheet. 039 * @return the default FormSheet. 040 */ 041 public FormSheet getDefaultFormSheet() { 042 final FSCheckable fsc = new FSCheckable(new FSTime()); 043 fsc.addContentCreator(new FormSheetContentCreator() { 044 private static final long serialVersionUID = -1594771979953825127L; 045 046 public void createFormSheetContent(final FormSheet fs) { 047 fs.getButton(ButtonIDs.BTN_OK).setAction(new Action() { 048 private static final long serialVersionUID = -3133318410100230937L; 049 050 public void doAction(SaleProcess p, SalesPoint sp) { 051 if (fsc.checkTextFields(FSCheckable.ALL_ERRORMESSAGES_AT_ONCE, false)) { 052 String sDate = fsc.getEntry(1); 053 Calendar dSet = Conversions.stringToCalendar(sDate); 054 Calendar today = SMarket.getTime(); 055 if (!dSet.after(today)) { 056 JOptionPane.showMessageDialog(fs.getComponent(), 057 "Es wird ein künftiges Datum erwartet.", "Fehler", 0); 058 } else { 059 SMarket.setTime(dSet); 060 closeTime(); 061 } 062 } 063 } 064 }); 065 }}); 066 return fsc; 067 } 068 069 /** 070 * Closes this SalesPoint. 071 */ 072 private void closeTime() { 073 //This is written as an extra method because it uses <this>, but it is called from within 074 //an anonymous inner class 075 SMarket.getTheShop().removeSalesPoint(this); 076 } 077 }