OpenConcerto

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

svn://code.openconcerto.org/openconcerto

Rev

Rev 142 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 142 Rev 156
Line 11... Line 11...
11
 * When distributing the software, include this License Header Notice in each file.
11
 * When distributing the software, include this License Header Notice in each file.
12
 */
12
 */
13
 
13
 
14
 package org.openconcerto.erp.preferences;
14
 package org.openconcerto.erp.preferences;
15
 
15
 
-
 
16
import org.openconcerto.erp.config.ComptaPropsConfiguration;
16
import org.openconcerto.erp.generationDoc.AbstractLocalTemplateProvider;
17
import org.openconcerto.erp.generationDoc.AbstractLocalTemplateProvider;
17
import org.openconcerto.erp.generationDoc.DefaultLocalTemplateProvider;
18
import org.openconcerto.erp.generationDoc.DefaultLocalTemplateProvider;
18
import org.openconcerto.erp.generationDoc.TemplateManager;
19
import org.openconcerto.erp.generationDoc.TemplateManager;
19
import org.openconcerto.erp.generationDoc.TemplateProvider;
20
import org.openconcerto.erp.generationDoc.TemplateProvider;
20
import org.openconcerto.sql.users.UserManager;
-
 
21
import org.openconcerto.sql.users.rights.UserRightsManager;
21
import org.openconcerto.sql.users.rights.UserRightsManager;
22
import org.openconcerto.ui.DefaultGridBagConstraints;
22
import org.openconcerto.ui.DefaultGridBagConstraints;
23
import org.openconcerto.ui.preferences.DefaultPreferencePanel;
23
import org.openconcerto.ui.preferences.DefaultPreferencePanel;
24
import org.openconcerto.ui.table.TablePopupMouseListener;
24
import org.openconcerto.ui.table.TablePopupMouseListener;
25
import org.openconcerto.utils.ExceptionHandler;
25
import org.openconcerto.utils.ExceptionHandler;
Line 46... Line 46...
46
import javax.swing.JPopupMenu;
46
import javax.swing.JPopupMenu;
47
import javax.swing.JScrollPane;
47
import javax.swing.JScrollPane;
48
import javax.swing.JTable;
48
import javax.swing.JTable;
49
import javax.swing.JTextField;
49
import javax.swing.JTextField;
50
import javax.swing.ListSelectionModel;
50
import javax.swing.ListSelectionModel;
51
import javax.swing.SwingUtilities;
-
 
52
import javax.swing.UIManager;
51
import javax.swing.UIManager;
53
import javax.swing.event.ListSelectionEvent;
52
import javax.swing.event.ListSelectionEvent;
54
import javax.swing.event.ListSelectionListener;
53
import javax.swing.event.ListSelectionListener;
55
import javax.swing.table.DefaultTableCellRenderer;
54
import javax.swing.table.DefaultTableCellRenderer;
56
 
55
 
57
public class TemplatePreferencePanel extends DefaultPreferencePanel {
56
public class TemplatePreferencePanel extends DefaultPreferencePanel {
58
 
57
 
59
    private JTextField textTemplate;
58
    private JTextField textTemplate;
60
    private JFileChooser fileChooser = null;
-
 
61
 
59
 
62
    private JButton bModify;
60
    private JButton bModify;
63
    private JButton bUndo;
61
    private JButton bUndo;
64
    private JButton bSync;
62
    private JButton bSync;
65
 
63
 
Line 69... Line 67...
69
        cPanel.weighty = 0;
67
        cPanel.weighty = 0;
70
        cPanel.anchor = GridBagConstraints.WEST;
68
        cPanel.anchor = GridBagConstraints.WEST;
71
        /*******************************************************************************************
69
        /*******************************************************************************************
72
         * Emplacement
70
         * Emplacement
73
         ******************************************************************************************/
71
         ******************************************************************************************/
-
 
72
        if (!ComptaPropsConfiguration.getInstanceCompta().isOnCloud()) {
74
        this.add(new JLabel("Modèles des documents"), cPanel);
73
            this.add(new JLabel("Modèles des documents"), cPanel);
75
        cPanel.gridx++;
74
            cPanel.gridx++;
76
        cPanel.weightx = 1;
75
            cPanel.weightx = 1;
77
        this.textTemplate = new JTextField();
76
            this.textTemplate = new JTextField();
78
        this.add(this.textTemplate, cPanel);
77
            this.add(this.textTemplate, cPanel);
79
 
-
 
-
 
78
            this.textTemplate.setEditable(false);
80
        final JButton buttonTemplate = new JButton("...");
79
            final JButton buttonTemplate = new JButton("...");
81
        cPanel.gridx++;
80
            cPanel.gridx++;
82
        cPanel.weightx = 0;
81
            cPanel.weightx = 0;
83
        cPanel.fill = GridBagConstraints.NONE;
82
            cPanel.fill = GridBagConstraints.NONE;
84
        this.add(buttonTemplate, cPanel);
83
            this.add(buttonTemplate, cPanel);
-
 
84
            buttonTemplate.addActionListener(new ActionListener() {
-
 
85
                public void actionPerformed(ActionEvent e) {
-
 
86
                    final JFileChooser fileChooser = new JFileChooser();
-
 
87
                    fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
-
 
88
                    fileChooser.setCurrentDirectory(new File(TemplatePreferencePanel.this.textTemplate.getText()));
-
 
89
                    if (fileChooser.showDialog(TemplatePreferencePanel.this, "Sélectionner") == JFileChooser.APPROVE_OPTION) {
-
 
90
                        File selectedFile = fileChooser.getSelectedFile();
-
 
91
                        if (selectedFile.exists()) {
-
 
92
                            TemplatePreferencePanel.this.textTemplate.setForeground(UIManager.getColor("TextField.foreground"));
-
 
93
                        } else {
-
 
94
                            TemplatePreferencePanel.this.textTemplate.setForeground(Color.RED);
-
 
95
                        }
-
 
96
                        TemplatePreferencePanel.this.textTemplate.setText(selectedFile.getPath());
-
 
97
                    }
85
 
98
 
-
 
99
                }
-
 
100
            });
-
 
101
        }
86
        final JPanel templates = createTemplateList();
102
        final JPanel templates = createTemplateList();
87
        templates.setOpaque(false);
103
        templates.setOpaque(false);
88
        cPanel.gridy++;
104
        cPanel.gridy++;
89
        cPanel.fill = GridBagConstraints.BOTH;
105
        cPanel.fill = GridBagConstraints.BOTH;
90
        cPanel.weightx = 1;
106
        cPanel.weightx = 1;
91
        cPanel.weighty = 1;
107
        cPanel.weighty = 1;
92
        cPanel.gridwidth = 3;
108
        cPanel.gridwidth = 3;
93
        cPanel.gridx = 0;
109
        cPanel.gridx = 0;
94
        this.add(templates, cPanel);
110
        this.add(templates, cPanel);
95
 
111
 
96
        buttonTemplate.addActionListener(new ActionListener() {
-
 
97
            public void actionPerformed(ActionEvent e) {
-
 
98
                directoryChoose("template");
-
 
99
            }
-
 
100
        });
-
 
101
        this.textTemplate.setEditable(false);
-
 
102
 
-
 
103
        setValues();
112
        setValues();
104
    }
113
    }
105
 
114
 
106
    private JPanel createTemplateList() {
115
    private JPanel createTemplateList() {
107
        JPanel p = new JPanel();
116
        JPanel p = new JPanel();
Line 116... Line 125...
116
        bUndo = new JButton("Rétablir");
125
        bUndo = new JButton("Rétablir");
117
        bUndo.setEnabled(false);
126
        bUndo.setEnabled(false);
118
        bUndo.setOpaque(false);
127
        bUndo.setOpaque(false);
119
        c.gridx++;
128
        c.gridx++;
120
        p.add(bUndo, c);
129
        p.add(bUndo, c);
-
 
130
        if (ComptaPropsConfiguration.getInstanceCompta().isOnCloud()) {
-
 
131
            bSync = new JButton("Synchroniser vers le cloud");
-
 
132
        } else {
121
        bSync = new JButton("Synchroniser");
133
            bSync = new JButton("Synchroniser");
-
 
134
        }
122
        bSync.setEnabled(false);
135
        bSync.setEnabled(false);
123
        bSync.setOpaque(false);
136
        bSync.setOpaque(false);
124
        if (!UserRightsManager.getCurrentUserRights().haveRight("SYNC_TEMPLATE")) {
137
        if (!UserRightsManager.getCurrentUserRights().haveRight("SYNC_TEMPLATE")) {
125
            bSync.setToolTipText("Vous n'avez pas les droits suffisants pour synchroniser les modèles!");
138
            bSync.setToolTipText("Vous n'avez pas les droits suffisants pour synchroniser les modèles!");
126
        }
139
        }
Line 173... Line 186...
173
                final Component tableCellRendererComponent = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
186
                final Component tableCellRendererComponent = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
174
                TemplateProvider provider = dm.getTemplateProvider(row);
187
                TemplateProvider provider = dm.getTemplateProvider(row);
175
                if (provider instanceof AbstractLocalTemplateProvider) {
188
                if (provider instanceof AbstractLocalTemplateProvider) {
176
                    final String templateId = dm.getTemplateId(row);
189
                    final String templateId = dm.getTemplateId(row);
177
                    File f = ((AbstractLocalTemplateProvider) provider).getFileTemplate(templateId, null, null);
190
                    File f = ((AbstractLocalTemplateProvider) provider).getFileTemplate(templateId, null, null);
-
 
191
                    String path = "invalid path";
-
 
192
                    if (f != null) {
-
 
193
                        try {
-
 
194
                            path = f.getCanonicalPath();
-
 
195
                        } catch (IOException e) {
-
 
196
                            path = f.getAbsolutePath();
-
 
197
                        }
-
 
198
                    }
178
                    if (f == null || !f.exists()) {
199
                    if (f == null || !f.exists()) {
179
                        tableCellRendererComponent.setBackground(Color.ORANGE);
200
                        tableCellRendererComponent.setBackground(Color.ORANGE);
180
                        if (f != null) {
201
                        if (f != null) {
181
                            setToolTipText(f.getAbsolutePath() + " not found");
202
                            setToolTipText(path + " not found");
182
                        } else {
203
                        } else {
183
                            setToolTipText("no file for template " + templateId);
204
                            setToolTipText("no file for template " + templateId);
184
                        }
205
                        }
185
                    } else {
206
                    } else {
186
                        if (isSelected) {
207
                        if (isSelected) {
187
                            tableCellRendererComponent.setBackground(table.getSelectionBackground());
208
                            tableCellRendererComponent.setBackground(table.getSelectionBackground());
188
                        } else {
209
                        } else {
189
                            tableCellRendererComponent.setBackground(table.getBackground());
210
                            tableCellRendererComponent.setBackground(table.getBackground());
190
                        }
211
                        }
191
                        setToolTipText(f.getAbsolutePath());
212
                        setToolTipText(path);
192
                    }
213
                    }
193
                }
214
                }
194
                return tableCellRendererComponent;
215
                return tableCellRendererComponent;
195
            }
216
            }
196
        });
217
        });
Line 254... Line 275...
254
 
275
 
255
        return p;
276
        return p;
256
    }
277
    }
257
 
278
 
258
    public void storeValues() {
279
    public void storeValues() {
259
 
-
 
-
 
280
        if (this.textTemplate != null) {
260
        final File z = new File(".");
281
            final File z = new File(".");
261
        final File f = new File(this.textTemplate.getText());
282
            final File f = new File(this.textTemplate.getText());
262
        try {
283
            try {
263
            TemplateNXProps.getInstance().setProperty("LocationTemplate", FileUtils.relative(z, f));
284
                TemplateNXProps.getInstance().setProperty("LocationTemplate", FileUtils.relative(z, f));
264
            final DefaultLocalTemplateProvider provider = new DefaultLocalTemplateProvider();
285
                final DefaultLocalTemplateProvider provider = new DefaultLocalTemplateProvider();
Line 270... Line 291...
270
            e.printStackTrace();
291
                e.printStackTrace();
271
        }
292
            }
272
 
293
 
273
        TemplateNXProps.getInstance().store();
294
            TemplateNXProps.getInstance().store();
274
    }
295
        }
-
 
296
    }
275
 
297
 
276
    public void restoreToDefaults() {
298
    public void restoreToDefaults() {
277
 
299
 
278
    }
300
    }
279
 
301
 
280
    public String getTitleName() {
302
    public String getTitleName() {
281
        return "Emplacement des modèles";
303
        return "Emplacement des modèles";
282
    }
304
    }
283
 
305
 
284
    private void setValues() {
306
    private void setValues() {
-
 
307
        if (this.textTemplate != null) {
285
        try {
308
            try {
286
            final File f = new File(TemplateNXProps.getInstance().getStringProperty("LocationTemplate"));
309
                final File f = new File(TemplateNXProps.getInstance().getStringProperty("LocationTemplate"));
287
            if (f.exists()) {
310
                if (f.exists()) {
288
                this.textTemplate.setForeground(UIManager.getColor("TextField.foreground"));
311
                    this.textTemplate.setForeground(UIManager.getColor("TextField.foreground"));
289
            } else {
312
                } else {
Line 293... Line 316...
293
 
316
 
294
        } catch (IOException e) {
317
            } catch (IOException e) {
295
            e.printStackTrace();
318
                e.printStackTrace();
296
        }
319
            }
297
    }
320
        }
298
 
-
 
299
    private void directoryChoose(final String type) {
-
 
300
 
-
 
301
        if (this.fileChooser == null) {
-
 
302
            this.fileChooser = new JFileChooser();
-
 
303
            this.fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
-
 
304
        }
-
 
305
        this.fileChooser.setCurrentDirectory(new File(TemplatePreferencePanel.this.textTemplate.getText()));
-
 
306
        SwingUtilities.invokeLater(new Runnable() {
-
 
307
            public void run() {
-
 
308
 
-
 
309
                if (TemplatePreferencePanel.this.fileChooser.showDialog(TemplatePreferencePanel.this, "Sélectionner") == JFileChooser.APPROVE_OPTION) {
-
 
310
 
-
 
311
                    if (type.equalsIgnoreCase("template")) {
-
 
312
                        File selectedFile = TemplatePreferencePanel.this.fileChooser.getSelectedFile();
-
 
313
                        if (selectedFile.exists()) {
-
 
314
                            TemplatePreferencePanel.this.textTemplate.setForeground(UIManager.getColor("TextField.foreground"));
-
 
315
                        } else {
-
 
316
                            TemplatePreferencePanel.this.textTemplate.setForeground(Color.RED);
-
 
317
                        }
-
 
318
                        TemplatePreferencePanel.this.textTemplate.setText(selectedFile.getPath());
-
 
319
                    }
-
 
320
                }
-
 
321
            }
-
 
322
        });
-
 
323
    }
321
    }
324
 
322
 
325
    public void modifyTemplate(final TemplateTableModel dm, final JTable table) {
323
    public void modifyTemplate(final TemplateTableModel dm, final JTable table) {
326
        int row = table.getSelectedRow();
324
        int row = table.getSelectedRow();
327
        dm.unsync(row);
325
        dm.unsync(row);