Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.library / org.gvsig.exportto / org.gvsig.exportto.swing / org.gvsig.exportto.swing.impl / src / main / java / org / gvsig / export / swing / impl / panels / SelectAttributesPanel.java @ 45237

History | View | Annotate | Download (25.2 KB)

1
package org.gvsig.export.swing.impl.panels;
2

    
3
import java.awt.Component;
4
import java.awt.Font;
5
import java.awt.event.ActionEvent;
6
import java.awt.event.ActionListener;
7
import java.awt.event.KeyAdapter;
8
import java.awt.event.KeyEvent;
9
import java.awt.event.MouseEvent;
10
import java.net.URL;
11
import java.util.ArrayList;
12
import java.util.Comparator;
13
import java.util.Iterator;
14
import java.util.List;
15
import java.util.Objects;
16
import java.util.Timer;
17
import java.util.TimerTask;
18
import javax.swing.DefaultCellEditor;
19
import javax.swing.DefaultComboBoxModel;
20
import javax.swing.DefaultListCellRenderer;
21
import javax.swing.ImageIcon;
22
import javax.swing.JButton;
23
import javax.swing.JCheckBox;
24
import javax.swing.JComboBox;
25
import javax.swing.JComponent;
26
import javax.swing.JLabel;
27
import javax.swing.JList;
28
import javax.swing.JOptionPane;
29
import javax.swing.JTable;
30
import javax.swing.table.AbstractTableModel;
31
import javax.swing.table.JTableHeader;
32
import javax.swing.table.TableCellRenderer;
33
import javax.swing.table.TableColumnModel;
34
import javax.swing.table.TableModel;
35
import javax.swing.text.JTextComponent;
36
import org.apache.commons.io.FilenameUtils;
37
import org.apache.commons.lang.StringUtils;
38
import org.gvsig.export.ExportAttributes;
39
import org.gvsig.export.ExportAttributes.ExportAttribute;
40
import org.gvsig.export.ExportParameters;
41
import org.gvsig.export.swing.JExportProcessPanel;
42
import org.gvsig.export.swing.spi.ExportPanel;
43
import org.gvsig.export.swing.spi.ExportPanelValidationException;
44
import org.gvsig.export.swing.spi.ExportPanelsManager;
45
import org.gvsig.fmap.dal.DataTypes;
46
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
47
import org.gvsig.fmap.dal.feature.FeatureType;
48
import org.gvsig.tools.ToolsLocator;
49
import org.gvsig.tools.dataTypes.DataType;
50
import org.gvsig.tools.dataTypes.DataTypesManager;
51
import org.gvsig.tools.i18n.I18nManager;
52
import org.gvsig.tools.namestranslator.NamesTranslator;
53
import org.gvsig.tools.swing.api.FilteredTableModel;
54
import org.gvsig.tools.swing.api.ListElement;
55
import org.gvsig.tools.swing.api.MessageBarController;
56
import org.gvsig.tools.swing.api.ToolsSwingLocator;
57
import org.gvsig.tools.swing.api.ToolsSwingManager;
58
import org.gvsig.tools.swing.icontheme.IconTheme;
59
import org.slf4j.Logger;
60
import org.slf4j.LoggerFactory;
61

    
62
/**
63
 *
64
 * @author jjdelcerro
65
 */
66
@SuppressWarnings("UseSpecificCatch")
67
public class SelectAttributesPanel
68
        extends SelectAttributesPanelView
69
        implements ExportPanel {
70

    
71
    private static final Logger LOGGER = LoggerFactory.getLogger(SelectAttributesPanel.class);
72

    
73
    private static final int COLUMN_FIELD_EXPORT = 0;
74
    private static final int COLUMN_FIELD_TYPE = 1;
75
    private static final int COLUMN_FIELD_SIZE = 2;
76
    private static final int COLUMN_FIELD_ORIGIN = 3;
77
    private static final int COLUMN_FIELD_CALCULATED = 4;
78
    private static final int COLUMN_FIELD_NAME = 5;
79
    private static final int COLUMN_FIELD_NEW_NAME = 6;
80

    
81
    private static final int COLUMN_FIELD_COUNT = 7;
82

    
83
    private static final int ORIGIN_REAL = 0;
84
    private static final int ORIGIN_CALCULATED = 1;
85
    private static final int ORIGIN_EXTRA = 2;
86
    private MessageBarController messageController;
87

    
88
    private static class AttributesTableModel
89
            extends AbstractTableModel
90
            implements TableModel {
91

    
92
        final private ExportAttributes attributes;
93
        private final String[] columnNames = new String[COLUMN_FIELD_COUNT];
94
        private final Class[] columnClases = new Class[COLUMN_FIELD_COUNT];
95
        private final String[] columnToolTips = new String[COLUMN_FIELD_COUNT];
96
        private final DataTypesManager dataManager;
97
        private final SelectAttributesPanel panel;
98

    
99
        public AttributesTableModel(ExportAttributes attributes, SelectAttributesPanel panel) {
100
            this.panel = panel;
101
            this.attributes = attributes;
102
            this.dataManager = ToolsLocator.getDataTypesManager();
103
            I18nManager i18nManager = ToolsLocator.getI18nManager();
104
            columnNames[COLUMN_FIELD_NAME] = i18nManager.getTranslation("_name");
105
            columnNames[COLUMN_FIELD_NEW_NAME] = i18nManager.getTranslation("_New_name");
106
            columnNames[COLUMN_FIELD_ORIGIN] = i18nManager.getTranslation("_Origin");
107
            columnNames[COLUMN_FIELD_TYPE] = i18nManager.getTranslation("_type");
108
            columnNames[COLUMN_FIELD_SIZE] = i18nManager.getTranslation("_Size");
109
            columnNames[COLUMN_FIELD_CALCULATED] = i18nManager.getTranslation("_Virtual");
110
            columnNames[COLUMN_FIELD_EXPORT] = "";
111

    
112
            columnClases[COLUMN_FIELD_NAME] = String.class;
113
            columnClases[COLUMN_FIELD_NEW_NAME] = String.class;
114
            columnClases[COLUMN_FIELD_ORIGIN] = String.class;
115
            columnClases[COLUMN_FIELD_TYPE] = String.class;
116
            columnClases[COLUMN_FIELD_SIZE] = Integer.class;
117
            columnClases[COLUMN_FIELD_EXPORT] = Boolean.class;
118
            columnClases[COLUMN_FIELD_CALCULATED] = Boolean.class;
119
            
120
            columnToolTips[COLUMN_FIELD_NAME] = i18nManager.getTranslation("_Actual_field_name");
121
            columnToolTips[COLUMN_FIELD_NEW_NAME] = i18nManager.getTranslation("_New_field_name_in_the_export");
122
            columnToolTips[COLUMN_FIELD_ORIGIN] = i18nManager.getTranslation("_Origin");
123
            columnToolTips[COLUMN_FIELD_TYPE] = i18nManager.getTranslation("_Attribute_descriptor_type");
124
            columnToolTips[COLUMN_FIELD_SIZE] = i18nManager.getTranslation("_Field_size");
125
            columnToolTips[COLUMN_FIELD_CALCULATED] = i18nManager.getTranslation("_Export_attribute_as_an_expression_or_as_a_real_field");
126
            columnToolTips[COLUMN_FIELD_EXPORT] = i18nManager.getTranslation("_Select_if_field_has_to_be_exported");
127
        }
128
        
129
        public String getColumnToolTip(int column) {
130
            return columnToolTips[column];
131
        }
132

    
133
        @Override
134
        public int getRowCount() {
135
            return this.attributes.size();
136
        }
137

    
138
        @Override
139
        public int getColumnCount() {
140
            return COLUMN_FIELD_COUNT;
141
        }
142

    
143
        @Override
144
        public String getColumnName(int columnIndex) {
145
            return this.columnNames[columnIndex];
146
        }
147

    
148
        @Override
149
        public Class<?> getColumnClass(int columnIndex) {
150
            return this.columnClases[columnIndex];
151
        }
152

    
153
        @Override
154
        public boolean isCellEditable(int rowIndex, int columnIndex) {
155
            switch (columnIndex) {
156
                case COLUMN_FIELD_NAME:
157
                    return false;
158
                case COLUMN_FIELD_ORIGIN:
159
                    return false;
160
                case COLUMN_FIELD_CALCULATED: {
161
                    ExportAttribute attr = this.attributes.get(rowIndex);
162
                    DataType dataType = attr.getDescriptor().getDataType();
163
                    if (dataType.isContainer()
164
                            || dataType.isObject()
165
                            || dataType.isDynObject()) {
166
                        return false;
167
                    }
168
                    if (attr.getDescriptor().isComputed()) {
169
                        return true;
170
                    }
171
                    return false;
172
                }
173
                default:
174
                    return true;
175
            }
176
        }
177

    
178
        @Override
179
        public Object getValueAt(int rowIndex, int columnIndex) {
180
            ExportAttribute attr = this.attributes.get(rowIndex);
181
            switch (columnIndex) {
182
                case COLUMN_FIELD_NAME:
183
                    return attr.getName();
184
                case COLUMN_FIELD_NEW_NAME:
185
                    return attr.getNewName();
186
                case COLUMN_FIELD_ORIGIN:
187
                    if (attr.getDescriptor().isComputed()) {
188
                        if (attr.getDescriptor().getFeatureType() != null) {
189
                            return ORIGIN_CALCULATED;
190
                        } else {
191
                            return ORIGIN_EXTRA;
192
                        }
193
                    } else {
194
                        return ORIGIN_REAL;
195
                    }
196
                case COLUMN_FIELD_TYPE:
197
                    return dataManager.getTypeName(attr.getNewDataType());
198
                case COLUMN_FIELD_SIZE:
199
                    return attr.getSize();
200
                case COLUMN_FIELD_EXPORT:
201
                    return attr.isExported();
202
                case COLUMN_FIELD_CALCULATED:
203
                    return attr.isComputed();
204
                default:
205
                    return null;
206
            }
207
        }
208

    
209
        @Override
210
        public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
211
            ExportAttribute attr = this.attributes.get(rowIndex);
212
            switch (columnIndex) {
213
                case COLUMN_FIELD_NAME:
214
                    break;
215
                case COLUMN_FIELD_NEW_NAME:
216
                    int indexChanged = attr.setNewName(Objects.toString(aValue, attr.getName()));
217
                    NamesTranslator translator = this.attributes.getNamesTranslator();
218
                    I18nManager i18 = ToolsLocator.getI18nManager();
219
                    if (!StringUtils.equalsIgnoreCase(Objects.toString(aValue, attr.getName()),
220
                            translator.getTranslation(attr.getName())))  {
221
                        StringBuilder changedLog = new StringBuilder();
222
                        changedLog.append("'");
223
                        changedLog.append(Objects.toString(aValue, attr.getName()));
224
                        changedLog.append("' ");
225
                        changedLog.append(i18.getTranslation("_field_name_has_been_fixed_to"));
226
                        changedLog.append(" '");
227
                        changedLog.append(translator.getTranslation(attr.getName()));
228
                        changedLog.append("'");
229
                        panel.setMessage(changedLog.toString());
230

    
231
                    }
232
                    if (indexChanged != -1) {
233
                        String fieldSource = translator.getSource(indexChanged);
234
                        String fieldTarget = translator.getTranslation(indexChanged);
235
                        StringBuilder changedLog = new StringBuilder();
236
                        changedLog.append("'");
237
                        changedLog.append(fieldSource);
238
                        changedLog.append("' ");
239
                        changedLog.append(i18.getTranslation("_has_been_changed_to_avoid_duplicates_for"));
240
                        changedLog.append(" '");
241
                        changedLog.append(fieldTarget);
242
                        changedLog.append("'");
243
                        panel.setMessage(changedLog.toString());
244

    
245
                    }
246

    
247
                    break;
248

    
249
                case COLUMN_FIELD_TYPE:
250
                    attr.setNewType(dataManager.getType(Objects.toString(aValue)));
251
                    break;
252
                case COLUMN_FIELD_SIZE:
253
                    try {
254
                    attr.setSize(Integer.parseInt(Objects.toString(aValue)));
255
                } catch (Exception ex) {
256
                    LOGGER.warn("Not been able to set size value of attribute " + attr.getName() + " (" + Objects.toString(aValue) + ").", ex);
257
                }
258
                break;
259
                case COLUMN_FIELD_EXPORT:
260
                    try {
261
                    attr.setExported((boolean) dataManager.get(DataTypes.BOOLEAN).coerce(aValue));
262
                } catch (Exception ex) {
263
                    LOGGER.warn("Not been able to set exported value of attribute " + attr.getName() + " (" + Objects.toString(aValue) + ").", ex);
264
                }
265
                break;
266
                case COLUMN_FIELD_CALCULATED:
267
                    try {
268
                    attr.setComputed((boolean) dataManager.get(DataTypes.BOOLEAN).coerce(aValue));
269
                } catch (Exception ex) {
270
                    LOGGER.warn("Not been able to set calculated value of attribute " + attr.getName() + " (" + Objects.toString(aValue) + ").", ex);
271
                }
272
                break;
273
                default:
274
                    break;
275
            }
276
            this.fireTableCellUpdated(rowIndex, columnIndex);
277
        }
278
    }
279

    
280
    private static class TableFilterController {
281

    
282
        private final JTable jtable;
283
        private final JTextComponent jtext;
284
        private final JButton btnFilter;
285
        private final int filterColumn;
286

    
287
        private FilteredTableModel tableModel;
288

    
289
        public TableFilterController(JTable jtable, JTextComponent jtext, JButton btnFilter, int filterColumn) {
290
            this.jtable = jtable;
291
            this.filterColumn = filterColumn;
292
            this.btnFilter = btnFilter;
293
            this.jtext = jtext;
294
            this.tableModel = null;
295
            ToolsSwingLocator.getToolsSwingManager().setDefaultPopupMenu(jtext);
296
            ToolsSwingLocator.getToolsSwingManager().addClearButton(jtext, new ActionListener() {
297
                @Override
298
                public void actionPerformed(ActionEvent e) {
299
                    if (tableModel != null) {
300
                        tableModel.setFilter(null);
301
                        jtext.setText("");
302
                    }
303
                }
304
            });
305
            this.jtext.addKeyListener(new KeyAdapter() {
306
                @Override
307
                public void keyPressed(KeyEvent e) {
308
                    if (e.getKeyChar() == '\n') {
309
                        if (tableModel != null) {
310
                            tableModel.setFilter(jtext.getText());
311
                        }
312
                    }
313
                }
314
            });
315
            this.btnFilter.addActionListener(new ActionListener() {
316
                @Override
317
                public void actionPerformed(ActionEvent e) {
318
                    if (tableModel != null) {
319
                        tableModel.setFilter(jtext.getText());
320
                    }
321
                }
322
            });
323
        }
324

    
325
        public void setModel(TableModel tableModel) {
326
            this.tableModel = ToolsSwingLocator.getToolsSwingManager().createFilteredTableModel(
327
                    tableModel,
328
                    this.filterColumn
329
            );
330
            this.jtable.setModel(this.tableModel);
331
        }
332
    }
333

    
334
    private class DataTypeCellRenderer
335
            extends JLabel
336
            implements TableCellRenderer {
337

    
338
        public DataTypeCellRenderer() {
339
        }
340

    
341
        @Override
342
        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
343
            if (value != null) {
344
                String name = (String) table.getModel().getValueAt(row, COLUMN_FIELD_NAME);
345
                this.setText(value.toString());
346
                Font f = this.getFont();
347
                if (isOriginalType(row, value.toString())) {
348
                    this.setFont(f.deriveFont(f.getStyle() & ~Font.BOLD));
349
                } else {
350
                    this.setFont(f.deriveFont(f.getStyle() | Font.BOLD));
351
                }
352
            } else {
353
                this.setText("");
354
            }
355
            return this;
356
        }
357
    }
358

    
359
    private class OriginCellRenderer
360
            extends JLabel
361
            implements TableCellRenderer {
362

    
363
        public OriginCellRenderer() {
364
        }
365

    
366
        @Override
367
        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
368
            if (column == COLUMN_FIELD_ORIGIN) {
369
                int origin = (int) table.getModel().getValueAt(row, COLUMN_FIELD_ORIGIN);
370
                IconTheme iconManager = ToolsSwingLocator.getIconThemeManager().getDefault();
371
                I18nManager i18Manager = ToolsLocator.getI18nManager();
372
                this.setHorizontalAlignment(JLabel.CENTER);
373
                switch (origin) {
374
                    case ORIGIN_CALCULATED:
375
                        this.setToolTipText(i18Manager.getTranslation("_Calculated_field"));
376
                        this.setIcon((iconManager.get("column-calculated")));
377
                        break;
378
                    case ORIGIN_EXTRA:
379
                        this.setToolTipText(i18Manager.getTranslation("_Extra_field"));
380
                        this.setIcon((iconManager.get("column-extra")));
381
                        break;
382
                    case ORIGIN_REAL:
383
                        this.setToolTipText(i18Manager.getTranslation("_Real_field"));
384
                        this.setIcon((iconManager.get("column-true")));
385
                        break;
386
                    default:
387
                        this.setText(value.toString());
388
                        break;
389
                }
390
                return this;
391
            }
392
            return this;
393
        }
394
    }
395

    
396
    private class DataTypeCellEditor extends DefaultCellEditor {
397

    
398
        private int currentRow = -1;
399

    
400
        private class DataTypeListCellRenderer extends DefaultListCellRenderer {
401

    
402
            @Override
403
            public Component getListCellRendererComponent(JList<?> list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
404
                JLabel label = (JLabel) super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
405
                if (value != null) {
406
                    label.setText(value.toString());
407
                    Font f = label.getFont();
408
                    if (isOriginalType(currentRow, value.toString())) {
409
                        label.setFont(f.deriveFont(f.getStyle() | Font.BOLD));
410
                    } else {
411
                        label.setFont(f.deriveFont(f.getStyle() & ~Font.BOLD));
412
                    }
413
                }
414
                return label;
415
            }
416
        }
417

    
418
        public DataTypeCellEditor() {
419
            super(new JComboBox());
420
            JComboBox combo = (JComboBox) this.getComponent();
421
            combo.setRenderer(new DataTypeListCellRenderer());
422
            combo.setModel(this.getDataTypeComboModel());
423
        }
424

    
425
        @Override
426
        public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
427
            this.currentRow = row;
428
            JComboBox combo = (JComboBox) super.getTableCellEditorComponent(table, value, isSelected, row, column);
429
            ListElement.setSelected(combo, value);
430
            return combo;
431
        }
432

    
433
        private DefaultComboBoxModel getDataTypeComboModel() {
434
            DataTypesManager dataManager = ToolsLocator.getDataTypesManager();
435
            List<ListElement<Integer>> fieldTypes = new ArrayList<>();
436
            Iterator<DataType> it = dataManager.iterator();
437
            while (it.hasNext()) {
438
                DataType dataType = it.next();
439
                fieldTypes.add(new ListElement<>(dataType.getName(), dataType.getType()));
440
            }
441
            fieldTypes.sort(new Comparator<ListElement<Integer>>() {
442
                @Override
443
                public int compare(ListElement<Integer> o1, ListElement<Integer> o2) {
444
                    return o1.toString().compareTo(o2.toString());
445
                }
446
            });
447

    
448
            DefaultComboBoxModel<ListElement<Integer>> model = new DefaultComboBoxModel<>();
449
            for (ListElement<Integer> element : fieldTypes) {
450
                model.addElement(element);
451
            }
452
            return model;
453
        }
454
    }
455

    
456
    private final ExportParameters parameters;
457
    private final JExportProcessPanel processPanel;
458

    
459
//    private Map<String, String> fieldAttributeTypes;
460
//    private FilteredTableModel filteredTableModel;
461
    private TableModel tableModel;
462
    private TableFilterController tableFilterController;
463
    private FeatureType targetFeatureType;
464

    
465
    public SelectAttributesPanel(
466
            JExportProcessPanel processPanel,
467
            ExportParameters parameters
468
    ) {
469
        this.processPanel = processPanel;
470
        this.parameters = parameters;
471
        this.parameters.getExportAttributes().setActive(true);
472
        this.initComponents();
473
    }
474

    
475
    @Override
476
    public String getIdPanel() {
477
        return ExportPanelsManager.PANEL_ATTRIBUTES_SELECTION;
478
    }
479

    
480
    @Override
481
    public String getTitlePanel() {
482
        I18nManager i18n = ToolsLocator.getI18nManager();
483
        return i18n.getTranslation("_Attribute_Selection");
484
    }
485

    
486
    @Override
487
    public boolean validatePanel() throws ExportPanelValidationException {
488
        return true;
489
    }
490

    
491
    @Override
492
    public void enterPanel() {
493
        this.fillTableWithAttributes();
494
    }
495

    
496
    @Override
497
    public void previousPanel() {
498
        this.fillTableWithAttributes();
499
    }
500

    
501
    @Override
502
    public void nextPanel() {
503
        //get params are in the validate method
504
    }
505

    
506
    @Override
507
    public JComponent asJComponent() {
508
        return this;
509
    }
510

    
511
    private boolean isOriginalType(int row, String type) {
512
        try {
513
            if (this.targetFeatureType == null) {
514
                return true;
515
            }
516
            TableModel model = this.tblAttributes.getModel();
517
            String name = (String) model.getValueAt(row, COLUMN_FIELD_NAME);
518
            FeatureAttributeDescriptor attr = this.targetFeatureType.getAttributeDescriptor(name);
519
            if (attr == null) {
520
                return true;
521
            }
522
            return StringUtils.equalsIgnoreCase(type, attr.getDataTypeName());
523
        } catch (Exception ex) {
524
            return true;
525
        }
526

    
527
    }
528

    
529
    private ExportAttributes getExportAttributes() {
530
        ExportAttributes attributes = this.parameters.getExportAttributes();
531
        return attributes;
532
    }
533

    
534
    private void fillTableWithAttributes() {
535
        ExportAttributes attributes = this.getExportAttributes();
536
        if (this.targetFeatureType == null) {
537
            this.targetFeatureType = this.getExportAttributes().getTargetFeatureType();
538
        }
539

    
540
        this.tableModel = new AttributesTableModel(attributes, this);
541
        this.tblAttributes.setModel(this.tableModel);
542
        this.tableFilterController.setModel(this.tableModel);
543

    
544
        TableColumnModel columnModel = this.tblAttributes.getColumnModel();
545
        columnModel.getColumn(COLUMN_FIELD_ORIGIN).setCellRenderer(new OriginCellRenderer());
546
        columnModel.getColumn(COLUMN_FIELD_TYPE).setCellEditor(new DataTypeCellEditor());
547
        columnModel.getColumn(COLUMN_FIELD_TYPE).setCellRenderer(new DataTypeCellRenderer());
548

    
549
        columnModel.getColumn(COLUMN_FIELD_EXPORT).setPreferredWidth(new JCheckBox().getPreferredSize().width * 2);
550
        columnModel.getColumn(COLUMN_FIELD_TYPE).setPreferredWidth(new JLabel("XIntegerX").getPreferredSize().width);
551
        columnModel.getColumn(COLUMN_FIELD_SIZE).setPreferredWidth(new JLabel("00000").getPreferredSize().width);
552
        columnModel.getColumn(COLUMN_FIELD_ORIGIN).setPreferredWidth(new JLabel("000").getPreferredSize().width);
553
        columnModel.getColumn(COLUMN_FIELD_CALCULATED).setPreferredWidth(new JLabel("000").getPreferredSize().width);
554

    
555
    }
556

    
557
    private void initComponents() {
558
        I18nManager i18n = ToolsLocator.getI18nManager();
559
        this.tblAttributes.getTableHeader().setToolTipText(
560
        i18n.getTranslation("_Select_in_the_check_box_wich_fields_wanted_to_be_exported_and_configure_its_attributes"));
561
        this.messageController = ToolsSwingLocator.getToolsSwingManager().createMessageBarController(lblMessage, 10000);
562
        this.tblAttributes.setAutoCreateRowSorter(true);
563
        this.tblAttributes.setAutoResizeMode(JTable.AUTO_RESIZE_LAST_COLUMN);
564
        //this.lblHeader.setText(i18n.getTranslation("_Select_name_type_size_and_attributes_to_export"));
565
        this.lblHeader.setText("<HTML>"+i18n.getTranslation("_Check_wich_fields_you_want_to_export_and_configure_its_attributes") + ". " +
566
               i18n.getTranslation("_Select_the_name_of_the_new_field_size_and_type_that_each_field_will_have_in_the_export_result")+".</HTML>");
567

    
568
        this.tableFilterController = new TableFilterController(
569
                this.tblAttributes,
570
                this.txtFilter,
571
                this.btnFilter,
572
                COLUMN_FIELD_NAME
573
        );
574
        this.btnCheckAll.addActionListener(new ActionListener() {
575
            @Override
576
            public void actionPerformed(ActionEvent e) {
577
                doCheckAll();
578
            }
579
        });
580
        this.btnUncheckAll.addActionListener(new ActionListener() {
581
            @Override
582
            public void actionPerformed(ActionEvent e) {
583
                doUncheckAll();
584
            }
585
        });
586

    
587
        this.translate();
588
    }
589

    
590
    private void doUncheckAll() {
591
        TableModel model = this.tblAttributes.getModel();
592
        for (int row = 0; row < model.getRowCount(); row++) {
593
            model.setValueAt(false, row, COLUMN_FIELD_EXPORT);
594
        }
595
    }
596

    
597
    private void doCheckAll() {
598
        TableModel model = this.tblAttributes.getModel();
599
        for (int row = 0; row < model.getRowCount(); row++) {
600
            model.setValueAt(true, row, COLUMN_FIELD_EXPORT);
601
        }
602
    }
603

    
604
    private void translate() {
605
        ToolsSwingManager manager = ToolsSwingLocator.getToolsSwingManager();
606
        manager.translate(this.lblHeader);
607
    }
608

    
609
    @Override
610
    public ImageIcon loadImage(String imageName) {
611
        String name = FilenameUtils.getBaseName(imageName);
612
        IconTheme theme = ToolsSwingLocator.getIconThemeManager().getDefault();
613
        if (theme.exists(name)) {
614
            return theme.get(name);
615
        }
616
        URL url = this.getClass().getResource(name + ".png");
617
        if (url == null) {
618
            return null;
619
        }
620
        return new ImageIcon(url);
621
    }
622

    
623
    private void setMessage(String toString) {
624
        this.messageController.setText(toString);
625
    }
626
}