001    package market.stdform;
002    
003    import market.UCustomer;
004    import market.UMUserBase;
005    import sale.FormSheet;
006    import sale.FormSheetContentCreator;
007    import users.UserManagerFilter;
008    import users.stdforms.UserTableFormSheet;
009    import util.swing.AbstractTableEntryDescriptor;
010    
011    /**
012     * This FormSheet displays all customers of the market in a table. Customers can be selected for a
013     * detailed view or for deletion.
014     */
015    public class FSManagerCustomerOverview extends UserTableFormSheet {
016    
017        /**
018             * ID for serialization.
019             */
020            private static final long serialVersionUID = -5619460852506628072L;
021    
022            /**
023         * Creates a {@link UserTableFormSheet}. The look of the table is
024         * defined by the {@link TEDManagerCustomerOverview}.
025         */
026        public FSManagerCustomerOverview() {
027            super("Kunden", new UserManagerFilter(UMUserBase.getGlobalBase().getCustomers()),
028                    null, null, null, new TEDManagerCustomerOverview());
029            addContentCreator(new FormSheetContentCreator() {
030                            private static final long serialVersionUID = -4534547435685302813L;
031                            public void createFormSheetContent(final FormSheet fs) {
032                    fs.removeAllButtons();
033                    fs.addButton("Daten bearbeiten", ButtonIDs.BTN_EDIT, null);
034                    fs.addButton("Geschäftsbeziehung beenden", ButtonIDs.BTN_DELETE, null);
035                }
036            });
037        }
038    }
039    
040    /**
041     * The {@link util.swing.TableEntryDescriptor} used by {@link FSManagerCustomerOverview}.
042     */
043    class TEDManagerCustomerOverview extends AbstractTableEntryDescriptor {
044    
045        /**
046             * ID for serialization.
047             */
048            private static final long serialVersionUID = -4781479875423197734L;
049    
050            /**
051         * @return the number of the table's columns.
052         */
053        public int getColumnCount() {
054            return 2;
055        }
056    
057        /**
058         * @param nIndex the affected column.
059         * @return columns' names.
060         */
061        public String getColumnName(int nIndex) {
062            return (new String[]{"Name", "Firma"}) [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 String.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            UCustomer usr = (UCustomer)oRecord;
080            switch (nIndex) {
081                case 0:
082                    return usr.getSurname() + ", " + usr.getFirstName();
083                case 1:
084                    return usr.getCompany();
085            }
086            return null;
087        }
088    
089    
090        /**
091         * Determines if columns can be sorted by the user.
092         *
093         * @param nIndex the affected column.
094         * @return <ul><li>true: columns can be sorted</li>
095         *              <li>false: columns cannot be sorted</li></ul>
096         */
097        public boolean canSortByColumn(int nIndex) {
098            return true;
099        }
100    
101    }