001    package market.stdform;
002    
003    import java.awt.GridBagConstraints;
004    import java.awt.GridBagLayout;
005    import java.awt.GridLayout;
006    
007    import javax.swing.Box;
008    import javax.swing.BoxLayout;
009    import javax.swing.JLabel;
010    import javax.swing.JPanel;
011    
012    import market.Conversions;
013    import market.SMarket;
014    import market.VCPositiveDouble;
015    import market.VCPositiveInteger;
016    import market.swing.ComponentFactory;
017    import market.swing.JTFCheckable;
018    import sale.FormSheet;
019    import sale.FormSheetContentCreator;
020    
021    /**
022     * This FormSheet is used by the manager to set special calculation variables such as the maximal discount
023     * for customers or the monthly costs of the market.
024     */
025    public class FSManagerOptions extends FormSheet {
026    
027        /**
028             * ID for serialization.
029             */
030            private static final long serialVersionUID = 6718181117229432033L;
031            
032            public static final int JTFC_DISCOUNT_RANGE = 0;
033        public static final int JTFC_DISCOUNT_VALUE = 1;
034        public static final int JTFC_MAX_DISCOUNT = 2;
035        public static final int JTFC_FRACTION_OF_WAGES = 3;
036        public static final int JTFC_SENIORITY = 4;
037        public static final int JTFC_COSTS = 5;
038    
039        private JTFCheckable jtfcDiscountRange = new JTFCheckable(
040                JTFC_DISCOUNT_RANGE, new VCPositiveInteger("Anrechnung"), 10);
041        private JTFCheckable jtfcDiscountValue = new JTFCheckable(
042                JTFC_DISCOUNT_VALUE, new VCPositiveInteger("Umsatz"), 10);
043        private JTFCheckable jtfcMaxDiscount = new JTFCheckable(
044                JTFC_MAX_DISCOUNT, new VCPositiveDouble("Maximaler Rabatt"), 10);
045        private JTFCheckable jtfcFractionOfWages = new JTFCheckable(
046                JTFC_FRACTION_OF_WAGES, new VCPositiveDouble("Lohnanteil"), 10);
047        private JTFCheckable jtfcSeniority = new JTFCheckable(
048                JTFC_SENIORITY, new VCPositiveDouble("Betriebszugehörigkeit"), 10);
049        private JTFCheckable jtfcCosts = new JTFCheckable(
050                JTFC_COSTS, new VCPositiveDouble("Sonstige Kosten"), 10);
051    
052        public FSManagerOptions() {
053            super("Einstellungen", null);
054            addContentCreator(new FormSheetContentCreator() {
055                            private static final long serialVersionUID = -7780200572237344151L;
056                            protected void createFormSheetContent(FormSheet fs) {
057                        //define components
058                        JPanel jpMain = new JPanel();
059                        JPanel jpData = new JPanel();
060                        JPanel jpDiscount = new JPanel();
061                        JPanel jpEmployees = new JPanel();
062                        JPanel jpCostCentres = new JPanel();
063                        GridBagLayout gridBag = new GridBagLayout();
064                        GridBagConstraints c = new GridBagConstraints();
065                        jpMain.setLayout(gridBag);
066                            c.weighty = 1;
067                            c.anchor = GridBagConstraints.CENTER;
068                        gridBag.setConstraints(jpData, c);
069            
070                        jpMain.add(jpData);
071                            jpData.setLayout(new BoxLayout(jpData, BoxLayout.Y_AXIS));
072                            jpData.add(jpDiscount);
073                                jpDiscount.setLayout(new BoxLayout(jpDiscount, BoxLayout.Y_AXIS));
074                                jpDiscount.setBorder(ComponentFactory.createInsetBorder("Kundenrabatt"));
075                                jpDiscount.setLayout(new GridLayout(3, 3));
076                                jpDiscount.add(new JLabel("Anrechnung:  "));
077                                jpDiscount.add(jtfcDiscountRange);
078                                jpDiscount.add(new JLabel("   Monate"));
079                                jpDiscount.add(new JLabel("Umsatz für 1% Rabatt:  "));
080                                jpDiscount.add(jtfcDiscountValue);
081                                jpDiscount.add(new JLabel("   Euro"));
082                                jpDiscount.add(new JLabel("Maximaler Rabatt:  "));
083                                jpDiscount.add(jtfcMaxDiscount);
084                                jpDiscount.add(new JLabel("   Prozent"));
085                            jpData.add(Box.createVerticalStrut(10));
086                            jpData.add(jpEmployees);
087                                jpEmployees.setLayout(new GridLayout(2, 3));
088                                jpEmployees.setBorder(ComponentFactory.createInsetBorder(
089                                        "Faktoren zur Berechnung des Entlassungsausgleichs"));
090                                jpEmployees.add(new JLabel("Lohnanteil:  "));
091                                jpEmployees.add(jtfcFractionOfWages);
092                                jpEmployees.add(new JLabel("   Prozent"));
093                                jpEmployees.add(new JLabel("Betriebszugehörigkeit:  "));
094                                jpEmployees.add(jtfcSeniority);
095                                jpEmployees.add(new JLabel("   Prozent"));
096                            jpData.add(Box.createVerticalStrut(10));
097                            jpData.add(jpCostCentres);
098                                jpCostCentres.setBorder(ComponentFactory.createInsetBorder("Kostenstellen"));
099                                jpCostCentres.setLayout(new GridLayout(1, 3));
100                                jpCostCentres.add(new JLabel("Sonstige Kosten: "));
101                                jpCostCentres.add(jtfcCosts);
102                                jpCostCentres.add(new JLabel("   Euro"));
103            
104                        fs.setComponent(jpMain);
105                        fs.removeAllButtons();
106                        fs.addButton("Übernehmen", ButtonIDs.BTN_ACCEPT, null);
107            
108                        jtfcDiscountRange.setText(Integer.toString(SMarket.getOptions().getDiscountRange()));
109                        jtfcDiscountValue.setText(Integer.toString(SMarket.getOptions().getDiscountValue()));
110                        jtfcMaxDiscount.setText(Conversions.fixedDecimal(100 * SMarket.getOptions().getMaxDiscount(), 3));
111                        jtfcFractionOfWages.setText(Conversions.fixedDecimal(100 * SMarket.getOptions().
112                                getFractionOfWages(), 3));
113                        jtfcSeniority.setText(Conversions.fixedDecimal(100 * SMarket.getOptions().getTimeOfEmployment(), 3));
114                        jtfcCosts.setText(Conversions.doubleToCurrency(SMarket.getMonthlySalesStats().getCosts()));
115                    }
116                    });
117        }
118    
119    }