001 package market.stdform;
002
003 import java.awt.Dimension;
004 import java.awt.GridBagConstraints;
005 import java.awt.GridBagLayout;
006 import java.awt.event.ActionListener;
007
008 import javax.swing.JButton;
009 import javax.swing.JPanel;
010
011 import market.SMarket;
012 import market.event.MarketEventAdapter;
013 import sale.Action;
014 import sale.ActionActionListener;
015 import sale.FormSheet;
016 import sale.FormSheetContentCreator;
017 import sale.SaleProcess;
018 import sale.SalesPoint;
019
020 /**
021 * This FormSheet is used by the manager to open and close the market, announce the leisure-time
022 * and change the date to the next day.
023 */
024 public class FSManagerOpenClose extends FormSheet {
025
026 /**
027 * ID for serialization.
028 */
029 private static final long serialVersionUID = 4286324234183400617L;
030
031 JButton jb = new JButton();
032 private static String OPEN = "Feierabend ankündigen";
033 private static String TOBECLOSED = "Ankündigung zurücknehmen";
034
035 public FSManagerOpenClose() {
036 super("Schließen", new FormSheetContentCreator() {
037 private static final long serialVersionUID = -4684305453802863083L;
038 public void createFormSheetContent(final FormSheet fs) {
039 fs.setComponent(fs.getComponent());
040 }
041 }, false);
042 this.addContentCreator(new FormSheetContentCreator() {
043 private static final long serialVersionUID = -3650582914895465285L;
044 public void createFormSheetContent(final FormSheet fs) {
045 //define components
046 JPanel jpMain = new JPanel();
047 JPanel jpBigButton = new JPanel();
048 GridBagConstraints c = new GridBagConstraints();
049 GridBagLayout gridbag = new GridBagLayout();
050 //add components
051 jpMain.setLayout(gridbag);
052 c.anchor = GridBagConstraints.CENTER;
053 gridbag.setConstraints(jpBigButton, c);
054 jb.setText(SMarket.isToBeClosed() ? TOBECLOSED : OPEN);
055 jb.setVisible(SMarket.isOpen());
056 jb.setPreferredSize(new Dimension(250, 100));
057 //add action listener if there is none yet
058 //(checking for action listeners prevents from adding them twice
059 //(This would happen when persistence file is loaded))
060 if (jb.getListeners(ActionListener.class).length == 0) {
061 jb.addActionListener(new ActionActionListener(fs, new Action() {
062 private static final long serialVersionUID = -896860110835567930L;
063 public void doAction(SaleProcess p, SalesPoint sp) {
064 if (SMarket.isToBeClosed()) {
065 SMarket.getTheMarket().setOpen(0);
066 SMarket.fireMarketNotClosing();
067 } else {
068 SMarket.getTheMarket().setOpen(1);
069 }
070 }
071 }));
072 }
073 jpBigButton.add(jb);
074 jpMain.add(jpBigButton);
075 fs.setComponent(jpMain);
076 removeAllButtons();
077 fs.addButton("Markt öffnen", ButtonIDs.BTN_START, null);
078 fs.addButton("Markt schließen", ButtonIDs.BTN_END, null);
079 fs.addButton("Zum nächsten Tag", ButtonIDs.BTN_NEXT, null);
080 fs.getButton(ButtonIDs.BTN_START).setEnabled(SMarket.hasTimeAdvanced());
081 fs.getButton(ButtonIDs.BTN_END).setEnabled(SMarket.isOpen());
082 fs.getButton(ButtonIDs.BTN_NEXT).setVisible(!SMarket.isOpen());
083 }
084 });
085 SMarket.addEventListener(new MarketEventAdapter() {
086 /**
087 * ID for serialization.
088 */
089 private static final long serialVersionUID = 19465954596631138L;
090
091 public void notifyOnMarketClosing() {
092 jb.setText(TOBECLOSED);
093 };
094
095 public void notifyOnMarketNotClosing() {
096 jb.setText(OPEN);
097 }
098
099 public void marketClosed() {
100 jb.setEnabled(false);
101 jb.setVisible(false);
102 getButton(ButtonIDs.BTN_END).setEnabled(false);
103 getButton(ButtonIDs.BTN_NEXT).setVisible(true);
104 }
105
106 public void marketOpened() {
107 jb.setEnabled(true);
108 jb.setVisible(true);
109 jb.setText("Feierabend ankündigen");
110 getButton(ButtonIDs.BTN_START).setEnabled(false);
111 getButton(ButtonIDs.BTN_END).setEnabled(true);
112 getButton(ButtonIDs.BTN_NEXT).setVisible(false);
113 }
114
115 public void timeAdvanced() {
116 getButton(ButtonIDs.BTN_START).setEnabled(true);
117 }
118
119 public void workerInformationChanged() {
120 }
121 });
122 }
123 }
124