From: <bma...@us...> - 2009-06-08 09:52:42
|
Revision: 4854 http://fudaa.svn.sourceforge.net/fudaa/?rev=4854&view=rev Author: bmarchan Date: 2009-06-08 09:52:41 +0000 (Mon, 08 Jun 2009) Log Message: ----------- L'extension n'est plus visible dans le cas des fichiers Cemagref pour l'export des g?\195?\169om?\195?\169tries. Modified Paths: -------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluFileChooserPanel.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/CalqueGISTreeModel.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlCasierExportPanel.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlProjectExportPanel.java Property Changed: ---------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluFileChooserPanel.java Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluFileChooserPanel.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluFileChooserPanel.java 2009-06-07 23:24:34 UTC (rev 4853) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluFileChooserPanel.java 2009-06-08 09:52:41 UTC (rev 4854) @@ -35,7 +35,7 @@ /** * @author Fred Deniger - * @version $Id: CtuluFileChooserPanel.java,v 1.8 2007-02-02 11:20:11 deniger Exp $ + * @version $Id$ */ public class CtuluFileChooserPanel extends BuPanel implements ActionListener, DocumentListener { @@ -47,7 +47,7 @@ File initDir_; - JTextField tf_; + protected JTextField tf_; boolean writeMode_ = true; Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluFileChooserPanel.java ___________________________________________________________________ Added: svn:keywords + Id Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/CalqueGISTreeModel.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/CalqueGISTreeModel.java 2009-06-07 23:24:34 UTC (rev 4853) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/CalqueGISTreeModel.java 2009-06-08 09:52:41 UTC (rev 4854) @@ -212,6 +212,8 @@ public final void buildTree() { ((LayerNode)getRoot()).removeAllChildren(); addLayer((LayerNode)getRoot(), rootLayer_); + + fireTreeStructureChanged(this, new Object[]{getRoot()}, null, null); } protected boolean containsGeometries(final BCalque _cq) { Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlCasierExportPanel.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlCasierExportPanel.java 2009-06-07 23:24:34 UTC (rev 4853) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlCasierExportPanel.java 2009-06-08 09:52:41 UTC (rev 4854) @@ -36,9 +36,7 @@ import org.fudaa.ebli.calque.BCalque; import org.fudaa.ebli.calque.BCalqueVisitor; import org.fudaa.ebli.calque.CalqueGISTreeModel; -import org.fudaa.ebli.calque.ZCalqueAffichageDonnees; import org.fudaa.ebli.calque.ZCalqueAffichageDonneesAbstract; -import org.fudaa.ebli.calque.ZCalqueAffichageDonneesInterface; import org.fudaa.ebli.calque.ZCalqueGeometry; import org.fudaa.ebli.calque.ZScene; import org.fudaa.ebli.calque.edition.ZModeleGeometryDefault; @@ -204,11 +202,17 @@ private void coFormatItemStateChanged() { CalqueGISTreeModel md=(CalqueGISTreeModel)trLayers_.getModel(); md.setMask(getSelectedExporter().getMaskForSubSelection()); - // B.M. Oblig\xE9 de forcer le modele, je ne sais pourquoi. - trLayers_.setModel(null); - trLayers_.setModel(md); - fileChooser_.setFilter(new BuFileFilter[]{getSelectedExporter().getFileFormat().getFileFormat().createFileFilter()}); + BuFileFilter flt=getSelectedExporter().getFileFormat().getFileFormat().createFileFilter(); + fileChooser_.setFilter(new BuFileFilter[]{flt}); + + // Changement de l'extension du fichier. + File f=fileChooser_.getFile(); + if (f!=null) { + f=CtuluLibFile.getSansExtension(f); + f=CtuluLibFile.appendExtensionIfNeeded(f, flt.getFirstExt()); + fileChooser_.setFile(f); + } } /** Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlProjectExportPanel.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlProjectExportPanel.java 2009-06-07 23:24:34 UTC (rev 4853) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlProjectExportPanel.java 2009-06-08 09:52:41 UTC (rev 4854) @@ -8,8 +8,8 @@ package org.fudaa.fudaa.modeleur; import java.awt.BorderLayout; -import java.awt.Color; -import java.awt.Font; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; import java.io.File; import java.util.HashMap; import java.util.Map; @@ -18,7 +18,6 @@ import javax.swing.ButtonGroup; import javax.swing.JFileChooser; import javax.swing.JPanel; -import javax.swing.UIManager; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; @@ -26,15 +25,16 @@ import org.fudaa.ctulu.CtuluLibFile; import org.fudaa.ctulu.CtuluUI; import org.fudaa.ctulu.gui.CtuluDialogPanel; +import org.fudaa.ctulu.gui.CtuluFileChooser; import org.fudaa.ctulu.gui.CtuluFileChooserPanel; import org.fudaa.dodico.dunes.io.DunesGEOFileFormat; -import org.fudaa.dodico.rubar.io.RubarStCnFileFormat; import org.fudaa.dodico.telemac.io.SinusxFileFormat; import org.fudaa.fudaa.commun.FudaaLib; import org.fudaa.fudaa.modeleur.resource.MdlResource; import org.fudaa.fudaa.sig.FSigLib; import org.fudaa.fudaa.sig.layer.FSigLayerExporter; +import com.memoire.bu.BuComboBox; import com.memoire.bu.BuFileFilter; import com.memoire.bu.BuLabel; import com.memoire.bu.BuRadioButton; @@ -47,7 +47,7 @@ */ public class MdlProjectExportPanel extends CtuluDialogPanel implements DocumentListener { - CtuluFileChooserPanel pn_; + CtuluFileChooserPanel fileChooser_; String filename_=""; BuRadioButton rbAllLayers_; BuRadioButton rbSelectedLayers_; @@ -59,6 +59,8 @@ Map<BuFileFilter, FSigLayerExporter> filter2Exporter_; /** Le filtre de fichier pour Rubar */ BuFileFilter fltRubar_; + BuComboBox coFormat_; + FSigLayerExporter[] exporters_; /** * @@ -71,18 +73,41 @@ filters_=buildFilter2Export(); setLayout(new BuVerticalLayout(5,true,true)); - final String title = FSigLib.getS("Fichier d'exportation"); - pn_ = new CtuluFileChooserPanel(title); - pn_.setAllFileFilter(false); - pn_.setFileSelectMode(JFileChooser.FILES_ONLY); - pn_.setWriteMode(true); - pn_.setFilter(filters_); + + JPanel pnFormat=new JPanel(); + pnFormat.setLayout(new BorderLayout(5,5)); + coFormat_=new BuComboBox(); + for (BuFileFilter filter: filters_) + coFormat_.addItem(filter.getShortDescription()); + coFormat_.addItemListener(new ItemListener() { + public void itemStateChanged(ItemEvent e) { + if (e.getStateChange()==ItemEvent.DESELECTED) return; + coFormatItemStateChanged(); + } + }); + pnFormat.add(new BuLabel(FSigLib.getS("Format d'export")),BorderLayout.WEST); + pnFormat.add(coFormat_); + add(pnFormat); + final String title = FSigLib.getS("Fichier(s) d'exportation"); + fileChooser_ = new CtuluFileChooserPanel(title) { + @Override + protected void fileChooserAccepted(CtuluFileChooser _fc) { + // Cas de Rubar : On supprime l'extension au fichier + if (filter2Exporter_.get(_fc.getFileFilter())==exporters_[0]) { + tf_.setText(CtuluLibFile.getSansExtension(tf_.getText())); + } + } + }; + fileChooser_.setAllFileFilter(false); + fileChooser_.setFileSelectMode(JFileChooser.FILES_ONLY); + fileChooser_.setWriteMode(true); + BuLabel lbFile=new BuLabel(title); JPanel pnFile=new JPanel(); pnFile.setLayout(new BorderLayout(3,3)); pnFile.add(lbFile,BorderLayout.WEST); - pnFile.add(pn_, BorderLayout.CENTER); + pnFile.add(fileChooser_, BorderLayout.CENTER); add(pnFile); rbAllLayers_=new BuRadioButton(FudaaLib.getS("Exporter tous les calques")); @@ -110,6 +135,8 @@ rbSelectedGeometries_.setSelected(true); else rbSelectedGeometries_.setEnabled(false); + + coFormatItemStateChanged(); } private BuFileFilter[] buildFilter2Export() { @@ -118,37 +145,51 @@ final BuFileFilter dunes= DunesGEOFileFormat.getInstance().createFileFilter(); filter2Exporter_ = new HashMap<BuFileFilter, FSigLayerExporter>(5);// pour l'instant ..... - filter2Exporter_.put(sx, new FSigLayerExporter.ToSinusX()); - filter2Exporter_.put(fltRubar_, new FSigLayerExporter.ToRubar()); - filter2Exporter_.put(dunes, new FSigLayerExporter.ToDunes()); + exporters_=new FSigLayerExporter[]{ + new FSigLayerExporter.ToRubar(), + new FSigLayerExporter.ToSinusX(), + new FSigLayerExporter.ToDunes() + + }; + filters_ = new BuFileFilter[]{fltRubar_,sx,dunes}; + + for (int i=0; i<filters_.length; i++) + filter2Exporter_.put(filters_[i], exporters_[i]); - filters_ = new BuFileFilter[filter2Exporter_.size()]; - filter2Exporter_.keySet().toArray(filters_); return filters_; } + /** + * Changement de format d'export. + */ + private void coFormatItemStateChanged() { + selectedFilter_=filters_[coFormat_.getSelectedIndex()]; + fileChooser_.setFilter(new BuFileFilter[]{selectedFilter_}); + + // Changement de l'extension du fichier. + File f=fileChooser_.getFile(); + if (f!=null) { + f=CtuluLibFile.getSansExtension(f); + if (selectedFilter_!=fltRubar_) { + f=CtuluLibFile.appendExtensionIfNeeded(f, selectedFilter_.getFirstExt()); + } + fileChooser_.setFile(f); + } + } + public boolean valide() { if (!isFileOK()) return false; return true; } private boolean isFileOK() { - final File f = pn_.getFile(); + final File f = fileChooser_.getFile(); if (f == null) { - setErrorText(CtuluLib.getS("Donnez un nom au fichier d'exportation")); + setErrorText(CtuluLib.getS("Donnez un nom au(x) fichier(s) d'exportation")); return false; } - selectedFilter_=(BuFileFilter) pn_.getSelectedFilter(); - if (CtuluLibFile.getExtension(f.getName())==null) { - setErrorText(CtuluLib.getS("Le fichier choisi doit avoir une extension.")); - return false; - } - if (CtuluLibFile.getExtension(CtuluLibFile.getSansExtension(f.getName()))!=null) { - setErrorText(CtuluLib.getS("Ne mettez pas plusieurs '.' dans le nom.")); - return false; - } + String s=""; - int nbFiles=0; // Dans le cas d'un export vers Rubar, il faut aussi tester avec les extensions .sem et .cn et aussi <nom>_autres.st @@ -171,7 +212,18 @@ nbFiles++; } } + + // Cas des autres formats. else { + if (CtuluLibFile.getExtension(f.getName())==null) { + setErrorText(CtuluLib.getS("Le fichier choisi doit avoir une extension.")); + return false; + } + if (CtuluLibFile.getExtension(CtuluLibFile.getSansExtension(f.getName()))!=null) { + setErrorText(CtuluLib.getS("Ne mettez pas plusieurs '.' dans le nom.")); + return false; + } + if (f.exists()){ s+=f.getName(); nbFiles++; @@ -180,10 +232,10 @@ if (nbFiles>0) if(nbFiles==1&&!ui_.question(CtuluLib.getS("Export {0}",selectedFilter_.getShortDescription()), - CtuluLib.getS("Le fichier {0} existe d\xE9j\xE0. Voulez-vous l'\xE9craser?", s))) + CtuluLib.getS("Le fichier {0} existe d\xE9j\xE0.\nVoulez-vous l'\xE9craser?", s))) return false; else if(nbFiles>1&&!ui_.question(CtuluLib.getS("Export {0}",selectedFilter_.getShortDescription()), - CtuluLib.getS("Les fichiers {0} existent d\xE9j\xE0. Voulez-vous les \xE9craser?", s))) + CtuluLib.getS("Les fichiers {0} existent d\xE9j\xE0.\nVoulez-vous les \xE9craser?", s))) return false; setErrorText(null); @@ -191,7 +243,7 @@ } public File getFile() { - return pn_.getFile(); + return fileChooser_.getFile(); } public FSigLayerExporter getSelectedExporter() { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |