001 package market; 002 003 import market.event.MarketEventListener; 004 import market.resource.IconSetter; 005 import market.stdform.FSEmpty; 006 import market.stdform.FSWorkerDefault; 007 import sale.FormSheet; 008 import sale.JDisplayFrame; 009 import sale.SalesPoint; 010 import sale.events.FormSheetEvent; 011 import data.ooimpl.DataBasketImpl; 012 013 /** 014 * A SalesPoint that can react to MarketEvents. 015 */ 016 public class SPListenable extends SalesPoint implements MarketEventListener { 017 018 /** 019 * @param s the SalesPoints name. 020 */ 021 public SPListenable(String s) { 022 super(s); 023 attach(new DataBasketImpl()); 024 } 025 026 /** 027 * @return the default FormSheet. 028 */ 029 protected FormSheet getDefaultFormSheet() { 030 return new FSEmpty(); 031 } 032 033 /** 034 * Sets the image icon when a SalesPoint is opened. 035 * @param e the fired Event 036 */ 037 public void formSheetSet(FormSheetEvent e) { 038 super.formSheetSet(e); 039 IconSetter.setIcon((JDisplayFrame)getDisplay()); 040 } 041 042 /** 043 * Sets SalesPoint's icon after it is loaded from persistence file. 044 */ 045 public void resume() { 046 super.resume(); 047 IconSetter.setIcon((JDisplayFrame)getDisplay()); 048 } 049 050 /** 051 * @return <code>true</code> if no SaleProcess is running, otherwise <code>false</code>. 052 * This forces the user to quit the SaleProcess before he closes the SalesPoint. 053 */ 054 protected boolean onCanQuit() { 055 return getCurrentProcess() == null; 056 } 057 058 /** 059 * Reaction on event: The market is about to close. 060 */ 061 public void notifyOnMarketClosing() { 062 getDisplay().getFormSheet().setCaption(SMarket.MARKET_CLOSES_SHORT); 063 } 064 065 /** 066 * Reaction en event: The market isn't about to close anymore. 067 */ 068 public void notifyOnMarketNotClosing() { 069 getDisplay().getFormSheet().setCaption(SMarket.MARKET_CLOSES_NOT); 070 } 071 072 /** 073 * Reaction on event: The market has just closed. 074 */ 075 public void marketClosed() { 076 getDisplay().getFormSheet().setCaption(SMarket.MARKET_CLOSED); 077 } 078 079 /** 080 * Reaction on event: The market has just opened. 081 */ 082 public void marketOpened() { 083 getDisplay().getFormSheet().setCaption(SMarket.MARKET_OPENED); 084 } 085 086 /** 087 * Reaction on event: The time has advanced. 088 */ 089 public void timeAdvanced() { 090 } 091 092 /** 093 * Reaction on event: A new order for workers arrived or a worker logged on. 094 */ 095 public void workerInformationChanged(){ 096 if(this.getCurrentProcess() instanceof SProcessWorker){ 097 if(this.getDisplay().getFormSheet() instanceof FSWorkerDefault){ 098 ((SProcessWorker)this.getCurrentProcess()).getInitialGate(); 099 } 100 } 101 } 102 }