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