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 }