From: <bma...@us...> - 2008-11-18 21:54:51
|
Revision: 4224 http://fudaa.svn.sourceforge.net/fudaa/?rev=4224&view=rev Author: bmarchan Date: 2008-11-18 21:54:47 +0000 (Tue, 18 Nov 2008) Log Message: ----------- Correction import projet pour d?\195?\169locker les fichiers lus. Modified Paths: -------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlImplementation.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlProjectImportPanel.java Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlImplementation.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlImplementation.java 2008-11-18 17:25:33 UTC (rev 4223) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlImplementation.java 2008-11-18 21:54:47 UTC (rev 4224) @@ -23,9 +23,11 @@ import javax.swing.JOptionPane; import javax.swing.filechooser.FileFilter; +import org.fudaa.ctulu.CtuluArkLoader; import org.fudaa.ctulu.CtuluExportDataInterface; import org.fudaa.ctulu.CtuluLib; import org.fudaa.ctulu.CtuluLibFile; +import org.fudaa.ctulu.CtuluLibString; import org.fudaa.ctulu.CtuluRunnable; import org.fudaa.ctulu.CtuluTaskDelegate; import org.fudaa.ctulu.ProgressionInterface; @@ -437,18 +439,25 @@ public void importProject() { MdlProjectImportPanel pn=new MdlProjectImportPanel(); if (CtuluDialogPanel.isOkResponse(pn.afficheModale(getFrame(), "Import d'un projet"))) { - FudaaSaveZipLoader loader = null; + File f=pn.getFile(); try { - loader = pn.getLoader(); - final FudaaSaveZipLoader finalLoader = loader; + FudaaSaveZipLoader loader = new FudaaSaveZipLoader(f); + String[] ignoredLayers=pn.getIgnoredLayers(); + for (String s : ignoredLayers) { + loader.setOption(CtuluArkLoader.OPTION_LAYER_IGNORE+s,CtuluLibString.toString(true)); + } + final CtuluTaskDelegate createTask = createTask("Import d'un projet"); // FIXME BM: Suppression de la tache dans un thread diff\xE9rent, car l'appli se bloque // Probable pb de deadlock. // createTask.start(new Runnable() { // public void run() { - FudaaSaveLib.restoreAndLaunch(MdlImplementation.this, currentFrame_, createTask.getStateReceiver(), finalLoader); + FudaaSaveLib.restoreAndLaunch(MdlImplementation.this, currentFrame_, createTask.getStateReceiver(), loader); // } // }); + + // Liberation du fichier. + loader.close(); } catch (final IOException _evt) { FuLog.error(_evt); Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlProjectImportPanel.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlProjectImportPanel.java 2008-11-18 17:25:33 UTC (rev 4223) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlProjectImportPanel.java 2008-11-18 21:54:47 UTC (rev 4224) @@ -35,36 +35,29 @@ import javax.swing.tree.TreeCellRenderer; import javax.swing.tree.TreePath; -import com.memoire.bu.BuButton; -import com.memoire.bu.BuCheckBox; -import com.memoire.bu.BuHorizontalLayout; -import com.memoire.bu.BuLabel; -import com.memoire.bu.BuRadioButton; -import com.memoire.bu.BuResource; -import com.memoire.bu.BuVerticalLayout; - -import org.fudaa.ctulu.CtuluArkLoader; import org.fudaa.ctulu.CtuluLib; -import org.fudaa.ctulu.CtuluLibString; import org.fudaa.ctulu.gui.CtuluCellRenderer; import org.fudaa.ctulu.gui.CtuluDialogPanel; import org.fudaa.ctulu.gui.CtuluFileChooserPanel; - -import org.fudaa.ebli.calque.BCalquePersistenceGroupe; - -import org.fudaa.fudaa.commun.save.FudaaSaveLib; +import org.fudaa.fudaa.commun.save.FudaaSaveProject; import org.fudaa.fudaa.commun.save.FudaaSaveZipLoader; import org.fudaa.fudaa.modeleur.MdlImplementation.MdlFileFilter; import org.fudaa.fudaa.modeleur.MdlProjectImportTreeModel.LayerNode; import org.fudaa.fudaa.sig.FSigLib; -import org.fudaa.fudaa.tr.common.TrProjectPersistence; import org.fudaa.fudaa.tr.common.TrResource; +import com.memoire.bu.BuInformationsSoftware; +import com.memoire.bu.BuLabel; +import com.memoire.bu.BuRadioButton; +import com.memoire.bu.BuResource; +import com.memoire.bu.BuVerticalLayout; +import com.memoire.fu.FuLog; + /** * @author fred deniger * @version $Id: MdlProjectImportPanel.java,v 1.1.2.1 2008/05/13 12:10:21 bmarchan Exp $ */ -public class MdlProjectImportPanel extends CtuluDialogPanel implements DocumentListener { +public class MdlProjectImportPanel extends CtuluDialogPanel { public static class CellRenderer extends JLabel implements TreeCellRenderer { @@ -113,6 +106,7 @@ MdlFileFilter flt_; JTree trLayers_; FudaaSaveZipLoader loader_=null; + String[] ignoredLayers=new String[0]; public MdlProjectImportPanel() { ActionListener rbListener=new ActionListener() { @@ -133,7 +127,7 @@ public void caretUpdate(CaretEvent e) { if (!filename_.equals(pn_.getTf().getText())) { filename_=pn_.getTf().getText(); - loader_=null; + closeLoader(); rbAllLayers_.doClick(); setErrorText(null); } @@ -172,7 +166,6 @@ add(sp); rbAllLayers_.doClick(); - pn_.getTf().getDocument().addDocumentListener(this); } @@ -190,13 +183,26 @@ } } - for (LayerNode nd : nds) { - loader_.setOption(CtuluArkLoader.OPTION_LAYER_IGNORE+nd.name_,CtuluLibString.toString(true)); + ignoredLayers=new String[nds.size()]; + for (int i=0; i<ignoredLayers.length; i++) { + ignoredLayers[i]=nds.get(i).name_; } } + closeLoader(); return true; } + public void cancel() { + closeLoader(); + } + + private void closeLoader() { + if (loader_!=null) { + try { loader_.close(); } catch (IOException _exc) {} + } + loader_=null; + } + private List<LayerNode> getChildrenLeafs(LayerNode _nd) { List<LayerNode> r=new ArrayList<LayerNode>(); int nb=_nd.getChildCount(); @@ -214,7 +220,7 @@ } private boolean isFileOK() { - loader_=null; + closeLoader(); final File f = pn_.getFile(); if (f == null || !f.exists()) { setErrorText(CtuluLib.getS("Le fichier n'existe pas")); @@ -234,48 +240,21 @@ try { // if (isFileOK()) { loader_=new FudaaSaveZipLoader(pn_.getFile()); + BuInformationsSoftware is=FudaaSaveProject.getSoftwareInfos(loader_); + FuLog.warning("File version : "+(is.version==null ? "Undefined":is.version)); // } } catch (IOException _exc) { setErrorText(TrResource.getS("Le fichier n'est pas accessible")); } return loader_; -// trLayers_.setModel(new MdlProjectImportTreeModel(loader_)); -// trLayers_.setVisible(true); - -// rbSelectedLayers_.setEnabled(loader_!=null); -// rbAllLayers_.setEnabled(loader_!=null); } - public void changedUpdate(final DocumentEvent _e) { -// valide(); + public File getFile() { + return pn_.getFile(); } - - public void insertUpdate(final DocumentEvent _e) { -// valide(); + + public String[] getIgnoredLayers() { + return ignoredLayers; } - - public void removeUpdate(final DocumentEvent _e) { -// valide(); - } - - public FudaaSaveZipLoader getLoader() throws IOException { -// if (cbNoNewCalque_.isSelected()) { -// res.setOption("option.inNewLayers", CtuluLibString.toString(false)); -// res.setOption(BCalquePersistenceGroupe.getNoLayerOpt(), CtuluLibString.toString(true)); -// } -// if (cbNoGeom_.isSelected()) { -// res.setOption(FudaaSaveLib.getNoGeogLayerOpt(), CtuluLibString.toString(true)); -// } - return loader_; - } - -// boolean isAcceptable(final File _f) { -// if (_f != null && _f.exists() && _f.isFile()) { -// final String name = _f.getName(); -// return name.endsWith(TrProjectPersistence.getPostProjectExt()) -// || name.endsWith(TrProjectPersistence.getPreProjectExt()); -// } -// return false; -// } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |