001 package market.stdform; 002 003 import java.util.Comparator; 004 005 import market.CIOpenPurchaseOrders; 006 import market.Conversions; 007 import market.SMarket; 008 import market.swing.CmpOpoNumbers; 009 import sale.FormSheet; 010 import sale.FormSheetContentCreator; 011 import util.swing.AbstractTableEntryDescriptor; 012 import data.stdforms.SingleTableFormSheet; 013 014 /** 015 * This FormSheet displays an overview of the market's purchases that have not yet arrived. 016 */ 017 public class FSManagerOpenPurchaseOrderMain { 018 019 /** 020 * Creates a {@link SingleTableFormSheet}. The look of the table is defined by the 021 * {@link TEDManagerOpenPurchaseOrderMain}. 022 * 023 * @return the created SingleTableFormSheet. 024 */ 025 public static SingleTableFormSheet create() { 026 027 final SingleTableFormSheet stfs = SingleTableFormSheet.create( 028 "Erwartete Lieferungen", 029 SMarket.getOpenPurchaseOrder(), 030 null, //DataBasket 031 new TEDManagerOpenPurchaseOrderMain() //TED 032 ); 033 stfs.addContentCreator(new FormSheetContentCreator() { 034 public void createFormSheetContent(final FormSheet fs) { 035 fs.removeAllButtons(); 036 fs.addButton("Details", ButtonIDs.BTN_DETAIL, null); 037 } 038 }); 039 return stfs; 040 } 041 } 042 043 /** 044 * The {@link util.swing.TableEntryDescriptor} used by {@link FSManagerOpenPurchaseOrderMain}. 045 */ 046 class TEDManagerOpenPurchaseOrderMain extends AbstractTableEntryDescriptor { 047 048 private Comparator sortValue = new CmpOpoNumbers(); 049 050 /** 051 * @return the number of the table's columns. 052 */ 053 public int getColumnCount() { 054 return 3; 055 } 056 057 /** 058 * @param nIndex the affected column. 059 * @return columns' names. 060 */ 061 public String getColumnName(int nIndex) { 062 return (new String[]{ "Bestelldatum", "Gesamtsumme", "Tage bis Ankunft"}) [nIndex]; 063 } 064 065 /** 066 * @param nIndex the affected column. 067 * @return columns' classes. They indicate how column's values should be aligned. 068 */ 069 public Class getColumnClass (int nIndex) { 070 return Number.class; 071 } 072 073 /** 074 * @param oRecord the affected table record. 075 * @param nIndex the affected column. 076 * @return columns' values 077 */ 078 public Object getValueAt(Object oRecord, int nIndex) { 079 CIOpenPurchaseOrders opo = (CIOpenPurchaseOrders)oRecord; 080 switch (nIndex) { 081 case 0: return opo.getName(); 082 case 1: return Conversions.doubleToCurrency(opo.getOrdersValue().doubleValue(), " Euro"); 083 case 2: return opo.getValue(); 084 } 085 return null; 086 } 087 088 /** 089 * Determines if columns can be sorted by the user. 090 * 091 * @param nIndex the affected column. 092 * @return <ul><li>true: columns can be sorted</li> 093 * <li>false: columns cannot be sorted</li></ul> 094 */ 095 public boolean canSortByColumn(int nIndex) { 096 return true; 097 } 098 099 /** 100 * @param nIndex the affected column. 101 * @return the {@link Comparator} to be used when sorting the column. 102 */ 103 public Comparator getColumnOrder(int nIndex) { 104 switch(nIndex) { 105 case 0: return null; 106 case 1: return sortValue; 107 case 2: return null; 108 } 109 return null; 110 } 111 }