OpenConcerto

Dépôt officiel du code source de l'ERP OpenConcerto
sonarqube

svn://code.openconcerto.org/openconcerto

Révision

Révision 112 | Détails | Différence avec la précédente | Dernière modification | Afficher le Journal

Révision Auteur Ligne Num. Ligne
112 ilm 1
package org.openconcerto.modules.operation;
2
 
3
import java.awt.BorderLayout;
4
import java.awt.FlowLayout;
5
import java.awt.event.ActionEvent;
6
import java.awt.event.ActionListener;
150 ilm 7
import java.util.Date;
112 ilm 8
import java.util.List;
9
 
10
import javax.swing.JButton;
11
import javax.swing.JCheckBox;
12
import javax.swing.JPanel;
13
 
14
import org.jopencalendar.ui.MultipleDayView;
15
import org.openconcerto.erp.config.ComptaPropsConfiguration;
16
import org.openconcerto.sql.element.SQLElement;
17
import org.openconcerto.sql.model.SQLRowAccessor;
18
import org.openconcerto.sql.model.SQLTableEvent;
19
import org.openconcerto.sql.model.SQLTableModifiedListener;
20
import org.openconcerto.sql.users.User;
21
import org.openconcerto.sql.view.EditFrame;
22
import org.openconcerto.sql.view.EditPanel.EditMode;
23
import org.openconcerto.ui.FrameUtil;
24
 
25
/**
26
 * Planning d'un jour, pour chaque personne
27
 */
28
public class DailyOperationCalendarPanel extends AbstractCalendarPanel {
29
 
30
    private MultipleDayCalendarWithToolBar calendar;
31
 
32
    private OperationDayView mDayView;
33
 
150 ilm 34
    public DailyOperationCalendarPanel(final ComptaPropsConfiguration conf) {
112 ilm 35
        this.setLayout(new BorderLayout());
36
        JPanel toolbar = new JPanel();
37
        toolbar.setLayout(new FlowLayout(FlowLayout.LEFT));
38
        toolbar.setOpaque(false);
39
 
40
        //
41
        final JButton bCreate = new JButton("Ajouter une intervention");
42
        bCreate.setOpaque(false);
43
        toolbar.add(bCreate);
44
        //
150 ilm 45
        final JButton bPlan = new JButton("Planifier des interventions");
112 ilm 46
        bPlan.setOpaque(false);
47
        toolbar.add(bPlan);
48
        //
49
        this.add(toolbar, BorderLayout.NORTH);
50
 
51
        mDayView = new OperationDayView();
52
        calendar = new MultipleDayCalendarWithToolBar(mDayView);
53
        final MultipleDayView w = calendar.getWeekView();
150 ilm 54
 
55
        final JPanel filters = createFilterPanel(conf, w);
56
        split.setLeftComponent(filters);
112 ilm 57
        w.setHourRange(HOUR_START, HOUR_STOP);
58
 
59
        split.setRightComponent(calendar);
60
        split.setDividerLocation(250);
61
        this.add(split, BorderLayout.CENTER);
150 ilm 62
        conf.getRootSociete().getTable("CALENDAR_ITEM").addTableModifiedListener(new SQLTableModifiedListener() {
112 ilm 63
 
64
            @Override
65
            public void tableModified(SQLTableEvent evt) {
66
                calendar.reload();
67
            }
68
 
69
        });
70
 
150 ilm 71
        final SQLElement element = conf.getDirectory().getElement(ModuleOperation.TABLE_OPERATION);
112 ilm 72
        // Create a new operation
73
        bCreate.addActionListener(new ActionListener() {
74
 
75
            @Override
76
            public void actionPerformed(ActionEvent e) {
77
                final OperationSQLComponent comp = new OperationSQLComponent(element) {
78
                    @Override
79
                    public void select(SQLRowAccessor r) {
80
                        super.select(r);
81
                        setDate(DailyOperationCalendarPanel.this.mDayView.getDate());
82
                    }
83
                };
84
                final EditFrame f = new EditFrame(comp, EditMode.CREATION);
85
 
86
                FrameUtil.show(f);
87
            }
88
        });
89
        // Plan multiple operations
90
        bPlan.addActionListener(new ActionListener() {
91
 
92
            @Override
93
            public void actionPerformed(ActionEvent e) {
94
                final MultiOperationSQLComponent comp = new MultiOperationSQLComponent(element);
95
                final EditFrame f = new EditFrame(comp, EditMode.CREATION);
150 ilm 96
                f.setTitle("Planification d'interventions");
112 ilm 97
                FrameUtil.show(f);
98
            }
99
        });
100
        calendar.scrollTo(8);
101
 
150 ilm 102
        w.setPopupMenuProvider(new OperationMenuProvider());
103
        this.beginStateSaving(conf.getConfDir(), w);
112 ilm 104
    }
105
 
106
    public void reload() {
107
        this.mDayView.reload();
108
    }
109
 
150 ilm 110
    @Override
111
    protected void setFilter(final JCheckBox check1, final JCheckBox check2, List<User> users, List<String> states) {
112
        mDayView.setFilter(users, states, check1.isSelected(), check2.isSelected());
113
    }
112 ilm 114
 
150 ilm 115
    @Override
116
    protected Date getViewDate() {
117
        return this.calendar.getDate();
118
    }
112 ilm 119
 
150 ilm 120
    @Override
121
    protected void setViewDate(Date d) {
122
        this.calendar.setDate(d);
112 ilm 123
    }
124
}