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 public SPTime() { 022 super("Zeitsimulation"); 023 } 024 025 /** 026 * @return <code>true</code>, so this SalesPoint can always be closed. 027 */ 028 public boolean onCanQuit() { 029 return true; 030 } 031 032 /** 033 * Creates and returns the default FormSheet. 034 * @return the default FormSheet. 035 */ 036 public FormSheet getDefaultFormSheet() { 037 final FSCheckable fsc = new FSCheckable(new FSTime()); 038 fsc.addContentCreator(new FormSheetContentCreator() { 039 public void createFormSheetContent(final FormSheet fs) { 040 fs.getButton(ButtonIDs.BTN_OK).setAction(new Action() { 041 public void doAction(SaleProcess p, SalesPoint sp) { 042 if (fsc.checkTextFields(FSCheckable.ALL_ERRORMESSAGES_AT_ONCE, false)) { 043 String sDate = fsc.getEntry(1); 044 Calendar dSet = Conversions.stringToCalendar(sDate); 045 Calendar today = SMarket.getTime(); 046 if (!dSet.after(today)) { 047 JOptionPane.showMessageDialog(fs.getComponent(), 048 "Es wird ein künftiges Datum erwartet.", "Fehler", 0); 049 } else { 050 SMarket.setTime(dSet); 051 closeTime(); 052 } 053 } 054 } 055 }); 056 }}); 057 return fsc; 058 } 059 060 /** 061 * Closes this SalesPoint. 062 */ 063 private void closeTime() { 064 //This is written as an extra method because it uses <this>, but it is called from within 065 //an anonymous inner class 066 SMarket.getTheShop().removeSalesPoint(this); 067 } 068 }