Revision 44860 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

View differences:

SelectAttributesPanel.java
12 12
import java.util.Iterator;
13 13
import java.util.List;
14 14
import java.util.Objects;
15
import java.util.Timer;
16
import java.util.TimerTask;
15 17
import javax.swing.DefaultCellEditor;
16 18
import javax.swing.DefaultComboBoxModel;
17 19
import javax.swing.DefaultListCellRenderer;
......
47 49
import org.gvsig.tools.i18n.I18nManager;
48 50
import org.gvsig.tools.swing.api.FilteredTableModel;
49 51
import org.gvsig.tools.swing.api.ListElement;
52
import org.gvsig.tools.swing.api.MessageBarController;
50 53
import org.gvsig.tools.swing.api.ToolsSwingLocator;
51 54
import org.gvsig.tools.swing.api.ToolsSwingManager;
52 55
import org.gvsig.tools.swing.icontheme.IconTheme;
......
70 73
    private static final int COLUMN_FIELD_ORIGIN = 3;
71 74
    private static final int COLUMN_FIELD_CALCULATED = 4;
72 75
    private static final int COLUMN_FIELD_NAME = 5;
73
    private static final int COLUMN_FIELD_NEW_NAME =6;
74
    
76
    private static final int COLUMN_FIELD_NEW_NAME = 6;
77

  
75 78
    private static final int COLUMN_FIELD_COUNT = 7;
76
    
79

  
77 80
    private static final int ORIGIN_REAL = 0;
78 81
    private static final int ORIGIN_CALCULATED = 1;
79 82
    private static final int ORIGIN_EXTRA = 2;
80
            
83
    private MessageBarController messageController;
81 84

  
85

  
82 86
    private static class AttributesTableModel
83 87
            extends AbstractTableModel
84 88
            implements TableModel {
......
87 91
        private final String[] columnNames = new String[COLUMN_FIELD_COUNT];
88 92
        private final Class[] columnClases = new Class[COLUMN_FIELD_COUNT];
89 93
        private final DataTypesManager dataManager;
94
        private final SelectAttributesPanel panel;
90 95

  
91
        public AttributesTableModel(ExportAttributes attributes) {
96
        public AttributesTableModel(ExportAttributes attributes, SelectAttributesPanel panel) {
97
            this.panel = panel;
92 98
            this.attributes = attributes;
93 99
            this.dataManager = ToolsLocator.getDataTypesManager();
94 100
            I18nManager i18nManager = ToolsLocator.getI18nManager();
......
139 145
                case COLUMN_FIELD_CALCULATED: {
140 146
                    ExportAttribute attr = this.attributes.get(rowIndex);
141 147
                    DataType dataType = attr.getDescriptor().getDataType();
142
                    if( dataType.isContainer() ||
143
                        dataType.isObject() ||
144
                        dataType.isDynObject() ) {
148
                    if (dataType.isContainer()
149
                            || dataType.isObject()
150
                            || dataType.isDynObject()) {
145 151
                        return false;
146 152
                    }
147 153
                    if (attr.getDescriptor().isComputed()) {
......
164 170
                    return attr.getNewName();
165 171
                case COLUMN_FIELD_ORIGIN:
166 172
                    if (attr.getDescriptor().isComputed()) {
167
                       if (attr.getDescriptor().getFeatureType()!=null) {
168
                           return ORIGIN_CALCULATED;
169
                       } else {
170
                           return ORIGIN_EXTRA;
171
                       }
173
                        if (attr.getDescriptor().getFeatureType() != null) {
174
                            return ORIGIN_CALCULATED;
175
                        } else {
176
                            return ORIGIN_EXTRA;
177
                        }
172 178
                    } else {
173 179
                        return ORIGIN_REAL;
174 180
                    }
......
192 198
                case COLUMN_FIELD_NAME:
193 199
                    break;
194 200
                case COLUMN_FIELD_NEW_NAME:
195
                    attr.setNewName(Objects.toString(aValue, attr.getName()));
201
                    int indexChanged = attr.setNewName(Objects.toString(aValue, attr.getName()));
202
                    if (indexChanged != -1) {
203
                        String fieldSource = this.attributes.getNamesTranslator().getSource(indexChanged);
204
                        String fieldTarget = this.attributes.getNamesTranslator().getTranslation(indexChanged);
205
                        I18nManager i18 = ToolsLocator.getI18nManager();
206
                        StringBuilder changedLog = new StringBuilder(); //TODO
207
                        changedLog.append("'");
208
                        changedLog.append(fieldSource);
209
                        changedLog.append("' ");
210
                        changedLog.append(i18.getTranslation("_has_been_changed_to_avoid_duplicates_for"));
211
                        changedLog.append(" '");
212
                        changedLog.append(fieldTarget);
213
                        changedLog.append("'");
214
                        panel.setMessage(changedLog.toString());
215

  
216
                    }
217

  
196 218
                    break;
219

  
197 220
                case COLUMN_FIELD_TYPE:
198 221
                    attr.setNewType(dataManager.getType(Objects.toString(aValue)));
199 222
                    break;
200 223
                case COLUMN_FIELD_SIZE:
201 224
                    try {
202
                        attr.setSize(Integer.parseInt(Objects.toString(aValue)));
203
                    } catch (Exception ex) {
204
                        LOGGER.warn("Not been able to set size value of attribute " + attr.getName() + " (" + Objects.toString(aValue) + ").", ex);
205
                    }
206
                    break;
225
                    attr.setSize(Integer.parseInt(Objects.toString(aValue)));
226
                } catch (Exception ex) {
227
                    LOGGER.warn("Not been able to set size value of attribute " + attr.getName() + " (" + Objects.toString(aValue) + ").", ex);
228
                }
229
                break;
207 230
                case COLUMN_FIELD_EXPORT:
208 231
                    try {
209
                        attr.setExported((boolean) dataManager.get(DataTypes.BOOLEAN).coerce(aValue));
210
                    } catch (Exception ex) {
211
                        LOGGER.warn("Not been able to set exported value of attribute " + attr.getName() + " (" + Objects.toString(aValue) + ").", ex);
212
                    }
213
                    break;
232
                    attr.setExported((boolean) dataManager.get(DataTypes.BOOLEAN).coerce(aValue));
233
                } catch (Exception ex) {
234
                    LOGGER.warn("Not been able to set exported value of attribute " + attr.getName() + " (" + Objects.toString(aValue) + ").", ex);
235
                }
236
                break;
214 237
                case COLUMN_FIELD_CALCULATED:
215 238
                    try {
216
                        attr.setComputed((boolean) dataManager.get(DataTypes.BOOLEAN).coerce(aValue));
217
                    } catch (Exception ex) {
218
                        LOGGER.warn("Not been able to set calculated value of attribute " + attr.getName() + " (" + Objects.toString(aValue) + ").", ex);
219
                    }
220
                    break;
239
                    attr.setComputed((boolean) dataManager.get(DataTypes.BOOLEAN).coerce(aValue));
240
                } catch (Exception ex) {
241
                    LOGGER.warn("Not been able to set calculated value of attribute " + attr.getName() + " (" + Objects.toString(aValue) + ").", ex);
242
                }
243
                break;
221 244
                default:
222 245
                    break;
223 246
            }
......
279 302
        }
280 303
    }
281 304

  
282
    
283 305
    private class DataTypeCellRenderer
284 306
            extends JLabel
285 307
            implements TableCellRenderer {
......
305 327
        }
306 328
    }
307 329

  
308
        
309 330
    private class OriginCellRenderer
310 331
            extends JLabel
311 332
            implements TableCellRenderer {
......
364 385
                return label;
365 386
            }
366 387
        }
367
        
388

  
368 389
        public DataTypeCellEditor() {
369 390
            super(new JComboBox());
370 391
            JComboBox combo = (JComboBox) this.getComponent();
......
386 407
            Iterator<DataType> it = dataManager.iterator();
387 408
            while (it.hasNext()) {
388 409
                DataType dataType = it.next();
389
                fieldTypes.add( new ListElement<>(dataType.getName(), dataType.getType()) );
410
                fieldTypes.add(new ListElement<>(dataType.getName(), dataType.getType()));
390 411
            }
391 412
            fieldTypes.sort(new Comparator<ListElement<Integer>>() {
392 413
                @Override
......
410 431
//    private FilteredTableModel filteredTableModel;
411 432
    private TableModel tableModel;
412 433
    private TableFilterController tableFilterController;
413
    private FeatureType targetFeatureType ;
414
    
434
    private FeatureType targetFeatureType;
435

  
415 436
    public SelectAttributesPanel(
416 437
            JExportProcessPanel processPanel,
417 438
            ExportParameters parameters
......
435 456

  
436 457
    @Override
437 458
    public boolean validatePanel() throws ExportPanelValidationException {
438
        ExportAttributes expAttrs = this.parameters.getExportAttributes();
439
        if (!expAttrs.isAttributeNamesValid()) {
440
            I18nManager i18nManager = ToolsLocator.getI18nManager();
441
            int as = JOptionPane.showConfirmDialog(
442
                    this,
443
                    i18nManager.getTranslation("_Not_valid_attribute_names_Do_you_want_a_suggest_names?"),
444
                    i18nManager.getTranslation("_Not_valid_attriute_names"),
445
                    JOptionPane.YES_NO_OPTION
446
            );
447
            if (as == JOptionPane.YES_OPTION) {
448
                expAttrs.fixAttributeNames();
449
                this.fillTableWithAttributes();
450
            } else if (as == JOptionPane.NO_OPTION) {
451

  
452
            }
453
            return false;
454
        }
455 459
        return true;
456 460
    }
457 461

  
......
477 481

  
478 482
    private boolean isOriginalType(int row, String type) {
479 483
        try {
480
            if( this.targetFeatureType==null ) {
484
            if (this.targetFeatureType == null) {
481 485
                return true;
482 486
            }
483 487
            TableModel model = this.tblAttributes.getModel();
......
500 504

  
501 505
    private void fillTableWithAttributes() {
502 506
        ExportAttributes attributes = this.getExportAttributes();
503
        if( this.targetFeatureType == null ) {
507
        if (this.targetFeatureType == null) {
504 508
            this.targetFeatureType = this.getExportAttributes().getTargetFeatureType();
505 509
        }
506 510

  
507
        
508
        this.tableModel = new AttributesTableModel(attributes);
511
        this.tableModel = new AttributesTableModel(attributes, this);
509 512
        this.tblAttributes.setModel(this.tableModel);
510 513
        this.tableFilterController.setModel(this.tableModel);
511 514

  
......
513 516
        columnModel.getColumn(COLUMN_FIELD_ORIGIN).setCellRenderer(new OriginCellRenderer());
514 517
        columnModel.getColumn(COLUMN_FIELD_TYPE).setCellEditor(new DataTypeCellEditor());
515 518
        columnModel.getColumn(COLUMN_FIELD_TYPE).setCellRenderer(new DataTypeCellRenderer());
516
        
517
        columnModel.getColumn(COLUMN_FIELD_EXPORT).setPreferredWidth( new JCheckBox().getPreferredSize().width*2);
518
        columnModel.getColumn(COLUMN_FIELD_TYPE).setPreferredWidth( new JLabel("XIntegerX").getPreferredSize().width);
519
        columnModel.getColumn(COLUMN_FIELD_SIZE).setPreferredWidth( new JLabel("00000").getPreferredSize().width);
520
        columnModel.getColumn(COLUMN_FIELD_ORIGIN).setPreferredWidth( new JLabel("000").getPreferredSize().width);
521
        columnModel.getColumn(COLUMN_FIELD_CALCULATED).setPreferredWidth( new JLabel("000").getPreferredSize().width);
522 519

  
520
        columnModel.getColumn(COLUMN_FIELD_EXPORT).setPreferredWidth(new JCheckBox().getPreferredSize().width * 2);
521
        columnModel.getColumn(COLUMN_FIELD_TYPE).setPreferredWidth(new JLabel("XIntegerX").getPreferredSize().width);
522
        columnModel.getColumn(COLUMN_FIELD_SIZE).setPreferredWidth(new JLabel("00000").getPreferredSize().width);
523
        columnModel.getColumn(COLUMN_FIELD_ORIGIN).setPreferredWidth(new JLabel("000").getPreferredSize().width);
524
        columnModel.getColumn(COLUMN_FIELD_CALCULATED).setPreferredWidth(new JLabel("000").getPreferredSize().width);
525

  
523 526
    }
524 527

  
525 528
    private void initComponents() {
526

  
529
        this.messageController = ToolsSwingLocator.getToolsSwingManager().createMessageBarController(lblMessage, 10000);
527 530
        this.tblAttributes.setAutoCreateRowSorter(true);
528 531
        this.tblAttributes.setAutoResizeMode(JTable.AUTO_RESIZE_LAST_COLUMN);
529
                
532
        I18nManager i18n = ToolsLocator.getI18nManager();
533
        this.lblHeader.setText(i18n.getTranslation("_Select_name_type_size_and_attributes_to_export"));
534

  
530 535
        this.tableFilterController = new TableFilterController(
531 536
                this.tblAttributes,
532 537
                this.txtFilter,
......
582 587
        return new ImageIcon(url);
583 588
    }
584 589

  
590
    
591
    private void setMessage(String toString) {
592
        this.messageController.setText(toString);
593
    }
585 594
}

Also available in: Unified diff