001 package videoautomat.gui; 002 003 import java.util.Comparator; 004 005 import javax.swing.Box; 006 import javax.swing.BoxLayout; 007 import javax.swing.JComponent; 008 import javax.swing.JLabel; 009 import javax.swing.JPanel; 010 011 import sale.FormSheet; 012 import sale.FormSheetContentCreator; 013 import sale.UIGate; 014 import util.swing.TableEntryDescriptor; 015 import data.DataBasket; 016 import data.StoringStock; 017 import data.ooimpl.MoneyBagImpl; 018 import data.stdforms.SingleTableFormSheet; 019 import data.stdforms.TwoTableFormSheet; 020 import data.stdforms.twotableformsheet.SSSSStrategy; 021 022 /** 023 * This class implements graphical-user-interface elements for the SaleProcessHandBack 024 */ 025 public class HandBack { 026 027 /** 028 * An ID to identify the <code>FormButton</code> give back 029 */ 030 public static final int FB_GIVEBACK = 1; 031 032 /** 033 * An ID to identify the <code>FormButton</code> cancel 034 */ 035 public static final int FB_CANCEL = 2; 036 037 /** 038 * @return a <code>TwoTableFormSheet</code> used to display the already rented videos. 039 * @param ss_source 040 * the source <code>Stock</code> containing the videos of the user 041 * @param ss_dest 042 * the destination <code>Stock</code> 043 * @param db 044 * the <code>DataBasket</code> used for the transactions 045 * @param uig 046 * the <code>UIGate</code> this <code>FormSheet</code> is displayed 047 * @param cmp_source 048 * the <code>Comparator</code> for the source <code>Stock</code> 049 * @param cmp_dest 050 * the <code>Comparator</code> for the destination <code>Stock</code> 051 * @param ted_source 052 * the <code>TableEntryDescriptor</code> for the source <code>Stock</code> 053 * @param ted_dest 054 * the <code>TableEntryDescriptor</code> for the destination <code>Stock</code> 055 * @param sssss 056 * the <code>SSSSStrategy</code> to be used 057 * 058 */ 059 public static TwoTableFormSheet getRentedVideosFormSheet( 060 StoringStock ss_source, 061 StoringStock ss_dest, 062 DataBasket db, 063 UIGate uig, 064 Comparator cmp_source, 065 Comparator cmp_dest, 066 TableEntryDescriptor ted_source, 067 TableEntryDescriptor ted_dest, 068 SSSSStrategy sssss) { 069 070 TwoTableFormSheet ttfs = 071 TwoTableFormSheet.create( 072 "Give back a video", 073 ss_source, 074 ss_dest, 075 db, 076 uig, 077 cmp_source, 078 cmp_dest, 079 ted_source, 080 ted_dest, 081 sssss); 082 083 ttfs.addContentCreator(new FormSheetContentCreator() { 084 public void createFormSheetContent(FormSheet fs) { 085 fs.removeAllButtons(); 086 fs.addButton("Give back", FB_GIVEBACK, null); 087 fs.addButton("Cancel", FB_CANCEL, null); 088 } 089 }); 090 return ttfs; 091 } 092 093 /** 094 * @return a <code>FormSheet</code> used to display change the user gets back. 095 * @param mb_money 096 * the <code>MoneyBag</code> containing the change that has to be displayed 097 * @param uig 098 * the <code>UIGate</code> this <code>FormSheet</code> is displayed 099 * @param db 100 * the <code>DataBasket</code> used for the transactions 101 * @param value 102 * the <code>String</code> that will be displayed as the value that the user gets back 103 * 104 */ 105 public static FormSheet getChangeFormSheet( 106 MoneyBagImpl mb_money, 107 UIGate uig, 108 DataBasket db, 109 final String value) { 110 SingleTableFormSheet stfs = 111 SingleTableFormSheet.create("Here is your change!", mb_money, uig, db); 112 stfs.addContentCreator(new FormSheetContentCreator() { 113 public void createFormSheetContent(FormSheet fs) { 114 JComponent jc = new JPanel(); 115 jc.setLayout(new BoxLayout(jc, BoxLayout.Y_AXIS)); 116 jc.add(Box.createVerticalStrut(10)); 117 jc.add(new JLabel("You get back: " + value)); 118 jc.add(Box.createVerticalStrut(10)); 119 jc.add(fs.getComponent()); 120 fs.setComponent(jc); 121 fs.removeButton(FormSheet.BTNID_CANCEL); 122 } 123 }); 124 return stfs; 125 } 126 }