001 package market.stdform;
002
003 import java.util.Hashtable;
004
005 import market.CIArticle;
006 import market.Conversions;
007 import sale.FormSheet;
008 import sale.FormSheetContentCreator;
009 import util.swing.AbstractTableEntryDescriptor;
010 import data.CountingStock;
011 import data.stdforms.SingleTableFormSheet;
012 import data.swing.CountingStockTableModel;
013
014 /**
015 * This FormSheet displays the order of a customer in a table
016 * with one further column to tick off the articles, it is used by workers to execute the order.
017 */
018 public class FSWorkerOrder{
019
020 /**
021 * @param customer the customer who`s order gets executed.
022 * @param order the order that gets executed.
023 * @param done Hashtable with boolean values used for the tick-off column.
024 */
025 public static SingleTableFormSheet getOrderTable(String customer, CountingStock order, final Hashtable done){
026
027 AbstractTableEntryDescriptor ted = new AbstractTableEntryDescriptor(){
028 public int getColumnCount() {
029 return 3;
030 }
031
032 public String getColumnName(int nIdx) {
033 return (new String[]{ "Artikel", "Anzahl", "Erledigt"}) [nIdx];
034 }
035
036 public Class getColumnClass(int nIdx) {
037 return (new Class[] {String.class, Number.class, Boolean.class}) [nIdx];
038 }
039
040 public Object getValueAt(Object oRecord, int nIdx) {
041 CIArticle article = Conversions.recordToCIArticle(oRecord);
042 int count = ((CountingStockTableModel.Record)oRecord).getCount();
043 switch (nIdx) {
044 case 0: return article.getArticleName();
045 case 1: return new Integer(count).toString();
046 case 2: return done.get(article);
047 }
048 return null;
049 }
050
051 public boolean canSortByColumn(int nIndex) {
052 return false;
053 }
054
055 public boolean isElementEditable(Object oRecord, int nIdx) {
056 return nIdx == 2;
057 }
058
059 public void setValueAt(Object oRecord, int nIndex, Object oValue) {
060 if (nIndex == 2) {
061 done.put(Conversions.recordToCIArticle(oRecord), oValue);
062 }
063 }
064 };
065
066 final SingleTableFormSheet stfs = SingleTableFormSheet.create(
067 "Kundenauftrag von "+ customer,
068 order,
069 null,
070 ted);
071
072 stfs.addContentCreator(new FormSheetContentCreator() {
073 protected void createFormSheetContent(final FormSheet fs) {
074 fs.removeAllButtons();
075 fs.addButton("Auftrag abschliessen", ButtonIDs.BTN_ACCEPT, null);
076 fs.addButton("Fehlbestand", ButtonIDs.BTN_EDIT, null);
077 fs.addButton("Zurück", ButtonIDs.BTN_BACK, null);
078 }
079 });
080 return stfs;
081 }
082 }