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

View differences:

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