Revision 41634 trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.app/org.gvsig.app.mainplugin/src/main/java/org/gvsig/fmap/dal/serverexplorer/filesystem/swing/FilesystemExplorerWizardPanel.java
FilesystemExplorerWizardPanel.java | ||
---|---|---|
418 | 418 |
(FilesystemStoreListModel) getFileList().getModel(); |
419 | 419 |
|
420 | 420 |
if (command == ADD_COMMAND) { |
421 |
List<FilesystemStoreParameters> toAdd = this.addFiles(); |
|
422 |
if (toAdd.isEmpty()) { |
|
423 |
return; |
|
424 |
} |
|
425 |
model.addAll(toAdd); |
|
426 |
|
|
427 |
getFileList().setModel(model); |
|
428 |
|
|
429 |
this.updateContainingWizardAcceptButton(); |
|
430 |
try { |
|
431 |
fileList.setSelectedIndex(fileList.getModel().getSize()-1); |
|
432 |
} catch(Exception ex) { |
|
433 |
// Ignore errors |
|
434 |
} |
|
421 |
this.addFilesFromParameters(this.chooseFilesParameters()); |
|
435 | 422 |
} else |
436 | 423 |
if (command == EDIT_COMMAND) { |
437 | 424 |
DynObject dynObject = |
... | ... | |
508 | 495 |
|
509 | 496 |
} |
510 | 497 |
|
498 |
public void addFiles(List<File> files) { |
|
499 |
File[] filesArray = files.toArray(new File[files.size()]); |
|
500 |
this.addFilesFromParameters(this.getParametersList(null, filesArray, null)); |
|
501 |
} |
|
502 |
|
|
503 |
private void addFilesFromParameters(List<FilesystemStoreParameters> filesParams) { |
|
504 |
if ( filesParams.isEmpty() ) { |
|
505 |
return; |
|
506 |
} |
|
507 |
FilesystemStoreListModel model = (FilesystemStoreListModel) getFileList().getModel(); |
|
508 |
model.addAll(filesParams); |
|
509 |
getFileList().setModel(model); |
|
510 |
|
|
511 |
this.updateContainingWizardAcceptButton(); |
|
512 |
try { |
|
513 |
fileList.setSelectedIndex(fileList.getModel().getSize() - 1); |
|
514 |
} catch (Exception ex) { |
|
515 |
// Ignore errors |
|
516 |
} |
|
517 |
} |
|
518 |
|
|
511 | 519 |
/** |
512 | 520 |
* check number of files already selected for adding |
513 | 521 |
*/ |
... | ... | |
570 | 578 |
} |
571 | 579 |
} |
572 | 580 |
|
573 |
private List<FilesystemStoreParameters> addFiles() {
|
|
581 |
private List<FilesystemStoreParameters> chooseFilesParameters() {
|
|
574 | 582 |
|
575 | 583 |
// this.callStateChanged(true); |
576 | 584 |
|
... | ... | |
598 | 606 |
|
599 | 607 |
int result = fileChooser.showOpenDialog(this); |
600 | 608 |
|
601 |
List<FilesystemStoreParameters> toAdd = |
|
609 |
List<FilesystemStoreParameters> toAdd =
|
|
602 | 610 |
new ArrayList<FilesystemStoreParameters>(); |
603 | 611 |
|
604 | 612 |
if (result == JFileChooser.APPROVE_OPTION) { |
605 | 613 |
lastPath = fileChooser.getCurrentDirectory().getAbsolutePath(); |
606 | 614 |
JFileChooser.setLastPath(OPEN_LAYER_FILE_CHOOSER_ID, fileChooser.getCurrentDirectory()); |
615 |
String providerName = null; |
|
616 |
if( lastFilter!=null ) { |
|
617 |
if( !DEFAULT_FILTER.equalsIgnoreCase(lastFilter.getDescription()) ) { |
|
618 |
providerName = lastFilter.getName(); |
|
619 |
} |
|
620 |
} |
|
621 |
toAdd = this.getParametersList( |
|
622 |
fileChooser.getCurrentDirectory(), |
|
623 |
fileChooser.getSelectedFiles(), |
|
624 |
providerName |
|
625 |
); |
|
626 |
} |
|
627 |
return toAdd; |
|
628 |
} |
|
629 |
|
|
630 |
private List<FilesystemStoreParameters> getParametersList(File folder, File[] files, String providerName) { |
|
631 |
ApplicationManager application = ApplicationLocator.getManager(); |
|
632 |
|
|
633 |
PrepareContext context = this.getPrepareDataStoreContext(); |
|
634 |
|
|
635 |
List<DataStoreParameters> params = new ArrayList<DataStoreParameters>(); |
|
636 |
List<DataStoreParameters> preparedParams = null; |
|
637 |
List<FilesystemStoreParameters> returnParams = new ArrayList<FilesystemStoreParameters>(); |
|
638 |
|
|
639 |
for ( File aFile : files ) { |
|
640 |
String currentProvider = providerName; |
|
641 |
DataStoreParameters param; |
|
607 | 642 |
try { |
608 |
explorer.setCurrentPath(fileChooser.getCurrentDirectory()); |
|
609 |
} catch (FileNotFoundException e) { |
|
610 |
NotificationManager.addError(e); |
|
611 |
} |
|
612 |
lastFilter = (MyFileFilter) fileChooser.getFileFilter(); |
|
613 |
ApplicationManager appGvSIGMan = ApplicationLocator.getManager(); |
|
614 |
PrepareContext context = this.getPrepareDataStoreContext(); |
|
615 |
List<DataStoreParameters> paramList = new ArrayList<DataStoreParameters>(); |
|
616 |
List<DataStoreParameters> toAddParamList = null; |
|
617 |
for (File aFile : fileChooser.getSelectedFiles()) { |
|
618 |
try { |
|
619 |
DataStoreParameters param = |
|
620 |
explorer.createStoreParameters(aFile, lastFilter |
|
621 |
.getDescription().compareTo(DEFAULT_FILTER) == 0 |
|
622 |
? null : lastFilter.getName()); |
|
623 |
if (param == null) { |
|
624 |
// TODO show warning |
|
625 |
continue; |
|
643 |
if( folder == null) { |
|
644 |
explorer.setCurrentPath(aFile.getParentFile()); |
|
645 |
} else { |
|
646 |
explorer.setCurrentPath(folder); |
|
647 |
} |
|
648 |
if( currentProvider == null ) { |
|
649 |
for( int i=1; i<this.filters.size(); i++) { |
|
650 |
MyFileFilter filter = this.filters.get(i); |
|
651 |
if( filter.accept(aFile)) { |
|
652 |
currentProvider = filter.getName(); |
|
653 |
break; |
|
654 |
} |
|
626 | 655 |
} |
656 |
} |
|
657 |
if( currentProvider == null ) { |
|
658 |
// TODO: ask user |
|
659 |
continue; |
|
660 |
} |
|
661 |
param = explorer.createStoreParameters(aFile, currentProvider); |
|
662 |
if ( param == null ) { |
|
663 |
// TODO show warning |
|
664 |
continue; |
|
665 |
} |
|
666 |
params.add(param); |
|
627 | 667 |
|
628 |
paramList.add(param); |
|
629 |
|
|
630 |
} catch (DataException e) { |
|
631 |
NotificationManager.addError(e); |
|
632 |
return null; |
|
633 |
} |
|
634 |
} |
|
635 |
|
|
636 |
try { |
|
637 |
toAddParamList = |
|
638 |
appGvSIGMan.prepareOpenDataStoreParameters(paramList, context); |
|
639 |
} catch (Exception e) { |
|
668 |
} catch (DataException e) { |
|
640 | 669 |
NotificationManager.addError(e); |
670 |
return null; |
|
641 | 671 |
} |
642 |
|
|
643 |
if(toAddParamList != null) { |
|
644 |
for (int i = 0; i < toAddParamList.size(); i++) { |
|
645 |
toAdd.add((FilesystemStoreParameters)toAddParamList.get(i)); |
|
646 |
} |
|
672 |
} |
|
673 |
|
|
674 |
try { |
|
675 |
preparedParams |
|
676 |
= application.prepareOpenDataStoreParameters(params, context); |
|
677 |
} catch (Exception e) { |
|
678 |
NotificationManager.addError(e); |
|
679 |
} |
|
680 |
|
|
681 |
if ( preparedParams != null ) { |
|
682 |
for ( int i = 0; i < preparedParams.size(); i++ ) { |
|
683 |
returnParams.add((FilesystemStoreParameters) preparedParams.get(i)); |
|
647 | 684 |
} |
648 | 685 |
} |
649 |
return toAdd;
|
|
686 |
return returnParams;
|
|
650 | 687 |
} |
651 | 688 |
|
652 | 689 |
protected abstract PrepareContext getPrepareDataStoreContext(); |
Also available in: Unified diff