From: <bma...@us...> - 2011-09-08 08:08:36
|
Revision: 6373 http://fudaa.svn.sourceforge.net/fudaa/?rev=6373&view=rev Author: bmarchan Date: 2011-09-08 08:08:26 +0000 (Thu, 08 Sep 2011) Log Message: ----------- Ame : Le nom de la vue est affich?\195?\169 dans le titre de la fenetre Modified Paths: -------------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivFille2d.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivVisuPanel.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOriginalViewAction.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivRealViewAction.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivTransfViewAction.java Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivFille2d.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivFille2d.java 2011-09-07 13:57:03 UTC (rev 6372) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivFille2d.java 2011-09-08 08:08:26 UTC (rev 6373) @@ -26,7 +26,7 @@ public PivFille2d(PivImplementation _ui) { super(new PivVisuPanel(_ui), _ui, null); setName("mdlMainFille"); - setTitle(PivResource.getS("Vue 2D")); + changeTitle(null); setPreferredSize(new Dimension(600, 600)); // cutCopyPasteManager_=new MdlCutCopyPasteManager(this, (MdlSceneEditor) getMdlVisuPanel().getEditor().getSceneEditor()); } @@ -46,6 +46,18 @@ public final PivVisuPanel getPivVisuPanel() { return (PivVisuPanel)getVisuPanel(); } + + /** + * Modifie le titre de la fenetre, en tenant compte de la vue courante. + * @param _view Le nom de la vue courante. + */ + protected void changeTitle(String _view) { + String title=PivResource.getS("Vue 2D"); + if (_view!=null) { + title+=" - "+_view; + } + setTitle(title); + } // public final String[] getEnabledActions() { // return new String[] { "RECHERCHER", "IMPRIMER", "MISEENPAGE", "PREVISUALISER", CtuluExportDataInterface.EXPORT_CMD, Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivVisuPanel.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivVisuPanel.java 2011-09-07 13:57:03 UTC (rev 6372) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivVisuPanel.java 2011-09-08 08:08:26 UTC (rev 6373) @@ -11,6 +11,7 @@ import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import javax.swing.Action; +import javax.swing.JMenu; import javax.units.NonSI; import javax.units.SI; import org.fudaa.ctulu.gis.GISAttributeString; @@ -19,7 +20,6 @@ import org.fudaa.ebli.calque.ZCalqueImageRaster; import org.fudaa.ebli.commun.EbliActionInterface; -import org.fudaa.fudaa.commun.impl.FudaaCommonImplementation; import org.fudaa.ebli.calque.ZEbliCalquesPanel; import org.fudaa.ebli.calque.dessin.DeForme; @@ -71,6 +71,13 @@ public static final int MODE_TRANSF_VIEW=2; /** La vue en espace r\xE9el */ public static final int MODE_REAL_VIEW=3; + /** Le nom de la vue en espace image reconditionn\xE9e */ + public static final String MODE_ORIGINAL_NAME=PivResource.getS("Espace image reconditionn\xE9e"); + /** Le nom de la vue en espace image reconditionn\xE9e */ + public static final String MODE_TRANSF_NAME=PivResource.getS("Espace image transform\xE9e"); + /** Le nom de la vue en espace image reconditionn\xE9e */ + public static final String MODE_REAL_NAME=PivResource.getS("Espace r\xE9el"); + // Les d\xE9finitions des coordonn\xE9es pour X et Y. private static final EbliCoordinateDefinition DEF_COOR_X=new EbliCoordinateDefinition("X", new EbliFormatter(SI.METER)); @@ -135,7 +142,7 @@ * les classes m\xE8res. * @param _impl L'implementation de l'application. */ - public PivVisuPanel(FudaaCommonImplementation _impl) { + public PivVisuPanel(PivImplementation _impl) { super(_impl); // L'editeur de g\xE9om\xE9trie sert pour affichage du panneau d'\xE9dition. @@ -298,6 +305,8 @@ viewMode_=_mode; removeAllCalqueDonnees(); + + String title=null; if (_mode == MODE_ORIGINAL_VIEW) { addCalque(cqOrthoPoints_); @@ -308,6 +317,8 @@ actOriginalView_.putValue(Action.SELECTED_KEY,true); setCoordinateDefinitions(new EbliCoordinateDefinition[]{DEF_COOR_I,DEF_COOR_J}); + + title=MODE_ORIGINAL_NAME; } else if (_mode == MODE_REAL_VIEW) { cqRealOrthoPoints_.setLegende(null); @@ -323,6 +334,8 @@ getCqLegend().enleve(cqIASA_); setCoordinateDefinitions(new EbliCoordinateDefinition[]{DEF_COOR_X,DEF_COOR_Y}); + + title=MODE_REAL_NAME; } else if (_mode == MODE_TRANSF_VIEW) { // Pas terrible, mais ca marche. Il serait mieux de pouvoir ajouter le @@ -338,8 +351,12 @@ getCqLegend().enleve(cqVelResults); setCoordinateDefinitions(new EbliCoordinateDefinition[]{DEF_COOR_J,DEF_COOR_I}); + + title=MODE_TRANSF_NAME; } - + + ((PivImplementation)getCtuluUI()).get2dFrame().changeTitle(title); + restaurer(); getVueCalque().revalidate(); getVueCalque().repaint(); @@ -576,4 +593,15 @@ public EbliActionInterface[] getApplicationActions() { return new EbliActionInterface[0]; } + + /** + * Necessaire pour que le titre du menu ne soit pas celui de la fenetre, qui + * est dynamiquement modifi\xE9. + * @param _title Non utilis\xE9. + * @return Les menus sp\xE9cifiques. + */ + @Override + public JMenu[] getSpecificMenus(final String _title) { + return super.getSpecificMenus(PivResource.getS("Vue 2D")); + } } \ No newline at end of file Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOriginalViewAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOriginalViewAction.java 2011-09-07 13:57:03 UTC (rev 6372) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOriginalViewAction.java 2011-09-08 08:08:26 UTC (rev 6373) @@ -27,7 +27,7 @@ * @param _impl L'implementation. */ public PivOriginalViewAction(PivImplementation _impl) { - super(PivResource.getS("Espace image reconditionn\xE9e"), null, "PIV_ORIGINAL_VIEW"); + super(PivVisuPanel.MODE_ORIGINAL_NAME, null, "PIV_ORIGINAL_VIEW"); setKey(KeyStroke.getKeyStroke('I')); impl=_impl; Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivRealViewAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivRealViewAction.java 2011-09-07 13:57:03 UTC (rev 6372) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivRealViewAction.java 2011-09-08 08:08:26 UTC (rev 6373) @@ -28,7 +28,7 @@ * @param _impl L'implementation. */ public PivRealViewAction(PivImplementation _impl) { - super(PivResource.getS("Espace r\xE9el"), null, "PIV_REAL_VIEW"); + super(PivVisuPanel.MODE_REAL_NAME, null, "PIV_REAL_VIEW"); setKey(KeyStroke.getKeyStroke('R')); impl=_impl; Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivTransfViewAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivTransfViewAction.java 2011-09-07 13:57:03 UTC (rev 6372) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivTransfViewAction.java 2011-09-08 08:08:26 UTC (rev 6373) @@ -27,7 +27,7 @@ * @param _impl L'implementation. */ public PivTransfViewAction(PivImplementation _impl) { - super(PivResource.getS("Espace image transform\xE9e"), null, "PIV_TRANSF_VIEW"); + super(PivVisuPanel.MODE_TRANSF_NAME, null, "PIV_TRANSF_VIEW"); setKey(KeyStroke.getKeyStroke('T')); impl=_impl; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2011-09-08 08:10:35
|
Revision: 6374 http://fudaa.svn.sourceforge.net/fudaa/?rev=6374&view=rev Author: bmarchan Date: 2011-09-08 08:10:29 +0000 (Thu, 08 Sep 2011) Log Message: ----------- Ame : Les images ?\195?\160 reconditionner le sont directement depuis leur emplacement d'origne (plus de r?\195?\169pertoire img_raw) Modified Paths: -------------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivExeLauncher.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivSelectImagesAction.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProject.java Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivExeLauncher.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivExeLauncher.java 2011-09-08 08:08:26 UTC (rev 6373) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivExeLauncher.java 2011-09-08 08:10:29 UTC (rev 6374) @@ -44,6 +44,7 @@ /** */ private static final String OUTPUT_DIR="outputs.dir"; private static final String IMG_RAW_DIR="img_raw"; + /** Le repertoire des images reconditionn\xE9es */ private static final String IMG_PGM_DIR="img_pgm"; private static final String IMG_TRANSF_DIR="img_transf"; private static final String VEL_RAW_DIR="vel_raw"; @@ -408,16 +409,17 @@ } /** - * Lance le reconditionnement des images d'origine de pgm ligne a pgm matrice. + * Lance le reconditionnement des images d'origine de pgm ligne a pgm matrice, + * et les place dans le r\xE9pertoire des images reconditionn\xE9es. * * @param _ana L'analyse pour la tache ex\xE9cut\xE9e. * @param _prj Le projet. * @param _task La tache en cours d'execution. + * @param _imgOrig Les fichiers d'origine \xE0 reconditionner. * @return true : Tout s'est bien d\xE9roul\xE9. */ - public boolean launchRepackingImg(CtuluAnalyze _ana, PivProject _prj, CtuluTaskOperationGUI _task) { + public boolean launchRepackingImg(CtuluAnalyze _ana, PivProject _prj, CtuluTaskOperationGUI _task, File[] _imgOrig) { File prjRoot=_prj.getRoot(); - File prjImgRaw=new File(prjRoot,IMG_RAW_DIR); File prjImgInp=new File(prjRoot,IMG_PGM_DIR); // Nettoyage eventuel du repertoire des images reconditionnees. @@ -425,17 +427,14 @@ for (File f : prjImgInp.listFiles()) f.delete(); - // Les images d'origine - File[] imgRaw=prjImgRaw.listFiles(); - if (_task!=null) _task.setProgression(10); int prog=0; - for (int i=0; i<imgRaw.length; i++) { + for (int i=0; i<_imgOrig.length; i++) { File dstImgInp=new File(prjImgInp,"image"+computeImgNumber(i+1)+".pgm"); - String desc=PivResource.getS("Reconditionnement de l'image {0} sur {1}",(i+1),imgRaw.length); + String desc=PivResource.getS("Reconditionnement de l'image {0} sur {1}",(i+1),_imgOrig.length); FuLog.trace(desc); if (_task!=null) { _task.setDesc(desc); @@ -444,7 +443,7 @@ try { String outs = FuLib.runProgram(new String[]{exePath + File.separator + CMDS[0] + CMD_EXT, - imgRaw[i].getPath(), dstImgInp.getPath()}, prjRoot); + _imgOrig[i].getPath(), dstImgInp.getPath()}, prjRoot); if (!outs.trim().equals("")) { _ana.addError(PivResource.getS("Erreur de reconditionnement:\n")+outs); return false; @@ -459,7 +458,7 @@ _ana.addError(ex.getMessage()); return false; } - prog=(i+1)*90/imgRaw.length; + prog=(i+1)*90/_imgOrig.length; if (_task!=null) _task.setProgression(prog); } Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivSelectImagesAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivSelectImagesAction.java 2011-09-08 08:08:26 UTC (rev 6373) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivSelectImagesAction.java 2011-09-08 08:10:29 UTC (rev 6374) @@ -11,7 +11,6 @@ import java.io.File; import javax.swing.JFileChooser; import org.fudaa.ctulu.CtuluAnalyze; -import org.fudaa.ctulu.CtuluLibFile; import org.fudaa.ctulu.gui.CtuluDialog; import org.fudaa.ctulu.gui.CtuluTaskOperationGUI; import org.fudaa.ebli.commun.EbliActionSimple; @@ -81,27 +80,8 @@ if (fcImages.showOpenDialog(impl.getFrame()) == JFileChooser.CANCEL_OPTION) { return; } - File[] srcImgFiles=fcImages.getSelectedFiles(); + final File[] srcImgFiles=fcImages.getSelectedFiles(); - // Creation r\xE9pertoire d'images initiales - File prjRawImgDir=new File(impl.getCurrentProject().getRoot(),PivProject.IMG_RAW_DIR); - prjRawImgDir.mkdir(); - - // Suppression des anciennes images du projet, seulement si les images - // sources ne proviennent pas du r\xE9pertoire projet. - if (srcImgFiles.length>0 && !srcImgFiles[0].getParentFile().equals(prjRawImgDir)) { - File[] prjImgFiles=prjRawImgDir.listFiles(); - for (int i=0; i<prjImgFiles.length; i++) { - prjImgFiles[i].delete(); - } - - // Copie des images - for (int i=0; i<srcImgFiles.length; i++) { - File dstImgFile=new File(prjRawImgDir, srcImgFiles[i].getName()); - CtuluLibFile.copyFile(srcImgFiles[i], dstImgFile); - } - } - // La tache a ex\xE9cuter. CtuluTaskOperationGUI r=new CtuluTaskOperationGUI(impl, PivResource.getS("Reconditionnement des images")) { @@ -109,7 +89,7 @@ try { CtuluAnalyze ana=new CtuluAnalyze(); ana.setDesc(getName()); - impl.getLauncher().launchRepackingImg(ana, impl.getCurrentProject(), this); + impl.getLauncher().launchRepackingImg(ana, impl.getCurrentProject(), this, srcImgFiles); if (ana.containsErrorOrFatalError()) { impl.error(ana.getResume()); Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProject.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProject.java 2011-09-08 08:08:26 UTC (rev 6373) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProject.java 2011-09-08 08:10:29 UTC (rev 6374) @@ -35,8 +35,6 @@ public class PivProject implements PivProjectStateI { /** Le repertoire projet des fichiers de donn\xE9es */ public static final String OUTPUT_DIR="outputs.dir"; - /** Le r\xE9pertoire projet des images d'origine */ - public static final String IMG_RAW_DIR="img_raw"; /** Le r\xE9pertoire projet des images reconditionn\xE9es */ public static final String IMG_PGM_DIR="img_pgm"; /** Le r\xE9pertoire projet des images transform\xE9es */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2011-09-08 08:36:46
|
Revision: 6376 http://fudaa.svn.sourceforge.net/fudaa/?rev=6376&view=rev Author: bmarchan Date: 2011-09-08 08:36:39 +0000 (Thu, 08 Sep 2011) Log Message: ----------- Remplacement signature PivFille2d.getPivVisuPanel() -> getVisuPanel() Modified Paths: -------------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivFille2d.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivOrthoVerifyGRPPanel.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeLaunchAction.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeParamAction.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportGRPAction.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportGridAction.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOriginalViewAction.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOrthoParamAction.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOrthoVerifyGRPAction.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivRealViewAction.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivSelectImagesAction.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivShowVelocityAction.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivTransfViewAction.java Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivFille2d.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivFille2d.java 2011-09-08 08:20:24 UTC (rev 6375) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivFille2d.java 2011-09-08 08:36:39 UTC (rev 6376) @@ -43,8 +43,9 @@ * Retourne le panneau interne des calques. * @return Le panneau des calques. */ - public final PivVisuPanel getPivVisuPanel() { - return (PivVisuPanel)getVisuPanel(); + @Override + public PivVisuPanel getVisuPanel() { + return (PivVisuPanel)super.getVisuPanel(); } /** Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java 2011-09-08 08:20:24 UTC (rev 6375) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java 2011-09-08 08:36:39 UTC (rev 6376) @@ -213,7 +213,7 @@ */ void update2dFrame(String _prop) { if (piv2dFrame==null) return; - piv2dFrame.getPivVisuPanel().refresh(_prop); + piv2dFrame.getVisuPanel().refresh(_prop); } /** @@ -367,7 +367,7 @@ */ public void open2dFrame() { if (project==null) return; - piv2dFrame.getPivVisuPanel().setProjet(project); + piv2dFrame.getVisuPanel().setProjet(project); addInternalFrame(piv2dFrame); // Pas indispensable, mais permet \xE0 la colonne de droite @@ -376,7 +376,7 @@ public void run() { try { piv2dFrame.setMaximum(true); - piv2dFrame.getPivVisuPanel().restaurer(); + piv2dFrame.getVisuPanel().restaurer(); } catch (PropertyVetoException ex) { } @@ -638,21 +638,21 @@ BuMenu mn=new BuMenu(PivResource.getS("LSPIV"),"mnPROJECT"); mn.add(new PivSelectImagesAction(this)); mn.addSeparator(PivResource.getS("Orthorectification")); - mn.add(get2dFrame().getPivVisuPanel().getOrthoGRPAction()); + mn.add(get2dFrame().getVisuPanel().getOrthoGRPAction()); mn.add(new PivOrthoVerifyGRPAction(this)); mn.add(new PivOrthoParamAction(this)); mn.add(new PivOrthoLaunchAction(this)); mn.addSeparator(PivResource.getS("Analyse LSPIV")); mn.add(new PivComputeParamAction(this)); - mn.add(get2dFrame().getPivVisuPanel().getComputeGridDefinitionAction()); + mn.add(get2dFrame().getVisuPanel().getComputeGridDefinitionAction()); mn.add(new PivComputeLaunchAction(this)); mn.addSeparator(PivResource.getS("R\xE9sultats")); - mn.add(get2dFrame().getPivVisuPanel().getShowVelocitiesAction().buildMenuItem(EbliComponentFactory.INSTANCE)); + mn.add(get2dFrame().getVisuPanel().getShowVelocitiesAction().buildMenuItem(EbliComponentFactory.INSTANCE)); mn.addSeparator(PivResource.getS("Vue")); ButtonGroup bg=new ButtonGroup(); - AbstractButton itOriginalView=get2dFrame().getPivVisuPanel().getOriginalViewAction().buildMenuItem(EbliComponentFactory.INSTANCE); - AbstractButton itRealView=get2dFrame().getPivVisuPanel().getRealViewAction().buildMenuItem(EbliComponentFactory.INSTANCE); - AbstractButton itTransfView=get2dFrame().getPivVisuPanel().getTransfViewAction().buildMenuItem(EbliComponentFactory.INSTANCE); + AbstractButton itOriginalView=get2dFrame().getVisuPanel().getOriginalViewAction().buildMenuItem(EbliComponentFactory.INSTANCE); + AbstractButton itRealView=get2dFrame().getVisuPanel().getRealViewAction().buildMenuItem(EbliComponentFactory.INSTANCE); + AbstractButton itTransfView=get2dFrame().getVisuPanel().getTransfViewAction().buildMenuItem(EbliComponentFactory.INSTANCE); bg.add(itTransfView); bg.add(itRealView); bg.add(itOriginalView); @@ -660,7 +660,7 @@ mn.add(itRealView); mn.add(itTransfView); mn.addSeparator(); - mn.add(get2dFrame().getPivVisuPanel().getEditAction()); + mn.add(get2dFrame().getVisuPanel().getEditAction()); mn.setVisible(true); return mn; Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivOrthoVerifyGRPPanel.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivOrthoVerifyGRPPanel.java 2011-09-08 08:20:24 UTC (rev 6375) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivOrthoVerifyGRPPanel.java 2011-09-08 08:36:39 UTC (rev 6376) @@ -138,7 +138,7 @@ */ @Override public void apply() { - impl_.get2dFrame().getPivVisuPanel().setControlPointsLayerVisible(false); + impl_.get2dFrame().getVisuPanel().setControlPointsLayerVisible(false); } /** @@ -147,7 +147,7 @@ */ @Override public boolean cancel() { - impl_.get2dFrame().getPivVisuPanel().setControlPointsLayerVisible(false); + impl_.get2dFrame().getVisuPanel().setControlPointsLayerVisible(false); return super.cancel(); } } Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeLaunchAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeLaunchAction.java 2011-09-08 08:20:24 UTC (rev 6375) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeLaunchAction.java 2011-09-08 08:36:39 UTC (rev 6376) @@ -101,8 +101,8 @@ } impl.message(PivResource.getS("Calcul termin\xE9"), PivResource.getS("Le calcul s'est termin\xE9 avec succ\xE8s"), false); - impl.get2dFrame().getPivVisuPanel().setViewMode(PivVisuPanel.MODE_REAL_VIEW); - impl.get2dFrame().getPivVisuPanel().setVelocitiesLayerVisible(true); + impl.get2dFrame().getVisuPanel().setViewMode(PivVisuPanel.MODE_REAL_VIEW); + impl.get2dFrame().getVisuPanel().setVelocitiesLayerVisible(true); } }; Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeParamAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeParamAction.java 2011-09-08 08:20:24 UTC (rev 6375) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeParamAction.java 2011-09-08 08:36:39 UTC (rev 6376) @@ -35,7 +35,7 @@ * @param _e L'evenement pour l'action. */ public void actionPerformed(final ActionEvent _e) { - impl.get2dFrame().getPivVisuPanel().setViewMode(PivVisuPanel.MODE_TRANSF_VIEW); + impl.get2dFrame().getVisuPanel().setViewMode(PivVisuPanel.MODE_TRANSF_VIEW); PivComputeParamPanel pn=new PivComputeParamPanel(); PivComputeParameters params=impl.getCurrentProject().getComputeParameters(); Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportGRPAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportGRPAction.java 2011-09-08 08:20:24 UTC (rev 6375) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportGRPAction.java 2011-09-08 08:36:39 UTC (rev 6376) @@ -72,7 +72,7 @@ PivOrthoPoint[] pts=(PivOrthoPoint[])ret.getSource(); impl.getCurrentProject().setOrthoPoints(pts); - impl.get2dFrame().getPivVisuPanel().setViewMode(PivVisuPanel.MODE_ORIGINAL_VIEW); + impl.get2dFrame().getVisuPanel().setViewMode(PivVisuPanel.MODE_ORIGINAL_VIEW); } /** Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportGridAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportGridAction.java 2011-09-08 08:20:24 UTC (rev 6375) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportGridAction.java 2011-09-08 08:36:39 UTC (rev 6376) @@ -83,7 +83,7 @@ } impl.getCurrentProject().setComputeGrid(newGrid); - impl.get2dFrame().getPivVisuPanel().setViewMode(PivVisuPanel.MODE_TRANSF_VIEW); + impl.get2dFrame().getVisuPanel().setViewMode(PivVisuPanel.MODE_TRANSF_VIEW); } /** Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOriginalViewAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOriginalViewAction.java 2011-09-08 08:20:24 UTC (rev 6375) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOriginalViewAction.java 2011-09-08 08:36:39 UTC (rev 6376) @@ -56,7 +56,7 @@ @Override public void changeAction() { - impl.get2dFrame().getPivVisuPanel().setViewMode(PivVisuPanel.MODE_ORIGINAL_VIEW); + impl.get2dFrame().getVisuPanel().setViewMode(PivVisuPanel.MODE_ORIGINAL_VIEW); impl.updateActionsState(); } } Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOrthoParamAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOrthoParamAction.java 2011-09-08 08:20:24 UTC (rev 6375) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOrthoParamAction.java 2011-09-08 08:36:39 UTC (rev 6376) @@ -43,7 +43,7 @@ * @param _e L'evenement pour l'action. */ public void actionPerformed(final ActionEvent _e) { - impl.get2dFrame().getPivVisuPanel().setViewMode(PivVisuPanel.MODE_REAL_VIEW); + impl.get2dFrame().getVisuPanel().setViewMode(PivVisuPanel.MODE_REAL_VIEW); PivOrthoParamPanel pnParams=new PivOrthoParamPanel(impl); Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOrthoVerifyGRPAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOrthoVerifyGRPAction.java 2011-09-08 08:20:24 UTC (rev 6375) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOrthoVerifyGRPAction.java 2011-09-08 08:36:39 UTC (rev 6376) @@ -48,7 +48,7 @@ return; } - impl.get2dFrame().getPivVisuPanel().setViewMode(PivVisuPanel.MODE_REAL_VIEW); + impl.get2dFrame().getVisuPanel().setViewMode(PivVisuPanel.MODE_REAL_VIEW); if (!impl.getLauncher().areExeOK()) { PivExePanel pnExe = new PivExePanel(); @@ -75,7 +75,7 @@ } PivOrthoVerifyGRPPanel pn=new PivOrthoVerifyGRPPanel(impl); - impl.get2dFrame().getPivVisuPanel().setControlPointsLayerVisible(true); + impl.get2dFrame().getVisuPanel().setControlPointsLayerVisible(true); pn.affiche(impl.getFrame(),PivResource.getS("V\xE9rification des points de r\xE9f\xE9rence"), CtuluDialog.OK_OPTION); } Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivRealViewAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivRealViewAction.java 2011-09-08 08:20:24 UTC (rev 6375) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivRealViewAction.java 2011-09-08 08:36:39 UTC (rev 6376) @@ -77,7 +77,7 @@ @Override public void changeAction() { - impl.get2dFrame().getPivVisuPanel().setViewMode(PivVisuPanel.MODE_REAL_VIEW); + impl.get2dFrame().getVisuPanel().setViewMode(PivVisuPanel.MODE_REAL_VIEW); impl.updateActionsState(); } Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivSelectImagesAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivSelectImagesAction.java 2011-09-08 08:20:24 UTC (rev 6375) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivSelectImagesAction.java 2011-09-08 08:36:39 UTC (rev 6376) @@ -110,7 +110,7 @@ diProgress_.dispose(); } - impl.get2dFrame().getPivVisuPanel().setViewMode(PivVisuPanel.MODE_ORIGINAL_VIEW); + impl.get2dFrame().getVisuPanel().setViewMode(PivVisuPanel.MODE_ORIGINAL_VIEW); impl.message(PivResource.getS("{0} images ont \xE9t\xE9 reconditionn\xE9es avec succ\xE8s",impl.getCurrentProject().getPgmImageFiles().length)); } }; Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivShowVelocityAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivShowVelocityAction.java 2011-09-08 08:20:24 UTC (rev 6375) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivShowVelocityAction.java 2011-09-08 08:36:39 UTC (rev 6376) @@ -42,8 +42,8 @@ public void changeAction() { // On bascule dans la bonne vue. if (isSelected()) { - impl.get2dFrame().getPivVisuPanel().setViewMode(PivVisuPanel.MODE_REAL_VIEW); + impl.get2dFrame().getVisuPanel().setViewMode(PivVisuPanel.MODE_REAL_VIEW); } - impl.get2dFrame().getPivVisuPanel().setVelocitiesLayerVisible(isSelected()); + impl.get2dFrame().getVisuPanel().setVelocitiesLayerVisible(isSelected()); } } Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivTransfViewAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivTransfViewAction.java 2011-09-08 08:20:24 UTC (rev 6375) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivTransfViewAction.java 2011-09-08 08:36:39 UTC (rev 6376) @@ -76,7 +76,7 @@ @Override public void changeAction() { - impl.get2dFrame().getPivVisuPanel().setViewMode(PivVisuPanel.MODE_TRANSF_VIEW); + impl.get2dFrame().getVisuPanel().setViewMode(PivVisuPanel.MODE_TRANSF_VIEW); impl.updateActionsState(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2011-09-14 09:01:21
|
Revision: 6429 http://fudaa.svn.sourceforge.net/fudaa/?rev=6429&view=rev Author: bmarchan Date: 2011-09-14 09:01:14 +0000 (Wed, 14 Sep 2011) Log Message: ----------- Mod : Question filtre relancer calcul scinder en 2 actions (calcul vitesses instantan?\195?\169es + filtre/moyennation vitesses) Modified Paths: -------------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivExeLauncher.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivVisuPanel.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeLaunchAction.java Added Paths: ----------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeAverageAction.java Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivExeLauncher.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivExeLauncher.java 2011-09-13 15:09:57 UTC (rev 6428) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivExeLauncher.java 2011-09-14 09:01:14 UTC (rev 6429) @@ -327,7 +327,9 @@ public boolean launchPiv(CtuluAnalyze _ana, PivProject _prj, CtuluTaskOperationGUI _task) { File prjRoot=_prj.getRoot(); File prjImgOut=new File(prjRoot,IMG_TRANSF_DIR); + File prjOutputs=new File(prjRoot,OUTPUT_DIR); File prjVelRaw=new File(prjRoot,VEL_RAW_DIR); + File prjVelFlt=new File(prjRoot,VEL_FILTER_DIR); File exeImgOut=new File(exePath,IMG_TRANSF_DIR); File exeOutputs=new File(exePath,OUTPUT_DIR); @@ -336,6 +338,15 @@ // Nettoyage eventuel du repertoire des r\xE9sultats. prjVelRaw.mkdir(); for (File f : prjVelRaw.listFiles()) f.delete(); + // Nettoyage des resultats filtr\xE9s et moyenn\xE9s + prjVelFlt.mkdir(); + for (File f : prjVelFlt.listFiles()) f.delete(); + String faverage="average_vel.out"; + // On d\xE9place le fichier vers le repertoire projet + File resFile=new File(prjOutputs, faverage); + resFile.delete(); + + _prj.setVelResults(null); createExeDirs(); Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java 2011-09-13 15:09:57 UTC (rev 6428) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java 2011-09-14 09:01:14 UTC (rev 6429) @@ -33,6 +33,7 @@ import org.fudaa.fudaa.commun.impl.FudaaCommonImplementation; import org.fudaa.fudaa.commun.impl.FudaaLookPreferencesPanel; import org.fudaa.fudaa.commun.impl.FudaaStartupExitPreferencesPanel; +import org.fudaa.fudaa.piv.action.PivComputeAverageAction; import org.fudaa.fudaa.piv.action.PivComputeLaunchAction; import org.fudaa.fudaa.piv.action.PivComputeParamAction; import org.fudaa.fudaa.piv.action.PivImportGRPAction; @@ -199,7 +200,7 @@ setEnabledForAction("PIV_GRID", bprjOpen && bprjHasTransfImg); setEnabledForAction("IMPORT_GRID", bprjOpen && bprjHasTransfImg); setEnabledForAction("PIV_COMPUTE", bprjOpen); - setEnabledForAction("PIV_COMPUTE", bprjOpen); + setEnabledForAction("COMPUTE_AVERAGE", bprjOpen); setEnabledForAction("RESULTS_SHOW_VELOCITIES", bprjOpen && project.getVelResults()!=null); refreshTitle(); @@ -647,6 +648,7 @@ mn.add(get2dFrame().getVisuPanel().getComputeGridDefinitionAction()); mn.add(new PivComputeLaunchAction(this)); mn.addSeparator(PivResource.getS("R\xE9sultats")); + mn.add(new PivComputeAverageAction(this)); mn.add(get2dFrame().getVisuPanel().getShowVelocitiesAction().buildMenuItem(EbliComponentFactory.INSTANCE)); mn.addSeparator(PivResource.getS("Vue")); ButtonGroup bg=new ButtonGroup(); Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivVisuPanel.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivVisuPanel.java 2011-09-13 15:09:57 UTC (rev 6428) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivVisuPanel.java 2011-09-14 09:01:14 UTC (rev 6429) @@ -385,7 +385,12 @@ * @param _b True : Le calque est visible. */ public void setVelocitiesLayerVisible(boolean _b) { - cqVelResults.setVisible(_b); + if (_b) { + if (viewMode_==MODE_REAL_VIEW) { + addCalque(cqVelResults, true); + } + } + cqVelResults.setVisible(_b); } /** Added: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeAverageAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeAverageAction.java (rev 0) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeAverageAction.java 2011-09-14 09:01:14 UTC (rev 6429) @@ -0,0 +1,121 @@ +/* + * @creation 3 juil. 2008 + * @modification $Date:$ + * @license GNU General Public License 2 + * @copyright (c)1998-2008 CETMEF 2 bd Gambetta F-60231 Compiegne + * @mail fud...@li... + */ +package org.fudaa.fudaa.piv.action; + +import java.awt.event.ActionEvent; +import java.io.File; +import org.fudaa.ctulu.CtuluAnalyze; +import org.fudaa.ctulu.gui.CtuluDialog; +import org.fudaa.ctulu.gui.CtuluTaskOperationGUI; +import org.fudaa.ebli.commun.EbliActionSimple; +import org.fudaa.fudaa.piv.PivExePanel; +import org.fudaa.fudaa.piv.PivImplementation; +import org.fudaa.fudaa.piv.PivPreferences; +import org.fudaa.fudaa.piv.PivProgressionPanel; +import org.fudaa.fudaa.piv.PivResource; +import org.fudaa.fudaa.piv.PivVisuPanel; + +/** + * Une action pour lancer les filtres et moyennation sur les vitesses + * instantan\xE9es. + * + * @author Bertrand Marchand (mar...@de...) + * @version $Id$ + */ +public class PivComputeAverageAction extends EbliActionSimple { + PivImplementation impl; + CtuluDialog diProgress_; + + /** + * Constructeur. + * @param _impl L'implementation. + */ + public PivComputeAverageAction(PivImplementation _impl) { + super(PivResource.getS("Filtrage/moyennation des vitesses instantan\xE9es"), null, "COMPUTE_AVERAGE"); + + impl=_impl; + setEnabled(false); + } + + /** + * Lance l'analyse par PIV, dans un thread s\xE9par\xE9. + * @param _e L'evenement pour l'action. + */ + public void actionPerformed(final ActionEvent _e) { + if (!isValide()) { + return; + } + + if (!impl.getLauncher().areExeOK()) { + PivExePanel pnExe = new PivExePanel(); + + if (!pnExe.afficheModaleOk(impl.getFrame(), PivResource.getS("R\xE9pertoire contenant les executables"))) { + return; + } + else { + impl.getLauncher().setExePath(new File(PivPreferences.PIV.getStringProperty(PivPreferences.PIV_EXE_PATH))); + } + } + + // La tache a ex\xE9cuter. + CtuluTaskOperationGUI r=new CtuluTaskOperationGUI(impl, PivResource.getS("Filtrage/moyennation des vitesses instantan\xE9es")) { + + public void act() { + try { + CtuluAnalyze ana=new CtuluAnalyze(); + + // Filtrage + impl.getLauncher().launchFilterVelocities(ana, impl.getCurrentProject(),this); + if (ana.containsErrorOrFatalError()) { + impl.error(ana.getResume()); + return; + } + + // Moyennation + impl.getLauncher().launchAverageVelocities(ana, impl.getCurrentProject(), this); + if (ana.containsErrorOrFatalError()) { + impl.error(ana.getResume()); + return; + } + } + finally { + diProgress_.dispose(); + } + + impl.message(PivResource.getS("Calcul termin\xE9"), PivResource.getS("Le calcul s'est termin\xE9 avec succ\xE8s"), false); + impl.get2dFrame().getVisuPanel().setViewMode(PivVisuPanel.MODE_REAL_VIEW); + impl.get2dFrame().getVisuPanel().setVelocitiesLayerVisible(true); + } + }; + + PivProgressionPanel pnProgress_=new PivProgressionPanel(r); + diProgress_ = pnProgress_.createDialog(impl.getParentComponent()); + diProgress_.setOption(CtuluDialog.ZERO_OPTION); + diProgress_.setDefaultCloseOperation(CtuluDialog.DO_NOTHING_ON_CLOSE); + diProgress_.setTitle(r.getName()); + + r.start(); + diProgress_.afficheDialogModal(); + } + + /** + * @return true Si toutes les donn\xE9es sont pr\xE9sentes pour un lancement. + */ + public boolean isValide() { + if (!impl.getCurrentProject().hasRawVelocities()) { + impl.error(PivResource.getS("Erreur"), PivResource.getS("Le projet ne contient aucun champ de vitesses instantan\xE9es")); + return false; + } + + return true; + } + + public String getEnableCondition() { + return PivResource.getS("Des vitesses instantan\xE9es doivent exister"); + } +} Property changes on: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeAverageAction.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeLaunchAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeLaunchAction.java 2011-09-13 15:09:57 UTC (rev 6428) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeLaunchAction.java 2011-09-14 09:01:14 UTC (rev 6429) @@ -18,7 +18,6 @@ import org.fudaa.fudaa.piv.PivPreferences; import org.fudaa.fudaa.piv.PivProgressionPanel; import org.fudaa.fudaa.piv.PivResource; -import org.fudaa.fudaa.piv.PivVisuPanel; /** * Une action pour lancer l'analyse par PIV. @@ -35,7 +34,7 @@ * @param _impl L'implementation. */ public PivComputeLaunchAction(PivImplementation _impl) { - super(PivResource.getS("Calcul des vitesses, filtres et moyennation"), null, "PIV_COMPUTE"); + super(PivResource.getS("Calcul des vitesses instantan\xE9es"), null, "PIV_COMPUTE"); impl=_impl; setEnabled(false); @@ -61,48 +60,26 @@ } } - final boolean bcalcVel= - impl.getCurrentProject().getVelResults()==null || !impl.getCurrentProject().hasRawVelocities() || - !impl.question( - PivResource.getS("Calcul des vitesses, filtres et moyennation"), - PivResource.getS("Voulez-vous passer l'\xE9tape d'analyse des images ?\nSi vous r\xE9pondez \"Oui\", seuls les filtres et moyennation\nseront appliqu\xE9s aux vitesses brutes d\xE9j\xE0 calcul\xE9es.")); // La tache a ex\xE9cuter. - CtuluTaskOperationGUI r=new CtuluTaskOperationGUI(impl, PivResource.getS("Calcul du champ des vitesses")) { + CtuluTaskOperationGUI r=new CtuluTaskOperationGUI(impl, PivResource.getS("Calcul des champs de vitesses instantan\xE9es")) { public void act() { try { CtuluAnalyze ana=new CtuluAnalyze(); - if (bcalcVel) { - ana.setDesc(this.getName()); - impl.getLauncher().launchPiv(ana, impl.getCurrentProject(), this); - if (ana.containsErrorOrFatalError()) { - impl.error(ana.getResume()); - return; - } - } - - // Filtrage - impl.getLauncher().launchFilterVelocities(ana, impl.getCurrentProject(),this); + ana.setDesc(this.getName()); + impl.getLauncher().launchPiv(ana, impl.getCurrentProject(), this); if (ana.containsErrorOrFatalError()) { impl.error(ana.getResume()); return; } - - // Moyennation - impl.getLauncher().launchAverageVelocities(ana, impl.getCurrentProject(), this); - if (ana.containsErrorOrFatalError()) { - impl.error(ana.getResume()); - return; - } } finally { diProgress_.dispose(); } impl.message(PivResource.getS("Calcul termin\xE9"), PivResource.getS("Le calcul s'est termin\xE9 avec succ\xE8s"), false); - impl.get2dFrame().getVisuPanel().setViewMode(PivVisuPanel.MODE_REAL_VIEW); - impl.get2dFrame().getVisuPanel().setVelocitiesLayerVisible(true); + impl.get2dFrame().getVisuPanel().setVelocitiesLayerVisible(false); } }; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2011-09-14 12:26:06
|
Revision: 6431 http://fudaa.svn.sourceforge.net/fudaa/?rev=6431&view=rev Author: bmarchan Date: 2011-09-14 12:26:00 +0000 (Wed, 14 Sep 2011) Log Message: ----------- Mod : Possibilit?\195?\169 d'exporter la vue sous forme d'image Modified Paths: -------------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivFille2d.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivFille2d.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivFille2d.java 2011-09-14 12:20:39 UTC (rev 6430) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivFille2d.java 2011-09-14 12:26:00 UTC (rev 6431) @@ -9,6 +9,7 @@ import java.awt.Dimension; +import org.fudaa.ctulu.CtuluLibImage; import org.fudaa.ebli.calque.ZEbliFilleCalques; /** @@ -53,17 +54,22 @@ * @param _view Le nom de la vue courante. */ protected void changeTitle(String _view) { - String title=PivResource.getS("Vue 2D"); + String titre=PivResource.getS("Vue 2D"); if (_view!=null) { - title+=" - "+_view; + titre+=" - "+_view; } - setTitle(title); + setTitle(titre); } -// public final String[] getEnabledActions() { -// return new String[] { "RECHERCHER", "IMPRIMER", "MISEENPAGE", "PREVISUALISER", CtuluExportDataInterface.EXPORT_CMD, -// /*CtuluImageProducer.SNAPSHOT_COMMAND, */"TOUTSELECTIONNER", "INVERSESELECTION", "CLEARSELECTION", "IMPORT_IMAGE" }; -// } + @Override + public final String[] getEnabledActions() { + String[] acts=super.getEnabledActions(); + String[] rets=new String[acts.length+2]; + System.arraycopy(acts, 0, rets, 0, acts.length); + rets[rets.length-2]=CtuluLibImage.SNAPSHOT_COMMAND; + rets[rets.length-1]=CtuluLibImage.SNAPSHOT_CLIPBOARD_COMMAND; + return rets; + } // public void importImage() { // getMdlVisuPanel().importImage(); Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java 2011-09-14 12:20:39 UTC (rev 6430) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java 2011-09-14 12:26:00 UTC (rev 6431) @@ -604,6 +604,7 @@ setEnabledForAction("CREER", true); setEnabledForAction("OUVRIR", true); setEnabledForAction("IMPORTER", true); + setEnabledForAction("EXPORTER", true); BuMenuRecentFiles mr= (BuMenuRecentFiles)mb.getMenu("REOUVRIR"); if (mr != null) { @@ -614,6 +615,7 @@ // les menus exporter et importer sont construit dynamiquement buildImportMenu(); + buildExportMenu(); // BuMenu mnExport = (BuMenu) mb.getMenu("EXPORTER"); // menu.addMenuItem(FSigImageImportAction.getCommonTitle(), "IMPORT_IMAGE", FSigImageImportAction.getCommonImage(), @@ -677,8 +679,30 @@ mnImport.add(new PivImportGridAction((this))); } + /** + * Constriut le menu export + */ + protected void buildExportMenu() { + BuMenu mnExport = (BuMenu)getMainMenuBar().getMenu("EXPORTER"); + BuMenuItem itExportImage = new BuMenuItem(); + super.initExportImageButton(itExportImage); + mnExport.add(itExportImage); + + BuMenuItem itExportImageToClip = new BuMenuItem(); + super.initExportImageToClipborad(itExportImageToClip); + mnExport.add(itExportImageToClip); + } + /** + * @return True pour export de la fenetre active sous forme d'image. + */ + @Override + protected boolean buildImageToolIcon() { + return true; + } + + /** * Suppression des commandes par d\xE9faut dans Fudaa. */ protected void removeUnusedActions() { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2011-09-26 13:41:28
|
Revision: 6446 http://fudaa.svn.sourceforge.net/fudaa/?rev=6446&view=rev Author: bmarchan Date: 2011-09-26 13:41:16 +0000 (Mon, 26 Sep 2011) Log Message: ----------- Add : Lecture/ecriture d'un transect Modified Paths: -------------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProject.java Added Paths: ----------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportTransectAction.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivTransectFileFormat.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivTransectReader.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivTransectWriter.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivTransect.java Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java 2011-09-26 07:06:09 UTC (rev 6445) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java 2011-09-26 13:41:16 UTC (rev 6446) @@ -38,6 +38,7 @@ import org.fudaa.fudaa.piv.action.PivComputeParamAction; import org.fudaa.fudaa.piv.action.PivImportGRPAction; import org.fudaa.fudaa.piv.action.PivImportGridAction; +import org.fudaa.fudaa.piv.action.PivImportTransectAction; import org.fudaa.fudaa.piv.action.PivOrthoLaunchAction; import org.fudaa.fudaa.piv.action.PivOrthoParamAction; import org.fudaa.fudaa.piv.action.PivOrthoVerifyGRPAction; @@ -144,6 +145,20 @@ } /** + * Une classe de filtrage des fichiers bathy.dat, utilis\xE9e lors de l'import + * par boite de dialogue. + */ + public static class PivTransectFileFilter extends FileFilter { + public boolean accept(File _f) { + return _f != null && (_f.isDirectory() || _f.getName().endsWith(".dat")); + } + + public String getDescription() { + return PivResource.getS("Fichier bathy (*.dat)"); + } + } + + /** * Constructeur. */ public PivImplementation() { @@ -199,6 +214,7 @@ setEnabledForAction("PIV_PARAM", bprjOpen && bprjHasTransfImg); setEnabledForAction("PIV_GRID", bprjOpen && bprjHasTransfImg); setEnabledForAction("IMPORT_GRID", bprjOpen && bprjHasTransfImg); + setEnabledForAction("IMPORT_TRANSECT", bprjOpen && bprjHasTransfImg); setEnabledForAction("PIV_COMPUTE", bprjOpen); setEnabledForAction("COMPUTE_AVERAGE", bprjOpen); setEnabledForAction("RESULTS_SHOW_VELOCITIES", bprjOpen && project.getVelResults()!=null); @@ -251,6 +267,7 @@ * Interne : Appel\xE9 quand une action est d\xE9clench\xE9e. * @param _evt L'evenement d\xE9clench\xE9. */ + @Override public void actionPerformed(ActionEvent _evt) { final String action = _evt.getActionCommand(); if (action == null) { @@ -297,6 +314,7 @@ * Confirmation de la sortie avec ou sans sauvegarde. * @return True s'il y a eu confirmation. */ + @Override public boolean confirmExit() { if (!FudaaStartupExitPreferencesPanel.isExitConfirmed() || question(BuResource.BU.getString("Quitter"), BuResource.BU @@ -417,6 +435,7 @@ /** * Ferme le projet, puis la fenetre 2D associ\xE9e. */ + @Override public void close() { if (project!=null) project.dispose(); @@ -559,6 +578,7 @@ * Methode surcharg\xE9e pour les panneau de pr\xE9f\xE9rence. * @param _frAddTab La liste contenant tous les panneaux de pr\xE9f\xE9rences. */ + @Override protected void buildPreferences(final List _frAddTab) { _frAddTab.add(new BuUserPreferencesPanel(this)); _frAddTab.add(new BuLanguagePreferencesPanel(this)); @@ -591,6 +611,7 @@ /** * Mise en place de l'application avant affichage. */ + @Override public void init() { super.init(); // Pour forcer l'activation du command listener. @@ -677,6 +698,7 @@ BuMenu mnImport = (BuMenu) getMainMenuBar().getMenu("IMPORTER"); mnImport.add(new PivImportGRPAction((this))); mnImport.add(new PivImportGridAction((this))); + mnImport.add(new PivImportTransectAction((this))); } /** @@ -732,6 +754,7 @@ /** * D\xE9marre l'application. */ + @Override public void start() { super.start(); super.addFrameListLeft(); Added: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportTransectAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportTransectAction.java (rev 0) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportTransectAction.java 2011-09-26 13:41:16 UTC (rev 6446) @@ -0,0 +1,81 @@ +package org.fudaa.fudaa.piv.action; + +import java.awt.event.ActionEvent; +import java.io.File; +import javax.swing.JFileChooser; +import org.fudaa.ctulu.CtuluIOOperationSynthese; +import org.fudaa.ctulu.fileformat.FileReadOperationAbstract; +import org.fudaa.ebli.commun.EbliActionSimple; +import org.fudaa.fudaa.piv.PivImplementation; +import org.fudaa.fudaa.piv.PivResource; +import org.fudaa.fudaa.piv.PivVisuPanel; +import org.fudaa.fudaa.piv.io.PivTransectFileFormat; +import org.fudaa.fudaa.piv.metier.PivTransect; + +/** + * Une action pour importer un transect. + * + * @author Bertrand Marchand (mar...@de...) + * @version $Id$ + */ +public class PivImportTransectAction extends EbliActionSimple { + PivImplementation impl; + JFileChooser fcTransect; + + /** + * Constructeur + * @param _impl L'implementation. + */ + public PivImportTransectAction(PivImplementation _impl) { + super(PivResource.getS("Import d'un transect..."), null, "IMPORT_TRANSECT"); + + impl=_impl; + setEnabled(false); + } + + /** + * Affiche une boite de dialogue pour permettre de selectionner le fichier + * d'import. + * @param _e L'evenement pour l'action. + */ + public void actionPerformed(final ActionEvent _e) { + if (!isValide()) { + return; + } + + // Selection du fichier + if (fcTransect==null) + fcTransect = new JFileChooser(); + fcTransect.setAcceptAllFileFilterUsed(true); + fcTransect.setFileFilter(new PivImplementation.PivTransectFileFilter()); + fcTransect.setMultiSelectionEnabled(false); + fcTransect.setDialogTitle(PivResource.getS("S\xE9lection d'un fichier transect")); + if (fcTransect.showOpenDialog(impl.getFrame()) == JFileChooser.CANCEL_OPTION) { + return; + } + File transectFile=fcTransect.getSelectedFile(); + + FileReadOperationAbstract reader=PivTransectFileFormat.getInstance().createReader(); + CtuluIOOperationSynthese ret=reader.read(transectFile, null); + if (ret.getAnalyze().containsErrorOrFatalError()) { + impl.error(ret.getAnalyze().getResume()); + return; + } + + PivTransect trans=(PivTransect)ret.getSource(); + impl.getCurrentProject().setTransect(trans); + + impl.get2dFrame().getVisuPanel().setViewMode(PivVisuPanel.MODE_REAL_VIEW); + } + + /** + * @return true Si toutes les donn\xE9es sont pr\xE9sentes pour un lancement. + */ + public boolean isValide() { + return true; + } + + public String getEnableCondition() { + return PivResource.getS("Il doit exister au moins une image transform\xE9e"); + } +} Property changes on: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportTransectAction.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Added: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivTransectFileFormat.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivTransectFileFormat.java (rev 0) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivTransectFileFormat.java 2011-09-26 13:41:16 UTC (rev 6446) @@ -0,0 +1,51 @@ +package org.fudaa.fudaa.piv.io; + +import org.fudaa.ctulu.fileformat.FileFormatUnique; +import org.fudaa.ctulu.fileformat.FileReadOperationAbstract; +import org.fudaa.ctulu.fileformat.FileWriteOperationAbstract; +import org.fudaa.fudaa.piv.PivResource; + +/** + * La classe d\xE9crivant le format d'un fichier bathy.dat contenant + * un transect. + * + * @author Bertrand Marchand (mar...@de...) + * @version $Id$ + */ +public class PivTransectFileFormat extends FileFormatUnique { + + private PivTransectFileFormat() { + super(1); + nom_ = PivResource.getS("Piv transect"); + description_ = PivResource.getS("Fichier contenant un transect"); + extensions_=new String[]{"dat"}; + } + static final PivTransectFileFormat INSTANCE = new PivTransectFileFormat(); + + /** + * Retourne le singleton pour instancier un reader ou un writer. + * @return Le singleton + */ + public static PivTransectFileFormat getInstance() { + return INSTANCE; + } + + /** + * Cr\xE9ation d'un reader. + * @return Le reader + */ + @Override + public FileReadOperationAbstract createReader() { + return new PivTransectReader(); + } + + /** + * Cr\xE9ation d'un writer. + * @return Le writer + */ + @Override + public FileWriteOperationAbstract createWriter() { + return new PivTransectWriter(); + } + +} Property changes on: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivTransectFileFormat.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Added: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivTransectReader.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivTransectReader.java (rev 0) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivTransectReader.java 2011-09-26 13:41:16 UTC (rev 6446) @@ -0,0 +1,117 @@ +/** + * @creation 2002-11-21 + * @modification $Date: 2007/05/04 13:47:27 $ + * @license GNU General Public License 2 + * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne + * @mail de...@fu... + */ +package org.fudaa.fudaa.piv.io; + +import java.io.EOFException; +import java.io.File; +import java.io.IOException; + +import org.fudaa.ctulu.CtuluActivity; +import org.fudaa.dodico.fortran.FileOpReadCharSimpleAbstract; + +import org.fudaa.ebli.geometrie.GrPolyligne; +import org.fudaa.fudaa.piv.PivResource; +import org.fudaa.fudaa.piv.metier.PivTransect; + +/** + * Un lecteur pour les fichiers de bathy. + * + * @author Bertrand Marchand (mar...@de...) + * @version $Id$ + */ +public class PivTransectReader extends FileOpReadCharSimpleAbstract implements CtuluActivity { + + /** Drapeau d'interruption */ + boolean bstop_; + /** Nb d'octets du fichier a lire pour stat sur pourcentage effectu\xE9 */ + int nbOctets; + + /** + * Constructeur. + */ + public PivTransectReader() { + } + + /** + * Lit les points et retourne le transect. + * @return Le transect + */ + @Override + protected PivTransect internalRead() { + return readParams(); + } + + @Override + protected void processFile(final File _f) { + nbOctets = (int) _f.length(); + } + + /** + * Utilise FortranReader ( donc un buffer). + * + * @return les infos non bloquantes. + */ + private synchronized PivTransect readParams() { + PivTransect ret=null; + GrPolyligne pl=new GrPolyligne(); + + if (super.in_ == null) { + analyze_.addErrorFromFile(PivResource.getS("Flux d'entr\xE9e non trouv\xE9"), 0); + return null; + } + + try { + int lu=0; + boolean afficheAvance = false; + if ((progress_ != null) && (nbOctets > 0)) { + afficheAvance = true; + progress_.setProgression(0); + } + int pourcentageEnCours = 0; + + in_.setJumpBlankLine(true); + + // Boucle jusque fin de fichier. Exception EOF si fin. + while (true) { + in_.readFields(); + pl.sommets_.ajoute(in_.doubleField(0),in_.doubleField(1),in_.doubleField(2)); + lu+=26; // Si le formattage en fortran + + if ((afficheAvance) && ((lu * 100 / nbOctets) >= (pourcentageEnCours + 20))) { + pourcentageEnCours += 20; + progress_.setProgression(pourcentageEnCours); + } + } + } + // Sortie normale + catch (final EOFException e) { + ret=new PivTransect(); + ret.setTransect(pl); + } + catch (final IOException e) { + analyze_.addErrorFromFile(PivResource.getS("Une erreur de lecture s'est produite"), in_.getLineNumber()); + } + catch (final NumberFormatException e) { + analyze_.addErrorFromFile(PivResource.getS("Une erreur de lecture s'est produite"), in_.getLineNumber()); + } + finally { + if (progress_ != null) { + progress_.setProgression(100); + } + return ret; + } + } + + /** + * Interruption asynchrone de l'activit\xE9 de lecture. + */ + @Override + public void stop() { + bstop_ = true; + } +} Property changes on: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivTransectReader.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Added: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivTransectWriter.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivTransectWriter.java (rev 0) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivTransectWriter.java 2011-09-26 13:41:16 UTC (rev 6446) @@ -0,0 +1,45 @@ +package org.fudaa.fudaa.piv.io; + +import java.io.PrintWriter; + +import org.fudaa.dodico.fortran.FileOpWriterCharSimpleAbstract; +import org.fudaa.ebli.geometrie.GrPolyligne; +import org.fudaa.fudaa.piv.metier.PivTransect; + +/** + * Une classe pour ecrire un transect sur fichier. + * + * @author Bertrand Marchand (mar...@de...) + * @version $Id$ + */ +public class PivTransectWriter extends FileOpWriterCharSimpleAbstract { + + /** + * Ecrit les param\xE8tres d'orthorectification. + * param _o Un PivTransect. + */ + @Override + protected void internalWrite(final Object _o) { + if (!(_o instanceof PivTransect)) { + donneesInvalides(_o); + return; + } + + GrPolyligne pl = ((PivTransect)_o).getTransect(); + + final PrintWriter writer = new PrintWriter(out_); + + try { + + // Boucle sur tous les points, ecriture des coordonn\xE9es en entier (images) + for (int i=0; i<pl.nombre(); i++) { + writer.println((double)pl.sommet(i).x_+" "+ + (double)pl.sommet(i).y_+" "+(double)pl.sommet(i).z_); + } + + } + catch (final Exception _evt) { + analyze_.manageException(_evt); + } + } +} Property changes on: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivTransectWriter.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProject.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProject.java 2011-09-26 07:06:09 UTC (rev 6445) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProject.java 2011-09-26 13:41:16 UTC (rev 6446) @@ -24,6 +24,7 @@ import org.fudaa.fudaa.piv.io.PivHFileFormat; import org.fudaa.fudaa.piv.io.PivImgRefFileFormat; import org.fudaa.fudaa.piv.io.PivParamFileFormat; +import org.fudaa.fudaa.piv.io.PivTransectFileFormat; /** * Le projet contenant toutes les donn\xE9es. Chauqe projet peut \xEAtre sauv\xE9/relu @@ -54,6 +55,8 @@ protected PivCntGrid cntGrid; /** La grille de calcul */ protected PivGrid computeGrid; + /** Un transect pour le calcul de d\xE9bits */ + protected PivTransect transect; /** Les r\xE9sultats de vitesses */ protected PivVelResults velResults; /** La taille des images transform\xE9es */ @@ -457,6 +460,14 @@ CtuluIOOperationSynthese ret=reader.read(velFile, null); velResults=(PivVelResults)ret.getSource(); } + + // Un transect + File transectFile=new File(outputDir,"bathy.dat"); + if (transectFile.exists()) { + FileReadOperationAbstract reader=PivTransectFileFormat.getInstance().createReader(); + CtuluIOOperationSynthese ret=reader.read(transectFile, null); + transect=(PivTransect)ret.getSource(); + } FuLog.trace("*** Chargement de "+rootPath+" ***"); if (orthoPoints!=null) { @@ -495,6 +506,12 @@ else { FuLog.trace("Pas de r\xE9sultats."); } + if (transect!=null) { + FuLog.trace("Transect charg\xE9"); + } + else { + FuLog.trace("Pas de transect."); + } if (hasPgmImages()) { FuLog.trace("Images reconditionn\xE9es : "+getPgmImageFiles().length+" images"); } @@ -559,6 +576,13 @@ CtuluIOOperationSynthese ret=writer.write(computeGrid, gridFile, null); } + // Un transect + if (transect!=null) { + File transectFile=new File(outputDir,"bathy.dat"); + FileWriteOperationAbstract writer=PivTransectFileFormat.getInstance().createWriter(); + CtuluIOOperationSynthese ret=writer.write(transect, transectFile, null); + } + isModified=false; } @@ -664,6 +688,24 @@ isModified=true; fireProjectStateChanged("cntGrid"); } + + /** + * Definit un transect pour le calcul de d\xE9bit. + * @param _trans Le transect. <tt>null</tt> est autoris\xE9. + */ + public void setTransect(PivTransect _trans) { + transect=_trans; + isModified=true; + fireProjectStateChanged("transect"); + } + + /** + * Retourne le transect pour le calcul de d\xE9bit. + * @return Le transect ou <tt>null</tt> s'il n'a pas \xE9t\xE9 d\xE9fini. + */ + public PivTransect getTransect() { + return transect; + } /** * Retourne les r\xE9sultats. Added: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivTransect.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivTransect.java (rev 0) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivTransect.java 2011-09-26 13:41:16 UTC (rev 6446) @@ -0,0 +1,31 @@ +package org.fudaa.fudaa.piv.metier; + +import org.fudaa.ebli.geometrie.GrPolyligne; + +/** + * Une classe permettant de stocker les points d'un transect. Un transect est une + * droite constitu\xE9e de plusieurs points en X,Y,Z. + * + * @author Bertrand Marchand (mar...@de...) + */ +public class PivTransect { + /** La droite du transect */ + protected GrPolyligne transect; + + + /** + * Retourne la g\xE9om\xE9trie du transect. + * @return Le transect + */ + public GrPolyligne getTransect() { + return transect; + } + + /** + * Definit la g\xE9om\xE9trie du transect + * @param _transect Le transect + */ + public void setTransect(GrPolyligne _transect) { + this.transect = _transect; + } +} Property changes on: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivTransect.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2011-09-26 14:28:23
|
Revision: 6448 http://fudaa.svn.sourceforge.net/fudaa/?rev=6448&view=rev Author: bmarchan Date: 2011-09-26 14:28:17 +0000 (Mon, 26 Sep 2011) Log Message: ----------- Mod : Suppression de calques inutiles. Modified Paths: -------------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivVisuPanel.java Removed Paths: ------------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivLigneBriseeLayer.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivMultiPointLayer.java Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivVisuPanel.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivVisuPanel.java 2011-09-26 14:27:24 UTC (rev 6447) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivVisuPanel.java 2011-09-26 14:28:17 UTC (rev 6448) @@ -24,6 +24,8 @@ import org.fudaa.ebli.calque.ZEbliCalquesPanel; import org.fudaa.ebli.calque.dessin.DeForme; import org.fudaa.ebli.calque.edition.ZCalqueEditionInteraction; +import org.fudaa.ebli.calque.edition.ZCalqueLigneBriseeEditable; +import org.fudaa.ebli.calque.edition.ZCalqueMultiPointEditable; import org.fudaa.ebli.calque.edition.ZCalquePointEditable; import org.fudaa.ebli.calque.edition.ZEditorDefault; import org.fudaa.ebli.calque.edition.ZModelePointEditable; @@ -46,8 +48,6 @@ import org.fudaa.fudaa.piv.layer.PivControlPointsModel; import org.fudaa.fudaa.piv.layer.PivIASALayer; import org.fudaa.fudaa.piv.layer.PivIASAModel; -import org.fudaa.fudaa.piv.layer.PivLigneBriseeLayer; -import org.fudaa.fudaa.piv.layer.PivMultiPointLayer; import org.fudaa.fudaa.piv.layer.PivOriginalImageModel; import org.fudaa.fudaa.piv.layer.PivOrthoPointsModel; import org.fudaa.fudaa.piv.layer.PivRealImageModel; @@ -101,11 +101,11 @@ ZCalqueImageRaster cqTransfImage_; ZCalquePointEditable cqGrille_; - PivLigneBriseeLayer cqCntGrille_; - PivMultiPointLayer cqOrthoPoints_; + ZCalqueLigneBriseeEditable cqCntGrille_; + ZCalqueMultiPointEditable cqOrthoPoints_; ZCalqueImageRaster cqOriginalImg_; - PivMultiPointLayer cqRealOrthoPoints_; - PivMultiPointLayer cqRealControlPoints_; + ZCalqueMultiPointEditable cqRealOrthoPoints_; + ZCalqueMultiPointEditable cqRealControlPoints_; ZCalqueImageRaster cqRealImg_; PivIASALayer cqIASA_; /** Le calque d'\xE9dition du contour de grille. */ @@ -407,7 +407,7 @@ */ protected void buildOriginalLayers() { // Layer des ortho points - cqOrthoPoints_=new PivMultiPointLayer(); + cqOrthoPoints_=new ZCalqueMultiPointEditable(null, null); cqOrthoPoints_.setTitle(PivResource.getS("Points r\xE9f\xE9rence")); cqOrthoPoints_.setIconModel(0, new TraceIconModel(TraceIcon.PLUS_DOUBLE, 3, Color.RED)); cqOrthoPoints_.setName("cqOrthoPoints"); @@ -437,7 +437,7 @@ */ protected void buildRealLayers() { // Layer des ortho points - cqRealOrthoPoints_=new PivMultiPointLayer(); + cqRealOrthoPoints_=new ZCalqueMultiPointEditable(null,null); cqRealOrthoPoints_.setTitle(PivResource.getS("Points r\xE9f\xE9rence")); cqRealOrthoPoints_.setIconModel(0, new TraceIconModel(TraceIcon.PLUS_DOUBLE, 3, Color.RED)); cqRealOrthoPoints_.setName("cqRealOrthoPoints"); @@ -447,7 +447,7 @@ // Layer des ortho points recalcul\xE9s // Layer des ortho points - cqRealControlPoints_=new PivMultiPointLayer(); + cqRealControlPoints_=new ZCalqueMultiPointEditable(null,null); cqRealControlPoints_.setTitle(PivResource.getS("Points de controle")); cqRealControlPoints_.setIconModel(0, new TraceIconModel(TraceIcon.PLUS_DOUBLE, 3, Color.BLUE)); cqRealControlPoints_.setName("cqRealControlPoints"); @@ -501,7 +501,7 @@ cqIASA_.setDestructible(false); // Layer des bords de grille - cqCntGrille_=new PivLigneBriseeLayer(); + cqCntGrille_=new ZCalqueLigneBriseeEditable(); cqCntGrille_.setFormeEnable(new int[]{DeForme.POLYGONE}); cqCntGrille_.setTitle(PivResource.getS("Contour grille")); cqCntGrille_.setLineModel(0, new TraceLigneModel(TraceLigne.POINTILLE, 1, Color.RED)); Deleted: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivLigneBriseeLayer.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivLigneBriseeLayer.java 2011-09-26 14:27:24 UTC (rev 6447) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivLigneBriseeLayer.java 2011-09-26 14:28:17 UTC (rev 6448) @@ -1,133 +0,0 @@ -package org.fudaa.fudaa.piv.layer; - -import java.awt.Color; -import java.awt.FontMetrics; -import java.awt.Graphics2D; -import java.awt.geom.Rectangle2D; -import org.fudaa.ctulu.gis.GISAttributeInterface; -import org.fudaa.ctulu.gis.GISAttributeModel; -import org.fudaa.ctulu.gis.GISZoneCollection; -import org.fudaa.ebli.calque.edition.ZCalqueLigneBriseeEditable; -import org.fudaa.ebli.geometrie.GrBoite; -import org.fudaa.ebli.geometrie.GrMorphisme; -import org.fudaa.ebli.geometrie.GrPoint; - -/** - * Un calque contenant des lignes bris\xE9es impl\xE9mentant l'affichage de labels - * sur les atomics. Repris de Fudaa-Modeleur#ZCalqueGeometry en attendant que - * celui ci soit r\xE9int\xE9gr\xE9 dans la branche principale. - * - * @author Bertrand Marchand (mar...@de...) - * @version $Id$ - */ -public class PivLigneBriseeLayer extends ZCalqueLigneBriseeEditable { - /** L'attribut utilis\xE9 pour afficher les labels */ - protected GISAttributeInterface attrLabels_=null; - - /** - * Le seul constructeur, avec le modele \xE9ditable. - */ - public PivLigneBriseeLayer() { - super(); - } - - /** - * D\xE9finit l'attribut atomique pris pour afficher les labels. - * @param _att L'attribut. Si Null : Pas d'affichage de labels. - */ - public void setAttributForLabels(GISAttributeInterface _att) { - if (_att==null || !_att.isAtomicValue()) - attrLabels_=null; - else - attrLabels_=_att; - repaint(); - } - - /** - * Trace les donn\xE9es du calque, avec les labels. - * @param _g Le contexte graphique. - * @param _versEcran Le morphisme pour passer des coordonn\xE9es r\xE9elles vers ecran. - * @param _versReel Le morphisme pour passer des coordonn\xE9es ecran vers r\xE9elles. - * @param _clipReel La fenetre de clipping en coordonn\xE9es r\xE9elles. - */ - @Override - public void paintDonnees(final Graphics2D _g, final GrMorphisme _versEcran, final GrMorphisme _versReel, - final GrBoite _clipReel) { - super.paintDonnees(_g, _versEcran, _versReel,_clipReel); - // Les labels sur les atomiques. - paintLabelsOnAtomics(_g, _versEcran, _versReel, _clipReel); - } - - /** - * Trace les labels sur les atomiques. - * @param _g Le contexte graphique. - * @param _versEcran Le morphisme pour passer des coordonn\xE9es r\xE9elles vers ecran. - * @param _versReel Le morphisme pour passer des coordonn\xE9es ecran vers r\xE9elles. - * @param _clipReel La fenetre de clipping en coordonn\xE9es r\xE9elles. - */ - protected void paintLabelsOnAtomics(final Graphics2D _g, final GrMorphisme _versEcran, final GrMorphisme _versReel, - final GrBoite _clipReel) { - - final GrBoite clip = _clipReel; - final GrMorphisme versEcran = _versEcran; - final int nombre = modele_.getNombre(); - final GrBoite bPoly = new GrBoite(); - - if (attrLabels_!=null && !isRapide()) { - GISZoneCollection geomData = modeleDonnees().getGeomData(); - int idxLabels=geomData.getIndiceOf(attrLabels_); - - if (idxLabels!=-1) { - final FontMetrics fm = _g.getFontMetrics(); - final Color fgColor = _g.getColor(); - final Color bgColor = getBackground(); - - for (int i=nombre-1; i>=0; i--) { - // il n'y a pas de points pour cette ligne - if (modele_.getNbPointForGeometry(i)<=0) { - continue; - } - - modele_.getDomaineForGeometry(i, bPoly); - // Si la boite du polygone n'est pas dans la boite d'affichage on - // passe - if (bPoly.intersectionXY(clip)==null) { - continue; - } - final int nbPoints=modele_.getNbPointForGeometry(i); - if (nbPoints<=0) { - continue; - } - - GISAttributeModel mdl=(GISAttributeModel)geomData.getModel(idxLabels).getObjectValueAt(i); - - final GrPoint ptDest=new GrPoint(); - for (int j=nbPoints-1; j>=0; j--) { - modele_.point(ptDest, i, j); - if (!_clipReel.contientXY(ptDest)) { - continue; - } - - Object o=mdl.getObjectValueAt(j); - if (o==null) - continue; - String s=o.toString().trim(); - if (s.equals("")) - continue; - - ptDest.autoApplique(versEcran); - final Rectangle2D rec=fm.getStringBounds(s, _g); - double x=ptDest.x_-rec.getWidth()/2; - double y=ptDest.y_-5; - rec.setFrame(x, y-fm.getAscent(), rec.getWidth(), fm.getAscent()+2); - _g.setColor(bgColor); - _g.fill(rec); - _g.setColor(fgColor); - _g.drawString(s, (int)x, (int)y); - } - } - } - } - } - -} Deleted: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivMultiPointLayer.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivMultiPointLayer.java 2011-09-26 14:27:24 UTC (rev 6447) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivMultiPointLayer.java 2011-09-26 14:28:17 UTC (rev 6448) @@ -1,133 +0,0 @@ -package org.fudaa.fudaa.piv.layer; - -import java.awt.Color; -import java.awt.FontMetrics; -import java.awt.Graphics2D; -import java.awt.geom.Rectangle2D; -import org.fudaa.ctulu.gis.GISAttributeInterface; -import org.fudaa.ctulu.gis.GISAttributeModel; -import org.fudaa.ctulu.gis.GISZoneCollection; -import org.fudaa.ebli.calque.edition.ZCalqueMultiPointEditable; -import org.fudaa.ebli.geometrie.GrBoite; -import org.fudaa.ebli.geometrie.GrMorphisme; -import org.fudaa.ebli.geometrie.GrPoint; - -/** - * Un calque contenant des multipoints impl\xE9mentant l'affichage de labels sur - * les atomics. Repris de Fudaa-Modeleur#ZCalqueGeometry en attendant que celui - * ci soit r\xE9int\xE9gr\xE9 dans la branche principale. - * - * @author Bertrand Marchand (mar...@de...) - * @version $Id$ - */ -public class PivMultiPointLayer extends ZCalqueMultiPointEditable { - /** L'attribut utilis\xE9 pour afficher les labels */ - protected GISAttributeInterface attrLabels_=null; - - /** - * Le seul constructeur. - */ - public PivMultiPointLayer() { - super(null, null); - } - - /** - * D\xE9finit l'attribut atomique pris pour afficher les labels. - * @param _att L'attribut. Si Null : Pas d'affichage de labels. - */ - public void setAttributForLabels(GISAttributeInterface _att) { - if (_att==null || !_att.isAtomicValue()) - attrLabels_=null; - else - attrLabels_=_att; - repaint(); - } - - /** - * Trace les donn\xE9es du calque, avec les labels. - * @param _g Le contexte graphique. - * @param _versEcran Le morphisme pour passer des coordonn\xE9es r\xE9elles vers ecran. - * @param _versReel Le morphisme pour passer des coordonn\xE9es ecran vers r\xE9elles. - * @param _clipReel La fenetre de clipping en coordonn\xE9es r\xE9elles. - */ - @Override - public void paintDonnees(final Graphics2D _g, final GrMorphisme _versEcran, final GrMorphisme _versReel, - final GrBoite _clipReel) { - super.paintDonnees(_g, _versEcran, _versReel,_clipReel); - // Les labels sur les atomiques. - paintLabelsOnAtomics(_g, _versEcran, _versReel, _clipReel); - } - - /** - * Trace les labels sur les atomiques. - * @param _g Le contexte graphique. - * @param _versEcran Le morphisme pour passer des coordonn\xE9es r\xE9elles vers ecran. - * @param _versReel Le morphisme pour passer des coordonn\xE9es ecran vers r\xE9elles. - * @param _clipReel La fenetre de clipping en coordonn\xE9es r\xE9elles. - */ - protected void paintLabelsOnAtomics(final Graphics2D _g, final GrMorphisme _versEcran, final GrMorphisme _versReel, - final GrBoite _clipReel) { - - final GrBoite clip = _clipReel; - final GrMorphisme versEcran = _versEcran; - final int nombre = modele_.getNombre(); - final GrBoite bPoly = new GrBoite(); - - if (attrLabels_!=null && !isRapide()) { - GISZoneCollection geomData = modeleDonnees().getGeomData(); - int idxLabels=geomData.getIndiceOf(attrLabels_); - - if (idxLabels!=-1) { - final FontMetrics fm = _g.getFontMetrics(); - final Color fgColor = _g.getColor(); - final Color bgColor = getBackground(); - - for (int i=nombre-1; i>=0; i--) { - // il n'y a pas de points pour cette ligne - if (modele_.getNbPointForGeometry(i)<=0) { - continue; - } - - modele_.getDomaineForGeometry(i, bPoly); - // Si la boite du polygone n'est pas dans la boite d'affichage on - // passe - if (bPoly.intersectionXY(clip)==null) { - continue; - } - final int nbPoints=modele_.getNbPointForGeometry(i); - if (nbPoints<=0) { - continue; - } - - GISAttributeModel mdl=(GISAttributeModel)geomData.getModel(idxLabels).getObjectValueAt(i); - - final GrPoint ptDest=new GrPoint(); - for (int j=nbPoints-1; j>=0; j--) { - modele_.point(ptDest, i, j); - if (!_clipReel.contientXY(ptDest)) { - continue; - } - - Object o=mdl.getObjectValueAt(j); - if (o==null) - continue; - String s=o.toString().trim(); - if (s.equals("")) - continue; - - ptDest.autoApplique(versEcran); - final Rectangle2D rec=fm.getStringBounds(s, _g); - double x=ptDest.x_-rec.getWidth()/2; - double y=ptDest.y_-5; - rec.setFrame(x, y-fm.getAscent(), rec.getWidth(), fm.getAscent()+2); - _g.setColor(bgColor); - _g.fill(rec); - _g.setColor(fgColor); - _g.drawString(s, (int)x, (int)y); - } - } - } - } - } - -} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2011-09-26 18:21:54
|
Revision: 6449 http://fudaa.svn.sourceforge.net/fudaa/?rev=6449&view=rev Author: bmarchan Date: 2011-09-26 18:21:47 +0000 (Mon, 26 Sep 2011) Log Message: ----------- Add : Calque de visualisation d'un transect Modified Paths: -------------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivVisuPanel.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOrthoGRPAction.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivTransectReader.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivTransectWriter.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivOrthoPointsModel.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivTransect.java Added Paths: ----------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivTransectModel.java Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivVisuPanel.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivVisuPanel.java 2011-09-26 14:28:17 UTC (rev 6448) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivVisuPanel.java 2011-09-26 18:21:47 UTC (rev 6449) @@ -14,6 +14,7 @@ import javax.swing.JMenu; import javax.units.NonSI; import javax.units.SI; +import org.fudaa.ctulu.gis.GISAttributeDouble; import org.fudaa.ctulu.gis.GISAttributeString; import org.fudaa.ebli.commun.EbliCoordinateDefinition; import org.fudaa.ebli.calque.ZCalqueFleche; @@ -51,6 +52,7 @@ import org.fudaa.fudaa.piv.layer.PivOriginalImageModel; import org.fudaa.fudaa.piv.layer.PivOrthoPointsModel; import org.fudaa.fudaa.piv.layer.PivRealImageModel; +import org.fudaa.fudaa.piv.layer.PivTransectModel; import org.fudaa.fudaa.piv.layer.PivTransfImageModel; import org.fudaa.fudaa.piv.layer.PivVelResultsModel; import org.fudaa.fudaa.piv.metier.PivGrid; @@ -96,6 +98,14 @@ return false; } }; + + /** L'attribut utilis\xE9 pour la saisie de Z r\xE9el. */ + public static final GISAttributeDouble ATT_IND_ZR=new GISAttributeDouble(PivResource.getS("Z r\xE9el"),true) { + @Override + public String getID() { + return "ATT_REAL_Z"; + } + }; PivProject projet; @@ -112,7 +122,10 @@ ZCalqueEditionInteraction cqCntGrilleEdition_; /** Le calque d'edition des points de r\xE9f\xE9rence. */ ZCalqueEditionInteraction cqGRPEdition_; + /** L'affichage des r\xE9sultats moyenn\xE9s */ ZCalqueFleche cqVelResults; + /** L'affichage d'un transect */ + ZCalqueLigneBriseeEditable cqTransect_; PivIASAModel mdlIASA; PivCntGridModel mdlCntGrid; @@ -124,6 +137,7 @@ ZModelePointEditable mdlGrid; PivControlPointsModel mdlRealControlPoints; PivVelResultsModel mdlVelResults; + PivTransectModel mdlTransect; ZEditorDefault editGeom_; @@ -202,6 +216,9 @@ else if("velResults".equals(_prop)) { mdlVelResults.update(); } + else if ("transect".equals(_prop)) { + mdlTransect.update(); + } getVueCalque().repaint(); } @@ -323,6 +340,8 @@ else if (_mode == MODE_REAL_VIEW) { cqRealOrthoPoints_.setLegende(null); cqRealOrthoPoints_.setLegende(getCqLegend()); + + addCalque(cqTransect_); if (projet!=null && projet.getVelResults()!=null) { cqVelResults.setLegende(null); cqVelResults.setLegende(getCqLegend()); @@ -330,6 +349,7 @@ } addCalque(cqRealOrthoPoints_); addCalque(cqRealImg_); + actRealView_.putValue(Action.SELECTED_KEY, true); getCqLegend().enleve(cqIASA_); @@ -471,6 +491,7 @@ // Layer des vitesses resultantes. cqVelResults = new ZCalqueFleche() { + @Override protected String getFlecheUnit() { return "m/s"; } @@ -486,6 +507,14 @@ } } }); + + cqTransect_= new ZCalqueLigneBriseeEditable(); + cqTransect_.setTitle(PivResource.getS("Transect")); + cqTransect_.setName("cqTransect"); + cqTransect_.setFormeEnable(new int[]{DeForme.LIGNE_BRISEE}); + cqTransect_.setLineModel(1, new TraceLigneModel(TraceLigne.POINTILLE, 1, Color.YELLOW.darker())); + cqTransect_.setIconModel(1, new TraceIconModel(TraceIcon.LOSANGE_PLEIN, 3, Color.YELLOW.darker())); + cqTransect_.setDestructible(false); } /** @@ -582,6 +611,10 @@ cqVelResults.setModele(mdlVelResults); cqVelResults.setVisible(false); + mdlTransect=new PivTransectModel(); + mdlTransect.setProjet(projet); + cqTransect_.modele(mdlTransect); + if (projet.hasTransfImages()) setViewMode(MODE_TRANSF_VIEW); else if (projet.hasPgmImages()) Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOrthoGRPAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOrthoGRPAction.java 2011-09-26 14:28:17 UTC (rev 6448) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOrthoGRPAction.java 2011-09-26 18:21:47 UTC (rev 6449) @@ -86,7 +86,7 @@ for (int i = 0; i < _pg.sommets_.nombre(); i++) { Double x = (Double) _data.getValue(PivOrthoPointsModel.ATT_IND_XR, i); Double y = (Double) _data.getValue(PivOrthoPointsModel.ATT_IND_YR, i); - Double z = (Double) _data.getValue(PivOrthoPointsModel.ATT_IND_ZR, i); + Double z = (Double) _data.getValue(PivVisuPanel.ATT_IND_ZR, i); realPts[i] = new GrPoint(x.doubleValue(), y.doubleValue(), z.doubleValue()); for (int j = 0; j < i; j++) { if (realPts[j].distance(realPts[i]) == 0) { Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivTransectReader.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivTransectReader.java 2011-09-26 14:28:17 UTC (rev 6448) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivTransectReader.java 2011-09-26 18:21:47 UTC (rev 6449) @@ -91,7 +91,7 @@ // Sortie normale catch (final EOFException e) { ret=new PivTransect(); - ret.setTransect(pl); + ret.setStraight(pl); } catch (final IOException e) { analyze_.addErrorFromFile(PivResource.getS("Une erreur de lecture s'est produite"), in_.getLineNumber()); Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivTransectWriter.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivTransectWriter.java 2011-09-26 14:28:17 UTC (rev 6448) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivTransectWriter.java 2011-09-26 18:21:47 UTC (rev 6449) @@ -25,7 +25,7 @@ return; } - GrPolyligne pl = ((PivTransect)_o).getTransect(); + GrPolyligne pl = ((PivTransect)_o).getStraight(); final PrintWriter writer = new PrintWriter(out_); Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivOrthoPointsModel.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivOrthoPointsModel.java 2011-09-26 14:28:17 UTC (rev 6448) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivOrthoPointsModel.java 2011-09-26 18:21:47 UTC (rev 6449) @@ -40,14 +40,6 @@ return "ATT_REAL_Y"; } }; - /** L'attribut utilis\xE9 pour la saisie de Z r\xE9el. */ - public static final GISAttributeDouble ATT_IND_ZR=new GISAttributeDouble(PivResource.getS("Z r\xE9el"),true) { - - @Override - public String getID() { - return "ATT_REAL_Z"; - } - }; /** L'attribut utilis\xE9 pour la saisie de X origine. */ public static final GISAttributeDouble ATT_IND_XI=new GISAttributeDouble(PivResource.getS("X img"),true) { @@ -82,11 +74,11 @@ GISAttribute[] attrs = null; type_=_type; if (type_ == PivVisuPanel.MODE_ORIGINAL_VIEW) { - attrs = new GISAttribute[]{ATT_IND_XR, ATT_IND_YR, ATT_IND_ZR, PivVisuPanel.ATT_LABEL}; + attrs = new GISAttribute[]{ATT_IND_XR, ATT_IND_YR, PivVisuPanel.ATT_IND_ZR, PivVisuPanel.ATT_LABEL}; } else { - attrs = new GISAttribute[]{ATT_IND_ZR, ATT_IND_XI, ATT_IND_YI, PivVisuPanel.ATT_LABEL}; - getGeomData().setAttributeIsZ(ATT_IND_ZR); + attrs = new GISAttribute[]{PivVisuPanel.ATT_IND_ZR, ATT_IND_XI, ATT_IND_YI, PivVisuPanel.ATT_LABEL}; + getGeomData().setAttributeIsZ(PivVisuPanel.ATT_IND_ZR); } getGeomData().setAttributes(attrs, null); } @@ -116,7 +108,7 @@ if (type_ == PivVisuPanel.MODE_ORIGINAL_VIEW) { GISAttributeModelDoubleArray xrData = (GISAttributeModelDoubleArray) ATT_IND_XR.createDataForGeom(null, pts.length); GISAttributeModelDoubleArray yrData = (GISAttributeModelDoubleArray) ATT_IND_YR.createDataForGeom(null, pts.length); - GISAttributeModelDoubleArray zrData = (GISAttributeModelDoubleArray) ATT_IND_ZR.createDataForGeom(null, pts.length); + GISAttributeModelDoubleArray zrData = (GISAttributeModelDoubleArray) PivVisuPanel.ATT_IND_ZR.createDataForGeom(null, pts.length); GISAttributeModelObjectArray lbData = (GISAttributeModelObjectArray) PivVisuPanel.ATT_LABEL.createDataForGeom(null, pts.length); CoordinateSequence seq = GISGeometryFactory.INSTANCE.getCoordinateSequenceFactory().create(pts.length, 2); @@ -136,7 +128,7 @@ // Les valeurs d'attributs zp.getModel(ATT_IND_XR).setObject(0, xrData, null); zp.getModel(ATT_IND_YR).setObject(0, yrData, null); - zp.getModel(ATT_IND_ZR).setObject(0, zrData, null); + zp.getModel(PivVisuPanel.ATT_IND_ZR).setObject(0, zrData, null); zp.getModel(PivVisuPanel.ATT_LABEL) .setObject(0, lbData, null); } @@ -144,7 +136,7 @@ else { GISAttributeModelDoubleArray xiData = (GISAttributeModelDoubleArray) ATT_IND_XI.createDataForGeom(null, pts.length); GISAttributeModelDoubleArray yiData = (GISAttributeModelDoubleArray) ATT_IND_YI.createDataForGeom(null, pts.length); - GISAttributeModelDoubleArray zrData = (GISAttributeModelDoubleArray) ATT_IND_ZR.createDataForGeom(null, pts.length); + GISAttributeModelDoubleArray zrData = (GISAttributeModelDoubleArray) PivVisuPanel.ATT_IND_ZR.createDataForGeom(null, pts.length); GISAttributeModelObjectArray lbData = (GISAttributeModelObjectArray) PivVisuPanel.ATT_LABEL.createDataForGeom(null, pts.length); CoordinateSequence seq = GISGeometryFactory.INSTANCE.getCoordinateSequenceFactory().create(pts.length, 2); @@ -164,7 +156,7 @@ // Les valeurs d'attributs zp.getModel(ATT_IND_XI).setObject(0, xiData, null); zp.getModel(ATT_IND_YI).setObject(0, yiData, null); - zp.getModel(ATT_IND_ZR).setObject(0, zrData, null); + zp.getModel(PivVisuPanel.ATT_IND_ZR).setObject(0, zrData, null); zp.getModel(PivVisuPanel.ATT_LABEL) .setObject(0, lbData, null); } } @@ -187,7 +179,7 @@ if (type_==PivVisuPanel.MODE_ORIGINAL_VIEW) { GISAttributeModelDoubleArray xrData=(GISAttributeModelDoubleArray) zp.getModel(ATT_IND_XR).getObjectValueAt(0); GISAttributeModelDoubleArray yrData=(GISAttributeModelDoubleArray) zp.getModel(ATT_IND_YR).getObjectValueAt(0); - GISAttributeModelDoubleArray zrData=(GISAttributeModelDoubleArray) zp.getModel(ATT_IND_ZR).getObjectValueAt(0); + GISAttributeModelDoubleArray zrData=(GISAttributeModelDoubleArray) zp.getModel(PivVisuPanel.ATT_IND_ZR).getObjectValueAt(0); for (int i=0; i<pts.length; i++) { GrPoint imgPt=new GrPoint(seq.getX(i), imgSize.height-seq.getY(i), 0); @@ -200,7 +192,7 @@ else { GISAttributeModelDoubleArray xiData=(GISAttributeModelDoubleArray) zp.getModel(ATT_IND_XI).getObjectValueAt(0); GISAttributeModelDoubleArray yiData=(GISAttributeModelDoubleArray) zp.getModel(ATT_IND_YI).getObjectValueAt(0); - GISAttributeModelDoubleArray zrData=(GISAttributeModelDoubleArray) zp.getModel(ATT_IND_ZR).getObjectValueAt(0); + GISAttributeModelDoubleArray zrData=(GISAttributeModelDoubleArray) zp.getModel(PivVisuPanel.ATT_IND_ZR).getObjectValueAt(0); for (int i=0; i<pts.length; i++) { GrPoint imgPt=new GrPoint(xiData.getValue(i),imgSize.height-yiData.getValue(i),0); Added: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivTransectModel.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivTransectModel.java (rev 0) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivTransectModel.java 2011-09-26 18:21:47 UTC (rev 6449) @@ -0,0 +1,88 @@ +package org.fudaa.fudaa.piv.layer; + +import com.vividsolutions.jts.geom.CoordinateSequence; +import org.fudaa.ctulu.gis.GISAttribute; +import org.fudaa.ctulu.gis.GISZoneCollectionLigneBrisee; +import org.fudaa.ebli.calque.edition.ZModeleLigneBriseeEditable; +import org.fudaa.ebli.geometrie.GrPolygone; +import org.fudaa.ebli.geometrie.GrPolyligne; +import org.fudaa.fudaa.piv.PivVisuPanel; +import org.fudaa.fudaa.piv.metier.PivCntGrid; +import org.fudaa.fudaa.piv.metier.PivProject; + +/** + * Un modele pour la visualisation d'un transect + * + * @author Bertrand Marchand (mar...@de...) + * @version $Id$ + */ +public class PivTransectModel extends ZModeleLigneBriseeEditable { + // L'attribut utilis\xE9 pour l'affichage des lignes suivant une palette de couleurs. +// public static final GISAttributeInteger ATT_IND_COL=new GISAttributeInteger("color",false); + // Le projet. + PivProject prj_; + + /** + * Constructeur. + */ + public PivTransectModel() { + super(new GISZoneCollectionLigneBrisee()); + + GISAttribute[] attrs = new GISAttribute[]{PivVisuPanel.ATT_IND_ZR}; + getGeomData().setAttributeIsZ(PivVisuPanel.ATT_IND_ZR); + getGeomData().setAttributes(attrs, null); + } + + /** + * Redefinit le projet, et remet a jour le modele. + * @param _prj Le projet courant. + */ + public void setProjet(PivProject _prj) { + prj_=_prj; + update(); + } + + /** + * Remise a jour du mod\xE8le depuis le projet. + */ + public void update() { + GISZoneCollectionLigneBrisee zl=(GISZoneCollectionLigneBrisee)getGeomData(); + zl.removeAll(null); + + if (prj_.getTransect()!=null) { + GrPolyligne pl=prj_.getTransect().getStraight(); + this.addGeometry(pl, null, null, null); + // Initialisation du Z. + zl.initZAttribute(0); +// +// // Les labels +// GISAttributeModelObjectArray lbData = (GISAttributeModelObjectArray) PivVisuPanel.ATT_LABEL.createDataForGeom(null, pl.nombre()); +// for (int i=0; i<pl.nombre(); i++) { +// lbData.set(i, "P"+(i+1)); +// } +// zl.getModel(PivVisuPanel.ATT_LABEL) .setObject(0, lbData, null); + } + } + + /** + * Appel\xE9 en cas d'\xE9dition de la g\xE9om\xE9trie => On remet a jour le projet + */ + public void geometryChanged() { + GISZoneCollectionLigneBrisee zp=(GISZoneCollectionLigneBrisee)getGeomData(); + + CoordinateSequence seq=zp.getCoordinateSequence(0); + + int nbPts=seq.size(); + if (isGeometryFermee(0)) { + nbPts--; + } + + GrPolygone pl=new GrPolygone(); + for (int i=0; i<nbPts; i++) { + pl.sommets_.ajoute(seq.getX(i),seq.getY(i),0); + } + PivCntGrid cnt=prj_.getComputeCntGrid(); + cnt.setContour(pl); + prj_.setComputeCntGrid(cnt); + } +} Property changes on: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivTransectModel.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivTransect.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivTransect.java 2011-09-26 14:28:17 UTC (rev 6448) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivTransect.java 2011-09-26 18:21:47 UTC (rev 6449) @@ -4,7 +4,7 @@ /** * Une classe permettant de stocker les points d'un transect. Un transect est une - * droite constitu\xE9e de plusieurs points en X,Y,Z. + * droite constitu\xE9e de plusieurs points 3D. * * @author Bertrand Marchand (mar...@de...) */ @@ -14,18 +14,18 @@ /** - * Retourne la g\xE9om\xE9trie du transect. + * Retourne la droite du transect. * @return Le transect */ - public GrPolyligne getTransect() { + public GrPolyligne getStraight() { return transect; } /** - * Definit la g\xE9om\xE9trie du transect + * Definit la droite du transect * @param _transect Le transect */ - public void setTransect(GrPolyligne _transect) { + public void setStraight(GrPolyligne _transect) { this.transect = _transect; } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2011-09-27 16:05:27
|
Revision: 6454 http://fudaa.svn.sourceforge.net/fudaa/?rev=6454&view=rev Author: bmarchan Date: 2011-09-27 16:05:20 +0000 (Tue, 27 Sep 2011) Log Message: ----------- Add : Saisie interactive d'un transect Modified Paths: -------------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivVisuPanel.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeGridDefinitionAction.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivEditAction.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOrthoGRPAction.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivCntGridModel.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivOrthoPointsModel.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivTransectModel.java Added Paths: ----------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivNewTransectAction.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivEditableModel.java Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java 2011-09-27 15:53:27 UTC (rev 6453) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java 2011-09-27 16:05:20 UTC (rev 6454) @@ -36,6 +36,7 @@ import org.fudaa.fudaa.piv.action.PivComputeAverageAction; import org.fudaa.fudaa.piv.action.PivComputeLaunchAction; import org.fudaa.fudaa.piv.action.PivComputeParamAction; +import org.fudaa.fudaa.piv.action.PivNewTransectAction; import org.fudaa.fudaa.piv.action.PivImportGRPAction; import org.fudaa.fudaa.piv.action.PivImportGridAction; import org.fudaa.fudaa.piv.action.PivImportTransectAction; @@ -215,6 +216,7 @@ setEnabledForAction("PIV_GRID", bprjOpen && bprjHasTransfImg); setEnabledForAction("IMPORT_GRID", bprjOpen && bprjHasTransfImg); setEnabledForAction("IMPORT_TRANSECT", bprjOpen && bprjHasTransfImg); + setEnabledForAction("CREATE_TRANSECT", bprjOpen && bprjHasTransfImg); setEnabledForAction("PIV_COMPUTE", bprjOpen); setEnabledForAction("COMPUTE_AVERAGE", bprjOpen); setEnabledForAction("RESULTS_SHOW_VELOCITIES", bprjOpen && project.getVelResults()!=null); @@ -673,6 +675,8 @@ mn.addSeparator(PivResource.getS("R\xE9sultats")); mn.add(new PivComputeAverageAction(this)); mn.add(get2dFrame().getVisuPanel().getShowVelocitiesAction().buildMenuItem(EbliComponentFactory.INSTANCE)); + mn.addSeparator(PivResource.getS("Post-traitement")); + mn.add(get2dFrame().getVisuPanel().getNewTransectAction()); mn.addSeparator(PivResource.getS("Vue")); ButtonGroup bg=new ButtonGroup(); AbstractButton itOriginalView=get2dFrame().getVisuPanel().getOriginalViewAction().buildMenuItem(EbliComponentFactory.INSTANCE); Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivVisuPanel.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivVisuPanel.java 2011-09-27 15:53:27 UTC (rev 6453) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivVisuPanel.java 2011-09-27 16:05:20 UTC (rev 6454) @@ -39,6 +39,7 @@ import org.fudaa.ebli.trace.TraceLigne; import org.fudaa.ebli.trace.TraceLigneModel; import org.fudaa.fudaa.piv.action.PivComputeGridDefinitionAction; +import org.fudaa.fudaa.piv.action.PivNewTransectAction; import org.fudaa.fudaa.piv.action.PivEditAction; import org.fudaa.fudaa.piv.action.PivOriginalViewAction; import org.fudaa.fudaa.piv.action.PivOrthoGRPAction; @@ -117,15 +118,13 @@ ZCalqueMultiPointEditable cqRealOrthoPoints_; ZCalqueMultiPointEditable cqRealControlPoints_; ZCalqueImageRaster cqRealImg_; + /** L'affichage d'un transect */ + ZCalqueLigneBriseeEditable cqTransect_; PivIASALayer cqIASA_; - /** Le calque d'\xE9dition du contour de grille. */ - ZCalqueEditionInteraction cqCntGrilleEdition_; - /** Le calque d'edition des points de r\xE9f\xE9rence. */ - ZCalqueEditionInteraction cqGRPEdition_; + /** Le calque d'\xE9dition. */ + ZCalqueEditionInteraction cqEdition_; /** L'affichage des r\xE9sultats moyenn\xE9s */ ZCalqueFleche cqVelResults; - /** L'affichage d'un transect */ - ZCalqueLigneBriseeEditable cqTransect_; PivIASAModel mdlIASA; PivCntGridModel mdlCntGrid; @@ -150,6 +149,7 @@ private PivOrthoGRPAction actOrthoGRP_; private PivShowVelocityAction actShowVelocities_; private PivEditAction actEdit_; + private PivNewTransectAction actNewTransect_; /** * Construction des calques. Une partie est d\xE9j\xE0 construite par d\xE9faut dans @@ -230,6 +230,7 @@ removeAllCalqueDonnees(); addCqInfos(); + buildEditionLayer(); buildTransfLayers(); buildRealLayers(); buildOriginalLayers(); @@ -244,10 +245,10 @@ actTransfView_=new PivTransfViewAction((PivImplementation)getCtuluUI()); actRealView_=new PivRealViewAction((PivImplementation)getCtuluUI()); actOrthoGRP_=new PivOrthoGRPAction(this); - actOrthoGRP_.setCalqueInteraction(cqGRPEdition_); actOrthoGRP_.setCalqueOrthoPoints(cqOrthoPoints_); actComputeGrid_=new PivComputeGridDefinitionAction(this); - actComputeGrid_.setCalqueInteraction(cqCntGrilleEdition_); + actNewTransect_=new PivNewTransectAction(this); + actNewTransect_.setTransectLayer(cqTransect_); actShowVelocities_=new PivShowVelocityAction((PivImplementation)getCtuluUI()); actEdit_=new PivEditAction(this); getScene().addSelectionListener(actEdit_); @@ -297,6 +298,14 @@ } /** + * Retourne l'action pour la saisie d'un transect. + * @return L'action. + */ + public EbliActionAbstract getNewTransectAction() { + return actNewTransect_; + } + + /** * Retourne l'action pour voir les vitesses. * @return L'action. */ @@ -311,6 +320,13 @@ public EbliActionAbstract getEditAction() { return actEdit_; } + + /** + * @return Le calque d'edition de formes. + */ + public ZCalqueEditionInteraction getEditionLayer() { + return cqEdition_; + } /** * Switch les calques de la vue suivant le type de vue attendu. @@ -423,6 +439,20 @@ } /** + * Construction du calque de saisie de formes. + */ + protected void buildEditionLayer() { + cqEdition_=new ZCalqueEditionInteraction(); + cqEdition_.setName("cqEdition"); + cqEdition_.setGele(true); + cqEdition_.setLineModel(new TraceLigneModel(TraceLigne.LISSE, 1, Color.RED)); + cqEdition_.setIconModel(new TraceIconModel(TraceIcon.PLUS, 5, Color.RED)); + + // Ce calque peut \xEAtre ajout\xE9 d\xE9s le d\xE9but, il n'apparait pas dans l'arbre de calques + getController().addCalqueInteraction(cqEdition_); + } + + /** * Construction des calques pour l'image originale. */ protected void buildOriginalLayers() { @@ -439,17 +469,6 @@ cqOriginalImg_ = new ZCalqueImageRaster(); cqOriginalImg_.setTitle(PivResource.getS("Image d'origine")); cqOriginalImg_.setName("cqImg"); - - // Un calque de cr\xE9ation de formes interactif. - cqGRPEdition_=new ZCalqueEditionInteraction(); - cqGRPEdition_.setName("cqGRPEdition"); - cqGRPEdition_.setTypeForme(DeForme.MULTI_POINT); - cqGRPEdition_.setGele(true); - cqGRPEdition_.setIconModel(new TraceIconModel(TraceIcon.PLUS, 5, Color.RED)); - cqGRPEdition_.setFormEndedByDoubleClic(false); - - // Ce calque peut \xEAtre ajout\xE9 d\xE9s le d\xE9but, il n'apparait pas dans l'arbre de calques - getController().addCalqueInteraction(cqGRPEdition_); } /** @@ -508,6 +527,7 @@ } }); + // Layer des transect cqTransect_= new ZCalqueLigneBriseeEditable(); cqTransect_.setTitle(PivResource.getS("Transect")); cqTransect_.setName("cqTransect"); @@ -515,6 +535,7 @@ cqTransect_.setLineModel(1, new TraceLigneModel(TraceLigne.POINTILLE, 1, Color.YELLOW.darker())); cqTransect_.setIconModel(1, new TraceIconModel(TraceIcon.LOSANGE_PLEIN, 3, Color.YELLOW.darker())); cqTransect_.setDestructible(false); + cqTransect_.setEditor(editGeom_); } /** @@ -551,16 +572,6 @@ cqTransfImage_ = new ZCalqueImageRaster(); cqTransfImage_.setTitle(PivResource.getS("Image ortho")); cqTransfImage_.setName("cqTransfImg"); - - // Un calque de saisie du contour de grille. - cqCntGrilleEdition_=new ZCalqueEditionInteraction(); - cqCntGrilleEdition_.setName("cqCntGrilleEdition"); - cqCntGrilleEdition_.setTypeForme(DeForme.POLYGONE); - cqCntGrilleEdition_.setGele(true); - cqCntGrilleEdition_.setLineModel(new TraceLigneModel(TraceLigne.LISSE, 1, Color.RED)); - - // Ce calque peut \xEAtre ajout\xE9 d\xE9s le d\xE9but, il n'apparait pas dans l'arbre de calques - getController().addCalqueInteraction(cqCntGrilleEdition_); } /** Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeGridDefinitionAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeGridDefinitionAction.java 2011-09-27 15:53:27 UTC (rev 6453) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeGridDefinitionAction.java 2011-09-27 16:05:20 UTC (rev 6454) @@ -14,6 +14,7 @@ import javax.swing.SwingUtilities; import javax.swing.event.InternalFrameAdapter; import javax.swing.event.InternalFrameEvent; +import org.fudaa.ebli.calque.dessin.DeForme; import org.fudaa.ebli.calque.edition.ZCalqueEditionInteraction; import org.fudaa.ebli.calque.edition.ZCalqueEditionInteractionTargetI; import org.fudaa.ebli.calque.edition.ZEditionAttributesDataI; @@ -41,6 +42,8 @@ private ZCalqueEditionInteraction cqEdition_; /** La palette pour la reprise. */ private PivPaletteEditPolygon palette_; + /** Le controller d'edition */ + private EditionController controller_; /** * Un editeur qui r\xE9agit \xE0 la saisie d'une forme pour la grille. @@ -138,6 +141,8 @@ public PivComputeGridDefinitionAction(PivVisuPanel _pn) { super(PivResource.getS("D\xE9finition de la grille..."), null, "PIV_GRID"); pnCalques_=_pn; + controller_=new EditionController(); + setCalqueInteraction(_pn.getEditionLayer()); setEnabled(false); } @@ -145,10 +150,8 @@ * Definit le calque d'interaction associ\xE9 \xE0 l'action. * @param _cq Le calque. Peut \xEAtre <tt>null</tt>. */ - public void setCalqueInteraction(ZCalqueEditionInteraction _cq) { + private void setCalqueInteraction(ZCalqueEditionInteraction _cq) { cqEdition_=_cq; - if (cqEdition_!=null) - cqEdition_.setListener(new EditionController()); } /** @@ -175,6 +178,7 @@ } + @Override public String getEnableCondition() { return PivResource.getS("Il doit exister au moins une image transform\xE9e"); } @@ -195,6 +199,9 @@ */ @Override public void doAfterDisplay() { + cqEdition_.setListener(controller_); + cqEdition_.setTypeForme(DeForme.POLYGONE); + cqEdition_.setFormEndedByDoubleClic(true); pnCalques_.setCalqueInteractionActif(cqEdition_); palette_.currentFormeChanged(null); } Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivEditAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivEditAction.java 2011-09-27 15:53:27 UTC (rev 6453) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivEditAction.java 2011-09-27 16:05:20 UTC (rev 6454) @@ -1,14 +1,13 @@ package org.fudaa.fudaa.piv.action; import java.awt.event.ActionEvent; -import org.fudaa.ebli.calque.ZCalqueAffichageDonneesInterface; import org.fudaa.ebli.calque.ZSelectionEvent; import org.fudaa.ebli.calque.ZSelectionListener; +import org.fudaa.ebli.calque.edition.ZCalqueEditable; import org.fudaa.ebli.commun.EbliActionSimple; import org.fudaa.fudaa.piv.PivResource; import org.fudaa.fudaa.piv.PivVisuPanel; -import org.fudaa.fudaa.piv.layer.PivCntGridModel; -import org.fudaa.fudaa.piv.layer.PivOrthoPointsModel; +import org.fudaa.fudaa.piv.layer.PivEditableModel; /** * Une action pour \xE9diter la g\xE9om\xE9trie. Le projet est mis a jour suite @@ -35,22 +34,21 @@ * Affiche la fenetre d'\xE9dition pour les g\xE9om\xE9tries autoris\xE9es. * @param _e L'evenement pour l'action. */ + @Override public void actionPerformed(final ActionEvent _e) { - if (pnCalques_.getScene().getCalqueActif() instanceof ZCalqueAffichageDonneesInterface) { - ZCalqueAffichageDonneesInterface cq=(ZCalqueAffichageDonneesInterface) pnCalques_.getScene().getCalqueActif(); - if (cq.getLayerSelection()!=null && cq.getLayerSelection().isOnlyOnIndexSelected()) { + if (pnCalques_.getScene().getCalqueActif() instanceof ZCalqueEditable) { + ZCalqueEditable cq=(ZCalqueEditable) pnCalques_.getScene().getCalqueActif(); + if (cq.getLayerSelection()!=null && !cq.getLayerSelection().isEmpty()) { cq.editSelected(); - if (cq.modeleDonnees() instanceof PivOrthoPointsModel) { - ((PivOrthoPointsModel)cq.modeleDonnees()).geometryChanged(); + if (cq.modeleDonnees() instanceof PivEditableModel) { + ((PivEditableModel)cq.modeleDonnees()).geometryChanged(); } - else if(cq.modeleDonnees() instanceof PivCntGridModel) { - ((PivCntGridModel)cq.modeleDonnees()).geometryChanged(); - } } } } + @Override public String getEnableCondition() { return PivResource.getS("S\xE9lectionner une g\xE9om\xE9trie"); } @@ -60,11 +58,13 @@ * @param _evt L'evenement de selection. */ public void selectionChanged(ZSelectionEvent _evt) { - if (pnCalques_.getScene().getCalqueActif() instanceof ZCalqueAffichageDonneesInterface) { - ZCalqueAffichageDonneesInterface cq=(ZCalqueAffichageDonneesInterface) pnCalques_.getScene().getCalqueActif(); - boolean b=cq.getLayerSelection()!=null && cq.getLayerSelection().isOnlyOnIndexSelected(); - b&=cq.modeleDonnees() instanceof PivOrthoPointsModel || cq.modeleDonnees() instanceof PivCntGridModel; - super.setEnabled(b); + boolean b=false; + if (pnCalques_.getScene().getCalqueActif() instanceof ZCalqueEditable) { + ZCalqueEditable cq=(ZCalqueEditable) pnCalques_.getScene().getCalqueActif(); + + b=cq.getLayerSelection()!=null && !cq.getLayerSelection().isEmpty(); + b&=cq.getEditor()!=null && (cq.getModelEditable() instanceof PivEditableModel); } + super.setEnabled(b); } } Added: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivNewTransectAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivNewTransectAction.java (rev 0) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivNewTransectAction.java 2011-09-27 16:05:20 UTC (rev 6454) @@ -0,0 +1,308 @@ +/* + * @creation 3 juil. 2008 + * @modification $Date:$ + * @license GNU General Public License 2 + * @copyright (c)1998-2008 CETMEF 2 bd Gambetta F-60231 Compiegne + * @mail fud...@li... + */ +package org.fudaa.fudaa.piv.action; + +import com.memoire.bu.BuButton; +import com.memoire.bu.BuDesktop; +import com.memoire.fu.FuLog; +import java.awt.Container; +import java.awt.Dimension; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import javax.swing.AbstractButton; +import javax.swing.JComponent; +import javax.swing.JDialog; +import javax.swing.JInternalFrame; +import javax.swing.SwingUtilities; +import javax.swing.event.InternalFrameAdapter; +import javax.swing.event.InternalFrameEvent; +import org.fudaa.ebli.calque.dessin.DeForme; +import org.fudaa.ebli.calque.edition.BPaletteEdition; +import org.fudaa.ebli.calque.edition.BPaletteEditionClientInterface; +import org.fudaa.ebli.calque.edition.ZCalqueEditionInteraction; +import org.fudaa.ebli.calque.edition.ZCalqueEditionInteractionTargetI; +import org.fudaa.ebli.calque.edition.ZCalqueLigneBriseeEditable; +import org.fudaa.ebli.calque.edition.ZEditionAttributesDataI; +import org.fudaa.ebli.calque.edition.ZEditorLigneBriseePanel; +import org.fudaa.ebli.commun.EbliActionPaletteAbstract; +import org.fudaa.ebli.geometrie.GrPoint; +import org.fudaa.ebli.geometrie.GrPolygone; +import org.fudaa.ebli.geometrie.GrPolyligne; +import org.fudaa.fudaa.piv.PivResource; +import org.fudaa.fudaa.piv.PivVisuPanel; +import org.fudaa.fudaa.piv.metier.PivTransect; + +/** + * Une action pour cr\xE9er un transect. Cette action est + * utilis\xE9e comme controlleur \xE0 la palette et au calque d'\xE9dition d\xE9di\xE9. + * + * @author Bertrand Marchand (mar...@de...) + * @version $Id$ + */ +public class PivNewTransectAction extends EbliActionPaletteAbstract { + + private PivVisuPanel pnCalques_; + /** Le calque d'\xE9dition. */ + private ZCalqueEditionInteraction cqEdition_; + /** Le calsue des ortho points */ + private ZCalqueLigneBriseeEditable cqTransect_; + /** La palette */ + private BPaletteEdition palette_; + /** Le panneau d'edition des param\xE8tres du multipoint */ + private ZEditorLigneBriseePanel pnParams; + /** Le controller d'edition */ + private EditionController controller_; + /** Le listener de propri\xE9t\xE9 du calque d'interaction */ + private EditionLayerPropertyListener propListener_; + + /** + * Le controlleur pour l'\xE9dition. + */ + class EditionController implements ZCalqueEditionInteractionTargetI { + + public void atomicChanged() { + // On notifie la palette que la forme a chang\xE9, pour activer ou non le bouton fin d'edition. + FuLog.debug("atomicChanged"); + pnParams.atomicChanged(); + } + + /** Non utilis\xE9 */ + public boolean addNewMultiPoint(GrPolyligne _pg, ZEditionAttributesDataI _data) { + return true; + } + + /** Non utilis\xE9 */ + public void setMessage(String _s) { + } + + /** Non utilis\xE9 */ + public void unsetMessage() { + } + + /** Non utilis\xE9 */ + public boolean addNewPolygone(GrPolygone _pg, ZEditionAttributesDataI _data) { + return true; + } + + /** Non utilis\xE9 */ + public boolean addNewPoint(GrPoint _point, ZEditionAttributesDataI _data) { + return true; + } + + /** Non utilis\xE9 */ + public boolean addNewRectangle(GrPoint _pt, GrPoint _pt2, ZEditionAttributesDataI _data) { + return true; + } + + /** + * Ajoute la forme en cours au calque. + * @param _pl La polyligne + * @param _data Les valeurs associ\xE9es a chaque point. + * @return Si false, la saisie n'est pas stopp\xE9e. + */ + public boolean addNewPolyligne(GrPolyligne _pl, ZEditionAttributesDataI _data) { + if (_pl.sommets_.nombre() < 2) { + pnCalques_.getCtuluUI().error(PivResource.getS("Le nombre de points doit \xEAtre sup\xE9rieur \xE0 1.")); + return false; + } + + // Initialisation du Z polyligne + for (int i=0; i<_pl.sommets_.nombre(); i++) { + _pl.sommet(i).z_=(Double) _data.getValue(PivVisuPanel.ATT_IND_ZR, i); + } + + PivTransect transect=new PivTransect(); + transect.setStraight(_pl); + pnCalques_.getProject().setTransect(transect); + hideWindow(); + + return true; + } + + /** Non utilis\xE9 */ + public void pointMove(double _x, double _y) { + } + } + + /** + * Le listener qui r\xE9agit en fonction du gel du calque d'interaction. + */ + class EditionLayerPropertyListener implements PropertyChangeListener { + + public void propertyChange(PropertyChangeEvent evt) { + if (evt.getPropertyName().equals("gele")) { + if (pnParams!=null) + pnParams.calqueInteractionChanged(); + } + } + } + + /** + * Classe g\xE9rant la disparition et la r\xE9apparition du panel quand la fen\xEAtre + * principale est r\xE9duite. + */ + class Piv2dFrameListener extends InternalFrameAdapter { + public void internalFrameActivated(final InternalFrameEvent _e) { + if(window_!=null) + window_.setVisible(true); + } + public void internalFrameDeactivated(final InternalFrameEvent _e) { + if(window_!=null) + window_.setVisible(false); + } + } + + /** + * Constructeur de l'action, avec le panneau des calques. + * @param _pn Le panneau des calques. + */ + public PivNewTransectAction(PivVisuPanel _pn) { + super(PivResource.getS("D\xE9finition d'un transect..."), null, "CREATE_TRANSECT"); + pnCalques_=_pn; + controller_=new EditionController(); + propListener_=new EditionLayerPropertyListener(); + setCalqueInteraction(_pn.getEditionLayer()); + + setEnabled(false); + } + + /** + * Definit le calque d'interaction associ\xE9 \xE0 l'action. + * @param _cq Le calque. Peut \xEAtre <tt>null</tt>. + */ + private void setCalqueInteraction(ZCalqueEditionInteraction _cq) { + if (cqEdition_!=null) { + cqEdition_.removePropertyChangeListener("gele", propListener_); + } + + cqEdition_=_cq; + + if (cqEdition_!=null) { + cqEdition_.addPropertyChangeListener("gele", propListener_); + } + } + + /** + * Definit le calque contenant le transect. + * @param _cq Le calque du transect. + */ + public void setTransectLayer(ZCalqueLigneBriseeEditable _cq) { + cqTransect_=_cq; + } + + /** + * Surcharg\xE9 pour demander \xE0 l'utilisateur s'il souhaite modifier le contour. + */ + @Override + public void changeAction() { + if (isSelected()) + pnCalques_.setViewMode(PivVisuPanel.MODE_REAL_VIEW); + + // Si pas de points ou ok pour les supprimer, on lance l'action. + if (pnCalques_.getProject().getTransect()==null || + pnCalques_.getCtuluUI().question( + PivResource.getS("Modification du transect"), + PivResource.getS("Un transect existe d\xE9j\xE0. Voulez vous le remplacer ?"))) { + pnCalques_.getProject().setTransect(null); + super.changeAction(); + } + // Pas de modification. + else { + setSelected(false); + } + } + + @Override + public String getEnableCondition() { + return PivResource.getS("Il doit exister au moins une image transform\xE9e"); + } + + /** + * Surchag\xE9 pour d\xE9finir le desktop au moment de l'affichage. + */ + @Override + public void showWindow() { + // Necessaire, sinon la palette est visualis\xE9e en externe. Ne peut \xEAtre fait avant, car le desktop n'est pas + // encore existant. + setDesktop((BuDesktop)SwingUtilities.getAncestorOfClass(BuDesktop.class,pnCalques_)); + super.showWindow(); + } + + /** + * Surcharg\xE9 pour activer le calque d'\xE9dition apr\xE8s affichage. + */ + @Override + public void doAfterDisplay() { + cqEdition_.setListener(controller_); + cqEdition_.setTypeForme(DeForme.LIGNE_BRISEE); + cqEdition_.setFormEndedByDoubleClic(true); + pnCalques_.setCalqueInteractionActif(cqEdition_); + } + + /** + * Surcharg\xE9 pour rendre inactif le calque d'\xE9dition apr\xE8s que la palette a + * \xE9t\xE9 ferm\xE9e. + */ + @Override + public void hideWindow() { + // Le calque d'interaction est rendu inactif. + pnCalques_.unsetCalqueInteractionActif(cqEdition_); + if (cqEdition_!=null) + cqEdition_.cancelEdition(); + setSelected(false); + super.hideWindow(); + } + + @Override + public JComponent buildContentPane() { + if (palette_==null){ + palette_=new BPaletteEdition(pnCalques_.getScene()); + palette_.setTargetClient(new BPaletteEditionClientInterface() { + public void doAction(String _com, BPaletteEdition _emitter) { + if (BPaletteEdition.ADD_POLYLINE_ACTION.equals(_com)) { + AbstractButton bt=_emitter.getSelectedButton(); + if (bt==null) { + palette_.setEditorPanel(null); + } + else { + BuButton btValider=new BuButton(PivResource.PIV.getIcon("valider"),PivResource.getS("Fin de saisie")); + btValider.setToolTipText(PivResource.getS("Terminer la saisie des points et valider")); + + cqEdition_.setTypeForme(DeForme.LIGNE_BRISEE); + pnParams=new ZEditorLigneBriseePanel(palette_,cqEdition_); + pnParams.replaceAddButton(btValider); + pnParams.setCoordinateDefinitions(pnCalques_.getCoordinateDefinitions()); + pnParams.targetChanged(cqTransect_); + pnParams.setPreferredSize(new Dimension(300,300)); + palette_.setEditorPanel(pnParams.getComponent()); + cqEdition_.setFeatures(pnParams.getAttributeContainer()); + } + Object o = SwingUtilities.getAncestorOfClass(JInternalFrame.class, palette_); + if (o == null) { + o = SwingUtilities.getAncestorOfClass(JDialog.class, palette_); + if (o != null) { + ((JDialog) o).pack(); + } + } + else { + ((JInternalFrame) o).pack(); + } + } + } + }); + palette_.setButtonVisible(null, false); + palette_.setButtonSelected(BPaletteEdition.ADD_POLYLINE_ACTION); + + // Ecoute de la fen\xEAtre principale pour pouvoir se r\xE9duire avec elle + final Container c = SwingUtilities.getAncestorOfClass(JInternalFrame.class, pnCalques_); + if (c instanceof JInternalFrame) + ((JInternalFrame) c).addInternalFrameListener(new Piv2dFrameListener()); + } + return palette_.getComponent(); + } +} Property changes on: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivNewTransectAction.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOrthoGRPAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOrthoGRPAction.java 2011-09-27 15:53:27 UTC (rev 6453) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOrthoGRPAction.java 2011-09-27 16:05:20 UTC (rev 6454) @@ -21,6 +21,7 @@ import javax.swing.SwingUtilities; import javax.swing.event.InternalFrameAdapter; import javax.swing.event.InternalFrameEvent; +import org.fudaa.ebli.calque.dessin.DeForme; import org.fudaa.ebli.calque.edition.BPaletteEdition; import org.fudaa.ebli.calque.edition.BPaletteEditionClientInterface; import org.fudaa.ebli.calque.edition.ZCalqueEditionInteraction; @@ -55,6 +56,10 @@ private BPaletteEdition palette_; /** Le panneau d'edition des param\xE8tres du multipoint */ private ZEditorLigneBriseePanel pnParams; + /** Le controller d'edition */ + private EditionController controller_; + /** Le listener de propri\xE9t\xE9 du calque d'interaction */ + private EditionLayerPropertyListener propListener_; /** * Le controlleur pour l'\xE9dition. @@ -143,7 +148,20 @@ public void pointMove(double _x, double _y) { } } + + /** + * Le listener qui r\xE9agit en fonction du gel du calque d'interaction. + */ + class EditionLayerPropertyListener implements PropertyChangeListener { + public void propertyChange(PropertyChangeEvent evt) { + if (evt.getPropertyName().equals("gele")) { + if (pnParams!=null) + pnParams.calqueInteractionChanged(); + } + } + } + /** * Classe g\xE9rant la disparition et la r\xE9apparition du panel quand la fen\xEAtre * principale est r\xE9duite. @@ -166,6 +184,11 @@ public PivOrthoGRPAction(PivVisuPanel _pn) { super(PivResource.getS("Points de r\xE9f\xE9rence..."), null, "ORTHO_GRP"); pnCalques_=_pn; + + controller_=new EditionController(); + propListener_=new EditionLayerPropertyListener(); + setCalqueInteraction(_pn.getEditionLayer()); + setEnabled(false); } @@ -173,24 +196,15 @@ * Definit le calque d'interaction associ\xE9 \xE0 l'action. * @param _cq Le calque. Peut \xEAtre <tt>null</tt>. */ - public void setCalqueInteraction(ZCalqueEditionInteraction _cq) { + private void setCalqueInteraction(ZCalqueEditionInteraction _cq) { + if (cqEdition_!=null) { + cqEdition_.removePropertyChangeListener("gele", propListener_); + } + cqEdition_=_cq; - if (cqEdition_!=null) - cqEdition_.setListener(new EditionController()); - - cqEdition_.addPropertyChangeListener("gele", new PropertyChangeListener() { - public void propertyChange(PropertyChangeEvent evt) { - cqEditionPropertyChange(evt); - } - }); -// if (palette_!=null) -// palette_.setCalqueInteraction(_cq); - } - - private void cqEditionPropertyChange(PropertyChangeEvent evt) { - if (evt.getPropertyName().equals("gele")) { - pnParams.calqueInteractionChanged(); + if (cqEdition_!=null) { + cqEdition_.addPropertyChangeListener("gele", propListener_); } } @@ -245,6 +259,9 @@ */ @Override public void doAfterDisplay() { + cqEdition_.setListener(controller_); + cqEdition_.setTypeForme(DeForme.MULTI_POINT); + cqEdition_.setFormEndedByDoubleClic(false); pnCalques_.setCalqueInteractionActif(cqEdition_); } @@ -277,6 +294,7 @@ BuButton btValider=new BuButton(PivResource.PIV.getIcon("valider"),PivResource.getS("Fin de saisie")); btValider.setToolTipText(PivResource.getS("Terminer la saisie des points et valider")); + cqEdition_.setTypeForme(DeForme.MULTI_POINT); pnParams=new ZEditorLigneBriseePanel(palette_,cqEdition_); pnParams.replaceAddButton(btValider); pnParams.setCoordinateDefinitions(pnCalques_.getCoordinateDefinitions()); Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivCntGridModel.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivCntGridModel.java 2011-09-27 15:53:27 UTC (rev 6453) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivCntGridModel.java 2011-09-27 16:05:20 UTC (rev 6454) @@ -14,9 +14,9 @@ * Un modele pour le contour de grille * * @author Bertrand Marchand (mar...@de...) - * @version $Id:$ + * @version $Id$ */ -public class PivCntGridModel extends ZModeleLigneBriseeEditable { +public class PivCntGridModel extends ZModeleLigneBriseeEditable implements PivEditableModel { // L'attribut utilis\xE9 pour l'affichage des lignes suivant une palette de couleurs. // public static final GISAttributeInteger ATT_IND_COL=new GISAttributeInteger("color",false); // Le projet. Added: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivEditableModel.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivEditableModel.java (rev 0) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivEditableModel.java 2011-09-27 16:05:20 UTC (rev 6454) @@ -0,0 +1,18 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.fudaa.fudaa.piv.layer; + +/** + * Un modele de calque editable au sens PIV. Ce type de modele r\xE9agit \xE0 la commande + * d'\xE9dition. + * @author Bertrand Marchand (mar...@de...) + */ +public interface PivEditableModel { + + /** + * Appel\xE9 en cas d'\xE9dition de la g\xE9om\xE9trie => On remet a jour le projet + */ + void geometryChanged(); +} Property changes on: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivEditableModel.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivOrthoPointsModel.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivOrthoPointsModel.java 2011-09-27 15:53:27 UTC (rev 6453) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivOrthoPointsModel.java 2011-09-27 16:05:20 UTC (rev 6454) @@ -23,7 +23,7 @@ * @author Bertrand Marchand (mar...@de...) * @version $Id$ */ -public class PivOrthoPointsModel extends ZModeleMultiPointEditable { +public class PivOrthoPointsModel extends ZModeleMultiPointEditable implements PivEditableModel { /** L'attribut utilis\xE9 pour la saisie de X r\xE9el. */ public static final GISAttributeDouble ATT_IND_XR=new GISAttributeDouble(PivResource.getS("X r\xE9el"),true) { Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivTransectModel.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivTransectModel.java 2011-09-27 15:53:27 UTC (rev 6453) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivTransectModel.java 2011-09-27 16:05:20 UTC (rev 6454) @@ -4,11 +4,10 @@ import org.fudaa.ctulu.gis.GISAttribute; import org.fudaa.ctulu.gis.GISZoneCollectionLigneBrisee; import org.fudaa.ebli.calque.edition.ZModeleLigneBriseeEditable; -import org.fudaa.ebli.geometrie.GrPolygone; import org.fudaa.ebli.geometrie.GrPolyligne; import org.fudaa.fudaa.piv.PivVisuPanel; -import org.fudaa.fudaa.piv.metier.PivCntGrid; import org.fudaa.fudaa.piv.metier.PivProject; +import org.fudaa.fudaa.piv.metier.PivTransect; /** * Un modele pour la visualisation d'un transect @@ -16,7 +15,7 @@ * @author Bertrand Marchand (mar...@de...) * @version $Id$ */ -public class PivTransectModel extends ZModeleLigneBriseeEditable { +public class PivTransectModel extends ZModeleLigneBriseeEditable implements PivEditableModel { // L'attribut utilis\xE9 pour l'affichage des lignes suivant une palette de couleurs. // public static final GISAttributeInteger ATT_IND_COL=new GISAttributeInteger("color",false); // Le projet. @@ -63,26 +62,32 @@ // zl.getModel(PivVisuPanel.ATT_LABEL) .setObject(0, lbData, null); } } - + /** * Appel\xE9 en cas d'\xE9dition de la g\xE9om\xE9trie => On remet a jour le projet */ + @Override public void geometryChanged() { + + PivTransect trans=null; GISZoneCollectionLigneBrisee zp=(GISZoneCollectionLigneBrisee)getGeomData(); + + if (zp.getNbGeometries() != 0) { + zp.initZCoordinate(0); + CoordinateSequence seq=zp.getCoordinateSequence(0); + int nbPts=seq.size(); - CoordinateSequence seq=zp.getCoordinateSequence(0); - - int nbPts=seq.size(); - if (isGeometryFermee(0)) { - nbPts--; + GrPolyligne pl=new GrPolyligne(); + for (int i=0; i < nbPts; i++) { + pl.sommets_.ajoute(seq.getOrdinate(i, 0), seq.getOrdinate(i, 1), seq.getOrdinate(i, 2)); + } + trans=prj_.getTransect(); + if (trans == null) { + trans=new PivTransect(); + } + trans.setStraight(pl); } - GrPolygone pl=new GrPolygone(); - for (int i=0; i<nbPts; i++) { - pl.sommets_.ajoute(seq.getX(i),seq.getY(i),0); - } - PivCntGrid cnt=prj_.getComputeCntGrid(); - cnt.setContour(pl); - prj_.setComputeCntGrid(cnt); + prj_.setTransect(trans); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2011-09-29 20:30:39
|
Revision: 6465 http://fudaa.svn.sourceforge.net/fudaa/?rev=6465&view=rev Author: bmarchan Date: 2011-09-29 20:30:31 +0000 (Thu, 29 Sep 2011) Log Message: ----------- Add : Lancement calcul de d?\195?\169bit et relecture dans PivFlowResults Modified Paths: -------------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivExeLauncher.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportTransectAction.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProject.java Added Paths: ----------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeFlowAction.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivDischargeFileFormat.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivDischargeReader.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivFlowResults.java Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivExeLauncher.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivExeLauncher.java 2011-09-29 20:26:45 UTC (rev 6464) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivExeLauncher.java 2011-09-29 20:30:31 UTC (rev 6465) @@ -24,6 +24,9 @@ import org.fudaa.fudaa.piv.io.PivHFileFormat; import org.fudaa.fudaa.piv.io.PivImgRefFileFormat; import org.fudaa.fudaa.piv.io.PivParamFileFormat; +import org.fudaa.fudaa.piv.io.PivBathyFileFormat; +import org.fudaa.fudaa.piv.io.PivDischargeFileFormat; +import org.fudaa.fudaa.piv.metier.PivFlowResults; import org.fudaa.fudaa.piv.metier.PivOrthoPoint; import org.fudaa.fudaa.piv.metier.PivProject; import org.fudaa.fudaa.piv.metier.PivVelResults; @@ -38,12 +41,13 @@ */ public class PivExeLauncher { /** Les exe pouvant \xEAtre lanc\xE9s */ - private final static String[] EXES={"ortho_plan","transf_a","PIV","repack","verif_ortho","moy_ec","filter"}; + private final static String[] EXES={ + "ortho_plan","transf_a","PIV","repack","verif_ortho", + "moy_ec","filter","bathy_compute","Q_compute_proj2"}; private final static String[] CMDS={"repack"}; /** */ private static final String OUTPUT_DIR="outputs.dir"; - private static final String IMG_RAW_DIR="img_raw"; /** Le repertoire des images reconditionn\xE9es */ private static final String IMG_PGM_DIR="img_pgm"; private static final String IMG_TRANSF_DIR="img_transf"; @@ -711,4 +715,156 @@ return true; } + + /** + * Lance le calcul de restructuration de la bathymetrie. + * + * @param _ana L'analyse pour la tache ex\xE9cut\xE9e. + * @param _prj Le projet. + * @param _task La tache en cours d'execution. + * @return true : Tout s'est bien d\xE9roul\xE9. + */ + public boolean launchBathyCompute(CtuluAnalyze _ana, PivProject _prj, CtuluTaskOperationGUI _task) { + File exeOutputs=new File(exePath,OUTPUT_DIR); + + createExeDirs(); + + try { + // Sauvegarde des donn\xE9es du projet. + File bathyFile=new File(exeOutputs, "bathy.dat"); + FileWriteOperationAbstract writer=PivBathyFileFormat.getInstance().createWriter(); + CtuluIOOperationSynthese ret=writer.write(_prj.getTransect(), bathyFile, null); + + int prog=5; + + String desc=PivResource.getS("Reconditionnement du transect..."); + FuLog.trace(desc); + if (_task != null) { + _task.setDesc(desc); + _task.setProgression(prog); + } + + try { + String outs=FuLib.runProgram(new String[]{exePath + File.separator + EXES[7] + EXE_EXT}, exePath); + if (!outs.trim().equals("")) { + _ana.addError(PivResource.getS("Erreur de reconditionnement du transect:\n") + outs); + return false; + } + + if (_task != null && _task.isStopRequested()) { + _ana.addError(PivResource.getS("Calcul interrompu")); + return false; + } + } + catch (IOException ex) { + _ana.addError(ex.getMessage()); + return false; + } + + FuLog.trace(PivResource.getS("Reconditionnement du transect ok.")); + if (_task != null) { + _task.setProgression(100); + } + } + + // On supprime les repertoires temporaires + finally { +// delExeDirs(); + } + + return true; + } + + /** + * Lance le calcul de d\xE9bit \xE0 partir du transect. + * + * @param _ana L'analyse pour la tache ex\xE9cut\xE9e. + * @param _prj Le projet. + * @param _task La tache en cours d'execution. + * @return true : Tout s'est bien d\xE9roul\xE9. + */ + public boolean launchQCompute(CtuluAnalyze _ana, PivProject _prj, CtuluTaskOperationGUI _task) { + File prjRoot=_prj.getRoot(); + File prjOutputs=new File(prjRoot,OUTPUT_DIR); + File exeOutputs=new File(exePath,OUTPUT_DIR); + + // On supprime le fichier du repertoire projet + String fdis="Discharge.dat"; + File resFile=new File(prjOutputs, fdis); + resFile.delete(); + + _prj.setFlowResults(null); + +// createExeDirs(); + + try { + // PIV_param.dat + File paramFile=new File(exeOutputs, "PIV_param.dat"); + FileWriteOperationAbstract writer=PivParamFileFormat.getInstance().createWriter(); + Object[] params=new Object[]{_prj.getComputeParameters(), _prj.getTransfImageSize()}; + CtuluIOOperationSynthese ret=writer.write(params, paramFile, null); + + // bathy_p.dat => D\xE9j\xE0 dans le r\xE9pertoire de sortie. + + // Hauteurs d'eau + File hFile = new File(exeOutputs, "h.dat"); + writer = PivHFileFormat.getInstance().createWriter(); + ret = writer.write(_prj.getOrthoParameters().getWaterElevation(), hFile, null); + + // average_vel.out => Copie depuis le r\xE9pertoire projet. + copyFile(prjOutputs, exeOutputs, "average_vel.out"); + + int prog=5; + + String desc=PivResource.getS("Calcul du d\xE9bit..."); + FuLog.trace(desc); + if (_task != null) { + _task.setDesc(desc); + _task.setProgression(prog); + } + + try { + StringBuffer sbout=new StringBuffer(); + StringBuffer sberr=new StringBuffer(); + String outs=FuLib.runProgram(new String[]{exePath + File.separator + EXES[8] + EXE_EXT}, exePath, sbout, sberr); + if (!sberr.toString().trim().equals("")) { + _ana.addError(PivResource.getS("Erreur de calcul du d\xE9bit:\n") + outs); + return false; + } + + if (_task != null && _task.isStopRequested()) { + _ana.addError(PivResource.getS("Calcul interrompu")); + return false; + } + + // On d\xE9place le fichier vers le repertoire projet + new File(exeOutputs, fdis).renameTo(resFile); + + // R\xE9cup\xE9ration des r\xE9sultats du projet. + FileReadOperationAbstract reader=PivDischargeFileFormat.getInstance().createReader(); + ret=reader.read(resFile, _task); + PivFlowResults res=(PivFlowResults) ret.getSource(); + + FuLog.trace(PivResource.getS("Calcul du d\xE9bit ok.")); + if (_task != null) { + _task.setProgression(80); + } + _prj.setFlowResults(res); + if (_task != null) { + _task.setProgression(100); + } + } + catch (IOException ex) { + _ana.addError(ex.getMessage()); + return false; + } + } + + // On supprime les repertoires temporaires + finally { + delExeDirs(); + } + + return true; + } } Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java 2011-09-29 20:26:45 UTC (rev 6464) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java 2011-09-29 20:30:31 UTC (rev 6465) @@ -34,6 +34,7 @@ import org.fudaa.fudaa.commun.impl.FudaaLookPreferencesPanel; import org.fudaa.fudaa.commun.impl.FudaaStartupExitPreferencesPanel; import org.fudaa.fudaa.piv.action.PivComputeAverageAction; +import org.fudaa.fudaa.piv.action.PivComputeFlowAction; import org.fudaa.fudaa.piv.action.PivComputeLaunchAction; import org.fudaa.fudaa.piv.action.PivComputeParamAction; import org.fudaa.fudaa.piv.action.PivNewTransectAction; @@ -217,6 +218,7 @@ setEnabledForAction("IMPORT_GRID", bprjOpen && bprjHasTransfImg); setEnabledForAction("IMPORT_TRANSECT", bprjOpen && bprjHasTransfImg); setEnabledForAction("CREATE_TRANSECT", bprjOpen && bprjHasTransfImg); + setEnabledForAction("FLOW_COMPUTE", bprjOpen && project.getVelResults()!=null); setEnabledForAction("PIV_COMPUTE", bprjOpen); setEnabledForAction("COMPUTE_AVERAGE", bprjOpen); setEnabledForAction("RESULTS_SHOW_VELOCITIES", bprjOpen && project.getVelResults()!=null); @@ -677,6 +679,7 @@ mn.add(get2dFrame().getVisuPanel().getShowVelocitiesAction().buildMenuItem(EbliComponentFactory.INSTANCE)); mn.addSeparator(PivResource.getS("Post-traitement")); mn.add(get2dFrame().getVisuPanel().getNewTransectAction()); + mn.add(new PivComputeFlowAction(this)); mn.addSeparator(PivResource.getS("Vue")); ButtonGroup bg=new ButtonGroup(); AbstractButton itOriginalView=get2dFrame().getVisuPanel().getOriginalViewAction().buildMenuItem(EbliComponentFactory.INSTANCE); Added: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeFlowAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeFlowAction.java (rev 0) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeFlowAction.java 2011-09-29 20:30:31 UTC (rev 6465) @@ -0,0 +1,128 @@ +/* + * @creation 3 juil. 2008 + * @modification $Date:$ + * @license GNU General Public License 2 + * @copyright (c)1998-2008 CETMEF 2 bd Gambetta F-60231 Compiegne + * @mail fud...@li... + */ +package org.fudaa.fudaa.piv.action; + +import java.awt.event.ActionEvent; +import java.io.File; +import org.fudaa.ctulu.CtuluAnalyze; +import org.fudaa.ctulu.gui.CtuluDialog; +import org.fudaa.ctulu.gui.CtuluTaskOperationGUI; +import org.fudaa.ebli.commun.EbliActionSimple; +import org.fudaa.fudaa.piv.PivExePanel; +import org.fudaa.fudaa.piv.PivImplementation; +import org.fudaa.fudaa.piv.PivPreferences; +import org.fudaa.fudaa.piv.PivProgressionPanel; +import org.fudaa.fudaa.piv.PivResource; + +/** + * Une action pour lancer le calcul de d\xE9bit. + * + * @author Bertrand Marchand (mar...@de...) + * @version $Id$ + */ +public class PivComputeFlowAction extends EbliActionSimple { + PivImplementation impl; + CtuluDialog diProgress_; + + /** + * Constructeur. + * @param _impl L'implementation. + */ + public PivComputeFlowAction(PivImplementation _impl) { + super(PivResource.getS("Calcul du d\xE9bit"), null, "FLOW_COMPUTE"); + + impl=_impl; + setEnabled(false); + } + + /** + * Lance l'analyse par PIV, dans un thread s\xE9par\xE9. + * @param _e L'evenement pour l'action. + */ + @Override + public void actionPerformed(final ActionEvent _e) { + if (!isValide()) { + return; + } + + if (!impl.getLauncher().areExeOK()) { + PivExePanel pnExe = new PivExePanel(); + + if (!pnExe.afficheModaleOk(impl.getFrame(), PivResource.getS("R\xE9pertoire contenant les executables"))) { + return; + } + else { + impl.getLauncher().setExePath(new File(PivPreferences.PIV.getStringProperty(PivPreferences.PIV_EXE_PATH))); + } + } + + + // La tache a ex\xE9cuter. + CtuluTaskOperationGUI r=new CtuluTaskOperationGUI(impl, PivResource.getS("Calcul du d\xE9bit")) { + + @Override + public void act() { + try { + CtuluAnalyze ana=new CtuluAnalyze(); + ana.setDesc(this.getName()); + impl.getLauncher().launchBathyCompute(ana, impl.getCurrentProject(), this); + if (ana.containsErrorOrFatalError()) { + impl.error(ana.getResume()); + return; + } + + impl.getLauncher().launchQCompute(ana, impl.getCurrentProject(), this); + if (ana.containsErrorOrFatalError()) { + impl.error(ana.getResume()); + return; + } + } + finally { + diProgress_.dispose(); + } + + impl.message(PivResource.getS("Calcul termin\xE9"), PivResource.getS("Le calcul s'est termin\xE9 avec succ\xE8s"), false); +// impl.get2dFrame().getVisuPanel().setVelocitiesLayerVisible(false); + } + }; + + PivProgressionPanel pnProgress_=new PivProgressionPanel(r); + diProgress_ = pnProgress_.createDialog(impl.getParentComponent()); + diProgress_.setOption(CtuluDialog.ZERO_OPTION); + diProgress_.setDefaultCloseOperation(CtuluDialog.DO_NOTHING_ON_CLOSE); + diProgress_.setTitle(r.getName()); + + r.start(); + diProgress_.afficheDialogModal(); + } + + /** + * @return true Si toutes les donn\xE9es sont pr\xE9sentes pour un lancement. + */ + public boolean isValide() { + if (impl.getCurrentProject().getTransect()==null) { + impl.error(PivResource.getS("Erreur"), PivResource.getS("Le transect n'a pas \xE9t\xE9 d\xE9fini")); + return false; + } + if (impl.getCurrentProject().getComputeParameters()==null) { + impl.error(PivResource.getS("Erreur"), PivResource.getS("Les param\xE8tres de calcul n'ont pas \xE9t\xE9 donn\xE9s")); + return false; + } + if (impl.getCurrentProject().getVelResults()==null) { + impl.error(PivResource.getS("Erreur"), PivResource.getS("Le projet ne contient pas de r\xE9sultats moyenn\xE9s")); + return false; + } + + return true; + } + + @Override + public String getEnableCondition() { + return PivResource.getS("Un transect doit \xEAtre d\xE9fini et des r\xE9sultats moyenn\xE9s doivent exister"); + } +} Property changes on: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeFlowAction.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportTransectAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportTransectAction.java 2011-09-29 20:26:45 UTC (rev 6464) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportTransectAction.java 2011-09-29 20:30:31 UTC (rev 6465) @@ -9,7 +9,7 @@ import org.fudaa.fudaa.piv.PivImplementation; import org.fudaa.fudaa.piv.PivResource; import org.fudaa.fudaa.piv.PivVisuPanel; -import org.fudaa.fudaa.piv.io.PivTransectFileFormat; +import org.fudaa.fudaa.piv.io.PivBathyFileFormat; import org.fudaa.fudaa.piv.metier.PivTransect; /** @@ -55,7 +55,7 @@ } File transectFile=fcTransect.getSelectedFile(); - FileReadOperationAbstract reader=PivTransectFileFormat.getInstance().createReader(); + FileReadOperationAbstract reader=PivBathyFileFormat.getInstance().createReader(); CtuluIOOperationSynthese ret=reader.read(transectFile, null); if (ret.getAnalyze().containsErrorOrFatalError()) { impl.error(ret.getAnalyze().getResume()); Added: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivDischargeFileFormat.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivDischargeFileFormat.java (rev 0) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivDischargeFileFormat.java 2011-09-29 20:30:31 UTC (rev 6465) @@ -0,0 +1,45 @@ +package org.fudaa.fudaa.piv.io; + +import org.fudaa.ctulu.fileformat.FileFormatUnique; +import org.fudaa.ctulu.fileformat.FileReadOperationAbstract; +import org.fudaa.ctulu.fileformat.FileWriteOperationAbstract; +import org.fudaa.fudaa.piv.PivResource; + +/** + * La classe d\xE9crivant le format d'un fichier Discharge.dat de r\xE9sultats de d\xE9bit. + * + * @author Bertrand Marchand (mar...@de...) + * @version $Id$ + */ +public class PivDischargeFileFormat extends FileFormatUnique { + + private PivDischargeFileFormat() { + super(1); + nom_ = PivResource.getS("Piv discharge"); + description_ = PivResource.getS("Fichier contenant les d\xE9bits calcul\xE9s"); + extensions_=new String[]{"dat"}; + } + static final PivDischargeFileFormat INSTANCE = new PivDischargeFileFormat(); + + /** + * Retourne le singleton pour instancier un reader ou un writer. + * @return Le singleton + */ + public static PivDischargeFileFormat getInstance() { + return INSTANCE; + } + + /** + * Cr\xE9ation d'un reader. + * @return Le reader + */ + public FileReadOperationAbstract createReader() { + return new PivDischargeReader(); + } + + /** Non implement\xE9 */ + public FileWriteOperationAbstract createWriter() { + return null; + } + +} Property changes on: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivDischargeFileFormat.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Added: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivDischargeReader.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivDischargeReader.java (rev 0) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivDischargeReader.java 2011-09-29 20:30:31 UTC (rev 6465) @@ -0,0 +1,139 @@ +/** + * @creation 2002-11-21 + * @modification $Date: 2007/05/04 13:47:27 $ + * @license GNU General Public License 2 + * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne + * @mail de...@fu... + */ +package org.fudaa.fudaa.piv.io; + +import java.io.EOFException; +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +import org.fudaa.ctulu.CtuluActivity; +import org.fudaa.dodico.fortran.FileOpReadCharSimpleAbstract; + +import org.fudaa.fudaa.piv.PivResource; +import org.fudaa.fudaa.piv.metier.PivFlowResults; + +/** + * Un lecteur pour les fichiers des r\xE9sultats de calcul de d\xE9bit. + * + * @author Bertrand Marchand (mar...@de...) + * @version $Id$ + */ +public class PivDischargeReader extends FileOpReadCharSimpleAbstract implements CtuluActivity { + + /** Drapeau d'interruption */ + boolean bstop_; + /** Nb d'octets du fichier a lire pour stat sur pourcentage effectu\xE9 */ + int nbOctets; + + /** + * Le constructeur. + */ + public PivDischargeReader() { + } + + /** + * Lit les r\xE9sultats de debit et les retourne. + * @return Les r\xE9sultats + */ + protected PivFlowResults internalRead() { + return readResults(); + } + + @Override + protected void processFile(final File _f) { + nbOctets = (int) _f.length(); + } + + /** + * Utilise FortranReader ( donc un buffer). + * + * @return les infos non bloquantes. + */ + private synchronized PivFlowResults readResults() { + PivFlowResults res = new PivFlowResults(); + List<Double> lx=new ArrayList<Double>(); + List<Double> ly=new ArrayList<Double>(); + List<Double> lvx=new ArrayList<Double>(); + List<Double> lvy=new ArrayList<Double>(); + + if (super.in_ == null) { + analyze_.addErrorFromFile(PivResource.getS("Flux d'entr\xE9e non trouv\xE9"), 0); + return null; + } + + try { + int lu=0; + boolean afficheAvance = false; + if ((progress_ != null) && (nbOctets > 0)) { + afficheAvance = true; + progress_.setProgression(0); + } + int pourcentageEnCours = 0; + + in_.setJumpBlankLine(true); + + // 1ere ligne + in_.readFields(); + // Debit + res.setDischarge(in_.doubleField(1)); + // Surface mouill\xE9e + res.setWettedArea(in_.doubleField(2)); + // Vitesse moyenne + res.setMeanVelocity(in_.doubleField(3)); + + // Boucle jusque fin de fichier. Exception EOF si fin. + while (true) { + in_.readFields(); + + // X + lx.add(in_.doubleField(2)); + // Y + ly.add(in_.doubleField(3)); + // VX + lvx.add(in_.doubleField(5)); + // VY + lvy.add(in_.doubleField(6)); + + lu+=84; // Si le formattage en fortran + + if ((afficheAvance) && ((lu * 100 / nbOctets) >= (pourcentageEnCours + 20))) { + pourcentageEnCours += 20; + progress_.setProgression(pourcentageEnCours); + } + } + } + // Sortie normale + catch (final EOFException e) { + res.setX(lx.toArray(new Double[0])); + res.setY(ly.toArray(new Double[0])); + res.setVx(lvx.toArray(new Double[0])); + res.setVy(lvy.toArray(new Double[0])); + } + catch (final IOException e) { + analyze_.addErrorFromFile(PivResource.getS("Une erreur de lecture s'est produite"), in_.getLineNumber()); + } + catch (final NumberFormatException e) { + analyze_.addErrorFromFile(PivResource.getS("Une erreur de lecture s'est produite"), in_.getLineNumber()); + } + + if (progress_ != null) { + progress_.setProgression(100); + } + + return res; + } + + /** + * Interruption asynchrone de l'activit\xE9 de lecture. + */ + public void stop() { + bstop_ = true; + } +} Property changes on: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivDischargeReader.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Added: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivFlowResults.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivFlowResults.java (rev 0) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivFlowResults.java 2011-09-29 20:30:31 UTC (rev 6465) @@ -0,0 +1,138 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.fudaa.fudaa.piv.metier; + +/** + * Les r\xE9sultats d'un calcul de d\xE9bit. + * @author Bertrand Marchand (mar...@de...) + */ +public class PivFlowResults { + /** Le debit */ + protected double discharge; + /** La surface mouill\xE9e */ + protected double wettedArea; + /** La v\xE9locit\xE9 moyenne. */ + protected double meanVelocity; + /** Les coordonn\xE9es X des points */ + protected Double[] x; + /** Les coordonn\xE9es Y des points */ + protected Double[] y; + /** Les vitesses suivant Vx */ + protected Double[] vx; + /** Les vitesses suivant Vy */ + protected Double[] vy; + + /** + * @return Le debit + */ + public double getDischarge() { + return discharge; + } + + /** + * D\xE9finit le d\xE9bit + * @param _discharge Le d\xE9bit + */ + public void setDischarge(double _discharge) { + this.discharge=_discharge; + } + + /** + * @return La surface mouill\xE9e + */ + public double getWettedArea() { + return wettedArea; + } + + /** + * D\xE9finit la surface mouill\xE9e + * @param _wettedArea La surface mouill\xE9e + */ + public void setWettedArea(double _wettedArea) { + this.wettedArea=_wettedArea; + } + + /** + * @return La v\xE9locit\xE9 moyenne + */ + public double getMeanVelocity() { + return meanVelocity; + } + + /** + * D\xE9finit la v\xE9locit\xE9 moyenne + * @param _meanVelocity La v\xE9locit\xE9 moyenne + */ + public void setMeanVelocity(double _meanVelocity) { + this.meanVelocity=_meanVelocity; + } + + /** + * @return La coordonn\xE9e X du point d'index donn\xE9e. + */ + public double getX(int _i) { + return x[_i]; + } + + /** + * @return La coordonn\xE9e Y du point d'index donn\xE9e. + */ + public double getY(int _i) { + return y[_i]; + } + + /** + * @return La vitesse Vx du point d'index donn\xE9e. + */ + public double getVx(int _i) { + return vx[_i]; + } + + /** + * @return La vitesse Vy du point d'index donn\xE9e. + */ + public double getVy(int _i) { + return vy[_i]; + } + + /** + * @return Le nombre de points de v\xE9locit\xE9. + */ + public int getNombre() { + return vy.length; + } + + /** + * Definit les coordonn\xE9es X des points de r\xE9sultats + * @param _x Les coordonn\xE9es X + */ + public void setX(Double[] _x) { + x=_x; + } + + /** + * Definit les coordonn\xE9es Y des points de r\xE9sultats + * @param _y Les coordonn\xE9es Y + */ + public void setY(Double[] _y) { + y=_y; + } + + /** + * Definit les vitesses X des points de r\xE9sultats + * @param _vx Les vitesses X + */ + public void setVx(Double[] _vx) { + vx=_vx; + } + + /** + * Definit les vitesses Y des points de r\xE9sultats + * @param _vy Les vitesses Y + */ + public void setVy(Double[] _vy) { + vy=_vy; + } +} Property changes on: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivFlowResults.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProject.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProject.java 2011-09-29 20:26:45 UTC (rev 6464) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProject.java 2011-09-29 20:30:31 UTC (rev 6465) @@ -24,7 +24,8 @@ import org.fudaa.fudaa.piv.io.PivHFileFormat; import org.fudaa.fudaa.piv.io.PivImgRefFileFormat; import org.fudaa.fudaa.piv.io.PivParamFileFormat; -import org.fudaa.fudaa.piv.io.PivTransectFileFormat; +import org.fudaa.fudaa.piv.io.PivBathyFileFormat; +import org.fudaa.fudaa.piv.io.PivDischargeFileFormat; /** * Le projet contenant toutes les donn\xE9es. Chauqe projet peut \xEAtre sauv\xE9/relu @@ -59,6 +60,8 @@ protected PivTransect transect; /** Les r\xE9sultats de vitesses */ protected PivVelResults velResults; + /** Les r\xE9sultats de d\xE9bit calcul\xE9 */ + protected PivFlowResults flowResults; /** La taille des images transform\xE9es */ protected Dimension imgTransfSize=null; /** True : Les images transform\xE9es ont \xE9t\xE9 modifi\xE9es */ @@ -460,11 +463,19 @@ CtuluIOOperationSynthese ret=reader.read(velFile, null); velResults=(PivVelResults)ret.getSource(); } + + // Les r\xE9sultats de d\xE9bit + File flowFile=new File(outputDir,"Discharge.dat"); + if (flowFile.exists()) { + FileReadOperationAbstract reader=PivDischargeFileFormat.getInstance().createReader(); + CtuluIOOperationSynthese ret=reader.read(flowFile, null); + flowResults=(PivFlowResults)ret.getSource(); + } // Un transect File transectFile=new File(outputDir,"bathy.dat"); if (transectFile.exists()) { - FileReadOperationAbstract reader=PivTransectFileFormat.getInstance().createReader(); + FileReadOperationAbstract reader=PivBathyFileFormat.getInstance().createReader(); CtuluIOOperationSynthese ret=reader.read(transectFile, null); transect=(PivTransect)ret.getSource(); } @@ -500,12 +511,6 @@ else { FuLog.trace("Pas de points de grille."); } - if (velResults!=null) { - FuLog.trace("R\xE9sultats charg\xE9s"); - } - else { - FuLog.trace("Pas de r\xE9sultats."); - } if (transect!=null) { FuLog.trace("Transect charg\xE9"); } @@ -524,6 +529,18 @@ else { FuLog.trace("Pas d'images transform\xE9es."); } + if (velResults!=null) { + FuLog.trace("R\xE9sultats de vitesses charg\xE9s"); + } + else { + FuLog.trace("Pas de r\xE9sultats de vitesses."); + } + if (flowResults!=null) { + FuLog.trace("R\xE9sultats de d\xE9bit charg\xE9s"); + } + else { + FuLog.trace("Pas de r\xE9sultats de d\xE9bit."); + } FuLog.trace("*** Fin du chargement ***"); isModified=false; @@ -579,7 +596,7 @@ // Un transect if (transect!=null) { File transectFile=new File(outputDir,"bathy.dat"); - FileWriteOperationAbstract writer=PivTransectFileFormat.getInstance().createWriter(); + FileWriteOperationAbstract writer=PivBathyFileFormat.getInstance().createWriter(); CtuluIOOperationSynthese ret=writer.write(transect, transectFile, null); } @@ -725,7 +742,26 @@ isModified=true; fireProjectStateChanged("velResults"); } + + /** + * Retourne les r\xE9sultats de d\xE9bit. + * @return Les r\xE9sultats, ou <tt>null</tt> s'ils n'ont pas \xE9t\xE9 d\xE9finis. + */ + public PivFlowResults getFlowResults() { + return flowResults; + } + /** + * Definit les r\xE9sultats de d\xE9bit, et notifie que le projet a \xE9t\xE9 + * modifi\xE9. + * @param _res Les r\xE9sultats. <tt>null</tt> est autoris\xE9. + */ + public void setFlowResults(PivFlowResults _res) { + flowResults=_res; + isModified=true; + fireProjectStateChanged("flowResults"); + } + void fireProjectStateChanged(String _prop) { for (PivProjectStateListener listener : listeners) { listener.projectStateChanged(_prop); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2011-09-30 12:02:31
|
Revision: 6467 http://fudaa.svn.sourceforge.net/fudaa/?rev=6467&view=rev Author: bmarchan Date: 2011-09-30 12:02:24 +0000 (Fri, 30 Sep 2011) Log Message: ----------- Add: Affichage des vecteurs d?\195?\169bit Modified Paths: -------------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivVisuPanel.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeFlowAction.java Added Paths: ----------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivShowFlowAction.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivFlowResultsModel.java Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java 2011-09-29 21:13:23 UTC (rev 6466) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java 2011-09-30 12:02:24 UTC (rev 6467) @@ -222,6 +222,7 @@ setEnabledForAction("PIV_COMPUTE", bprjOpen); setEnabledForAction("COMPUTE_AVERAGE", bprjOpen); setEnabledForAction("RESULTS_SHOW_VELOCITIES", bprjOpen && project.getVelResults()!=null); + setEnabledForAction("SHOW_FLOW_RESULTS", bprjOpen && project.getFlowResults()!=null); refreshTitle(); } @@ -680,6 +681,7 @@ mn.addSeparator(PivResource.getS("Post-traitement")); mn.add(get2dFrame().getVisuPanel().getNewTransectAction()); mn.add(new PivComputeFlowAction(this)); + mn.add(get2dFrame().getVisuPanel().getShowFlowAction().buildMenuItem(EbliComponentFactory.INSTANCE)); mn.addSeparator(PivResource.getS("Vue")); ButtonGroup bg=new ButtonGroup(); AbstractButton itOriginalView=get2dFrame().getVisuPanel().getOriginalViewAction().buildMenuItem(EbliComponentFactory.INSTANCE); Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivVisuPanel.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivVisuPanel.java 2011-09-29 21:13:23 UTC (rev 6466) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivVisuPanel.java 2011-09-30 12:02:24 UTC (rev 6467) @@ -44,10 +44,12 @@ import org.fudaa.fudaa.piv.action.PivOriginalViewAction; import org.fudaa.fudaa.piv.action.PivOrthoGRPAction; import org.fudaa.fudaa.piv.action.PivRealViewAction; +import org.fudaa.fudaa.piv.action.PivShowFlowAction; import org.fudaa.fudaa.piv.action.PivShowVelocityAction; import org.fudaa.fudaa.piv.action.PivTransfViewAction; import org.fudaa.fudaa.piv.layer.PivCntGridModel; import org.fudaa.fudaa.piv.layer.PivControlPointsModel; +import org.fudaa.fudaa.piv.layer.PivFlowResultsModel; import org.fudaa.fudaa.piv.layer.PivIASALayer; import org.fudaa.fudaa.piv.layer.PivIASAModel; import org.fudaa.fudaa.piv.layer.PivOriginalImageModel; @@ -125,6 +127,8 @@ ZCalqueEditionInteraction cqEdition_; /** L'affichage des r\xE9sultats moyenn\xE9s */ ZCalqueFleche cqVelResults; + /** L'affichage des r\xE9sultats de d\xE9bit */ + ZCalqueFleche cqFlowResults; PivIASAModel mdlIASA; PivCntGridModel mdlCntGrid; @@ -137,6 +141,7 @@ PivControlPointsModel mdlRealControlPoints; PivVelResultsModel mdlVelResults; PivTransectModel mdlTransect; + PivFlowResultsModel mdlFlowResults; ZEditorDefault editGeom_; @@ -148,6 +153,7 @@ private PivComputeGridDefinitionAction actComputeGrid_; private PivOrthoGRPAction actOrthoGRP_; private PivShowVelocityAction actShowVelocities_; + private PivShowFlowAction actShowFlow_; private PivEditAction actEdit_; private PivNewTransectAction actNewTransect_; @@ -213,11 +219,14 @@ mdlOrthoPoints.update(); mdlRealOrthoPoints.update(); } + else if ("transect".equals(_prop)) { + mdlTransect.update(); + } else if("velResults".equals(_prop)) { mdlVelResults.update(); } - else if ("transect".equals(_prop)) { - mdlTransect.update(); + else if("flowResults".equals(_prop)) { + mdlFlowResults.update(); } getVueCalque().repaint(); @@ -250,6 +259,7 @@ actNewTransect_=new PivNewTransectAction(this); actNewTransect_.setTransectLayer(cqTransect_); actShowVelocities_=new PivShowVelocityAction((PivImplementation)getCtuluUI()); + actShowFlow_=new PivShowFlowAction((PivImplementation)getCtuluUI()); actEdit_=new PivEditAction(this); getScene().addSelectionListener(actEdit_); @@ -314,6 +324,14 @@ } /** + * Retourne l'action pour voir les d\xE9bits. + * @return L'action. + */ + public EbliActionAbstract getShowFlowAction() { + return actShowFlow_; + } + + /** * Retourne l'action pour \xE9diter une g\xE9om\xE9trie. * @return L'action. */ @@ -347,6 +365,7 @@ getCqLegend().enleve(cqIASA_); getCqLegend().enleve(cqRealControlPoints_); getCqLegend().enleve(cqVelResults); + getCqLegend().enleve(cqFlowResults); actOriginalView_.putValue(Action.SELECTED_KEY,true); setCoordinateDefinitions(new EbliCoordinateDefinition[]{DEF_COOR_I,DEF_COOR_J}); @@ -363,6 +382,12 @@ cqVelResults.setLegende(getCqLegend()); addCalque(cqVelResults,true); } + if (projet!=null && projet.getFlowResults()!=null) { + cqFlowResults.setLegende(null); + cqFlowResults.setLegende(getCqLegend()); + addCalque(cqFlowResults,true); + } + addCalque(cqRealOrthoPoints_); addCalque(cqRealImg_); @@ -385,6 +410,7 @@ actTransfView_.putValue(Action.SELECTED_KEY,true); getCqLegend().enleve(cqRealControlPoints_); getCqLegend().enleve(cqVelResults); + getCqLegend().enleve(cqFlowResults); setCoordinateDefinitions(new EbliCoordinateDefinition[]{DEF_COOR_J,DEF_COOR_I}); @@ -430,6 +456,19 @@ } /** + * Rend visible le calque des d\xE9bits. + * @param _b True : Le calque est visible. + */ + public void setFlowLayerVisible(boolean _b) { + if (_b) { + if (viewMode_==MODE_REAL_VIEW) { + addCalque(cqFlowResults, true); + } + } + cqFlowResults.setVisible(_b); + } + + /** * Retourne le mode de vue. * @return Le mode de vue parmi {@link #MODE_ORIGINAL_VIEW}, * {@link #MODE_REAL_VIEW}, {@link #MODE_TRANSF_VIEW} @@ -526,6 +565,25 @@ } } }); + + // Layer des d\xE9bits. + cqFlowResults = new ZCalqueFleche() { + @Override + protected String getFlecheUnit() { + return "m/s"; + } + }; + cqFlowResults.setTitle(PivResource.getS("D\xE9bits")); + cqFlowResults.setName("cqRealFlow"); + // Donne la couleur des fl\xE8ches si pas de palette de couleurs. + cqFlowResults.setLineModel(0, new TraceLigneModel(TraceLigne.LISSE, 1, Color.YELLOW.darker())); + cqFlowResults.addPropertyChangeListener(new PropertyChangeListener() { + public void propertyChange(PropertyChangeEvent evt) { + if ("visible".equals(evt.getPropertyName())) { + actShowFlow_.setSelected((Boolean)evt.getNewValue()); + } + } + }); // Layer des transect cqTransect_= new ZCalqueLigneBriseeEditable(); @@ -622,6 +680,11 @@ cqVelResults.setModele(mdlVelResults); cqVelResults.setVisible(false); + mdlFlowResults=new PivFlowResultsModel(); + mdlFlowResults.setProjet(projet); + cqFlowResults.setModele(mdlFlowResults); + cqFlowResults.setVisible(false); + mdlTransect=new PivTransectModel(); mdlTransect.setProjet(projet); cqTransect_.modele(mdlTransect); Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeFlowAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeFlowAction.java 2011-09-29 21:13:23 UTC (rev 6466) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeFlowAction.java 2011-09-30 12:02:24 UTC (rev 6467) @@ -18,6 +18,7 @@ import org.fudaa.fudaa.piv.PivPreferences; import org.fudaa.fudaa.piv.PivProgressionPanel; import org.fudaa.fudaa.piv.PivResource; +import org.fudaa.fudaa.piv.PivVisuPanel; /** * Une action pour lancer le calcul de d\xE9bit. @@ -87,7 +88,8 @@ } impl.message(PivResource.getS("Calcul termin\xE9"), PivResource.getS("Le calcul s'est termin\xE9 avec succ\xE8s"), false); -// impl.get2dFrame().getVisuPanel().setVelocitiesLayerVisible(false); + impl.get2dFrame().getVisuPanel().setViewMode(PivVisuPanel.MODE_REAL_VIEW); + impl.get2dFrame().getVisuPanel().setFlowLayerVisible(true); } }; Added: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivShowFlowAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivShowFlowAction.java (rev 0) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivShowFlowAction.java 2011-09-30 12:02:24 UTC (rev 6467) @@ -0,0 +1,50 @@ +/* + * @creation 3 juil. 2008 + * @modification $Date:$ + * @license GNU General Public License 2 + * @copyright (c)1998-2008 CETMEF 2 bd Gambetta F-60231 Compiegne + * @mail fud...@li... + */ +package org.fudaa.fudaa.piv.action; + +import org.fudaa.ebli.commun.EbliActionChangeState; +import org.fudaa.fudaa.piv.PivImplementation; +import org.fudaa.fudaa.piv.PivResource; +import org.fudaa.fudaa.piv.PivVisuPanel; + +/** + * Une action pour voir les d\xE9bits apr\xE8s calcul en espace r\xE9el. + * + * @author Bertrand Marchand (mar...@de...) + * @version $Id$ + */ +public class PivShowFlowAction extends EbliActionChangeState { + PivImplementation impl; + + /** + * Constructeur. + * @param _impl L'implementation. + */ + public PivShowFlowAction(PivImplementation _impl) { + super(PivResource.getS("Voir les d\xE9bits"), null, "SHOW_FLOW_RESULTS"); + + impl=_impl; + setEnabled(false); + } + + + @Override + public String getEnableCondition() { + return PivResource.getS("Il doit exister des r\xE9sultats de calcul de d\xE9bit"); + } + + + @Override + public void changeAction() { + // On bascule dans la bonne vue. + if (isSelected()) { + impl.get2dFrame().getVisuPanel().setViewMode(PivVisuPanel.MODE_REAL_VIEW); + } + impl.get2dFrame().getVisuPanel().setFlowLayerVisible(isSelected()); + } +} Property changes on: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivShowFlowAction.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Added: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivFlowResultsModel.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivFlowResultsModel.java (rev 0) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivFlowResultsModel.java 2011-09-30 12:02:24 UTC (rev 6467) @@ -0,0 +1,199 @@ +package org.fudaa.fudaa.piv.layer; + +import com.memoire.bu.BuTable; +import org.fudaa.ctulu.table.CtuluTable; +import org.fudaa.ebli.calque.ZCalqueAffichageDonneesInterface; +import org.fudaa.ebli.calque.ZCalqueFleche; +import org.fudaa.ebli.calque.ZModeleFleche; +import org.fudaa.ebli.commun.EbliLib; +import org.fudaa.ebli.geometrie.GrBoite; +import org.fudaa.ebli.geometrie.GrPoint; +import org.fudaa.ebli.geometrie.GrSegment; +import org.fudaa.ebli.palette.BPaletteInfo.InfoData; +import org.fudaa.fudaa.piv.metier.PivFlowResults; +import org.fudaa.fudaa.piv.metier.PivProject; + +/** + * Un modele pour le trac\xE9 des d\xE9bits sous forme de vecteurs vitesses. + * + * @author Bertrand Marchand (mar...@de...) + * @version $Id$ + */ +public class PivFlowResultsModel implements ZModeleFleche { + /** Le projet. **/ + PivProject prj_; + /** Le point, toujours le m\xEAme, pour retourner les coordonn\xE9es 3D d'un r\xE9sultat. */ + GrPoint ptCache_=new GrPoint(); + + /** + * Le constructeur. + */ + public PivFlowResultsModel() { + } + + /** + * Redefinit le projet, et remet a jour le modele. + * @param _prj Le projet courant. + */ + public void setProjet(PivProject _prj) { + prj_=_prj; + update(); + } + + /** + * Met a jour le mod\xE8le. Cette m\xE9thode est vide, le mod\xE8le se base directement + * sur le projet. + */ + public void update() {} + + /** Non implement\xE9 */ + @Override + public boolean interpolate(GrSegment _seg, double _x, double _y) { + return false; + } + + /** + * Initialise le segment depuis les points d'indice _i et _i+1 + * @param _s Le segement. + * @param _i L'indice du premier point. + * @param _force Inutilis\xE9. + * @return Fix\xE9 \xE0 true. + */ + @Override + public boolean segment(GrSegment _s, int _i, boolean _force) { + _s.o_.x_=getX(_i); + _s.o_.y_=getY(_i); + _s.e_.x_=getX(_i)+getVx(_i); + _s.e_.y_=getY(_i)+getVy(_i); + + return true; + } + + /** + * Retourne la norme de la vitesse au point d'indice _i + * @param _i L'indice du point. + * @return La norme. + */ + @Override + public double getNorme(int _i) { + double vx=getVx(_i); + double vy=getVy(_i); + return Math.sqrt(vx*vx+vy*vy); + } + + /** + * Retourne la vitesse suivant X au point d'indice _i + * @param _i L'indice du point. + * @return La vitesse. + */ + @Override + public double getVx(int _i) { + if (prj_.getFlowResults()==null) return 0; + return prj_.getFlowResults().getVx(_i); + } + + /** + * Retourne la vitesse suivant Y au point d'indice _i + * @param _i L'indice du point. + * @return La vitesse. + */ + @Override + public double getVy(int _i) { + if (prj_.getFlowResults()==null) return 0; + return prj_.getFlowResults().getVy(_i); + } + + /** + * Retourne la coordonn\xE9e X au point d'indice _i + * @param _i L'indice du point. + * @return La coordonn\xE9e. + */ + @Override + public double getX(int _i) { + if (prj_.getFlowResults()==null) return 0; + return prj_.getFlowResults().getX(_i); + } + + /** + * Retourne la coordonn\xE9e Y au point d'indice _i + * @param _i L'indice du point. + * @return La coordonn\xE9e. + */ + @Override + public double getY(int _i) { + if (prj_.getFlowResults()==null) return 0; + return prj_.getFlowResults().getY(_i); + } + + /** Non implement\xE9 */ + @Override + public double getZ1(int _i) { + return 0; + } + + /** Non implement\xE9 */ + @Override + public double getZ2(int _i) { + return 0; + } + + @Override + public BuTable createValuesTable(ZCalqueAffichageDonneesInterface _layer) { + return new CtuluTable(new ZCalqueFleche.ValueTableModel(this)); + } + + @Override + public void fillWithInfo(InfoData _d, ZCalqueAffichageDonneesInterface _layer) { + final ZCalqueFleche.StringInfo info = new ZCalqueFleche.StringInfo(); + info.titleIfOne_ = EbliLib.getS("Resultats: point n\xB0"); + info.title_ = EbliLib.getS("Resultats"); + ZCalqueFleche.fillWithInfo(_d, _layer.getLayerSelection(), this, info); + } + + /** Non implement\xE9 */ + @Override + public boolean isValuesTableAvailable() { + return true; + } + + /** + * Retourne la boite englobante des points du mod\xE8le. + * @return La boite. + */ + @Override + public GrBoite getDomaine() { + PivFlowResults res=prj_.getFlowResults(); + if (res==null) return null; + + GrBoite bt=new GrBoite(); + for (int i=0; i<res.getNombre(); i++) { + bt.ajuste(res.getX(i),res.getY(i),0); + } + return bt; + } + + /** + * Retourne le nombre de points du mod\xE8le. + * @return Le nombre de points. + */ + @Override + public int getNombre() { + if (prj_.getFlowResults()==null) return 0; + return prj_.getFlowResults().getNombre(); + } + + /** Non implement\xE9 */ + @Override + public Object getObject(int _ind) { + return null; + } + + public GrPoint getVertexForObject(int _ind, int _idVertex) { + if (prj_.getFlowResults()==null) return null; + if (_ind!=0) return null; + + ptCache_.x_=getX(_idVertex); + ptCache_.y_=getY(_idVertex); + return ptCache_; + } +} Property changes on: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivFlowResultsModel.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2011-09-30 12:29:28
|
Revision: 6468 http://fudaa.svn.sourceforge.net/fudaa/?rev=6468&view=rev Author: bmarchan Date: 2011-09-30 12:29:21 +0000 (Fri, 30 Sep 2011) Log Message: ----------- Mod : Chgt des noms des actions Modified Paths: -------------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeFlowAction.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeGridDefinitionAction.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeLaunchAction.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeParamAction.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOrthoGRPAction.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOrthoLaunchAction.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOrthoParamAction.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOrthoVerifyGRPAction.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivShowVelocityAction.java Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java 2011-09-30 12:02:24 UTC (rev 6467) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java 2011-09-30 12:29:21 UTC (rev 6468) @@ -208,20 +208,20 @@ setEnabledForAction("ENREGISTRER", bprjMod); setEnabledForAction("FERMER", bprjOpen); setEnabledForAction("SELECT_IMAGES", bprjOpen); - setEnabledForAction("ORTHO_GRP", bprjOpen && bprjHasOriginalImg); + setEnabledForAction("CREATE_GRP", bprjOpen && bprjHasOriginalImg); setEnabledForAction("IMPORT_GRP", bprjOpen && bprjHasOriginalImg); - setEnabledForAction("ORTHO_VERIFY_GRP", bprjOpen && project.getOrthoPoints()!=null); - setEnabledForAction("ORTHO_PARAM", bprjOpen && project.getOrthoPoints()!=null); - setEnabledForAction("ORTHO_COMPUTE", bprjOpen); - setEnabledForAction("PIV_PARAM", bprjOpen && bprjHasTransfImg); - setEnabledForAction("PIV_GRID", bprjOpen && bprjHasTransfImg); + setEnabledForAction("VERIFY_GRP", bprjOpen && project.getOrthoPoints()!=null); + setEnabledForAction("DEFINE_ORTHO_PARAM", bprjOpen && project.getOrthoPoints()!=null); + setEnabledForAction("COMPUTE_ORTHO", bprjOpen); + setEnabledForAction("DEFINE_PIV_PARAM", bprjOpen && bprjHasTransfImg); + setEnabledForAction("DEFINE_GRID", bprjOpen && bprjHasTransfImg); setEnabledForAction("IMPORT_GRID", bprjOpen && bprjHasTransfImg); setEnabledForAction("IMPORT_TRANSECT", bprjOpen && bprjHasTransfImg); setEnabledForAction("CREATE_TRANSECT", bprjOpen && bprjHasTransfImg); - setEnabledForAction("FLOW_COMPUTE", bprjOpen && project.getVelResults()!=null); - setEnabledForAction("PIV_COMPUTE", bprjOpen); + setEnabledForAction("COMPUTE_FLOW", bprjOpen && project.getVelResults()!=null); + setEnabledForAction("COMPUTE_PIV", bprjOpen); setEnabledForAction("COMPUTE_AVERAGE", bprjOpen); - setEnabledForAction("RESULTS_SHOW_VELOCITIES", bprjOpen && project.getVelResults()!=null); + setEnabledForAction("SHOW_VELOCITIES_RESULTS", bprjOpen && project.getVelResults()!=null); setEnabledForAction("SHOW_FLOW_RESULTS", bprjOpen && project.getFlowResults()!=null); refreshTitle(); Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeFlowAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeFlowAction.java 2011-09-30 12:02:24 UTC (rev 6467) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeFlowAction.java 2011-09-30 12:29:21 UTC (rev 6468) @@ -35,7 +35,7 @@ * @param _impl L'implementation. */ public PivComputeFlowAction(PivImplementation _impl) { - super(PivResource.getS("Calcul du d\xE9bit"), null, "FLOW_COMPUTE"); + super(PivResource.getS("Calcul du d\xE9bit"), null, "COMPUTE_FLOW"); impl=_impl; setEnabled(false); Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeGridDefinitionAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeGridDefinitionAction.java 2011-09-30 12:02:24 UTC (rev 6467) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeGridDefinitionAction.java 2011-09-30 12:29:21 UTC (rev 6468) @@ -124,10 +124,12 @@ * principale est r\xE9duite. */ class Piv2dFrameListener extends InternalFrameAdapter { + @Override public void internalFrameActivated(final InternalFrameEvent _e) { if(window_!=null) window_.setVisible(true); } + @Override public void internalFrameDeactivated(final InternalFrameEvent _e) { if(window_!=null) window_.setVisible(false); @@ -139,7 +141,7 @@ * @param _pn Le panneau des calques. */ public PivComputeGridDefinitionAction(PivVisuPanel _pn) { - super(PivResource.getS("D\xE9finition de la grille..."), null, "PIV_GRID"); + super(PivResource.getS("D\xE9finition de la grille..."), null, "DEFINE_GRID"); pnCalques_=_pn; controller_=new EditionController(); setCalqueInteraction(_pn.getEditionLayer()); Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeLaunchAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeLaunchAction.java 2011-09-30 12:02:24 UTC (rev 6467) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeLaunchAction.java 2011-09-30 12:29:21 UTC (rev 6468) @@ -34,7 +34,7 @@ * @param _impl L'implementation. */ public PivComputeLaunchAction(PivImplementation _impl) { - super(PivResource.getS("Calcul des vitesses instantan\xE9es"), null, "PIV_COMPUTE"); + super(PivResource.getS("Calcul des vitesses instantan\xE9es"), null, "COMPUTE_PIV"); impl=_impl; setEnabled(false); Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeParamAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeParamAction.java 2011-09-30 12:02:24 UTC (rev 6467) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeParamAction.java 2011-09-30 12:29:21 UTC (rev 6468) @@ -25,7 +25,7 @@ PivImplementation impl; public PivComputeParamAction(PivImplementation _impl) { - super(PivResource.getS("Param\xE8tres de calcul..."), null, "PIV_PARAM"); + super(PivResource.getS("Param\xE8tres de calcul..."), null, "DEFINE_PIV_PARAM"); impl=_impl; setEnabled(false); } Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOrthoGRPAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOrthoGRPAction.java 2011-09-30 12:02:24 UTC (rev 6467) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOrthoGRPAction.java 2011-09-30 12:29:21 UTC (rev 6468) @@ -182,7 +182,7 @@ * @param _pn Le panneau des calques. */ public PivOrthoGRPAction(PivVisuPanel _pn) { - super(PivResource.getS("Points de r\xE9f\xE9rence..."), null, "ORTHO_GRP"); + super(PivResource.getS("Points de r\xE9f\xE9rence..."), null, "CREATE_GRP"); pnCalques_=_pn; controller_=new EditionController(); Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOrthoLaunchAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOrthoLaunchAction.java 2011-09-30 12:02:24 UTC (rev 6467) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOrthoLaunchAction.java 2011-09-30 12:29:21 UTC (rev 6468) @@ -30,7 +30,7 @@ CtuluDialog diProgress_; public PivOrthoLaunchAction(PivImplementation _impl) { - super(PivResource.getS("Transformer les images"), null, "ORTHO_COMPUTE"); + super(PivResource.getS("Transformer les images"), null, "COMPUTE_ORTHO"); impl=_impl; setEnabled(false); Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOrthoParamAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOrthoParamAction.java 2011-09-30 12:02:24 UTC (rev 6467) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOrthoParamAction.java 2011-09-30 12:29:21 UTC (rev 6468) @@ -29,7 +29,7 @@ * @param _impl L'implementation. */ public PivOrthoParamAction(PivImplementation _impl) { - super(PivResource.getS("Param\xE8tres de transformation..."), null, "ORTHO_PARAM"); + super(PivResource.getS("Param\xE8tres de transformation..."), null, "DEFINE_ORTHO_PARAM"); impl=_impl; setEnabled(false); } Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOrthoVerifyGRPAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOrthoVerifyGRPAction.java 2011-09-30 12:02:24 UTC (rev 6467) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOrthoVerifyGRPAction.java 2011-09-30 12:29:21 UTC (rev 6468) @@ -33,7 +33,7 @@ * @param _impl L'implementation. */ public PivOrthoVerifyGRPAction(PivImplementation _impl) { - super(PivResource.getS("Verification des points de r\xE9f\xE9rence..."), null, "ORTHO_VERIFY_GRP"); + super(PivResource.getS("Verification des points de r\xE9f\xE9rence..."), null, "VERIFY_GRP"); impl=_impl; setEnabled(false); } Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivShowVelocityAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivShowVelocityAction.java 2011-09-30 12:02:24 UTC (rev 6467) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivShowVelocityAction.java 2011-09-30 12:29:21 UTC (rev 6468) @@ -26,7 +26,7 @@ * @param _impl L'implementation. */ public PivShowVelocityAction(PivImplementation _impl) { - super(PivResource.getS("Voir les vitesses"), null, "RESULTS_SHOW_VELOCITIES"); + super(PivResource.getS("Voir les vitesses"), null, "SHOW_VELOCITIES_RESULTS"); impl=_impl; setEnabled(false); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2011-10-03 10:13:29
|
Revision: 6473 http://fudaa.svn.sourceforge.net/fudaa/?rev=6473&view=rev Author: bmarchan Date: 2011-10-03 10:13:18 +0000 (Mon, 03 Oct 2011) Log Message: ----------- Add : Affichage des infos de calcul de d?\195?\169bit Modified Paths: -------------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeFlowAction.java Added Paths: ----------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivFlowInfoPanel.java Added: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivFlowInfoPanel.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivFlowInfoPanel.java (rev 0) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivFlowInfoPanel.java 2011-10-03 10:13:18 UTC (rev 6473) @@ -0,0 +1,74 @@ +/* + * @creation 8 sept. 06 + * @modification $Date: 2009-06-03 15:10:45 +0200 (mer., 03 juin 2009) $ + * @license GNU General Public License 2 + * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne + * @mail de...@fu... + */ +package org.fudaa.fudaa.piv; + +import com.memoire.bu.BuGridLayout; +import java.awt.Dimension; +import javax.swing.JLabel; +import javax.swing.JTextField; +import org.fudaa.ctulu.gui.CtuluDialogPanel; +import org.fudaa.fudaa.piv.metier.PivFlowResults; + + +/** + * Un panneau d'information sur le calcul de d\xE9bit effectu\xE9. + * @author Bertrand Marchand (mar...@de...) + * @version $Id$ + */ +public class PivFlowInfoPanel extends CtuluDialogPanel { + private PivFlowResults res_; + private JTextField tfDischarge; + private JTextField tfWettedArea; + private JTextField tfMeanVelocity; + + /** + * Construction du panneau avec les r\xE9sutalts de d\xE9bit + * @param _res Les r\xE9sultats. + */ + public PivFlowInfoPanel(PivFlowResults _res) { + + setLayout(new BuGridLayout(2,3,3)); + add(new JLabel(PivResource.getS("D\xE9bit total (m3/s)"))); + add(tfDischarge=new JTextField()); + add(new JLabel(PivResource.getS("Surface mouill\xE9e (m2)"))); + add(tfWettedArea=new JTextField()); + add(new JLabel(PivResource.getS("Vitesse moyenne (m/s)"))); + add(tfMeanVelocity=new JTextField()); + + tfDischarge.setPreferredSize(new Dimension(80,tfDischarge.getPreferredSize().height)); + tfDischarge.setEditable(false); + tfWettedArea.setEditable(false); + tfMeanVelocity.setEditable(false); + + setResults(_res); + } + + /** + * Affecte les r\xE9sultats au dialogue et les affiche. + * @param _res Les r\xE9sultats. Peut \xEAtre <tt>null</tt> + */ + public void setResults(PivFlowResults _res) { + res_=_res; + + if (res_!=null) { + tfDischarge.setText(""+res_.getDischarge()); + tfWettedArea.setText(""+res_.getWettedArea()); + tfMeanVelocity.setText(""+res_.getMeanVelocity()); + } + else { + tfDischarge.setText(""); + tfWettedArea.setText(""); + tfMeanVelocity.setText(""); + } + } + + @Override + public boolean isDataValid() { + return true; + } +} \ No newline at end of file Property changes on: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivFlowInfoPanel.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeFlowAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeFlowAction.java 2011-09-30 16:16:15 UTC (rev 6472) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeFlowAction.java 2011-10-03 10:13:18 UTC (rev 6473) @@ -9,11 +9,13 @@ import java.awt.event.ActionEvent; import java.io.File; +import javax.swing.SwingUtilities; import org.fudaa.ctulu.CtuluAnalyze; import org.fudaa.ctulu.gui.CtuluDialog; import org.fudaa.ctulu.gui.CtuluTaskOperationGUI; import org.fudaa.ebli.commun.EbliActionSimple; import org.fudaa.fudaa.piv.PivExePanel; +import org.fudaa.fudaa.piv.PivFlowInfoPanel; import org.fudaa.fudaa.piv.PivImplementation; import org.fudaa.fudaa.piv.PivPreferences; import org.fudaa.fudaa.piv.PivProgressionPanel; @@ -87,9 +89,18 @@ diProgress_.dispose(); } - impl.message(PivResource.getS("Calcul termin\xE9"), PivResource.getS("Le calcul s'est termin\xE9 avec succ\xE8s"), false); - impl.get2dFrame().getVisuPanel().setViewMode(PivVisuPanel.MODE_REAL_VIEW); - impl.get2dFrame().getVisuPanel().setFlowLayerVisible(true); + // Lanc\xE9 \xE0 la fin, car l'interface se bloque si on ne le fait pas. + // Probl\xE8me de thread swing probablement... + SwingUtilities.invokeLater(new Runnable() { + public void run() { + PivFlowInfoPanel pnInfo=new PivFlowInfoPanel(impl.getCurrentProject().getFlowResults()); + pnInfo.afficheModale(impl.getFrame(), PivResource.getS("Calcul termin\xE9"), CtuluDialog.OK_OPTION); + impl.get2dFrame().getVisuPanel().setViewMode(PivVisuPanel.MODE_REAL_VIEW); + impl.get2dFrame().getVisuPanel().setFlowLayerVisible(true); + } + }); + +// impl.message(PivResource.getS("Calcul termin\xE9"), PivResource.getS("Le calcul s'est termin\xE9 avec succ\xE8s"), false); } }; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2011-10-07 12:17:24
|
Revision: 6489 http://fudaa.svn.sourceforge.net/fudaa/?rev=6489&view=rev Author: bmarchan Date: 2011-10-07 12:17:14 +0000 (Fri, 07 Oct 2011) Log Message: ----------- Add : Sauvegarde du projet sur un fichier .zip Modified Paths: -------------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivProgressionPanel.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportGRPAction.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportGridAction.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportTransectAction.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivSelectImagesAction.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProject.java Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java 2011-10-07 10:33:42 UTC (rev 6488) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java 2011-10-07 12:17:14 UTC (rev 6489) @@ -17,7 +17,6 @@ import java.util.List; import javax.swing.JOptionPane; -import javax.swing.filechooser.FileFilter; import com.memoire.bu.*; import com.memoire.fu.FuLog; @@ -29,7 +28,12 @@ import javax.swing.JFileChooser; import javax.swing.SwingUtilities; +import org.fudaa.ctulu.CtuluLibFile; +import org.fudaa.ctulu.gui.CtuluDialog; +import org.fudaa.ctulu.gui.CtuluFileChooser; +import org.fudaa.ctulu.gui.CtuluFileChooserTestWritable; import org.fudaa.ctulu.gui.CtuluLibDialog; +import org.fudaa.ctulu.gui.CtuluTaskOperationGUI; import org.fudaa.ebli.commun.EbliComponentFactory; import org.fudaa.ebli.impression.EbliMiseEnPagePreferencesPanel; import org.fudaa.fudaa.commun.impl.FudaaCommonImplementation; @@ -40,7 +44,6 @@ import org.fudaa.fudaa.piv.action.PivComputeLaunchAction; import org.fudaa.fudaa.piv.action.PivComputeParamAction; import org.fudaa.fudaa.piv.action.PivFlowParamAction; -import org.fudaa.fudaa.piv.action.PivNewTransectAction; import org.fudaa.fudaa.piv.action.PivImportGRPAction; import org.fudaa.fudaa.piv.action.PivImportGridAction; import org.fudaa.fudaa.piv.action.PivImportTransectAction; @@ -76,15 +79,18 @@ } - /** Le dernier projet ouvert */ - private File rootPath; + /** Le dernier projet ouvert, null si nouveau */ + private File prjFile; /** Le projet en cours. */ private PivProject project; /** Le lanceur des exe */ private PivExeLauncher exeLauncher; /** La fenetre 2D */ private PivFille2d piv2dFrame; + /** Une fenetre de progression */ + private CtuluDialog diProgress; + /** * Retourne les informations de l'application pour affichage dans "a propos". * @return Les infos. @@ -94,75 +100,35 @@ } /** - * Une classe de filtrage des r\xE9pertoires projet, utilis\xE9e lors d'ouverture + * Un filtre des fichiers projets, utilis\xE9e lors d'ouverture * d'un projet par boite de dialogue. */ - public static class PivProjFileFilter extends FileFilter { - public boolean accept(File _f) { - return _f != null && _f.isDirectory(); - } - - public String getDescription() { - return PivResource.getS("R\xE9pertoire projet"); - } - } - + public static BuFileFilter FILE_FLT_PROJ=new BuFileFilter("lspiv.zip",PivResource.getS("Fichier projet")); + /** - * Une classe de filtrage des fichiers images, utilis\xE9e lors de la selection + * Un filtre des fichiers images, utilis\xE9e lors de la selection * des fichiers par boite de dialogue. */ - public static class PivSrcImgFileFilter extends FileFilter { - public boolean accept(File _f) { - return _f != null && (_f.isDirectory() || _f.getName().endsWith(".pgm")); - } + public static BuFileFilter FILE_FLT_PGM=new BuFileFilter("pgm",PivResource.getS("Fichiers images en niveaux de gris")); - public String getDescription() { - return PivResource.getS("Fichiers images en niveaux de gris (*.pgm)"); - } - } - /** - * Une classe de filtrage des fichiers grid.dat, utilis\xE9e lors de l'import + * Un filtre des fichiers grid.dat, utilis\xE9e lors de l'import * par boite de dialogue. */ - public static class PivGridFileFilter extends FileFilter { - public boolean accept(File _f) { - return _f != null && (_f.isDirectory() || _f.getName().endsWith(".dat")); - } + public static BuFileFilter FILE_FLT_GRID=new BuFileFilter("dat",PivResource.getS("Fichier grid")); - public String getDescription() { - return PivResource.getS("Fichier grid (*.dat)"); - } - } - /** - * Une classe de filtrage des fichiers GRP.dat, utilis\xE9e lors de l'import + * Un filtre des fichiers GRP.dat, utilis\xE9e lors de l'import * par boite de dialogue. */ - public static class PivGRPFileFilter extends FileFilter { - public boolean accept(File _f) { - return _f != null && (_f.isDirectory() || _f.getName().endsWith(".dat")); - } + public static BuFileFilter FILE_FLT_GRP=new BuFileFilter("dat",PivResource.getS("Fichier GRP")); - public String getDescription() { - return PivResource.getS("Fichier GRP (*.dat)"); - } - } - /** - * Une classe de filtrage des fichiers bathy.dat, utilis\xE9e lors de l'import + * Un filtre des fichiers bathy.dat, utilis\xE9e lors de l'import * par boite de dialogue. */ - public static class PivTransectFileFilter extends FileFilter { - public boolean accept(File _f) { - return _f != null && (_f.isDirectory() || _f.getName().endsWith(".dat")); - } + public static BuFileFilter FILE_FLT_BATHY=new BuFileFilter("dat",PivResource.getS("Fichier bathy")); - public String getDescription() { - return PivResource.getS("Fichier bathy (*.dat)"); - } - } - /** * Constructeur. */ @@ -209,6 +175,7 @@ boolean bprjHasTransfImg=bprjOpen && project.hasTransfImages(); setEnabledForAction("ENREGISTRER", bprjMod); + setEnabledForAction("ENREGISTRERSOUS", bprjOpen); setEnabledForAction("FERMER", bprjOpen); setEnabledForAction("SELECT_IMAGES", bprjOpen); setEnabledForAction("CREATE_GRP", bprjOpen && bprjHasOriginalImg); @@ -248,7 +215,11 @@ public void refreshTitle() { String title=isPIV_.name+" "+isPIV_.version; if (project!=null) { - title+=" "+project.getRoot(); + title+=" - "; + if (prjFile==null) + title+=PivResource.getS("Nouveau projet"); + else + title+=prjFile; if (project.isParamsModified()) title+="*"; } @@ -286,9 +257,9 @@ if ("OUVRIR".equals(action)) { ouvrir(null); } else if ("ENREGISTRER".equals(action)) { - save(); -// } else if ("ENREGISTRERSOUS".equals(action)) { -// saveAs(); + save(prjFile); + } else if ("ENREGISTRERSOUS".equals(action)) { + save(null); } else if ("FERMER".equals(action)) { saveAndCloseProjet(); } else if ("CREER".equals(action)) { @@ -349,37 +320,19 @@ return; } - JFileChooser fc = new JFileChooser(rootPath); - fc.setFileFilter(new PivProjFileFilter()); - fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); - fc.setAcceptAllFileFilterUsed(false); - fc.setDialogTitle(PivResource.getS("Nouveau projet")); - if (fc.showSaveDialog(this.getFrame()) == JFileChooser.CANCEL_OPTION) { - return; - } - - rootPath = fc.getSelectedFile(); - - // Controle que le r\xE9pertoire selectionn\xE9 n'existe pas ou est vide. - if (rootPath.exists() && rootPath.list().length!=0) { - error(PivResource.getS("Ce r\xE9pertoire n'est pas vide. Vous ne pouvez pas l'utiliser pour cr\xE9er un projet.")); - return; - } - - if (!new File(rootPath,PivProject.OUTPUT_DIR).mkdirs()) { + prjFile=null; + project=new PivProject(); + if (!project.init()) { error(PivResource.getS("Probl\xE8me de cr\xE9ation du projet.")); + project=null; return; } - - project=new PivProject(); project.addListener(this); - project.setRoot(rootPath); open2dFrame(); - updateRecentFiles(rootPath); updateActionsState(); } - + /** * Pr\xE9cise que l'action "Fermer" concerne la fermeture d'un projet et * non une fenetre interne s\xE9lectionn\xE9e. @@ -489,71 +442,124 @@ // Choix du r\xE9pertoire if (_f == null) { -// FolderChooser fc = new FolderChooser(); -// fc.setSelectedFolder(rootPath); -// fc.setDialogTitle(PivResource.getS("Ouverture d'un projet")); -// if (fc.showOpenDialog(this.getFrame()) == FolderChooser.CANCEL_OPTION) { -// return; -// } - JFileChooser fc = new JFileChooser(rootPath); - fc.setFileFilter(new PivProjFileFilter()); - fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); + CtuluFileChooser fc = new CtuluFileChooser(true); + fc.setFileFilter(FILE_FLT_PROJ); + fc.setFileSelectionMode(JFileChooser.FILES_ONLY); fc.setAcceptAllFileFilterUsed(false); fc.setDialogTitle(PivResource.getS("Ouverture d'un projet")); if (fc.showOpenDialog(this.getFrame()) == JFileChooser.CANCEL_OPTION) { return; } - rootPath = fc.getSelectedFile(); + prjFile = fc.getSelectedFile(); } else { - rootPath=_f; + prjFile=_f; } - // Controle que le r\xE9pertoire est bien un r\xE9pertoire projet. - if (!new File(rootPath,PivProject.OUTPUT_DIR).exists()) { - error(PivResource.getS("Le r\xE9pertoire ne semble pas \xEAtre un projet Fudaa-LSPIV\n(Pas de pr\xE9sence du r\xE9pertoire '{0}' )",PivProject.OUTPUT_DIR)); - return; - } - project = new PivProject(); - project.addListener(this); - project.setRoot(rootPath); - project.load(); - open2dFrame(); + + // L'ouverture est lanc\xE9e en tache de fond. + CtuluTaskOperationGUI r=new CtuluTaskOperationGUI(this, PivResource.getS("Chargement du projet")) { + @Override + public void act() { + boolean b=true; + try { + b=project.load(prjFile, this); + } + finally { + final boolean b2=b; + SwingUtilities.invokeLater(new Runnable() { + public void run() { + diProgress.dispose(); + if (!b2) { + error(PivResource.getS("Le fichier ne semble pas \xEAtre un projet Fudaa-LSPIV\n(Pas de pr\xE9sence du r\xE9pertoire '{0}' )", PivProject.OUTPUT_DIR)); + project=null; + } + else { + project.addListener(PivImplementation.this); + open2dFrame(); + + updateRecentFiles(prjFile); + updateActionsState(); + } + } + }); + } + } + }; - updateActionsState(); - updateRecentFiles(project.getRoot()); - + PivProgressionPanel pnProgress_=new PivProgressionPanel(r,false); + diProgress = pnProgress_.createDialog(this.getParentComponent()); + diProgress.setOption(CtuluDialog.ZERO_OPTION); + diProgress.setDefaultCloseOperation(CtuluDialog.DO_NOTHING_ON_CLOSE); + diProgress.setTitle(r.getName()); + + r.start(); + diProgress.afficheDialogModal(); } /** * Sauve le projet courant sur l'emplacement choisi \xE0 sa cr\xE9ation. + * @param _f Le nom du fichier sur lequel sauver le projet. null, si le + * fichier doit etre choisi par l'utilisateur. */ - public void save() { - if (isProjectModified()) - project.save(); - updateActionsState(); + public void save(File _f) { + // Pas de sauvegarde si aucune modification + if (_f!=null && !isProjectModified()) return; + + if (_f==null) { + CtuluFileChooser fc = new CtuluFileChooser(true); + fc.setTester(new CtuluFileChooserTestWritable(this)); + fc.setFileFilter(FILE_FLT_PROJ); + fc.setFileSelectionMode(JFileChooser.FILES_ONLY); + fc.setAcceptAllFileFilterUsed(false); + fc.setDialogTitle(PivResource.getS("Sauvegarde du projet")); + if (fc.showSaveDialog(this.getFrame()) == JFileChooser.CANCEL_OPTION) { + return; + } + _f=CtuluLibFile.appendExtensionIfNeeded(fc.getSelectedFile(),FILE_FLT_PROJ.getFirstExt()); + } + final File f=_f; + + // La sauvegarde est lanc\xE9e en tache de fond. + CtuluTaskOperationGUI r=new CtuluTaskOperationGUI(this, PivResource.getS("Sauvegarde du projet")) { + @Override + public void act() { + boolean b=true; + try { + b=project.save(f, this); + + prjFile=f; + } + finally { + final boolean b2=b; + SwingUtilities.invokeLater(new Runnable() { + public void run() { + diProgress.dispose(); + if (!b2) { + error(PivResource.getS("Erreur lors de la sauvegarde du fichier projet.\nIl ne sera pas sauvegard\xE9")); + } + else { + updateRecentFiles(prjFile); + updateActionsState(); + } + } + }); + } + } + }; + + PivProgressionPanel pnProgress_=new PivProgressionPanel(r,false); + diProgress = pnProgress_.createDialog(this.getParentComponent()); + diProgress.setOption(CtuluDialog.ZERO_OPTION); + diProgress.setDefaultCloseOperation(CtuluDialog.DO_NOTHING_ON_CLOSE); + diProgress.setTitle(r.getName()); + + r.start(); + diProgress.afficheDialogModal(); } -// public void saveAs() { -// final File f = chooseNewFile(true); -// if (f == null) return; -// -// CtuluRunnable act = new CtuluRunnable(FudaaSaveLib.getActionSaveTitle(), this) { -// -// public boolean run(ProgressionInterface _proj) { -// if (FSigProjectPersistence.saveProject(PivImplementation.this, project_, f, _proj)) { -// updateRecentFiles(f); -// return true; -// } -// return false; -// } -// }; -// act.setAfterRunnable(getSaveSwingRunnable(f), true); -// act.run(); -// } - /** * Teste si le projet courant a \xE9t\xE9 modifi\xE9 depius la derni\xE8re sauvegarde. * @return True : Le projet courant a \xE9t\xE9 modifi\xE9. @@ -576,7 +582,7 @@ return false; } else if (ret == JOptionPane.OK_OPTION) { - project.save(); + save(prjFile); } } close(); Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivProgressionPanel.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivProgressionPanel.java 2011-10-07 10:33:42 UTC (rev 6488) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivProgressionPanel.java 2011-10-07 12:17:14 UTC (rev 6489) @@ -30,11 +30,21 @@ BuTaskView taskView_; /** + * Le constructeur, avec bouton stop actif. + * @param _task La tache pour laquelle visualiser la progression au travers + * du panneau. + */ + public PivProgressionPanel(CtuluTaskOperationGUI _task) { + this(_task,true); + } + + /** * Le constructeur. * @param _task La tache pour laquelle visualiser la progression au travers * du panneau. + * @param _showStop True : Le bouton d'interruption est visible. */ - public PivProgressionPanel(CtuluTaskOperationGUI _task) { + public PivProgressionPanel(CtuluTaskOperationGUI _task, boolean _showStop) { setLayout(new BorderLayout(5,5)); taskView_ = new BuTaskView(); @@ -47,7 +57,9 @@ }); JPanel pnButtons=new JPanel(); pnButtons.setLayout(new BorderLayout(5,5)); - pnButtons.add(btStop,BorderLayout.EAST); + if (_showStop) { + pnButtons.add(btStop,BorderLayout.EAST); + } add(taskView_,BorderLayout.CENTER); add(pnButtons,BorderLayout.SOUTH); Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportGRPAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportGRPAction.java 2011-10-07 10:33:42 UTC (rev 6488) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportGRPAction.java 2011-10-07 12:17:14 UTC (rev 6489) @@ -45,6 +45,7 @@ * d'import. * @param _e L'evenement pour l'action. */ + @Override public void actionPerformed(final ActionEvent _e) { if (!isValide()) { return; @@ -54,7 +55,7 @@ if (fcGRP==null) fcGRP = new JFileChooser(); fcGRP.setAcceptAllFileFilterUsed(true); - fcGRP.setFileFilter(new PivImplementation.PivGRPFileFilter()); + fcGRP.setFileFilter(PivImplementation.FILE_FLT_GRP); fcGRP.setMultiSelectionEnabled(false); fcGRP.setDialogTitle(PivResource.getS("S\xE9lection d'un fichier GRP")); if (fcGRP.showOpenDialog(impl.getFrame()) == JFileChooser.CANCEL_OPTION) { @@ -82,6 +83,7 @@ return true; } + @Override public String getEnableCondition() { return PivResource.getS("Il doit exister au moins une image reconditionn\xE9e"); } Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportGridAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportGridAction.java 2011-10-07 10:33:42 UTC (rev 6488) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportGridAction.java 2011-10-07 12:17:14 UTC (rev 6489) @@ -46,6 +46,7 @@ * combiner les nouveaux points. * @param _e L'evenement pour l'action. */ + @Override public void actionPerformed(final ActionEvent _e) { if (!isValide()) { return; @@ -62,7 +63,7 @@ if (fcGrid==null) fcGrid = new JFileChooser(); fcGrid.setAcceptAllFileFilterUsed(true); - fcGrid.setFileFilter(new PivImplementation.PivGridFileFilter()); + fcGrid.setFileFilter(PivImplementation.FILE_FLT_GRID); fcGrid.setMultiSelectionEnabled(false); fcGrid.setDialogTitle(PivResource.getS("S\xE9lection d'un fichier de grille")); if (fcGrid.showOpenDialog(impl.getFrame()) == JFileChooser.CANCEL_OPTION) { @@ -93,6 +94,7 @@ return true; } + @Override public String getEnableCondition() { return PivResource.getS("Il doit exister au moins une image transform\xE9e"); } Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportTransectAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportTransectAction.java 2011-10-07 10:33:42 UTC (rev 6488) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportTransectAction.java 2011-10-07 12:17:14 UTC (rev 6489) @@ -38,6 +38,7 @@ * d'import. * @param _e L'evenement pour l'action. */ + @Override public void actionPerformed(final ActionEvent _e) { if (!isValide()) { return; @@ -47,7 +48,7 @@ if (fcTransect==null) fcTransect = new JFileChooser(); fcTransect.setAcceptAllFileFilterUsed(true); - fcTransect.setFileFilter(new PivImplementation.PivTransectFileFilter()); + fcTransect.setFileFilter(PivImplementation.FILE_FLT_BATHY); fcTransect.setMultiSelectionEnabled(false); fcTransect.setDialogTitle(PivResource.getS("S\xE9lection d'un fichier transect")); if (fcTransect.showOpenDialog(impl.getFrame()) == JFileChooser.CANCEL_OPTION) { @@ -75,6 +76,7 @@ return true; } + @Override public String getEnableCondition() { return PivResource.getS("Il doit exister au moins une image transform\xE9e"); } Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivSelectImagesAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivSelectImagesAction.java 2011-10-07 10:33:42 UTC (rev 6488) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivSelectImagesAction.java 2011-10-07 12:17:14 UTC (rev 6489) @@ -52,6 +52,7 @@ * Selectionne les images, pour les reconditionne dans un thread s\xE9par\xE9. * @param _e L'evenement pour l'action. */ + @Override public void actionPerformed(final ActionEvent _e) { if (!isValide()) { return; @@ -73,7 +74,7 @@ // Selection des images if (fcImages==null) fcImages = new JFileChooser(); - fcImages.setFileFilter(new PivImplementation.PivSrcImgFileFilter()); + fcImages.setFileFilter(PivImplementation.FILE_FLT_PGM); fcImages.setMultiSelectionEnabled(true); fcImages.setAcceptAllFileFilterUsed(false); fcImages.setDialogTitle(PivResource.getS("S\xE9lection des images sources")); @@ -85,6 +86,7 @@ // La tache a ex\xE9cuter. CtuluTaskOperationGUI r=new CtuluTaskOperationGUI(impl, PivResource.getS("Reconditionnement des images")) { + @Override public void act() { try { CtuluAnalyze ana=new CtuluAnalyze(); @@ -145,6 +147,7 @@ return true; } + @Override public String getEnableCondition() { return PivResource.getS("Le projet doit \xEAtre cr\xE9\xE9"); } Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProject.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProject.java 2011-10-07 10:33:42 UTC (rev 6488) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProject.java 2011-10-07 12:17:14 UTC (rev 6489) @@ -8,13 +8,16 @@ import java.io.IOException; import java.util.HashSet; import java.util.Iterator; +import java.util.zip.ZipFile; import javax.imageio.ImageIO; import javax.imageio.ImageReader; import javax.imageio.stream.ImageInputStream; import org.fudaa.ctulu.CtuluIOOperationSynthese; import org.fudaa.ctulu.CtuluLibFile; +import org.fudaa.ctulu.ProgressionInterface; import org.fudaa.ctulu.fileformat.FileReadOperationAbstract; import org.fudaa.ctulu.fileformat.FileWriteOperationAbstract; +import org.fudaa.fudaa.piv.PivResource; import org.fudaa.fudaa.piv.io.PivAverageVelFileFormat; import org.fudaa.fudaa.piv.io.PivGRPFileFormat; import org.fudaa.fudaa.piv.io.PivGridFileFormat; @@ -42,7 +45,7 @@ /** Le r\xE9pertoire des vitesses brutes */ public static final String VEL_RAW_DIR="vel_raw"; - /** Le r\xE9pertoire localisation du projet. */ + /** Le r\xE9pertoire temporaire du projet. */ protected File rootPath; /** Les points GRP */ protected PivOrthoPoint[] orthoPoints; @@ -83,7 +86,25 @@ ImageInputStream cacheRealInputStream_; /** - * Retourne la racine du projet. + * Cree l'espace temporaire de stockage des fichiers + * @return True si l'espace a pu \xEAtre cr\xE9\xE9. False sinon. + */ + public boolean init() { + boolean bcreate=false; + try { + rootPath=CtuluLibFile.createTempDir(); + rootPath.deleteOnExit(); + File outdir=new File(rootPath,PivProject.OUTPUT_DIR); + outdir.deleteOnExit(); + bcreate=outdir.mkdirs(); + } + catch (IOException ex) {} + + return bcreate; + } + + /** + * Retourne la racine de l'espace temporaire du projet. * @return La racine du projet. */ public File getRoot() { @@ -91,14 +112,6 @@ } /** - * Definit la racine du projet. - * @param _root La racine du projet. - */ - public void setRoot(File _root) { - rootPath=_root; - } - - /** * Le projet contient-il au moins une image reconditionn\xE9e ? * @return true si le projet contient au moins 1 image reconditionn\xE9e. */ @@ -403,12 +416,43 @@ cacheTransfInputStream_=null; } catch (IOException ex) {} + + // Supprime aussi le repertoire temporaire + CtuluLibFile.deleteDir(rootPath); } /** - * Charge le projet depuis les fichiers projets. + * Charge le projet depuis le fichier projet donn\xE9. Le fichier projet est + * d\xE9zipp\xE9, puis il est charg\xE9 s'il est conforme. + * + * @param _prjFile Le fichier contenant le projet. + * @param _prog L'interface de progression. Peut etre <tt>null</tt> + * @return True Si le fichier donn\xE9 est bien un fichier projet. */ - public void load() { + public boolean load(File _prjFile, ProgressionInterface _prog) { + if (_prog!=null) + _prog.setDesc(PivResource.getS("Chargement du projet")); + + // Controle que le fichier archive est bien un fichier PIV. + try { + ZipFile zf=new ZipFile(_prjFile); + if (zf.getEntry(OUTPUT_DIR)==null) return false; + zf.close(); + } + catch (IOException ex) { + return false; + } + + // Cr\xE9ation du r\xE9pertoire temporaire de travail pour le unzip. + init(); + // Unzip + try { + CtuluLibFile.unzip(_prjFile, rootPath, _prog); + } + catch (IOException ex) { + return false; + } + File outputDir=new File(rootPath,OUTPUT_DIR); // Le fichier GRP @@ -552,14 +596,23 @@ FuLog.trace("*** Fin du chargement ***"); isModified=false; + + return true; } /** - * Sauve le projet sur les fichiers projets. + * Sauve le projet sur le fichier projet. Les infos sont sauv\xE9es sur le + * r\xE9pertoire temporaire, puis zip\xE9es. + * @param _prjFile Le fichier de sauvegarde. + * @param _prog L'interface de progression. Peut etre <tt>null</tt> + * @return True si le projet a bien \xE9t\xE9 sauv\xE9. */ - public void save() { + public boolean save(File _prjFile, ProgressionInterface _prog) { File outputDir=new File(rootPath,OUTPUT_DIR); + if (_prog!=null) + _prog.setDesc(PivResource.getS("Sauvegarde du projet")); + // Le fichier GRP if (orthoPoints!=null) { File grpFile=new File(outputDir,"GRP.dat"); @@ -607,8 +660,15 @@ FileWriteOperationAbstract writer=PivBathyFileFormat.getInstance().createWriter(); CtuluIOOperationSynthese ret=writer.write(transect, transectFile, null); } + try { + CtuluLibFile.zip(rootPath, _prjFile, _prog); + } + catch (IOException ex) { + return false; + } isModified=false; + return true; } /** This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2011-10-11 15:11:30
|
Revision: 6523 http://fudaa.svn.sourceforge.net/fudaa/?rev=6523&view=rev Author: bmarchan Date: 2011-10-11 15:11:20 +0000 (Tue, 11 Oct 2011) Log Message: ----------- Mod : PIV_param.dat est sauv?\195?\169 avant appel ?\195?\160 bathy_compute.exe Mod : Distance d'extrapolation des vitesses par pas d'interpolation de la bathy. Modified Paths: -------------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivFlowParamPanel.form trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivFlowParamPanel.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivExeLauncher.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivParamReader.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivParamWriter.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivFlowParameters.java Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivFlowParamPanel.form =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivFlowParamPanel.form 2011-10-11 14:52:53 UTC (rev 6522) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivFlowParamPanel.form 2011-10-11 15:11:20 UTC (rev 6523) @@ -23,18 +23,18 @@ <Layout> <DimensionLayout dim="0"> <Group type="103" groupAlignment="0" attributes="0"> - <Group type="102" alignment="1" attributes="0"> + <Group type="102" attributes="0"> <EmptySpace max="-2" attributes="0"/> <Group type="103" groupAlignment="0" attributes="0"> - <Component id="lbCoef" min="-2" max="-2" attributes="0"/> - <Component id="lbDmax" min="-2" max="-2" attributes="0"/> - <Component id="lbDExtrapolation" min="-2" max="-2" attributes="0"/> + <Component id="lbCoef" alignment="0" min="-2" max="-2" attributes="0"/> + <Component id="lbDmax" alignment="0" min="-2" max="-2" attributes="0"/> + <Component id="lbInterpolationStep" alignment="0" min="-2" max="-2" attributes="0"/> </Group> <EmptySpace max="-2" attributes="0"/> <Group type="103" groupAlignment="0" attributes="0"> - <Component id="tfDExtrapolation" pref="94" max="32767" attributes="1"/> - <Component id="tfDmax" alignment="0" pref="94" max="32767" attributes="1"/> - <Component id="tfCoef" alignment="1" pref="94" max="32767" attributes="1"/> + <Component id="tfInterpolationStep" alignment="0" pref="98" max="32767" attributes="1"/> + <Component id="tfCoef" alignment="1" pref="98" max="32767" attributes="1"/> + <Component id="tfDmax" alignment="0" pref="98" max="32767" attributes="1"/> </Group> <EmptySpace max="-2" attributes="0"/> </Group> @@ -45,20 +45,20 @@ <Group type="102" alignment="0" attributes="0"> <EmptySpace max="-2" attributes="0"/> <Group type="103" groupAlignment="3" attributes="0"> - <Component id="tfCoef" alignment="3" min="-2" max="-2" attributes="0"/> - <Component id="lbCoef" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="tfInterpolationStep" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="lbInterpolationStep" alignment="3" min="-2" max="-2" attributes="0"/> </Group> - <EmptySpace max="-2" attributes="0"/> + <EmptySpace max="32767" attributes="0"/> <Group type="103" groupAlignment="3" attributes="0"> <Component id="tfDmax" alignment="3" min="-2" max="-2" attributes="0"/> <Component id="lbDmax" alignment="3" min="-2" max="-2" attributes="0"/> </Group> <EmptySpace max="-2" attributes="0"/> <Group type="103" groupAlignment="3" attributes="0"> - <Component id="tfDExtrapolation" alignment="3" min="-2" max="-2" attributes="0"/> - <Component id="lbDExtrapolation" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="tfCoef" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="lbCoef" alignment="3" min="-2" max="-2" attributes="0"/> </Group> - <EmptySpace max="32767" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> </Group> </Group> </DimensionLayout> @@ -78,12 +78,15 @@ </Component> <Component class="javax.swing.JTextField" name="tfDmax"> </Component> - <Component class="javax.swing.JLabel" name="lbDExtrapolation"> + <Component class="javax.swing.JLabel" name="lbInterpolationStep"> <Properties> - <Property name="text" type="java.lang.String" value="Velocity extrapolation distance (m):"/> + <Property name="text" type="java.lang.String" value="Bathymetry interpolation step (m):"/> </Properties> </Component> - <Component class="javax.swing.JTextField" name="tfDExtrapolation"> + <Component class="javax.swing.JTextField" name="tfInterpolationStep"> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="tfInterpolationStepActionPerformed"/> + </Events> </Component> </SubComponents> </Form> Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivFlowParamPanel.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivFlowParamPanel.java 2011-10-11 14:52:53 UTC (rev 6522) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivFlowParamPanel.java 2011-10-11 15:11:20 UTC (rev 6523) @@ -20,9 +20,9 @@ } private void customize() { - lbCoef.setText(PivResource.getS("Coefficient de surface:")); - lbDmax.setText(PivResource.getS("Rayon de recherche des vitesses (m):")); - lbDExtrapolation.setText(PivResource.getS("Distance d'extrapolation des vitesses (m):")); + lbCoef.setText(PivResource.getS("Coefficient de surface")); + lbDmax.setText(PivResource.getS("Rayon de recherche des vitesses (m)")); + lbInterpolationStep.setText(PivResource.getS("Pas d'espace d'interpolation de bathym\xE9trie (m)")); } /** @@ -32,7 +32,7 @@ public void setFlowParams(PivFlowParameters _params) { tfCoef.setText("" + _params.getSurfaceCoef()); tfDmax.setText("" + _params.getDmax()); - tfDExtrapolation.setText("" + _params.getDextrapolation()); + tfInterpolationStep.setText("" + _params.getInterpolationStep()); } /** @@ -45,7 +45,7 @@ public void retrieveFlowParams(PivFlowParameters _params) { _params.setSurfaceCoef(Double.parseDouble(tfCoef.getText().trim())); _params.setDmax(Double.parseDouble(tfDmax.getText().trim())); - _params.setDextrapolation(Double.parseDouble(tfDExtrapolation.getText().trim())); + _params.setInterpolationStep(Double.parseDouble(tfInterpolationStep.getText().trim())); } /** @@ -158,7 +158,7 @@ boolean bok= isStrictPositiveReal(tfCoef.getText(),PivResource.getS("Coefficient de surface")) && isStrictPositiveReal(tfDmax.getText(),PivResource.getS("Rayon de recherche des vitesses")) && - isStrictPositiveReal(tfDExtrapolation.getText(),PivResource.getS("Distance d'extrapolation")); + isStrictPositiveReal(tfInterpolationStep.getText(),PivResource.getS("Distance d'extrapolation")); return bok; } @@ -176,8 +176,8 @@ tfCoef = new javax.swing.JTextField(); lbDmax = new javax.swing.JLabel(); tfDmax = new javax.swing.JTextField(); - lbDExtrapolation = new javax.swing.JLabel(); - tfDExtrapolation = new javax.swing.JTextField(); + lbInterpolationStep = new javax.swing.JLabel(); + tfInterpolationStep = new javax.swing.JTextField(); setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 1)); @@ -185,23 +185,29 @@ lbDmax.setText("Velocity search radius (m):"); - lbDExtrapolation.setText("Velocity extrapolation distance (m):"); + lbInterpolationStep.setText("Bathymetry interpolation step (m):"); + tfInterpolationStep.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + tfInterpolationStepActionPerformed(evt); + } + }); + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() + .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(lbCoef) .addComponent(lbDmax) - .addComponent(lbDExtrapolation)) + .addComponent(lbInterpolationStep)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(tfDExtrapolation, javax.swing.GroupLayout.DEFAULT_SIZE, 94, Short.MAX_VALUE) - .addComponent(tfDmax, javax.swing.GroupLayout.DEFAULT_SIZE, 94, Short.MAX_VALUE) - .addComponent(tfCoef, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 94, Short.MAX_VALUE)) + .addComponent(tfInterpolationStep, javax.swing.GroupLayout.DEFAULT_SIZE, 98, Short.MAX_VALUE) + .addComponent(tfCoef, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 98, Short.MAX_VALUE) + .addComponent(tfDmax, javax.swing.GroupLayout.DEFAULT_SIZE, 98, Short.MAX_VALUE)) .addContainerGap()) ); layout.setVerticalGroup( @@ -209,26 +215,30 @@ .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(tfCoef, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(lbCoef)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(tfInterpolationStep, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(lbInterpolationStep)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(tfDmax, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(lbDmax)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(tfDExtrapolation, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(lbDExtrapolation)) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addComponent(tfCoef, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(lbCoef)) + .addContainerGap()) ); }// </editor-fold>//GEN-END:initComponents + private void tfInterpolationStepActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_tfInterpolationStepActionPerformed + // TODO add your handling code here: + }//GEN-LAST:event_tfInterpolationStepActionPerformed + // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JLabel lbCoef; - private javax.swing.JLabel lbDExtrapolation; private javax.swing.JLabel lbDmax; + private javax.swing.JLabel lbInterpolationStep; private javax.swing.JTextField tfCoef; - private javax.swing.JTextField tfDExtrapolation; private javax.swing.JTextField tfDmax; + private javax.swing.JTextField tfInterpolationStep; // End of variables declaration//GEN-END:variables } Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivExeLauncher.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivExeLauncher.java 2011-10-11 14:52:53 UTC (rev 6522) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivExeLauncher.java 2011-10-11 15:11:20 UTC (rev 6523) @@ -723,10 +723,16 @@ createExeDirs(); try { - // Sauvegarde des donn\xE9es du projet. + // PIV_param.dat + File paramFile=new File(exeOutputs, "PIV_param.dat"); + FileWriteOperationAbstract writer=PivParamFileFormat.getInstance().createWriter(); + Object[] params=new Object[]{_prj.getComputeParameters(), _prj.getFlowParameters(), _prj.getTransfImageSize()}; + CtuluIOOperationSynthese ret=writer.write(params, paramFile, null); + + // bathy.dat File bathyFile=new File(exeOutputs, "bathy.dat"); - FileWriteOperationAbstract writer=PivBathyFileFormat.getInstance().createWriter(); - CtuluIOOperationSynthese ret=writer.write(_prj.getTransect(), bathyFile, null); + writer=PivBathyFileFormat.getInstance().createWriter(); + ret=writer.write(_prj.getTransect(), bathyFile, null); int prog=5; @@ -791,18 +797,14 @@ // createExeDirs(); try { - // PIV_param.dat - File paramFile=new File(exeOutputs, "PIV_param.dat"); - FileWriteOperationAbstract writer=PivParamFileFormat.getInstance().createWriter(); - Object[] params=new Object[]{_prj.getComputeParameters(), _prj.getFlowParameters(), _prj.getTransfImageSize()}; - CtuluIOOperationSynthese ret=writer.write(params, paramFile, null); + // PIV_param.dat => D\xE9j\xE0 dans le r\xE9pertoire de sortie // bathy_p.dat => D\xE9j\xE0 dans le r\xE9pertoire de sortie. // Hauteurs d'eau File hFile = new File(exeOutputs, "h.dat"); - writer = PivHFileFormat.getInstance().createWriter(); - ret = writer.write(_prj.getOrthoParameters().getWaterElevation(), hFile, null); + FileWriteOperationAbstract writer = PivHFileFormat.getInstance().createWriter(); + CtuluIOOperationSynthese ret = writer.write(_prj.getOrthoParameters().getWaterElevation(), hFile, null); // average_vel.out => Copie depuis le r\xE9pertoire projet. copyFile(prjOutputs, exeOutputs, "average_vel.out"); Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivParamReader.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivParamReader.java 2011-10-11 14:52:53 UTC (rev 6522) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivParamReader.java 2011-10-11 15:11:20 UTC (rev 6523) @@ -128,10 +128,10 @@ in_.readFields(); paramsFlow.setDmax(in_.doubleField(0)); - // Distance d'extrapolation des vitesses. + // Pas d'interpolation de la bathy. in_.readLine(); in_.readFields(); - paramsFlow.setDextrapolation(in_.doubleField(0)); + paramsFlow.setInterpolationStep(in_.doubleField(0)); if (progress_ != null) { Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivParamWriter.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivParamWriter.java 2011-10-11 14:52:53 UTC (rev 6522) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivParamWriter.java 2011-10-11 15:11:20 UTC (rev 6523) @@ -91,8 +91,8 @@ writer.println(flowDefined ? paramsFlow.getDmax():-1); // Distance au-dela de laquelle on extrapole les vitesses : trunc - writer.println("Distance au-dela de laquelle on extrapole les vitesses : trunc"); - writer.println(flowDefined ? paramsFlow.getDextrapolation():-1); + writer.println("Pas d espace d interpolation de la bathymetrie : Dxp"); + writer.println(flowDefined ? paramsFlow.getInterpolationStep():-1); } catch (final Exception _evt) { Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivFlowParameters.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivFlowParameters.java 2011-10-11 14:52:53 UTC (rev 6522) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivFlowParameters.java 2011-10-11 15:11:20 UTC (rev 6523) @@ -12,7 +12,7 @@ /** Rayon de recherche des vitesses autour du point bathy */ protected double dmax=10; /** Distance au dela de laquelle on extrapole les vitesses */ - protected double dextrapolation=1000000; + protected double interpolationStep=1000000; public PivFlowParameters() { } @@ -46,16 +46,16 @@ } /** - * @return the dextrapolation + * @return Le pas d'interpolation */ - public double getDextrapolation() { - return dextrapolation; + public double getInterpolationStep() { + return interpolationStep; } /** - * @param dextrapolation the dextrapolation to set + * @param _step Le pas d'interpolation */ - public void setDextrapolation(double dextrapolation) { - this.dextrapolation = dextrapolation; + public void setInterpolationStep(double _step) { + this.interpolationStep = _step; } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2011-10-17 08:39:31
|
Revision: 6536 http://fudaa.svn.sourceforge.net/fudaa/?rev=6536&view=rev Author: bmarchan Date: 2011-10-17 08:39:21 +0000 (Mon, 17 Oct 2011) Log Message: ----------- Fix : Pb de dezippe *.lspiv.zip depuis compression 7Zip. Modified Paths: -------------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProject.java Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java 2011-10-17 08:36:51 UTC (rev 6535) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java 2011-10-17 08:39:21 UTC (rev 6536) @@ -65,8 +65,8 @@ protected static BuInformationsSoftware isPIV_ = new BuInformationsSoftware(); static { isPIV_.name = "LSPIV"; - isPIV_.version = "1.1_b20111013"; - isPIV_.date = "2011-10-13"; + isPIV_.version = "1.1_b20111017"; + isPIV_.date = "2011-10-17"; isPIV_.rights = PivResource.getS("Tous droits r\xE9serv\xE9s")+". CETMEF (c)1999-2011"; isPIV_.license = "GPL2"; isPIV_.languages = "fr"; @@ -473,7 +473,7 @@ public void run() { diProgress.dispose(); if (!b2) { - error(PivResource.getS("Le fichier ne semble pas \xEAtre un projet Fudaa-LSPIV\n(Pas de pr\xE9sence du r\xE9pertoire '{0}' )", PivProject.OUTPUT_DIR)); + error(PivResource.getS("Le fichier ne semble pas \xEAtre un projet Fudaa-LSPIV.\nCauses possibles:\n- Le fichier n'est pas dans un format ZIP\n- Il ne contient pas le r\xE9pertoire '{0}'", PivProject.OUTPUT_DIR)); project=null; } else { Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProject.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProject.java 2011-10-17 08:36:51 UTC (rev 6535) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProject.java 2011-10-17 08:39:21 UTC (rev 6536) @@ -6,8 +6,10 @@ import java.io.File; import java.io.FileFilter; import java.io.IOException; +import java.util.Enumeration; import java.util.HashSet; import java.util.Iterator; +import java.util.zip.ZipEntry; import java.util.zip.ZipFile; import javax.imageio.ImageIO; import javax.imageio.ImageReader; @@ -433,23 +435,44 @@ if (_prog!=null) _prog.setDesc(PivResource.getS("Chargement du projet")); - // Controle que le fichier archive est bien un fichier PIV. + // Controle que le fichier archive est bien un fichier PIV par recherche + // d'un repertoire OUTPUT_DIR dans toutes les entries. Suivant le zippeur, + // il se peut que le r\xE9pertoire en tant qu'entry n'existe pas. On recherche + // donc ce nom dans toutes les entries. try { + boolean bfound=false; ZipFile zf=new ZipFile(_prjFile); - if (zf.getEntry(OUTPUT_DIR)==null) return false; + + FuLog.debug("Fichiers dans le ZIP:"); + NEXT_ENTRY: + for (Enumeration<? extends ZipEntry> e=zf.entries(); e.hasMoreElements();) { + File f=new File(e.nextElement().getName()); + FuLog.debug(f.getPath()); + while (f!=null) { + if (OUTPUT_DIR.equals(f.getPath())) { + bfound=true; + break NEXT_ENTRY; + } + f=f.getParentFile(); + } + } + if (!bfound) return false; + zf.close(); } catch (IOException ex) { + FuLog.debug(ex.getMessage()); return false; } - // Cr\xE9ation du r\xE9pertoire temporaire de travail pour le unzip. + // Cr\xE9ation du r\xE9pertoire temporaire de travail pour le unzip... init(); - // Unzip + // ... puis unzip try { CtuluLibFile.unzip(_prjFile, rootPath, _prog); } catch (IOException ex) { + FuLog.debug(ex.getMessage()); return false; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2011-10-27 13:15:46
|
Revision: 6586 http://fudaa.svn.sourceforge.net/fudaa/?rev=6586&view=rev Author: bmarchan Date: 2011-10-27 13:15:36 +0000 (Thu, 27 Oct 2011) Log Message: ----------- Add : Sauvegarde des propri?\195?\169t?\195?\169s graphiques des calques Modified Paths: -------------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivVisuPanel.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivControlPointsModel.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivGridModel.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivIASALayer.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivIASAModel.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivOriginalImageModel.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivRealImageModel.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivTransfImageModel.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProject.java Added Paths: ----------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivPersistence.java Added: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivPersistence.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivPersistence.java (rev 0) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivPersistence.java 2011-10-27 13:15:36 UTC (rev 6586) @@ -0,0 +1,155 @@ +package org.fudaa.fudaa.piv; + +import com.db4o.Db4o; +import com.db4o.ObjectContainer; +import com.db4o.ObjectSet; +import com.memoire.fu.FuLog; +import java.io.File; +import java.io.IOException; +import java.util.Enumeration; +import java.util.HashMap; +import java.util.Map; +import java.util.zip.ZipEntry; +import java.util.zip.ZipFile; +import org.fudaa.ctulu.CtuluLibFile; +import org.fudaa.ctulu.ProgressionInterface; +import org.fudaa.ebli.commun.EbliUIProperties; +import org.fudaa.fudaa.commun.save.FudaaSaveLib; +import org.fudaa.fudaa.piv.metier.PivProject; + +/** + * Sauve ou charge un fichier projet depuis un fichier ZIP. Le fichier contient + * des datas et des caract\xE9ristiques graphiques. + * @author Bertrand Marchand (mar...@de...) + */ +public class PivPersistence { + PivImplementation impl_; + private PivProject prj_; + private Map<String,EbliUIProperties> uiprops_; + + public PivPersistence(PivImplementation _impl) { + impl_=_impl; + } + + /** + * Sauvegarde dans un format zipp\xE9 du projet et des propri\xE9t\xE9s graphiques. + * @param _prjFile Le fichier zip de destination. + * @param _prog L'interface de progression. + * @return True : Si la sauvegarde s'est bien d\xE9roul\xE9e. + */ + public boolean save(File _prjFile, ProgressionInterface _prog) { + PivProject prj=impl_.getCurrentProject(); + + // Sauvegarde des datas dans le r\xE9pertoire temporaire. + prj.save(_prjFile, _prog); + + // Sauvegarde des propri\xE9t\xE9s graphiques des calques. + File dbFile=new File(prj.getRoot(), "project.db"); + dbFile.delete(); + FudaaSaveLib.configureDb4o(); + ObjectContainer cont=Db4o.openFile(dbFile.getAbsolutePath()); + for (EbliUIProperties props : impl_.get2dFrame().getVisuPanel().getLayerProperties().values()) { + cont.set(props); + } + cont.commit(); + cont.close(); + + // Compression du projet en ZIP. + try { + CtuluLibFile.zip(prj.getRoot(), _prjFile, _prog); + } + catch (IOException ex) { + return false; + } + + return true; + } + + /** + * Charge le projet depuis le fichier projet donn\xE9. Le fichier projet est + * d\xE9zipp\xE9, puis il est charg\xE9 s'il est conforme. + * + * @param _prjFile Le fichier contenant le projet. + * @param _prog L'interface de progression. Peut etre <tt>null</tt> + * @return True Si le fichier donn\xE9 est bien un fichier projet. + */ + public boolean load(File _prjFile, ProgressionInterface _prog) { + if (_prog!=null) + _prog.setDesc(PivResource.getS("Chargement du projet")); + + // Controle que le fichier archive est bien un fichier PIV par recherche + // d'un repertoire OUTPUT_DIR dans toutes les entries. Suivant le zippeur, + // il se peut que le r\xE9pertoire en tant qu'entry n'existe pas. On recherche + // donc ce nom dans toutes les entries. + try { + boolean bfound=false; + ZipFile zf=new ZipFile(_prjFile); + + FuLog.debug("Fichiers dans le ZIP:"); + NEXT_ENTRY: + for (Enumeration<? extends ZipEntry> e=zf.entries(); e.hasMoreElements();) { + File f=new File(e.nextElement().getName()); + FuLog.debug(f.getPath()); + while (f!=null) { + if (PivProject.OUTPUT_DIR.equals(f.getPath())) { + bfound=true; + break NEXT_ENTRY; + } + f=f.getParentFile(); + } + } + if (!bfound) return false; + + zf.close(); + } + catch (IOException ex) { + FuLog.debug(ex.getMessage()); + return false; + } + + // Cr\xE9ation du r\xE9pertoire temporaire de travail pour le unzip... + prj_=new PivProject(); + prj_.init(); + // ... puis unzip + try { + CtuluLibFile.unzip(_prjFile, prj_.getRoot(), _prog); + } + catch (IOException ex) { + FuLog.debug(ex.getMessage()); + return false; + } + + // Lecture du projet + prj_.load(_prjFile, _prog); + + + // Lecture des propri\xE9t\xE9s graphiques des calques. + File dbFile_=new File(prj_.getRoot(), "project.db"); + FudaaSaveLib.configureDb4o(); + ObjectContainer cont=Db4o.openFile(dbFile_.getAbsolutePath()); + ObjectSet set=cont.query(EbliUIProperties.class); + uiprops_=new HashMap<String,EbliUIProperties>(); + while (set.hasNext()) { + EbliUIProperties props=(EbliUIProperties)set.next(); + cont.activate(props, Integer.MAX_VALUE); + uiprops_.put(props.getLayerName(),props); + } + cont.close(); + + return true; + } + + /** + * @return Le projet apr\xE8s chargement + */ + public PivProject getProject() { + return prj_; + } + + /** + * @return Les propri\xE9t\xE9s graphiques apr\xE8s chargement. + */ + public Map<String,EbliUIProperties> getLayerProperties() { + return uiprops_; + } +} Property changes on: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivPersistence.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivVisuPanel.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivVisuPanel.java 2011-10-27 12:48:58 UTC (rev 6585) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivVisuPanel.java 2011-10-27 13:15:36 UTC (rev 6586) @@ -10,6 +10,8 @@ import java.awt.Color; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; +import java.util.HashMap; +import java.util.Map; import javax.swing.Action; import javax.swing.JMenu; import javax.units.NonSI; @@ -32,6 +34,7 @@ import org.fudaa.ebli.calque.edition.ZModelePointEditable; import org.fudaa.ebli.commun.EbliActionAbstract; import org.fudaa.ebli.commun.EbliFormatter; +import org.fudaa.ebli.commun.EbliUIProperties; import org.fudaa.ebli.palette.BPalettePlageDiscret; import org.fudaa.ebli.palette.BPlageDiscret; import org.fudaa.ebli.trace.TraceIcon; @@ -171,7 +174,7 @@ getCqSelectionI().setEditSelectionWhenDoubleClick(false); - initCalques(); + initLayers(); getScene().setRestrictedToCalqueActif(true); buildActions(); } @@ -182,6 +185,9 @@ */ public void setProjet(PivProject _prj) { projet=_prj; + + viewMode_=0; + initLayers(); majLayers(); } @@ -235,7 +241,7 @@ /** * Initialise les calques contenus dans le panneau de visualisation. */ - public void initCalques() { + public void initLayers() { removeAllCalqueDonnees(); addCqInfos(); @@ -244,6 +250,46 @@ buildRealLayers(); buildOriginalLayers(); } + + /** + * Retourne les propri\xE9tes graphiques des calques. + * @return Les propri\xE9tes pour tous les calques + */ + public Map<String,EbliUIProperties> getLayerProperties() { + Map<String,EbliUIProperties> props=new HashMap<String,EbliUIProperties>(); + props.put(cqFlowResults.getName(),cqFlowResults.saveUIProperties()); + props.put(cqVelResults.getName(),cqVelResults.saveUIProperties()); + props.put(cqTransfImage_.getName(),cqTransfImage_.saveUIProperties()); + props.put(cqGrille_.getName(),cqGrille_.saveUIProperties()); + props.put(cqCntGrille_.getName(),cqCntGrille_.saveUIProperties()); + props.put(cqOrthoPoints_.getName(),cqOrthoPoints_.saveUIProperties()); + props.put(cqOriginalImg_.getName(),cqOriginalImg_.saveUIProperties()); + props.put(cqRealOrthoPoints_.getName(),cqRealOrthoPoints_.saveUIProperties()); + props.put(cqRealControlPoints_.getName(),cqRealControlPoints_.saveUIProperties()); + props.put(cqRealImg_.getName(),cqRealImg_.saveUIProperties()); + props.put(cqTransect_.getName(),cqTransect_.saveUIProperties()); + props.put(cqIASA_.getName(),cqIASA_.saveUIProperties()); + return props; + } + + /** + * Restaure les propri\xE9tes graphiques des calques. + * @param _props Les propri\xE9tes pour tous les calques + */ + public void setLayerProperties(Map<String,EbliUIProperties> _props) { + cqFlowResults.initFrom(_props.get(cqFlowResults.getName())); + cqVelResults.initFrom(_props.get(cqVelResults.getName())); + cqTransfImage_.initFrom(_props.get(cqTransfImage_.getName())); + cqGrille_.initFrom(_props.get(cqGrille_.getName())); + cqCntGrille_.initFrom(_props.get(cqCntGrille_.getName())); + cqOrthoPoints_.initFrom(_props.get(cqOrthoPoints_.getName())); + cqOriginalImg_.initFrom(_props.get(cqOriginalImg_.getName())); + cqRealOrthoPoints_.initFrom(_props.get(cqRealOrthoPoints_.getName())); + cqRealControlPoints_.initFrom(_props.get(cqRealControlPoints_.getName())); + cqRealImg_.initFrom(_props.get(cqRealImg_.getName())); + cqTransect_.initFrom(_props.get(cqTransect_.getName())); + cqIASA_.initFrom(_props.get(cqIASA_.getName())); + } /** * Construit les actions du panneau. Ces actions peuvent intervenir sur @@ -356,16 +402,13 @@ viewMode_=_mode; removeAllCalqueDonnees(); + getCqLegend().enleveTousCalques(); String title=null; if (_mode == MODE_ORIGINAL_VIEW) { addCalque(cqOrthoPoints_); addCalque(cqOriginalImg_); - getCqLegend().enleve(cqIASA_); - getCqLegend().enleve(cqRealControlPoints_); - getCqLegend().enleve(cqVelResults); - getCqLegend().enleve(cqFlowResults); actOriginalView_.putValue(Action.SELECTED_KEY,true); setCoordinateDefinitions(new EbliCoordinateDefinition[]{DEF_COOR_I,DEF_COOR_J}); @@ -376,23 +419,19 @@ cqRealOrthoPoints_.setLegende(null); cqRealOrthoPoints_.setLegende(getCqLegend()); + cqVelResults.setLegende(null); + cqVelResults.setLegende(getCqLegend()); + + cqFlowResults.setLegende(null); + cqFlowResults.setLegende(getCqLegend()); + + addCalque(cqVelResults); + addCalque(cqFlowResults); addCalque(cqTransect_); - if (projet!=null && projet.getVelResults()!=null) { - cqVelResults.setLegende(null); - cqVelResults.setLegende(getCqLegend()); - addCalque(cqVelResults,true); - } - if (projet!=null && projet.getFlowResults()!=null) { - cqFlowResults.setLegende(null); - cqFlowResults.setLegende(getCqLegend()); - addCalque(cqFlowResults,true); - } - addCalque(cqRealOrthoPoints_); addCalque(cqRealImg_); actRealView_.putValue(Action.SELECTED_KEY, true); - getCqLegend().enleve(cqIASA_); setCoordinateDefinitions(new EbliCoordinateDefinition[]{DEF_COOR_X,DEF_COOR_Y}); @@ -408,9 +447,6 @@ addCalque(cqGrille_); addCalque(cqTransfImage_); actTransfView_.putValue(Action.SELECTED_KEY,true); - getCqLegend().enleve(cqRealControlPoints_); - getCqLegend().enleve(cqVelResults); - getCqLegend().enleve(cqFlowResults); setCoordinateDefinitions(new EbliCoordinateDefinition[]{DEF_COOR_J,DEF_COOR_I}); @@ -447,11 +483,6 @@ * @param _b True : Le calque est visible. */ public void setVelocitiesLayerVisible(boolean _b) { - if (_b) { - if (viewMode_==MODE_REAL_VIEW) { - addCalque(cqVelResults, true); - } - } cqVelResults.setVisible(_b); } @@ -460,11 +491,6 @@ * @param _b True : Le calque est visible. */ public void setFlowLayerVisible(boolean _b) { - if (_b) { - if (viewMode_==MODE_REAL_VIEW) { - addCalque(cqFlowResults, true); - } - } cqFlowResults.setVisible(_b); } @@ -481,14 +507,16 @@ * Construction du calque de saisie de formes. */ protected void buildEditionLayer() { - cqEdition_=new ZCalqueEditionInteraction(); - cqEdition_.setName("cqEdition"); - cqEdition_.setGele(true); - cqEdition_.setLineModel(new TraceLigneModel(TraceLigne.LISSE, 1, Color.RED)); - cqEdition_.setIconModel(new TraceIconModel(TraceIcon.PLUS, 5, Color.RED)); + if (cqEdition_ == null) { + cqEdition_=new ZCalqueEditionInteraction(); + cqEdition_.setName("cqEdition"); + cqEdition_.setGele(true); + cqEdition_.setLineModel(new TraceLigneModel(TraceLigne.LISSE, 1, Color.RED)); + cqEdition_.setIconModel(new TraceIconModel(TraceIcon.PLUS, 5, Color.RED)); - // Ce calque peut \xEAtre ajout\xE9 d\xE9s le d\xE9but, il n'apparait pas dans l'arbre de calques - getController().addCalqueInteraction(cqEdition_); + // Ce calque peut \xEAtre ajout\xE9 d\xE9s le d\xE9but, il n'apparait pas dans l'arbre de calques + getController().addCalqueInteraction(cqEdition_); + } } /** @@ -689,9 +717,11 @@ mdlTransect.setProjet(projet); cqTransect_.modele(mdlTransect); - if (projet.hasTransfImages()) + if (projet.hasRawVelocities()) + setViewMode(MODE_REAL_VIEW); + else if (projet.hasTransfImages()) setViewMode(MODE_TRANSF_VIEW); - else if (projet.hasPgmImages()) + else setViewMode(MODE_ORIGINAL_VIEW); } Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivControlPointsModel.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivControlPointsModel.java 2011-10-27 12:48:58 UTC (rev 6585) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivControlPointsModel.java 2011-10-27 13:15:36 UTC (rev 6586) @@ -12,7 +12,7 @@ * Un modele pour les points d'orthorectification recalcul\xE9s, dans l'espace r\xE9el. * * @author Bertrand Marchand (mar...@de...) - * @version $Id:$ + * @version $Id$ */ public class PivControlPointsModel extends ZModeleMultiPointEditable { Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivGridModel.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivGridModel.java 2011-10-27 12:48:58 UTC (rev 6585) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivGridModel.java 2011-10-27 13:15:36 UTC (rev 6586) @@ -14,7 +14,7 @@ * peuvent \xEAtre supprim\xE9s. * * @author Bertrand Marchand (mar...@de...) - * @version $Id:$ + * @version $Id$ */ public class PivGridModel extends ZModelePointEditable { // Le projet. Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivIASALayer.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivIASALayer.java 2011-10-27 12:48:58 UTC (rev 6585) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivIASALayer.java 2011-10-27 13:15:36 UTC (rev 6586) @@ -15,7 +15,7 @@ * pour afficher le SA et le IA suivant des couleurs diff\xE9rentes. * * @author Bertrand Marchand (mar...@de...) - * @version $Id:$ + * @version $Id$ */ public class PivIASALayer extends ZCalqueLigneBrisee { /** L'attribut utilis\xE9 pour mapper la palette de couleurs. */ @@ -85,4 +85,8 @@ return true; } + @Override + public boolean isPaletteModifiable() { + return true; + } } Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivIASAModel.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivIASAModel.java 2011-10-27 12:48:58 UTC (rev 6585) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivIASAModel.java 2011-10-27 13:15:36 UTC (rev 6586) @@ -18,7 +18,7 @@ * Un modele pour les IA/SA bas\xE9 sur le modele de ligne bris\xE9es. * * @author Bertrand Marchand (mar...@de...) - * @version $Id:$ + * @version $Id$ */ public class PivIASAModel extends ZModeleLigneBriseeDefault { /** L'attribut utilis\xE9 pour l'affichage des lignes suivant une palette de couleurs. */ Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivOriginalImageModel.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivOriginalImageModel.java 2011-10-27 12:48:58 UTC (rev 6585) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivOriginalImageModel.java 2011-10-27 13:15:36 UTC (rev 6586) @@ -15,7 +15,7 @@ * Un modele pour l'image reconditionn\xE9e. * * @author Bertrand Marchand (mar...@de...) - * @version $Id:$ + * @version $Id$ */ public class PivOriginalImageModel extends ZModeleStatiqueImageRaster { // Le projet. Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivRealImageModel.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivRealImageModel.java 2011-10-27 12:48:58 UTC (rev 6585) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivRealImageModel.java 2011-10-27 13:15:36 UTC (rev 6586) @@ -15,7 +15,7 @@ * Un modele pour l'image dans l'espace r\xE9el. * * @author Bertrand Marchand (mar...@de...) - * @version $Id:$ + * @version $Id$ */ public class PivRealImageModel extends ZModeleStatiqueImageRaster { // Le projet. Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivTransfImageModel.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivTransfImageModel.java 2011-10-27 12:48:58 UTC (rev 6585) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivTransfImageModel.java 2011-10-27 13:15:36 UTC (rev 6586) @@ -15,7 +15,7 @@ * Un modele pour l'image transform\xE9e. * * @author Bertrand Marchand (mar...@de...) - * @version $Id:$ + * @version $Id$ */ public class PivTransfImageModel extends ZModeleStatiqueImageRaster { // Le projet. Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProject.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProject.java 2011-10-27 12:48:58 UTC (rev 6585) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProject.java 2011-10-27 13:15:36 UTC (rev 6586) @@ -6,11 +6,8 @@ import java.io.File; import java.io.FileFilter; import java.io.IOException; -import java.util.Enumeration; import java.util.HashSet; import java.util.Iterator; -import java.util.zip.ZipEntry; -import java.util.zip.ZipFile; import javax.imageio.ImageIO; import javax.imageio.ImageReader; import javax.imageio.stream.ImageInputStream; @@ -432,50 +429,6 @@ * @return True Si le fichier donn\xE9 est bien un fichier projet. */ public boolean load(File _prjFile, ProgressionInterface _prog) { - if (_prog!=null) - _prog.setDesc(PivResource.getS("Chargement du projet")); - - // Controle que le fichier archive est bien un fichier PIV par recherche - // d'un repertoire OUTPUT_DIR dans toutes les entries. Suivant le zippeur, - // il se peut que le r\xE9pertoire en tant qu'entry n'existe pas. On recherche - // donc ce nom dans toutes les entries. - try { - boolean bfound=false; - ZipFile zf=new ZipFile(_prjFile); - - FuLog.debug("Fichiers dans le ZIP:"); - NEXT_ENTRY: - for (Enumeration<? extends ZipEntry> e=zf.entries(); e.hasMoreElements();) { - File f=new File(e.nextElement().getName()); - FuLog.debug(f.getPath()); - while (f!=null) { - if (OUTPUT_DIR.equals(f.getPath())) { - bfound=true; - break NEXT_ENTRY; - } - f=f.getParentFile(); - } - } - if (!bfound) return false; - - zf.close(); - } - catch (IOException ex) { - FuLog.debug(ex.getMessage()); - return false; - } - - // Cr\xE9ation du r\xE9pertoire temporaire de travail pour le unzip... - init(); - // ... puis unzip - try { - CtuluLibFile.unzip(_prjFile, rootPath, _prog); - } - catch (IOException ex) { - FuLog.debug(ex.getMessage()); - return false; - } - File outputDir=new File(rootPath,OUTPUT_DIR); // Le fichier GRP @@ -683,12 +636,6 @@ FileWriteOperationAbstract writer=PivBathyFileFormat.getInstance().createWriter(); CtuluIOOperationSynthese ret=writer.write(transect, transectFile, null); } - try { - CtuluLibFile.zip(rootPath, _prjFile, _prog); - } - catch (IOException ex) { - return false; - } isModified=false; return true; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2011-11-10 10:53:35
|
Revision: 6657 http://fudaa.svn.sourceforge.net/fudaa/?rev=6657&view=rev Author: bmarchan Date: 2011-11-10 10:53:24 +0000 (Thu, 10 Nov 2011) Log Message: ----------- Fix : Divers traceback sur edition, saisie de transect, GRP, etc.) Modified Paths: -------------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivOriginalView.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivRealView.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivVisuPanel.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivNewTransectAction.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOrthoGRPAction.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProject.java Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java 2011-11-10 10:26:23 UTC (rev 6656) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java 2011-11-10 10:53:24 UTC (rev 6657) @@ -67,8 +67,8 @@ protected static BuInformationsSoftware isPIV_ = new BuInformationsSoftware(); static { isPIV_.name = "LSPIV"; - isPIV_.version = "1.1"; - isPIV_.date = "2011-10-27"; + isPIV_.version = "1.2_b20111111"; + isPIV_.date = "2011-11-11"; isPIV_.rights = PivResource.getS("Tous droits r\xE9serv\xE9s")+". CETMEF (c)1999-2011"; isPIV_.license = "GPL2"; isPIV_.languages = "en,fr"; @@ -186,7 +186,7 @@ * Mise \xE0 jour de l'\xE9tat des menus. */ public void updateActionsState() { - FuLog.trace("Project state change"); + FuLog.debug("Project state change"); boolean bprjOpen=project!=null; boolean bprjMod=bprjOpen && (project.isParamsModified() || isUIModified_); Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivOriginalView.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivOriginalView.java 2011-11-10 10:26:23 UTC (rev 6656) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivOriginalView.java 2011-11-10 10:53:24 UTC (rev 6657) @@ -24,7 +24,9 @@ import org.fudaa.ebli.commun.EbliUIProperties; import org.fudaa.ebli.trace.TraceIcon; import org.fudaa.ebli.trace.TraceIconModel; +import org.fudaa.fudaa.piv.action.PivNewTransectAction; import org.fudaa.fudaa.piv.action.PivOriginalViewAction; +import org.fudaa.fudaa.piv.action.PivOrthoGRPAction; import org.fudaa.fudaa.piv.layer.PivImageRasterLayer; import org.fudaa.fudaa.piv.layer.PivOriginalImageModel; import org.fudaa.fudaa.piv.layer.PivOrthoPointsModel; @@ -46,6 +48,7 @@ /** La d\xE9finition de coordonn\xE9e pour Y */ private static final EbliCoordinateDefinition DEF_COOR_J=new EbliCoordinateDefinition("J", new EbliFormatter(NonSI.PIXEL)); + private PivOrthoGRPAction actOrthoGRP_; private EbliActionAbstract actOriginalView_; private PivVisuPanel pnLayers_; private BuComboBox cbImg_; @@ -100,12 +103,14 @@ cqOrthoPoints_.setDestructible(false); cqOrthoPoints_.setAttributForLabels(PivVisuPanel.ATT_LABEL); cqOrthoPoints_.setEditor(pnLayers_.getEditor()); - layers_.add(cqOrthoPoints_); + getOrthoGRPAction().setCalqueOrthoPoints(cqOrthoPoints_); // Layer de l'image d'origine cqOriginalImg_ = new PivImageRasterLayer(); cqOriginalImg_.setTitle(PivResource.getS("Image d'origine")); cqOriginalImg_.setName("cqImg"); + + layers_.add(cqOrthoPoints_); layers_.add(cqOriginalImg_); } @@ -138,6 +143,8 @@ @Override public void itemStateChanged(ItemEvent e) { if (e.getStateChange()==ItemEvent.SELECTED) { + if (!enableEvents_) return; + if (cqOriginalImg_!=null && cqOriginalImg_.getModelImage()!=null) { cqOriginalImg_.getModelImage().setImage(cbImg_.getSelectedIndex()); // Pour que le calque soit r\xE9affich\xE9. @@ -152,31 +159,50 @@ cbImg_.setEnabled(false); } + + /** * Mise a jour les outils. */ private void majTools() { - // La liste d\xE9roulante des images + enableEvents_=false; + + // La liste d\xE9roulante des images, avec s\xE9lection d'une image diff\xE9rente si inexistante. Object o=cbImg_.getSelectedItem(); cbImg_.removeAllItems(); cbImg_.setEnabled(false); + + if (prj_ != null) { + for (File f : prj_.getSrcImageFiles()) { + cbImg_.addItem(f.getName()); + } + cbImg_.setEnabled(prj_.getSrcImageFiles().length > 0); + } - if (prj_==null) return; - - for (File f : prj_.getSrcImageFiles()) { - cbImg_.addItem(f.getName()); + boolean found=false; + if (o != null) { + for (int i=0; i<cbImg_.getItemCount(); i++) { + if (cbImg_.getItemAt(i).equals(o)) { + cbImg_.setSelectedItem(o); + found=true; + break; + } + } } - if (o!=null) - cbImg_.setSelectedItem(o); + if (!found) { + cbImg_.setSelectedItem(cbImg_.getItemCount()==0?-1:0); + } - cbImg_.setEnabled(prj_.getSrcImageFiles().length>0); + enableEvents_=true; } + boolean enableEvents_=true; + @Override public void projectStateChanged(PivProject _prj, String _prop) { if("pgmImages".equals(_prop)) { majTools(); - mdlOriginalImage.update(); + mdlOriginalImage.setImage(cbImg_.getSelectedIndex()); } else if("orthoPoints".equals(_prop)) { mdlOrthoPoints.update(); @@ -225,4 +251,15 @@ } return actOriginalView_; } + + /** + * Retourne l'action pour la saisie des points de r\xE9f\xE9rence. + * @return L'action. + */ + public PivOrthoGRPAction getOrthoGRPAction() { + if (actOrthoGRP_==null) { + actOrthoGRP_=new PivOrthoGRPAction(pnLayers_); + } + return actOrthoGRP_; + } } Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivRealView.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivRealView.java 2011-11-10 10:26:23 UTC (rev 6656) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivRealView.java 2011-11-10 10:53:24 UTC (rev 6657) @@ -21,7 +21,6 @@ import org.fudaa.ebli.calque.BCalqueAffichage; import org.fudaa.ebli.calque.ZCalqueFleche; -import org.fudaa.ebli.calque.ZCalqueImageRaster; import org.fudaa.ebli.calque.dessin.DeForme; import org.fudaa.ebli.calque.edition.ZCalqueLigneBriseeEditable; import org.fudaa.ebli.calque.edition.ZCalqueMultiPointEditable; @@ -35,11 +34,11 @@ import org.fudaa.ebli.trace.TraceIconModel; import org.fudaa.ebli.trace.TraceLigne; import org.fudaa.ebli.trace.TraceLigneModel; +import org.fudaa.fudaa.piv.action.PivNewTransectAction; import org.fudaa.fudaa.piv.action.PivRealViewAction; import org.fudaa.fudaa.piv.layer.PivControlPointsModel; import org.fudaa.fudaa.piv.layer.PivFlowResultsModel; import org.fudaa.fudaa.piv.layer.PivImageRasterLayer; -import org.fudaa.fudaa.piv.layer.PivOriginalImageModel; import org.fudaa.fudaa.piv.layer.PivOrthoPointsModel; import org.fudaa.fudaa.piv.layer.PivRealImageModel; import org.fudaa.fudaa.piv.layer.PivTransectModel; @@ -63,6 +62,8 @@ /** La d\xE9finition de coordonn\xE9e pour Y */ private static final EbliCoordinateDefinition DEF_COOR_Y=new EbliCoordinateDefinition("Y", new EbliFormatter(SI.METER)); + private PivNewTransectAction actNewTransect_; + private EbliActionAbstract actRealView_; private PivVisuPanel pnLayers_; private BuComboBox cbImg_; @@ -202,6 +203,7 @@ cqTransect_.setIconModel(1, new TraceIconModel(TraceIcon.LOSANGE_PLEIN, 3, Color.ORANGE)); cqTransect_.setDestructible(false); cqTransect_.setEditor(pnLayers_.getEditor()); + getNewTransectAction().setTransectLayer(cqTransect_); layers_.add(cqVelResults); layers_.add(cqFlowResults); @@ -410,4 +412,15 @@ } return actRealView_; } + + /** + * Retourne l'action pour la saisie d'un transect. + * @return L'action. + */ + public PivNewTransectAction getNewTransectAction() { + if (actNewTransect_==null) { + actNewTransect_=new PivNewTransectAction(pnLayers_); + } + return actNewTransect_; + } } Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivVisuPanel.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivVisuPanel.java 2011-11-10 10:26:23 UTC (rev 6656) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivVisuPanel.java 2011-11-10 10:53:24 UTC (rev 6657) @@ -80,8 +80,6 @@ /** Le calque d'\xE9dition. */ ZCalqueEditionInteraction cqEdition_; - ZEditorDefault editGeom_; - int viewMode_=0; /** Les vues */ private PivOriginalView origView_; @@ -89,11 +87,9 @@ private PivRealView realView_; private PivComputeGridDefinitionAction actComputeGrid_; - private PivOrthoGRPAction actOrthoGRP_; private PivShowVelocityAction actShowVelocities_; private PivShowFlowAction actShowFlow_; private PivEditAction actEdit_; - private PivNewTransectAction actNewTransect_; /** * Construction des calques. Une partie est d\xE9j\xE0 construite par d\xE9faut dans @@ -103,17 +99,12 @@ public PivVisuPanel(PivImplementation _impl) { super(_impl); - // L'editeur de g\xE9om\xE9trie sert pour affichage du panneau d'\xE9dition. - editGeom_=new ZEditorDefault(this); - editGeom_.setUi(_impl); - getCqSelectionI().setEditSelectionWhenDoubleClick(false); + getScene().setRestrictedToCalqueActif(true); + initCommonLayers(); // Construction des vues. getViews(); - - initLayers(); - getScene().setRestrictedToCalqueActif(true); buildActions(); } @@ -154,7 +145,7 @@ viewMode_=0; - initLayers(); + initCommonLayers(); majLayers(); } @@ -178,7 +169,7 @@ /** * Initialise les calques contenus dans le panneau de visualisation. */ - public void initLayers() { + public void initCommonLayers() { removeAllCalqueDonnees(); addCqInfos(); @@ -214,13 +205,7 @@ * le rendu du panneau (choix de la vue, etc.). */ protected void buildActions() { - actOrthoGRP_=new PivOrthoGRPAction(this); - // TODO B.M. : Le calque change, il faudrait changer l'affectation \xE0 l'action. - actOrthoGRP_.setCalqueOrthoPoints(origView_.getOrthoPointsLayer()); actComputeGrid_=new PivComputeGridDefinitionAction(this); - actNewTransect_=new PivNewTransectAction(this); - // TODO B.M. : Le calque change, il faudrait changer l'affectation \xE0 l'action. - actNewTransect_.setTransectLayer(realView_.getTransectLayer()); actShowVelocities_=new PivShowVelocityAction((PivImplementation)getCtuluUI()); actShowFlow_=new PivShowFlowAction((PivImplementation)getCtuluUI()); actEdit_=new PivEditAction(this); @@ -259,7 +244,7 @@ * @return L'action. */ public PivOrthoGRPAction getOrthoGRPAction() { - return actOrthoGRP_; + return getOriginalView().getOrthoGRPAction(); } /** @@ -275,7 +260,7 @@ * @return L'action. */ public PivNewTransectAction getNewTransectAction() { - return actNewTransect_; + return getRealView().getNewTransectAction(); } /** Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivNewTransectAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivNewTransectAction.java 2011-11-10 10:26:23 UTC (rev 6656) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivNewTransectAction.java 2011-11-10 10:53:24 UTC (rev 6657) @@ -196,6 +196,9 @@ */ public void setTransectLayer(ZCalqueLigneBriseeEditable _cq) { cqTransect_=_cq; + if (pnParams!=null) { + pnParams.targetChanged(cqTransect_); + } } /** Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOrthoGRPAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOrthoGRPAction.java 2011-11-10 10:26:23 UTC (rev 6656) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOrthoGRPAction.java 2011-11-10 10:53:24 UTC (rev 6657) @@ -214,6 +214,8 @@ */ public void setCalqueOrthoPoints(ZCalqueMultiPointEditable _cq) { cqOrthoPoints_=_cq; + if (pnParams!=null) + pnParams.targetChanged(cqOrthoPoints_); } /** Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProject.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProject.java 2011-11-10 10:26:23 UTC (rev 6656) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProject.java 2011-11-10 10:53:24 UTC (rev 6657) @@ -5,8 +5,14 @@ import java.io.File; import java.io.FileFilter; import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; +import java.util.List; +import java.util.Map.Entry; +import java.util.TreeMap; import javax.imageio.ImageIO; import javax.imageio.ImageReader; @@ -29,9 +35,6 @@ import org.fudaa.fudaa.piv.io.PivParamFileFormat; import com.memoire.fu.FuLog; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; /** * Le projet contenant toutes les donn\xE9es. Chauqe projet peut \xEAtre sauv\xE9/relu @@ -176,30 +179,61 @@ /** * Controle que les images cache existent pour le r\xE9pertoire des images et - * les cr\xE9e si ce n'est pas le cas. + * les cr\xE9e en asynchrone si ce n'est pas le cas. + * @param _files Les fichiers a considerer pour les cacher. * @param _dir Le r\xE9pertoire contenant les images sources. * @return false : Si un probl\xE8me s'est produit lors de la production. */ - public boolean rebuiltCacheImagesIfNeeded(File _dir, ProgressionInterface _prog) { + public boolean rebuiltCacheImagesIfNeeded(List<File> _files, final File _dir, ProgressionInterface _prog) { boolean b=true; + + File imgCacheDir=new File(new File(rootPath,IMG_PGM_DIR),"cache"); + imgCacheDir.mkdirs(); + + srcFiles_.clear(); + + final List<File> file2Cache=new ArrayList<File>(); + final List<Integer> posFile2Cache=new ArrayList<Integer>(); - List<File> cacheFiles=new ArrayList<File>(); + final List<File> cacheFiles=new ArrayList<File>(); // Cr\xE9ation des images cache manquantes - for (File f : _dir.listFiles(FLT_FILES)) { - File cache = getCacheImageFile(f); + for (int i=0; i<_files.size(); i++) { + File cache = getCacheImageFile(_files.get(i)); cacheFiles.add(cache); - if (!cache.exists()) - b &= createCacheFromImage(f); + if (cache.exists()) { + srcFiles_.add(_files.get(i)); + } + else { + file2Cache.add(_files.get(i)); + posFile2Cache.add(i); +// b &= createCacheFromImage(f); + } } + + Runnable r=new Runnable() { - // Suppression des images cache inutiles - for (File f : new File(_dir, "cache").listFiles()) { - if (!cacheFiles.contains(f)) - f.delete(); - } + @Override + public void run() { + for (int i=0; i<file2Cache.size(); i++) { + createCacheFromImage(file2Cache.get(i)); + srcFiles_.add(posFile2Cache.get(i), file2Cache.get(i)); + fireProjectStateChanged("pgmImages"); + } + // Suppression des images cache inutiles + for (File f : new File(_dir, "cache").listFiles()) { + if (!cacheFiles.contains(f)) + f.delete(); + } + } + }; + new Thread(r).start(); + +// srcFiles_.addAll(newFiles); + + fireProjectStateChanged("pgmImages"); return b; } @@ -415,8 +449,7 @@ */ public void setSrcImagesFiles(File[] _files) { File imgInpDir=new File(rootPath,IMG_PGM_DIR); - File imgCacheDir=new File(imgInpDir,"cache"); - imgCacheDir.mkdirs(); + imgInpDir.mkdirs(); List<File> newFiles=new ArrayList<File>(); @@ -430,8 +463,8 @@ // Copie du fichier localement au projet. CtuluLibFile.copyFile(f, fimg); // Cache en jpg pour une image .pgm - if (fimg.getName().endsWith(".pgm")) { - createCacheFromImage(fimg); + if (!fimg.getName().endsWith(".pgm")) { +// createCacheFromImage(fimg); } } newFiles.add(fimg); @@ -443,11 +476,7 @@ f.delete(); } - rebuiltCacheImagesIfNeeded(imgInpDir,null); - - srcFiles_.clear(); - srcFiles_.addAll(newFiles); - fireProjectStateChanged("pgmImages"); + rebuiltCacheImagesIfNeeded(newFiles,imgInpDir,null); } /** @@ -652,9 +681,9 @@ } // Chargement des images sources et v\xE9rification des caches. - srcFiles_.clear(); - srcFiles_.addAll(Arrays.asList(imgSrcDir.listFiles(FLT_FILES))); - rebuiltCacheImagesIfNeeded(imgSrcDir, _prog); +// srcFiles_.clear(); +// srcFiles_.addAll(); + rebuiltCacheImagesIfNeeded(Arrays.asList(imgSrcDir.listFiles(FLT_FILES)),imgSrcDir, _prog); FuLog.trace("*** Chargement de "+rootPath+" ***"); if (orthoPoints!=null) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2011-11-14 09:46:13
|
Revision: 6665 http://fudaa.svn.sourceforge.net/fudaa/?rev=6665&view=rev Author: bmarchan Date: 2011-11-14 09:46:06 +0000 (Mon, 14 Nov 2011) Log Message: ----------- Add : Stockage des r?\195?\169sultats instantan?\195?\169s Modified Paths: -------------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivAbstractImageModel.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivOriginalImageModel.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivRealImageModel.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivVelResultsModel.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProject.java Added Paths: ----------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivInstantVelFileFormat.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivInstantVelReader.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivInstantVelResults.java Added: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivInstantVelFileFormat.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivInstantVelFileFormat.java (rev 0) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivInstantVelFileFormat.java 2011-11-14 09:46:06 UTC (rev 6665) @@ -0,0 +1,49 @@ +package org.fudaa.fudaa.piv.io; + +import org.fudaa.ctulu.fileformat.FileFormatUnique; +import org.fudaa.ctulu.fileformat.FileReadOperationAbstract; +import org.fudaa.ctulu.fileformat.FileWriteOperationAbstract; +import org.fudaa.fudaa.piv.PivResource; + +/** + * La classe d\xE9crivant le format d'un fichier pivxxxx.dat contenant les + * vitesses instantan\xE9es en espace r\xE9el. + * + * @author Bertrand Marchand (mar...@de...) + * @version $Id$ + */ +public class PivInstantVelFileFormat extends FileFormatUnique { + + private PivInstantVelFileFormat() { + super(1); + nom_ = PivResource.getS("PIV instant real velocities"); + description_ = PivResource.getS("Fichier contenant les vitesses instantan\xE9es r\xE9elles"); + extensions_=new String[]{"dat"}; + } + static final PivInstantVelFileFormat INSTANCE = new PivInstantVelFileFormat(); + + /** + * Retourne le singleton pour instancier un reader ou un writer. + * @return Le singleton + */ + public static PivInstantVelFileFormat getInstance() { + return INSTANCE; + } + + /** + * Cr\xE9ation d'un reader. + * @return Le reader + */ + public FileReadOperationAbstract createReader() { + return new PivInstantVelReader(); + } + + /** + * Cr\xE9ation d'un writer. + * @return Le writer + */ + public FileWriteOperationAbstract createWriter() { + return new PivImgRefWriter(); + } + +} Property changes on: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivInstantVelFileFormat.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Added: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivInstantVelReader.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivInstantVelReader.java (rev 0) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivInstantVelReader.java 2011-11-14 09:46:06 UTC (rev 6665) @@ -0,0 +1,111 @@ +/** + * @creation 2002-11-21 + * @modification $Date: 2007/05/04 13:47:27 $ + * @license GNU General Public License 2 + * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne + * @mail de...@fu... + */ +package org.fudaa.fudaa.piv.io; + +import java.io.EOFException; +import java.io.File; +import java.io.IOException; + +import org.fudaa.ctulu.CtuluActivity; +import org.fudaa.dodico.fortran.FileOpReadCharSimpleAbstract; +import org.fudaa.fudaa.piv.PivResource; +import org.fudaa.fudaa.piv.metier.PivInstantVelResults; + +/** + * Un lecteur pour les fichiers des r\xE9sultats de vitesses instantann\xE9es en espace r\xE9el. + * + * @author Bertrand Marchand (mar...@de...) + * @version $Id$ + */ +public class PivInstantVelReader extends FileOpReadCharSimpleAbstract implements CtuluActivity { + + /** Drapeau d'interruption */ + boolean bstop_; + /** Nb d'octets du fichier a lire pour stat sur pourcentage effectu\xE9 */ + int nbOctets; + + /** + * Le constructeur. + */ + public PivInstantVelReader() { + } + + /** + * Lit les r\xE9sultats de vitesses et les retourne. + * @return Les r\xE9sultats + */ + protected PivInstantVelResults internalRead() { + return readVelocities(); + } + + protected void processFile(final File _f) { + nbOctets = (int) _f.length(); + } + + /** + * Utilise FortranReader ( donc un buffer). + * + * @return les infos non bloquantes. + */ + private synchronized PivInstantVelResults readVelocities() { + PivInstantVelResults res = new PivInstantVelResults(); + + if (super.in_ == null) { + analyze_.addErrorFromFile(PivResource.getS("Flux d'entr\xE9e non trouv\xE9"), 0); + return null; + } + + try { + int lu=0; + boolean afficheAvance = false; + if ((progress_ != null) && (nbOctets > 0)) { + afficheAvance = true; + progress_.setProgression(0); + } + int pourcentageEnCours = 0; + + in_.setJumpBlankLine(true); + + // Boucle jusque fin de fichier. Exception EOF si fin. + while (true) { + in_.readFields(); + + res.addPoint(in_.doubleField(0), in_.doubleField(1), in_.doubleField(2), in_.doubleField(3)); + + lu+=26; // Si le formattage en fortran + + if ((afficheAvance) && ((lu * 100 / nbOctets) >= (pourcentageEnCours + 20))) { + pourcentageEnCours += 20; + progress_.setProgression(pourcentageEnCours); + } + } + } + // Sortie normale + catch (final EOFException e) { + } + catch (final IOException e) { + analyze_.addErrorFromFile(PivResource.getS("Une erreur de lecture s'est produite"), in_.getLineNumber()); + } + catch (final NumberFormatException e) { + analyze_.addErrorFromFile(PivResource.getS("Une erreur de lecture s'est produite"), in_.getLineNumber()); + } + + if (progress_ != null) { + progress_.setProgression(100); + } + + return res; + } + + /** + * Interruption asynchrone de l'activit\xE9 de lecture. + */ + public void stop() { + bstop_ = true; + } +} Property changes on: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivInstantVelReader.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivAbstractImageModel.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivAbstractImageModel.java 2011-11-11 22:17:59 UTC (rev 6664) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivAbstractImageModel.java 2011-11-14 09:46:06 UTC (rev 6665) @@ -11,11 +11,19 @@ /** * Un modele pour un calque image. * @author Bertrand Marchand (mar...@de...) + * @version $Id:$ */ public abstract class PivAbstractImageModel extends ZModeleStatiqueImageRaster { + /** + * @return Le projet associ\xE9 au mod\xE8le, <tt>null</tt> si aucun projet associ\xE9. + */ public abstract PivProject getProject(); + /** + * Definit l'image du projet a afficher. + * @param _idx L'index de l'image dans la liste des images, -1 si aucune image \xE0 afficher. + */ public abstract void setImage(int _idx); } Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivOriginalImageModel.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivOriginalImageModel.java 2011-11-11 22:17:59 UTC (rev 6664) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivOriginalImageModel.java 2011-11-14 09:46:06 UTC (rev 6665) @@ -3,12 +3,13 @@ import java.awt.geom.Point2D; import java.io.File; import java.util.Iterator; + import javax.imageio.ImageIO; import javax.imageio.ImageReader; import javax.imageio.stream.ImageInputStream; + import org.fudaa.ctulu.CtuluImageContainer; import org.fudaa.ctulu.CtuluLibFile; -import org.fudaa.ebli.calque.ZModeleStatiqueImageRaster; import org.fudaa.fudaa.piv.metier.PivProject; /** @@ -53,10 +54,11 @@ * Modifie l'image affich\xE9e suivant son index dans le projet. * @param _idx L'index de l'image dans le projet. */ + @Override public void setImage(int _idx) { File[] srcFiles=prj_.getSrcImageFiles(); - // Si l'indice d'image est bien dans les images possibles + // Si l'indice d'image est bien dans les images disponibles if (_idx!=-1 && srcFiles.length>_idx) { File img=prj_.getCacheImageFile(srcFiles[_idx]); Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivRealImageModel.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivRealImageModel.java 2011-11-11 22:17:59 UTC (rev 6664) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivRealImageModel.java 2011-11-14 09:46:06 UTC (rev 6665) @@ -41,24 +41,30 @@ return prj_; } - @Override - public void setImage(int _idx) { - - } - /** * Met a jour le mod\xE8le en fonction de la premi\xE8re image transform\xE9e. */ public void update() { + setImage(0); + } - // On prend la premi\xE8re image. - if (prj_.hasTransfImages() && prj_.getOrthoParameters()!=null) { - File imgs=prj_.getTransfCacheImageFile(); - ImageInputStream iis=prj_.getRealCacheImageInputStream(); + /** + * Modifie l'image affich\xE9e suivant son index dans le projet. + * @param _idx L'index de l'image dans le projet. + */ + @Override + public void setImage(int _idx) { + File[] imgFiles=prj_.getTransfImageFiles(); + + // Si l'indice d'image est bien dans les images disponibles + if (_idx!=-1 && imgFiles.length>_idx && prj_.getOrthoParameters()!=null) { + File img=prj_.getCacheImageFile(imgFiles[_idx]); + ImageInputStream iis=prj_.getRealCacheImageInputStream(img); + // Repris de CtuluLibImage.getImageReader(), mais en utilisant l'extension (pgm) au lieu // du nom de reader (pnm) - String extension = CtuluLibFile.getExtension(imgs.getName()); + String extension = CtuluLibFile.getExtension(img.getName()); final Iterator<ImageReader> it = ImageIO.getImageReadersBySuffix(extension); ImageReader imgReader = null; if (it != null && it.hasNext()) { @@ -68,7 +74,7 @@ imgReader.setInput(iis); - CtuluImageContainer imgCont=new CtuluImageContainer(imgReader,imgs); + CtuluImageContainer imgCont=new CtuluImageContainer(imgReader,img); Point2D.Double[] imgPts=new Point2D.Double[]{ new Point2D.Double(0,0), Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivVelResultsModel.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivVelResultsModel.java 2011-11-11 22:17:59 UTC (rev 6664) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivVelResultsModel.java 2011-11-14 09:46:06 UTC (rev 6665) @@ -14,7 +14,7 @@ import org.fudaa.fudaa.piv.metier.PivVelResults; /** - * Un modele pour le trac\xE9 des vecteurs vitesses. + * Un modele pour le trac\xE9 des vecteurs vitesses moyenn\xE9es. * * @author Bertrand Marchand (mar...@de...) * @version $Id$ Added: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivInstantVelResults.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivInstantVelResults.java (rev 0) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivInstantVelResults.java 2011-11-14 09:46:06 UTC (rev 6665) @@ -0,0 +1,68 @@ +package org.fudaa.fudaa.piv.metier; + +import java.util.ArrayList; +import java.util.List; + +/** + * Une classe pour stocker les r\xE9sultats de vitesses instantan\xE9es, pour un instant seulement. + * Les coordonn\xE9es X et Y sont redondantes pour tous les r\xE9sultats. + * @author Bertrand Marchand (mar...@de...) + * @version $Id$ + */ +public class PivInstantVelResults { + + /** Les coordonn\xE9es X */ + private List<Double> x=new ArrayList<Double>(); + /** Les coordonn\xE9es Y */ + private List<Double> y=new ArrayList<Double>(); + /** Les vitesses suivant U pour chaque instant. */ + private List<Double> vx=new ArrayList<Double>(); + /** Les vitesses suivant V pour chaque instant. */ + private List<Double> vy=new ArrayList<Double>(); + + /** + * Ajoute un point aux r\xE9sultats instantan\xE9s + * @param _x La coordonn\xE9e X + * @param _y La coordonn\xE9e Y + * @param _vx La vitesse Vx + * @param _vy La vitesse Vy + */ + public void addPoint(double _x, double _y, double _vx, double _vy) { + x.add(_x); + y.add(_y); + vx.add(_vx); + vy.add(_vy); + } + + /** + * @param _ind L'indice du point + * @return Sa coordonn\xE9e X + */ + public double getX(int _ind) { + return x.get(_ind); + } + + /** + * @param _ind L'indice du point + * @return Sa coordonn\xE9e Y + */ + public double getY(int _ind) { + return y.get(_ind); + } + + /** + * @param _ind L'indice du point + * @return Sa vitesse X + */ + public double getVx(int _ind) { + return vx.get(_ind); + } + + /** + * @param _ind L'indice du point + * @return Sa vitesse Y + */ + public double getVy(int _ind) { + return vy.get(_ind); + } +} Property changes on: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivInstantVelResults.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProject.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProject.java 2011-11-11 22:17:59 UTC (rev 6664) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProject.java 2011-11-14 09:46:06 UTC (rev 6665) @@ -7,12 +7,10 @@ import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; -import java.util.HashMap; +import java.util.Collections; import java.util.HashSet; import java.util.Iterator; import java.util.List; -import java.util.Map.Entry; -import java.util.TreeMap; import javax.imageio.ImageIO; import javax.imageio.ImageReader; @@ -32,6 +30,7 @@ import org.fudaa.fudaa.piv.io.PivGridParamFileFormat; import org.fudaa.fudaa.piv.io.PivHFileFormat; import org.fudaa.fudaa.piv.io.PivImgRefFileFormat; +import org.fudaa.fudaa.piv.io.PivInstantVelFileFormat; import org.fudaa.fudaa.piv.io.PivParamFileFormat; import com.memoire.fu.FuLog; @@ -50,8 +49,10 @@ public static final String IMG_PGM_DIR="img_pgm"; /** Le r\xE9pertoire projet des images transform\xE9es */ public static final String IMG_TRANSF_DIR="img_transf"; - /** Le r\xE9pertoire des vitesses brutes */ + /** Le r\xE9pertoire des vitesses instantan\xE9es */ public static final String VEL_RAW_DIR="vel_raw"; + /** Le r\xE9pertoire des vitesses instantan\xE9es en espace r\xE9el. */ + public static final String VEL_REAL_DIR="vel_real"; private static final FileFilter FLT_FILES=new FileFilter() { @Override @@ -76,8 +77,10 @@ protected PivGrid computeGrid; /** Un transect pour le calcul de d\xE9bits */ protected PivTransect transect; - /** Les r\xE9sultats de vitesses */ + /** Les r\xE9sultats de vitesses moyennes */ protected PivVelResults velResults; + /** Les r\xE9sultats des vitesses instantan\xE9es */ + protected PivInstantVelResults[] instantVelResults; /** Les r\xE9sultats de d\xE9bit calcul\xE9 */ protected PivFlowResults flowResults; /** La taille des images transform\xE9es */ @@ -99,8 +102,10 @@ ImageInputStream cacheTransfInputStream_; /** L'input stream pour l'image cache r\xE9elle */ ImageInputStream cacheRealInputStream_; - /** Les images d'origine dans l'ordre */ - List<File> srcFiles_=new ArrayList<File>(); + /** Les images d'origine dans l'ordre, dans */ + List<File> srcFiles_=Collections.synchronizedList(new ArrayList<File>()); + /** La liste des images transform\xE9es */ + List<File> transfFiles_=Collections.synchronizedList(new ArrayList<File>()); /** * Cree l'espace temporaire de stockage des fichiers @@ -180,18 +185,20 @@ /** * Controle que les images cache existent pour le r\xE9pertoire des images et * les cr\xE9e en asynchrone si ce n'est pas le cas. - * @param _files Les fichiers a considerer pour les cacher. - * @param _dir Le r\xE9pertoire contenant les images sources. + * @param _files Les fichiers \xE0 mettre en cache. + * @param _readyFiles LA liste des fichiers prets a etre exploit\xE9s + * @param _dir Le r\xE9pertoire contenant les fichiers \xE0 mettre en cache. * @return false : Si un probl\xE8me s'est produit lors de la production. */ - public boolean rebuiltCacheImagesIfNeeded(List<File> _files, final File _dir, ProgressionInterface _prog) { + public boolean rebuiltCacheImagesIfNeeded(List<File> _files, final List<File> _readyFiles, final File _dir, ProgressionInterface _prog) { boolean b=true; - File imgCacheDir=new File(new File(rootPath,IMG_PGM_DIR),"cache"); + File imgCacheDir=new File(_dir,"cache"); imgCacheDir.mkdirs(); - srcFiles_.clear(); + _readyFiles.clear(); + final String prop=_dir.equals(new File(rootPath,IMG_PGM_DIR)) ? "pgmImages":"transfImages"; final List<File> file2Cache=new ArrayList<File>(); final List<Integer> posFile2Cache=new ArrayList<Integer>(); @@ -203,7 +210,7 @@ cacheFiles.add(cache); if (cache.exists()) { - srcFiles_.add(_files.get(i)); + _readyFiles.add(_files.get(i)); } else { file2Cache.add(_files.get(i)); @@ -218,8 +225,8 @@ public void run() { for (int i=0; i<file2Cache.size(); i++) { createCacheFromImage(file2Cache.get(i)); - srcFiles_.add(posFile2Cache.get(i), file2Cache.get(i)); - fireProjectStateChanged("pgmImages"); + _readyFiles.add(posFile2Cache.get(i), file2Cache.get(i)); + fireProjectStateChanged(prop); } // Suppression des images cache inutiles @@ -229,11 +236,10 @@ } } }; - new Thread(r).start(); +// new Thread(r).start(); + r.run(); -// srcFiles_.addAll(newFiles); - - fireProjectStateChanged("pgmImages"); + fireProjectStateChanged(prop); return b; } @@ -272,12 +278,12 @@ * Retourne le chemin de l'image cache transform\xE9e. * @return Le chemin de l'image cache transform\xE9e. */ - public File getPgmCacheImageFile() { - return getCacheImageFile(getSrcImageFiles()[0]); -// File[] files=getPgmCacheImageFiles(); -// return files[0]; -// return new File(new File(rootPath,IMG_PGM_DIR),"cache.jpg"); - } +// public File getPgmCacheImageFile() { +// return getCacheImageFile(getSrcImageFiles()[0]); +//// File[] files=getPgmCacheImageFiles(); +//// return files[0]; +//// return new File(new File(rootPath,IMG_PGM_DIR),"cache.jpg"); +// } /** * Retourne le chemin de l'image cache transform\xE9e. @@ -310,11 +316,12 @@ /** * Retourne le flux d'entr\xE9e de l'image cache transform\xE9e + * @param _f L'image cache * @return Le flux. */ public ImageInputStream getTransfCacheImageInputStream() { - if (!getTransfCacheImageFile().exists()) - rebuiltTransfCacheImage(); +// if (!getTransfCacheImageFile().exists()) +// rebuiltTransfCacheImage(); if (cacheTransfInputStream_==null) { try { @@ -329,16 +336,17 @@ * Retourne le flux d'entr\xE9e de l'image cache transform\xE9e en espace r\xE9el. * @return Le flux. */ - public ImageInputStream getRealCacheImageInputStream() { - if (!getTransfCacheImageFile().exists()) - rebuiltTransfCacheImage(); + public ImageInputStream getRealCacheImageInputStream(File _f) { +// if (!getTransfCacheImageFile().exists()) +// rebuiltTransfCacheImage(); - if (cacheRealInputStream_==null) { try { - cacheRealInputStream_=ImageIO.createImageInputStream(getTransfCacheImageFile()); + if (cacheRealInputStream_ != null) { + cacheRealInputStream_.close(); + } + cacheRealInputStream_=ImageIO.createImageInputStream(_f); } catch (IOException _exc) {} - } return cacheRealInputStream_; } @@ -476,7 +484,7 @@ f.delete(); } - rebuiltCacheImagesIfNeeded(newFiles,imgInpDir,null); + rebuiltCacheImagesIfNeeded(newFiles,srcFiles_,imgInpDir,null); } /** @@ -608,6 +616,7 @@ public boolean load(File _prjFile, ProgressionInterface _prog) { File outputDir=new File(rootPath,OUTPUT_DIR); File imgSrcDir=new File(rootPath,IMG_PGM_DIR); + File imgTransfDir=new File(rootPath,IMG_TRANSF_DIR); // Le fichier GRP File grpFile=new File(outputDir,"GRP.dat"); @@ -663,6 +672,18 @@ CtuluIOOperationSynthese ret=reader.read(velFile, null); velResults=(PivVelResults)ret.getSource(); } + + // Les r\xE9sultats instantan\xE9s de vitesse + File[] instantVelFiles=new File(rootPath,VEL_REAL_DIR).listFiles(); + if (instantVelFiles!=null && instantVelFiles.length>0) { + List<PivInstantVelResults> instantVel=new ArrayList<PivInstantVelResults>(); + for (File f : instantVelFiles) { + FileReadOperationAbstract reader=PivInstantVelFileFormat.getInstance().createReader(); + CtuluIOOperationSynthese ret=reader.read(f, null); + instantVel.add((PivInstantVelResults)ret.getSource()); + } + instantVelResults=instantVel.toArray(new PivInstantVelResults[0]); + } // Les r\xE9sultats de d\xE9bit File flowFile=new File(outputDir,"Discharge.dat"); @@ -683,7 +704,8 @@ // Chargement des images sources et v\xE9rification des caches. // srcFiles_.clear(); // srcFiles_.addAll(); - rebuiltCacheImagesIfNeeded(Arrays.asList(imgSrcDir.listFiles(FLT_FILES)),imgSrcDir, _prog); + rebuiltCacheImagesIfNeeded(Arrays.asList(imgSrcDir.listFiles(FLT_FILES)),srcFiles_,imgSrcDir, _prog); + rebuiltCacheImagesIfNeeded(Arrays.asList(imgTransfDir.listFiles(FLT_FILES)),transfFiles_,imgTransfDir, _prog); FuLog.trace("*** Chargement de "+rootPath+" ***"); if (orthoPoints!=null) { @@ -741,11 +763,17 @@ FuLog.trace("Pas d'images transform\xE9es."); } if (velResults!=null) { - FuLog.trace("R\xE9sultats de vitesses charg\xE9s"); + FuLog.trace("R\xE9sultats de vitesses moyenn\xE9es charg\xE9s"); } else { - FuLog.trace("Pas de r\xE9sultats de vitesses."); + FuLog.trace("Pas de r\xE9sultats de vitesses moyenn\xE9es."); } + if (instantVelResults!=null) { + FuLog.trace("R\xE9sultats de vitesses instantan\xE9es charg\xE9s"); + } + else { + FuLog.trace("Pas de r\xE9sultats de vitesses instantan\xE9es."); + } if (flowResults!=null) { FuLog.trace("R\xE9sultats de d\xE9bit charg\xE9s"); } @@ -982,6 +1010,25 @@ isModified=true; fireProjectStateChanged("velResults"); } + + /** + * Retourne les r\xE9sultats instantan\xE9s. + * @return Les r\xE9sultats, ou <tt>null</tt> s'ils n'ont pas \xE9t\xE9 d\xE9finis. + */ + public PivInstantVelResults[] getInstantVelResults() { + return instantVelResults; + } + + /** + * Definit les r\xE9sultats instantan\xE9s de calcul, et notifie que le projet a \xE9t\xE9 + * modifi\xE9. + * @param _res Les r\xE9sultats. <tt>null</tt> est autoris\xE9. + */ + public void setInstantVelResults(PivInstantVelResults[] _res) { + instantVelResults=_res; + isModified=true; + fireProjectStateChanged("instantVelResults"); + } /** * Retourne les r\xE9sultats de d\xE9bit. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2011-11-18 16:16:02
|
Revision: 6682 http://fudaa.svn.sourceforge.net/fudaa/?rev=6682&view=rev Author: bmarchan Date: 2011-11-18 16:15:51 +0000 (Fri, 18 Nov 2011) Log Message: ----------- Add : Calcul de moyenne partielle de vitesses et affichage. Modified Paths: -------------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeAverageAction.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivExeLauncher.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProject.java Added Paths: ----------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivSelectInstantVelResultsPanel.java Added: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivSelectInstantVelResultsPanel.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivSelectInstantVelResultsPanel.java (rev 0) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivSelectInstantVelResultsPanel.java 2011-11-18 16:15:51 UTC (rev 6682) @@ -0,0 +1,119 @@ +/* + * @creation 18 d\xE9c. 2008 + * @modification $Date:$ + * @license GNU General Public License 2 + * @copyright (c)1998-2008 CETMEF 2 bd Gambetta F-60231 Compiegne + * @mail fud...@li... + */ +package org.fudaa.fudaa.piv; + +import java.awt.Dimension; + +import javax.swing.JLabel; + +import org.fudaa.ctulu.CtuluUI; +import org.fudaa.ctulu.gui.CtuluDialogPanel; +import org.fudaa.ctulu.gui.CtuluListEditorModel; +import org.fudaa.ctulu.gui.CtuluListEditorPanel; + +import com.memoire.bu.BuVerticalLayout; + +/** + * Un panneau pour s\xE9lectionner les r\xE9sultats utilis\xE9s pour faire la moyenne des vitesses. + * Les resultats selectionn\xE9s sont sauv\xE9s dans le projet. + * + * @author mar...@de... + * @version $Id$ + */ +public class PivSelectInstantVelResultsPanel extends CtuluDialogPanel { + + /** Le mod\xE8le pour la liste des resultats */ + private CtuluListEditorModel mdResults_; + /** La liste des r\xE9sultats dans l'ordre */ + private CtuluListEditorPanel pnResults_; + + /** + * Constructeur. + * @param _ui Le parent pour la boite de dialogue. + */ + public PivSelectInstantVelResultsPanel(CtuluUI _ui) { + + setLayout(new BuVerticalLayout(5, true, true)); + + // Label r\xE9sultats + add(new JLabel(PivResource.getS("Liste des r\xE9sultats"),JLabel.LEFT)); + + // Liste des r\xE9sultats + mdResults_=new CtuluListEditorModel(false) { + @Override + public boolean isCellEditable(int _rowIndex, int _columnIndex) { + return false; + } + @Override + public Object createNewObject() { + return null; + } + }; + + pnResults_ = new CtuluListEditorPanel(mdResults_, false, false, false, false, false); + + setPreferredSize(new Dimension(300,200)); + + add(pnResults_); + } + + @Override + public void setValue(Object _usedResults) { + if (!(_usedResults instanceof boolean[])) + throw new IllegalArgumentException("bad type parameter"); + setSelectedResults((boolean[])_usedResults); + } + + @Override + public boolean[] getValue() { + return getSelectedResults(); + } + + /** + * D\xE9finit les resultats s\xE9lectionn\xE9s. + * @param _tool L'utilitaire + */ + public void setSelectedResults(boolean[] _usedResults) { + if (_usedResults==null) return; + + String[] values=new String[_usedResults.length]; + for (int i=0; i<_usedResults.length; i++) { + values[i]=PivResource.getS("R\xE9sultat : {0}", (i+1)); + } + + mdResults_.setData(values); + + for (int i=0; i<_usedResults.length; i++) { + if (_usedResults[i]) + pnResults_.getTable().getSelectionModel().addSelectionInterval(i, i); + } + + } + + /** + * @return Les r\xE9sultats selectionn\xE9s. + */ + public boolean[] getSelectedResults() { + boolean[] idSels=new boolean[mdResults_.getRowCount()]; + int[] sel=pnResults_.getTable().getSelectedRows(); + for (int i : sel) { + idSels[i]=true; + } + + return idSels; + } + + @Override + public boolean isDataValid() { + if (pnResults_.getTable().getSelectedRowCount()==0) { + setErrorText(PivResource.getS("Vous devez s\xE9lectionner 1 r\xE9sultat au moins")); + return false; + } + return true; + } +} Property changes on: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivSelectInstantVelResultsPanel.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeAverageAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeAverageAction.java 2011-11-18 16:01:46 UTC (rev 6681) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeAverageAction.java 2011-11-18 16:15:51 UTC (rev 6682) @@ -18,6 +18,7 @@ import org.fudaa.fudaa.piv.PivPreferences; import org.fudaa.fudaa.piv.PivProgressionPanel; import org.fudaa.fudaa.piv.PivResource; +import org.fudaa.fudaa.piv.PivSelectInstantVelResultsPanel; import org.fudaa.fudaa.piv.PivVisuPanel; import org.fudaa.fudaa.piv.io.PivExeLauncher; @@ -37,7 +38,7 @@ * @param _impl L'implementation. */ public PivComputeAverageAction(PivImplementation _impl) { - super(PivResource.getS("Filtrage/moyennation des vitesses instantan\xE9es"), null, "COMPUTE_AVERAGE"); + super(PivResource.getS("Filtrage/moyennation des vitesses instantan\xE9es..."), null, "COMPUTE_AVERAGE"); impl=_impl; setEnabled(false); @@ -62,6 +63,14 @@ PivExeLauncher.instance().setExePath(new File(PivPreferences.PIV.getStringProperty(PivPreferences.PIV_EXE_PATH))); } } + + PivSelectInstantVelResultsPanel pn=new PivSelectInstantVelResultsPanel(impl); + pn.setSelectedResults(impl.getCurrentProject().getUsedInstantVelResults()); + if (!pn.afficheModaleOk(impl.getFrame(), PivResource.getS("S\xE9lection des r\xE9sultats instantan\xE9s"), CtuluDialog.OK_CANCEL_OPTION)) { + return; + } + + impl.getCurrentProject().setUsedInstantVelResults(pn.getSelectedResults()); // La tache a ex\xE9cuter. CtuluTaskOperationGUI r=new CtuluTaskOperationGUI(impl, PivResource.getS("Filtrage/moyennation des vitesses instantan\xE9es")) { Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivExeLauncher.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivExeLauncher.java 2011-11-18 16:01:46 UTC (rev 6681) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivExeLauncher.java 2011-11-18 16:15:51 UTC (rev 6682) @@ -29,7 +29,8 @@ /** * Une classe pour lancer les executables externes. Les exe sont sous la forme * d'un script ou directement d'un executable. La plupart des exes sont lanc\xE9s - * dans des threads s\xE9par\xE9s. + * dans des threads s\xE9par\xE9s. Ils s'executent pour la plupart directement dans + * le repertoire temporaire du projet. * * @author Bertrand Marchand (mar...@de...) * @version $Id$ @@ -569,8 +570,9 @@ } /** - * Lance le filtrage des vitesses et leur restitution dans l'espace r\xE9el. - * Le filtrage se fait dans le r\xE9pertoire exe avant copie des fichiers. + * Lance le filtrage des vitesses et leur restitution dans l'espace r\xE9el, en tenant compte des resultats + * instantan\xE9s s\xE9lectionn\xE9s. + * Le filtrage est fait dans le r\xE9pertoire projet. * * @param _ana L'analyse pour la tache ex\xE9cut\xE9e. * @param _prj Le projet. @@ -580,13 +582,10 @@ */ public boolean launchFilterVelocities(CtuluAnalyze _ana, PivProject _prj, CtuluTaskOperationGUI _task) { File prjRoot=_prj.getRoot(); + File prjOutputs=new File(prjRoot,OUTPUT_DIR); File prjVelFlt=new File(prjRoot,VEL_FILTER_DIR); File prjVelRaw=new File(prjRoot,VEL_RAW_DIR); - File exeOutputs=new File(exePath,OUTPUT_DIR); - File exeVelRaw=new File(exePath,VEL_RAW_DIR); - File exeVelFlt=new File(exePath,VEL_FILTER_DIR); - // Nettoyage eventuel du repertoire des r\xE9sultats. prjVelFlt.mkdir(); for (File f : prjVelFlt.listFiles()) f.delete(); @@ -598,28 +597,18 @@ _task.setProgression(0); } - createExeDirs(); - - // Copie des fichiers r\xE9sultat sur le r\xE9pertoire exe - for (File f : prjVelRaw.listFiles()) - copyFile(prjVelRaw, exeVelRaw, f.getName()); - try { // Cr\xE9ation du fichier contenant la liste des fichiers piv.dat obtenus par calcul. - PrintWriter out=new PrintWriter(new File(exeOutputs,"list_avg.dat")); - for (File f : exeVelRaw.listFiles()) { - out.println(f.getName()); - } - out.close(); + _prj.saveUsedInstantVelResults(); // PIV_param.dat - File paramFile=new File(exeOutputs, "PIV_param.dat"); + File paramFile=new File(prjOutputs, "PIV_param.dat"); FileWriteOperationAbstract writer=PivParamFileFormat.getInstance().createWriter(); Object[] params=new Object[]{_prj.getComputeParameters(), _prj.getFlowParameters(), _prj.getTransfImageSize()}; CtuluIOOperationSynthese ret=writer.write(params, paramFile, null); // img_ref.dat - File imgRefFile = new File(exeOutputs, "img_ref.dat"); + File imgRefFile = new File(prjOutputs, "img_ref.dat"); writer = PivImgRefFileFormat.getInstance().createWriter(); params=new Object[]{_prj.getOrthoParameters(),_prj.getSrcImageSize()}; ret=writer.write(params, imgRefFile, _task); @@ -627,7 +616,7 @@ _task.setProgression(30); - String outs = FuLib.runProgram(new String[]{exePath+File.separator+EXES[6] + EXE_EXT}, exePath); + String outs = FuLib.runProgram(new String[]{exePath+File.separator+EXES[6] + EXE_EXT}, prjRoot); if (!outs.trim().equals("")) { _ana.addError(PivResource.getS("Erreur de filtrage des vitesses:\n")+outs); return false; @@ -640,11 +629,6 @@ if (_task!=null) _task.setProgression(80); - // On copie les fichiers vers le repertoire projet - for (File f : exeVelFlt.listFiles()) - copyFile(exeVelFlt, prjVelFlt, f.getName()); -// f.renameTo(new File(prjVelFlt,f.getName())); - FuLog.trace(PivResource.getS("Filtrage ok.")); } catch (IOException ex) { @@ -661,7 +645,7 @@ /** * Lance la moyennation des vitesses et leur restitution dans l'espace r\xE9el. Cette * methode doit \xEAtre appel\xE9e juste apr\xE8s le filtrage des vitesses. - * La moyennation se fait dans le r\xE9pertoire exe avant copie des fichiers. + * La moyennation se fait dans le r\xE9pertoire projet. * * @param _ana L'analyse pour la tache ex\xE9cut\xE9e. * @param _prj Le projet. @@ -673,10 +657,12 @@ File prjRoot=_prj.getRoot(); File prjOutputs=new File(prjRoot,OUTPUT_DIR); - File exeOutputs=new File(exePath,OUTPUT_DIR); + prjOutputs.mkdirs(); + // On supprime le fichier du repertoire projet + String faverage="average_vel.out"; + File resFile=new File(prjOutputs,faverage); + resFile.delete(); - prjOutputs.mkdir(); - String desc=PivResource.getS("Moyennation des vitesses..."); FuLog.trace(desc); if (_task!=null) { @@ -687,7 +673,7 @@ try { // list_avg.dat deja cr\xE9\xE9 auparavant => Pas de cr\xE9ation - String outs = FuLib.runProgram(new String[]{exePath+File.separator+EXES[5] + EXE_EXT}, exePath); + String outs = FuLib.runProgram(new String[]{exePath+File.separator+EXES[5] + EXE_EXT}, prjRoot); if (!outs.trim().equals("")) { _ana.addError(PivResource.getS("Erreur de moyennation des vitesses:\n")+outs); return false; @@ -696,12 +682,6 @@ if (_task!=null) _task.setProgression(50); - String faverage="average_vel.out"; - // On d\xE9place le fichier vers le repertoire projet - File resFile=new File(prjOutputs,faverage); - resFile.delete(); - new File(exeOutputs,faverage).renameTo(resFile); - // R\xE9cup\xE9ration des r\xE9sultats du projet. FileReadOperationAbstract reader = PivAverageVelFileFormat.getInstance().createReader(); CtuluIOOperationSynthese ret=reader.read(resFile, _task); @@ -725,7 +705,7 @@ return false; } finally { - delExeDirs(); +// delExeDirs(); } return true; Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProject.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProject.java 2011-11-18 16:01:46 UTC (rev 6681) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProject.java 2011-11-18 16:15:51 UTC (rev 6682) @@ -4,7 +4,11 @@ import java.awt.image.BufferedImage; import java.io.File; import java.io.FileFilter; +import java.io.FileNotFoundException; +import java.io.FileReader; import java.io.IOException; +import java.io.LineNumberReader; +import java.io.PrintWriter; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -23,6 +27,8 @@ import org.fudaa.ctulu.ProgressionInterface; import org.fudaa.ctulu.fileformat.FileReadOperationAbstract; import org.fudaa.ctulu.fileformat.FileWriteOperationAbstract; +import org.fudaa.ctulu.gis.GISLib; +import org.fudaa.ebli.commun.EbliLib; import org.fudaa.fudaa.piv.PivResource; import org.fudaa.fudaa.piv.io.PivAverageVelFileFormat; import org.fudaa.fudaa.piv.io.PivBathyFileFormat; @@ -37,6 +43,7 @@ import org.fudaa.fudaa.piv.io.PivParamFileFormat; import com.memoire.fu.FuLog; +import com.vividsolutions.jts.algorithm.LineIntersector; /** * Le projet contenant toutes les donn\xE9es. Chauqe projet peut \xEAtre sauv\xE9/relu @@ -90,6 +97,8 @@ protected PivVelResults velResults; /** Les r\xE9sultats des vitesses instantan\xE9es */ protected PivInstantVelResults[] instantVelResults; + /** Les r\xE9sultats instantan\xE9s utilis\xE9s pour le calcul des vitesses moyennes. */ + protected boolean[] usedInstantVelResults; /** Les r\xE9sultats de d\xE9bit calcul\xE9 */ protected PivFlowResults flowResults; /** La taille des images transform\xE9es */ @@ -705,6 +714,8 @@ // Les r\xE9sultats de vitesses instantan\xE9es dans l'espace r\xE9el. instantVelResults=loadInstantVelResults(_prog); + // Et ceux utilis\xE9s pour le calcul de moyenne + usedInstantVelResults=loadUsedInstantVelResults(_prog); // Les r\xE9sultats de d\xE9bit File flowFile=new File(outputDir,"Discharge.dat"); @@ -811,7 +822,7 @@ } /** - * Chargement des resultats de vitesses instantan\xE9es dans l'espace r\xE9el. + * Charge les resultats de vitesses instantan\xE9es dans l'espace r\xE9el. * @param _prog L'interface de progression. * @return Les resultats ou <tt>null</tt> si aucun r\xE9sultat. */ @@ -828,6 +839,61 @@ } return null; } + + /** + * Charge les resultats de vitesses instantan\xE9s qui ont servi a calculer les vitesses moyennes. + * @param _prog L'interface de progression. + * @return L'utilisation du resultat si l'index correspondant est true. + */ + public boolean[] loadUsedInstantVelResults(ProgressionInterface _prog) { + boolean[] res; + + File[] instantVelFiles=new File(rootPath,VEL_RAW_DIR).listFiles(); + // Pas de r\xE9sultats instantan\xE9s + if (instantVelFiles==null || instantVelFiles.length==0) { + res=new boolean[0]; + return res; + } + + File outputDir=new File(rootPath,OUTPUT_DIR); + File list=new File(outputDir,"list_avg.dat"); + res=new boolean[instantVelFiles.length]; + + // Pas de liste de r\xE9sultats instantan\xE9s + if (!list.exists()) { + Arrays.fill(res, true); + return res; + } + + // Le fichier existe. + else { + LineNumberReader inp=null; + try { + inp = new LineNumberReader(new FileReader(list)); + String line; + while ((line = inp.readLine()) != null) { + for (int i = 0; i < instantVelFiles.length; i++) { + if (instantVelFiles[i].getName().equals(line)) { + res[i] = true; + break; + } + } + } + } + catch (IOException e) { + Arrays.fill(res, true); + } + finally { + try { + if (inp != null) + inp.close(); + } + catch (IOException e) { + } + } + return res; + } + } /** * Sauve le projet sur le fichier projet. Les infos sont sauv\xE9es sur le @@ -890,11 +956,43 @@ CtuluIOOperationSynthese ret=writer.write(transect, transectFile, null); } + // Les resultats utilis\xE9s pour le calcul de vitesse moyenne. + saveUsedInstantVelResults(); + + isModified=false; return true; } /** + * Sauvegarde sur une liste les resultats instantan\xE9es utilis\xE9s pour le calcul de + * moyennation. + */ + public void saveUsedInstantVelResults() { + File outputDir=new File(rootPath,OUTPUT_DIR); + + File[] instantVelFiles=new File(rootPath,VEL_RAW_DIR).listFiles(); + // Pas de r\xE9sultats instantan\xE9s + if (instantVelFiles==null || instantVelFiles.length==0) return; + + // Cr\xE9ation du fichier contenant la liste des fichiers piv.dat obtenus par calcul. + PrintWriter out=null; + try { + out = new PrintWriter(new File(outputDir,"list_avg.dat")); + for (int i=0; i<instantVelFiles.length; i++) { + if (usedInstantVelResults[i]) + out.println(instantVelFiles[i].getName()); + } + } + catch (IOException e) { + } + finally { + if (out!=null) + out.close(); + } + } + + /** * Test si le projet a \xE9t\xE9 modifi\xE9. * @return true si le projet a \xE9t\xE9 modifi\xE9. */ @@ -1067,7 +1165,13 @@ * @param _res Les r\xE9sultats. <tt>null</tt> est autoris\xE9. */ public void setInstantVelResults(PivInstantVelResults[] _res) { + if (CtuluLibArray.isEquals(instantVelResults, _res)) return; + instantVelResults=_res; + + usedInstantVelResults=new boolean[instantVelResults.length]; + Arrays.fill(usedInstantVelResults, true); + isModified=true; fireProjectStateChanged("instantVelResults"); } @@ -1091,6 +1195,22 @@ fireProjectStateChanged("flowResults"); } + /** + * Definit les resultats instantan\xE9s \xE0 utiliser pour le calcul de moyennation. + * @param _usedVelResults + */ + public void setUsedInstantVelResults(boolean[] _usedVelResults) { + usedInstantVelResults=_usedVelResults; + } + + /** + * @return La liste des resultats instantan\xE9s utuilis\xE9s pour la moyennation. La valeur + * a l'index du resultat est True si utilis\xE9. + */ + public boolean[] getUsedInstantVelResults() { + return usedInstantVelResults; + } + void fireProjectStateChanged(String _prop) { for (PivProjectStateListener listener : listeners) { listener.projectStateChanged(this,_prop); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2011-11-21 11:23:50
|
Revision: 6689 http://fudaa.svn.sourceforge.net/fudaa/?rev=6689&view=rev Author: bmarchan Date: 2011-11-21 11:23:40 +0000 (Mon, 21 Nov 2011) Log Message: ----------- Add : Possibilit?\195?\169 de choisir son image en espace transform?\195?\169. Modified Paths: -------------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivOriginalView.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivTransfView.java Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivOriginalView.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivOriginalView.java 2011-11-21 11:20:20 UTC (rev 6688) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivOriginalView.java 2011-11-21 11:23:40 UTC (rev 6689) @@ -60,6 +60,8 @@ PivOriginalImageModel mdlOriginalImage; PivOrthoPointsModel mdlOrthoPoints; + + private boolean enableEvents_=true; /** * Constructeur. @@ -195,8 +197,6 @@ enableEvents_=true; } - - boolean enableEvents_=true; @Override public void projectStateChanged(PivProject _prj, String _prop) { Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivTransfView.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivTransfView.java 2011-11-21 11:20:20 UTC (rev 6688) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivTransfView.java 2011-11-21 11:23:40 UTC (rev 6689) @@ -4,6 +4,10 @@ package org.fudaa.fudaa.piv; import java.awt.Color; +import java.awt.Dimension; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; +import java.io.File; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -30,6 +34,7 @@ import org.fudaa.fudaa.piv.layer.PivCntGridModel; import org.fudaa.fudaa.piv.layer.PivIASALayer; import org.fudaa.fudaa.piv.layer.PivIASAModel; +import org.fudaa.fudaa.piv.layer.PivImageRasterLayer; import org.fudaa.fudaa.piv.layer.PivTransfImageModel; import org.fudaa.fudaa.piv.metier.PivGrid; import org.fudaa.fudaa.piv.metier.PivProject; @@ -59,11 +64,13 @@ PivIASALayer cqIASA_; ZCalquePointEditable cqGrille_; ZCalqueLigneBriseeEditable cqCntGrille_; - ZCalqueImageRaster cqTransfImage_; + PivImageRasterLayer cqTransfImage_; PivTransfImageModel mdlTransfImage; PivIASAModel mdlIASA; PivCntGridModel mdlCntGrid; ZModelePointEditable mdlGrid; + + boolean enableEvents_=true; /** * Constructeur. @@ -126,7 +133,7 @@ cqGrille_.setDestructible(false); // Layer de l'image - cqTransfImage_ = new ZCalqueImageRaster(); + cqTransfImage_ = new PivImageRasterLayer(); cqTransfImage_.setTitle(PivResource.getS("Image ortho")); cqTransfImage_.setName("cqTransfImg"); @@ -168,13 +175,65 @@ /** * Construction des outils sp\xE9cifiques \xE0 cette vue. */ - private void buildTools() {} + private void buildTools() { + // La liste d\xE9roulante des images + cbImg_ = new BuComboBox(); + cbImg_.addItemListener(new ItemListener() { + + @Override + public void itemStateChanged(ItemEvent e) { + if (e.getStateChange()==ItemEvent.SELECTED) { + if (!enableEvents_) return; + + if (cqTransfImage_!=null && cqTransfImage_.getModelImage()!=null) { + cqTransfImage_.getModelImage().setImage(cbImg_.getSelectedIndex()); + // Pour que le calque soit r\xE9affich\xE9. + cqTransfImage_.repaint(); + } + } + } + }); + cbImg_.setPreferredSize(new Dimension(200, cbImg_.getPreferredSize().height)); + cbImg_.setMaximumSize(cbImg_.getPreferredSize()); + cbImg_.setToolTipText(PivResource.getS("Affiche l'image s\xE9lectionn\xE9e")); + cbImg_.setEnabled(false); + } /** * Mise a jour les outils. */ - private void majTools() {} + private void majTools() { + enableEvents_=false; + + // La liste d\xE9roulante des images, avec s\xE9lection d'une image diff\xE9rente si inexistante. + Object o=cbImg_.getSelectedItem(); + cbImg_.removeAllItems(); + cbImg_.setEnabled(false); + if (prj_ != null) { + for (File f : prj_.getTransfImageFiles()) { + cbImg_.addItem(f.getName()); + } + cbImg_.setEnabled(prj_.getTransfImageFiles().length > 0); + } + + boolean found=false; + if (o != null) { + for (int i=0; i<cbImg_.getItemCount(); i++) { + if (cbImg_.getItemAt(i).equals(o)) { + cbImg_.setSelectedItem(o); + found=true; + break; + } + } + } + if (!found) { + cbImg_.setSelectedItem(cbImg_.getItemCount()==0?-1:0); + } + + enableEvents_=true; + } + @Override public void projectStateChanged(PivProject _prj, String _prop) { if ("transfImages".equals(_prop)) { @@ -201,7 +260,7 @@ @Override public JComponent[] getSpecificTools() { - return new JComponent[0]; + return new JComponent[]{cbImg_}; } @Override This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2011-12-01 13:46:49
|
Revision: 6747 http://fudaa.svn.sourceforge.net/fudaa/?rev=6747&view=rev Author: bmarchan Date: 2011-12-01 13:46:42 +0000 (Thu, 01 Dec 2011) Log Message: ----------- Add : Possibilit?\195?\169 de modiification de structure pour une g?\195?\169om?\195?\169trie Modified Paths: -------------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivTransfView.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeGridDefinitionAction.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOrthoGRPAction.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivCntGridModel.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivOrthoPointsModel.java Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivTransfView.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivTransfView.java 2011-12-01 13:43:22 UTC (rev 6746) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivTransfView.java 2011-12-01 13:46:42 UTC (rev 6747) @@ -17,12 +17,10 @@ import javax.units.NonSI; import org.fudaa.ebli.calque.BCalqueAffichage; -import org.fudaa.ebli.calque.ZCalqueImageRaster; import org.fudaa.ebli.calque.dessin.DeForme; import org.fudaa.ebli.calque.edition.ZCalqueLigneBriseeEditable; import org.fudaa.ebli.calque.edition.ZCalquePointEditable; import org.fudaa.ebli.calque.edition.ZModelePointEditable; -import org.fudaa.ebli.commun.EbliActionAbstract; import org.fudaa.ebli.commun.EbliCoordinateDefinition; import org.fudaa.ebli.commun.EbliFormatter; import org.fudaa.ebli.commun.EbliUIProperties; @@ -177,6 +175,13 @@ } /** + * @return Le calque comportant le contour de grille + */ + public ZCalqueLigneBriseeEditable getCntGridLayer() { + return cqCntGrille_; + } + + /** * Construction des outils sp\xE9cifiques \xE0 cette vue. */ private void buildTools() { Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeGridDefinitionAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeGridDefinitionAction.java 2011-12-01 13:43:22 UTC (rev 6746) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeGridDefinitionAction.java 2011-12-01 13:46:42 UTC (rev 6747) @@ -7,13 +7,15 @@ */ package org.fudaa.fudaa.piv.action; -import com.memoire.bu.BuDesktop; import java.awt.Container; + import javax.swing.JComponent; import javax.swing.JInternalFrame; import javax.swing.SwingUtilities; import javax.swing.event.InternalFrameAdapter; import javax.swing.event.InternalFrameEvent; + +import org.fudaa.ctulu.CtuluAnalyze; import org.fudaa.ebli.calque.dessin.DeForme; import org.fudaa.ebli.calque.edition.ZCalqueEditionInteraction; import org.fudaa.ebli.calque.edition.ZCalqueEditionInteractionTargetI; @@ -29,6 +31,8 @@ import org.fudaa.fudaa.piv.metier.PivCntGrid; import org.fudaa.fudaa.piv.metier.PivGrid; +import com.memoire.bu.BuDesktop; + /** * Une action pour saisir le contour de grille et la grille de calcul. * @@ -66,8 +70,9 @@ * @return true. */ public boolean addNewPolygone(GrPolygone _pg, ZEditionAttributesDataI _data) { - if (_pg.sommets_.nombre()!=4) { - pnCalques_.getCtuluUI().error(PivResource.getS("Le contour de grille doit comporter 4 sommets.")); + CtuluAnalyze ana=new CtuluAnalyze(); + if (!pnCalques_.getTransfView().getCntGridLayer().modeleDonnees().isDataValid(_pg.toCoordinateSequence(), _data, ana)) { + pnCalques_.getCtuluUI().error(ana.getFatalError()); cqEdition_.cancelEdition(); atomicChanged(); return true; Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOrthoGRPAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOrthoGRPAction.java 2011-12-01 13:43:22 UTC (rev 6746) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOrthoGRPAction.java 2011-12-01 13:46:42 UTC (rev 6747) @@ -7,13 +7,11 @@ */ package org.fudaa.fudaa.piv.action; -import com.memoire.bu.BuButton; -import com.memoire.bu.BuDesktop; -import com.memoire.fu.FuLog; import java.awt.Container; import java.awt.Dimension; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; + import javax.swing.AbstractButton; import javax.swing.JComponent; import javax.swing.JDialog; @@ -21,6 +19,8 @@ import javax.swing.SwingUtilities; import javax.swing.event.InternalFrameAdapter; import javax.swing.event.InternalFrameEvent; + +import org.fudaa.ctulu.CtuluAnalyze; import org.fudaa.ebli.calque.dessin.DeForme; import org.fudaa.ebli.calque.edition.BPaletteEdition; import org.fudaa.ebli.calque.edition.BPaletteEditionClientInterface; @@ -38,6 +38,10 @@ import org.fudaa.fudaa.piv.layer.PivOrthoPointsModel; import org.fudaa.fudaa.piv.metier.PivOrthoPoint; +import com.memoire.bu.BuButton; +import com.memoire.bu.BuDesktop; +import com.memoire.fu.FuLog; + /** * Une action pour saisir les points de r\xE9f\xE9rence au sol. Cette action est * utilis\xE9e comme controller \xE0 la palette et au calque d'\xE9dition d\xE9di\xE9. @@ -79,26 +83,19 @@ * @return Si false, la saisie n'est pas stopp\xE9e. */ public boolean addNewMultiPoint(GrPolyligne _pg, ZEditionAttributesDataI _data) { - if (_pg.sommets_.nombre() < 6) { - pnCalques_.getCtuluUI().error(PivResource.getS("Le nombre de points doit \xEAtre au minimum de 6.")); -// pnCalques_.getCalqueDessin().cancelEdition(); -// atomicChanged(); + CtuluAnalyze ana=new CtuluAnalyze(); + if (!pnCalques_.getOriginalView().getOrthoPointsLayer().modeleDonnees().isDataValid(_pg.toCoordinateSequence(), _data, ana)) { + pnCalques_.getCtuluUI().error(ana.getFatalError()); return false; } - - // Controle des valeurs des points r\xE9els. + + // Valeurs des points r\xE9els. GrPoint[] realPts = new GrPoint[_pg.sommets_.nombre()]; for (int i = 0; i < _pg.sommets_.nombre(); i++) { Double x = (Double) _data.getValue(PivOrthoPointsModel.ATT_IND_XR, i); Double y = (Double) _data.getValue(PivOrthoPointsModel.ATT_IND_YR, i); Double z = (Double) _data.getValue(PivVisuPanel.ATT_IND_ZR, i); realPts[i] = new GrPoint(x.doubleValue(), y.doubleValue(), z.doubleValue()); - for (int j = 0; j < i; j++) { - if (realPts[j].distance(realPts[i]) == 0) { - pnCalques_.getCtuluUI().error(PivResource.getS("Les points {0} et {1} ont des coordonn\xE9es r\xE9elles confondues.",j+1,i+1)); - return false; - } - } } // Cr\xE9ation des orthopoints => les coordonn\xE9es images sont invers\xE9es. Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivCntGridModel.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivCntGridModel.java 2011-12-01 13:43:22 UTC (rev 6746) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivCntGridModel.java 2011-12-01 13:46:42 UTC (rev 6747) @@ -1,15 +1,19 @@ package org.fudaa.fudaa.piv.layer; -import com.vividsolutions.jts.geom.CoordinateSequence; +import org.fudaa.ctulu.CtuluAnalyze; import org.fudaa.ctulu.gis.GISAttribute; import org.fudaa.ctulu.gis.GISAttributeModelObjectArray; import org.fudaa.ctulu.gis.GISZoneCollectionLigneBrisee; +import org.fudaa.ebli.calque.edition.ZEditionAttributesDataI; import org.fudaa.ebli.calque.edition.ZModeleLigneBriseeEditable; import org.fudaa.ebli.geometrie.GrPolygone; +import org.fudaa.fudaa.piv.PivResource; import org.fudaa.fudaa.piv.PivVisuPanel; import org.fudaa.fudaa.piv.metier.PivCntGrid; import org.fudaa.fudaa.piv.metier.PivProject; +import com.vividsolutions.jts.geom.CoordinateSequence; + /** * Un modele pour le contour de grille * @@ -27,11 +31,20 @@ */ public PivCntGridModel() { super(new GISZoneCollectionLigneBrisee()); - + GISAttribute[] attrs = new GISAttribute[]{PivVisuPanel.ATT_LABEL}; getGeomData().setAttributes(attrs, null); } + @Override + public boolean isDataValid(CoordinateSequence _seq, ZEditionAttributesDataI _data, CtuluAnalyze _ana) { + if (_seq.size()!=5) { + _ana.addFatalError(PivResource.getS("Le contour de grille doit comporter 4 sommets.")); + return false; + } + return true; + } + /** * Redefinit le projet, et remet a jour le modele. * @param _prj Le projet courant. @@ -53,8 +66,8 @@ this.addGeometry(pl, null, null, null); // Les labels - GISAttributeModelObjectArray lbData = (GISAttributeModelObjectArray) PivVisuPanel.ATT_LABEL.createDataForGeom(null, pl.nombre()); - for (int i=0; i<pl.nombre(); i++) { + GISAttributeModelObjectArray lbData = (GISAttributeModelObjectArray) PivVisuPanel.ATT_LABEL.createDataForGeom(null, pl.nombre()+1); + for (int i=0; i<lbData.getSize(); i++) { lbData.set(i, "P"+(i+1)); } zl.getModel(PivVisuPanel.ATT_LABEL) .setObject(0, lbData, null); Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivOrthoPointsModel.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivOrthoPointsModel.java 2011-12-01 13:43:22 UTC (rev 6746) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivOrthoPointsModel.java 2011-12-01 13:46:42 UTC (rev 6747) @@ -1,7 +1,8 @@ package org.fudaa.fudaa.piv.layer; -import com.vividsolutions.jts.geom.CoordinateSequence; import java.awt.Dimension; + +import org.fudaa.ctulu.CtuluAnalyze; import org.fudaa.ctulu.gis.GISAttribute; import org.fudaa.ctulu.gis.GISAttributeDouble; import org.fudaa.ctulu.gis.GISAttributeModelDoubleArray; @@ -9,6 +10,7 @@ import org.fudaa.ctulu.gis.GISGeometryFactory; import org.fudaa.ctulu.gis.GISMultiPoint; import org.fudaa.ctulu.gis.GISZoneCollectionMultiPoint; +import org.fudaa.ebli.calque.edition.ZEditionAttributesDataI; import org.fudaa.ebli.calque.edition.ZModeleMultiPointEditable; import org.fudaa.ebli.geometrie.GrPoint; import org.fudaa.fudaa.piv.PivResource; @@ -16,6 +18,8 @@ import org.fudaa.fudaa.piv.metier.PivOrthoPoint; import org.fudaa.fudaa.piv.metier.PivProject; +import com.vividsolutions.jts.geom.CoordinateSequence; + /** * Un modele pour les points d'orthorectification, soit dans l'espace d'image * reconditionn\xE9e, soit dans l'espace r\xE9el. @@ -57,9 +61,9 @@ } }; - // Le projet. + /** Le projet. */ PivProject prj_; - // Le type de mod\xE8le + /** Le type de mod\xE8le */ int type_=PivVisuPanel.MODE_ORIGINAL_VIEW; /** @@ -83,6 +87,41 @@ getGeomData().setAttributes(attrs, null); } + @Override + public boolean isDataValid(CoordinateSequence _seq, ZEditionAttributesDataI _data, CtuluAnalyze _ana) { + + if (_seq.size() < 6) { + _ana.addFatalError(PivResource.getS("Le nombre de points doit \xEAtre au minimum de 6.")); + return false; + } + + // Controle des valeurs des points r\xE9els. + GrPoint[] realPts = new GrPoint[_seq.size()]; + for (int i = 0; i < _seq.size(); i++) { + Double x; + Double y; + if (type_ == PivVisuPanel.MODE_ORIGINAL_VIEW) { + x = (Double) _data.getValue(PivOrthoPointsModel.ATT_IND_XR, i); + y = (Double) _data.getValue(PivOrthoPointsModel.ATT_IND_YR, i); + } + else { + x = _seq.getOrdinate(i, 0); + y = _seq.getOrdinate(i, 1); + } + Double z = (Double) _data.getValue(PivVisuPanel.ATT_IND_ZR, i); + realPts[i] = new GrPoint(x.doubleValue(), y.doubleValue(), z.doubleValue()); + + for (int j = 0; j < i; j++) { + if (realPts[j].distance(realPts[i]) == 0) { + _ana.addFatalError(PivResource.getS("Les points {0} et {1} ont des coordonn\xE9es r\xE9elles confondues.", j + 1, i + 1)); + return false; + } + } + } + + return true; + } + /** * Redefinit le projet, et remet a jour le modele * @param _prj Le projet associ\xE9 au mod\xE8le. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2011-12-02 10:31:16
|
Revision: 6764 http://fudaa.svn.sourceforge.net/fudaa/?rev=6764&view=rev Author: bmarchan Date: 2011-12-02 10:31:06 +0000 (Fri, 02 Dec 2011) Log Message: ----------- Fix : Divers correctifs Modified Paths: -------------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivManageOriginalFilesPanel.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivTransfView.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivSelectImagesAction.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivExeLauncher.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProject.java Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivManageOriginalFilesPanel.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivManageOriginalFilesPanel.java 2011-12-02 08:36:54 UTC (rev 6763) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivManageOriginalFilesPanel.java 2011-12-02 10:31:06 UTC (rev 6764) @@ -43,7 +43,7 @@ ui_=_ui; setLayout(new BuVerticalLayout(5, true, true)); - setHelpText(PivResource.getS("Les images seront utilis\xE9es pour le calcul dans l'ordre ou elles sont d\xE9finies.\nUtilisez Monter/Descendre pour modifier cet ordre.")); + setHelpText(PivResource.getS("Les images pgm seront utilis\xE9es pour le calcul dans l'ordre ou elles sont d\xE9finies.\nUtilisez Monter/Descendre pour modifier cet ordre.")); // Label images add(new JLabel(PivResource.getS("Liste des images"),JLabel.LEFT)); Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivTransfView.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivTransfView.java 2011-12-02 08:36:54 UTC (rev 6763) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivTransfView.java 2011-12-02 10:31:06 UTC (rev 6764) @@ -246,6 +246,7 @@ @Override public void projectStateChanged(PivProject _prj, String _prop) { if ("transfImages".equals(_prop)) { + majTools(); mdlTransfImage.update(); mdlIASA.update(); } Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivSelectImagesAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivSelectImagesAction.java 2011-12-02 08:36:54 UTC (rev 6763) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivSelectImagesAction.java 2011-12-02 10:31:06 UTC (rev 6764) @@ -9,11 +9,7 @@ import java.awt.event.ActionEvent; import java.io.File; -import java.util.ArrayList; -import java.util.List; -import javax.swing.filechooser.FileFilter; - import org.fudaa.ctulu.CtuluAnalyze; import org.fudaa.ctulu.gui.CtuluDialog; import org.fudaa.ctulu.gui.CtuluTaskOperationGUI; @@ -26,7 +22,6 @@ import org.fudaa.fudaa.piv.PivResource; import org.fudaa.fudaa.piv.PivVisuPanel; import org.fudaa.fudaa.piv.io.PivExeLauncher; -import org.fudaa.fudaa.piv.metier.PivProject; /** * Une action pour selectionner et reconditionner les images sources. @@ -36,7 +31,6 @@ */ public class PivSelectImagesAction extends EbliActionSimple { PivImplementation impl; -// MdlSceneEditor sceneEditor_; PivManageOriginalFilesPanel pnMngImages; CtuluDialog diProgress_; @@ -48,8 +42,6 @@ super(PivResource.getS("S\xE9lection des images sources..."), null, "SELECT_IMAGES"); impl=_impl; -// setSceneEditor(_sceneEditor); -// sceneEditor_.getScene().addSelectionListener(this); setEnabled(false); } @@ -86,46 +78,29 @@ } final File[] srcImgFiles=pnMngImages.getFiles(); -// List<File> img2Repack=new ArrayList<File>(); -// for (File f : srcImgFiles) { -// if (!f.getPath().startsWith(impl.getCurrentProject().getRoot().getPath()) && PivProject.FLT_PGM_FILES.accept(f)) { -// img2Repack.add(f); -// } -// } - impl.getCurrentProject().setSrcImagesFiles(srcImgFiles); // Le reconditionnement des images. - CtuluTaskOperationGUI r=new CtuluTaskOperationGUI(impl, PivResource.getS("Reconditionnement des images")) { + CtuluTaskOperationGUI r=new CtuluTaskOperationGUI(impl, PivResource.getS("Traitement des images sources")) { @Override public void act() { try { CtuluAnalyze ana=new CtuluAnalyze(); ana.setDesc(getName()); - PivExeLauncher.instance().launchRepackingImg(ana, impl.getCurrentProject(), this, srcImgFiles); + impl.getCurrentProject().setSrcImagesFiles(srcImgFiles, this); if (ana.containsErrorOrFatalError()) { impl.error(ana.getResume()); return; } - // Suppression des images transform\xE9es pour ne pas avoir d'effets de bord - File prjTransfImgDir=new File(impl.getCurrentProject().getRoot(), PivProject.IMG_TRANSF_DIR); - if (prjTransfImgDir.exists()) { - File[] prjTransfImgFiles=prjTransfImgDir.listFiles(); - for (int i=0; i<prjTransfImgFiles.length; i++) { - prjTransfImgFiles[i].delete(); - } - -// impl.getCurrentProject().setTransfImagesChanged(); - } } finally { diProgress_.dispose(); } impl.get2dFrame().getVisuPanel().setViewMode(PivVisuPanel.MODE_ORIGINAL_VIEW); - impl.message(PivResource.getS("{0} images ont \xE9t\xE9 reconditionn\xE9es avec succ\xE8s",impl.getCurrentProject().getSrcImageFiles().length)); +// impl.message(PivResource.getS("{0} images ont \xE9t\xE9 reconditionn\xE9es avec succ\xE8s",impl.getCurrentProject().getSrcImageFiles().length)); } }; @@ -135,27 +110,14 @@ diProgress_.setDefaultCloseOperation(CtuluDialog.DO_NOTHING_ON_CLOSE); diProgress_.setTitle(r.getName()); -// r.start(); -// diProgress_.afficheDialogModal(); + r.start(); + diProgress_.afficheDialogModal(); } /** * @return true Si toutes les donn\xE9es sont pr\xE9sentes pour un lancement. */ public boolean isValide() { -// if (impl.getCurrentProject().getOrthoPoints()==null) { -// impl.error(PivResource.getS("Erreur"), PivResource.getS("Aucun point de r\xE9f\xE9rence au sol n'a \xE9t\xE9 d\xE9fini")); -// return false; -// } -// if (impl.getCurrentProject().getOrthoParameters()==null) { -// impl.error(PivResource.getS("Erreur"), PivResource.getS("Les param\xE8tres d'orthorectification n'ont pas \xE9t\xE9 donn\xE9s")); -// return false; -// } -// if (!impl.getCurrentProject().hasInputImages()) { -// impl.error(PivResource.getS("Erreur"), PivResource.getS("Le projet ne contient aucune image \xE0 transformer")); -// return false; -// } - return true; } Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivExeLauncher.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivExeLauncher.java 2011-12-02 08:36:54 UTC (rev 6763) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivExeLauncher.java 2011-12-02 10:31:06 UTC (rev 6764) @@ -326,7 +326,7 @@ // On signale au projet que les images transform\xE9es ont chang\xE9. finally { delExeDirs(); - _prj.setTransfImagesChanged(); + _prj.setTransfImagesChanged(_task); if (_task!=null) _task.setProgression(100); } Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProject.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProject.java 2011-12-02 08:36:54 UTC (rev 6763) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProject.java 2011-12-02 10:31:06 UTC (rev 6764) @@ -27,6 +27,7 @@ import org.fudaa.ctulu.ProgressionInterface; import org.fudaa.ctulu.fileformat.FileReadOperationAbstract; import org.fudaa.ctulu.fileformat.FileWriteOperationAbstract; +import org.fudaa.ctulu.gui.CtuluTaskOperationGUI; import org.fudaa.fudaa.piv.PivResource; import org.fudaa.fudaa.piv.io.PivAverageVelFileFormat; import org.fudaa.fudaa.piv.io.PivBathyFileFormat; @@ -222,7 +223,7 @@ * @param _dir Le r\xE9pertoire contenant les fichiers \xE0 mettre en cache. * @return false : Si un probl\xE8me s'est produit lors de la production. */ - public boolean rebuiltCacheImagesIfNeeded(List<File> _files, final List<File> _readyFiles, final File _dir, ProgressionInterface _prog) { + public boolean rebuiltCacheImagesIfNeeded(List<File> _files, final List<File> _readyFiles, final File _dir, final ProgressionInterface _prog) { boolean b=true; File imgCacheDir=new File(_dir,"cache"); @@ -230,13 +231,19 @@ _readyFiles.clear(); - final String prop=_dir.equals(new File(rootPath,IMG_PGM_DIR)) ? "pgmImages":"transfImages"; + final boolean bsrc=_dir.equals(new File(rootPath,IMG_PGM_DIR)); final List<File> file2Cache=new ArrayList<File>(); final List<Integer> posFile2Cache=new ArrayList<Integer>(); final List<File> cacheFiles=new ArrayList<File>(); // Cr\xE9ation des images cache manquantes + if (_prog!=null) { + _prog.setDesc(bsrc ? PivResource.getS("Cr\xE9ation des caches images sources"): + PivResource.getS("Cr\xE9ation des caches images transform\xE9es")); + _prog.setProgression(0); + } + for (int i=0; i<_files.size(); i++) { File cache = getCacheImageFile(_files.get(i)); cacheFiles.add(cache); @@ -247,7 +254,6 @@ else { file2Cache.add(_files.get(i)); posFile2Cache.add(i); -// b &= createCacheFromImage(f); } } @@ -257,8 +263,11 @@ public void run() { for (int i=0; i<file2Cache.size(); i++) { createCacheFromImage(file2Cache.get(i)); + if (_prog!=null) + _prog.setProgression(i*100/file2Cache.size()); + _readyFiles.add(posFile2Cache.get(i), file2Cache.get(i)); - fireProjectStateChanged(prop); +// fireProjectStateChanged(bsrc ? "pgmImages":"transfImages"); } // Suppression des images cache inutiles @@ -266,31 +275,18 @@ if (!cacheFiles.contains(f)) f.delete(); } + + if (_prog!=null) + _prog.setProgression(100); } }; // new Thread(r).start(); r.run(); - fireProjectStateChanged(prop); + fireProjectStateChanged(bsrc ? "pgmImages":"transfImages"); return b; } -// /** -// * Retourne le chemin des images cache des images reconditionn\xE9es. -// * @return Les chemins des images. -// */ -// public File[] getPgmCacheImageFiles() { -// File imgInpDir=new File(rootPath,IMG_PGM_DIR); -// if (!imgInpDir.isDirectory()) return new File[0]; -// -// File[] files=imgInpDir.listFiles(new FileFilter() { -// public boolean accept(File _f) { -// return _f.isFile() && _f.getName().startsWith("__") && _f.getName().endsWith(".jpg"); -// } -// }); -// return files; -// } - /** * Retourne le chemin du fichier cache pour un fichier donn\xE9. Les fichiers * cache sont utilis\xE9s pour l'affichage. Si le type de l'image n'est pas @@ -305,46 +301,34 @@ String name="__"+CtuluLibFile.getSansExtension(_file.getName())+".jpg"; return new File(_file.getParentFile(), "cache"+File.separator+name); } - - /** - * Retourne le chemin de l'image cache transform\xE9e. - * @return Le chemin de l'image cache transform\xE9e. - */ -// public File getPgmCacheImageFile() { -// return getCacheImageFile(getSrcImageFiles()[0]); -//// File[] files=getPgmCacheImageFiles(); -//// return files[0]; -//// return new File(new File(rootPath,IMG_PGM_DIR),"cache.jpg"); -// } /** - * Retourne le chemin de l'image cache transform\xE9e. - * @return Le chemin de l'image cache transform\xE9e. - */ - public File getTransfCacheImageFile() { - return new File(new File(rootPath,IMG_TRANSF_DIR),"cache.jpg"); - } - - /** * Retourne le flux d'entr\xE9e de l'image cache indiqu\xE9e. L'ancien flux est alors * ferm\xE9. * @param _f L'image cache * @return Le flux. */ public ImageInputStream getPgmCacheImageInputStream(File _f) { -// if (!getPgmCacheImageFile().exists()) -// rebuiltPgmCacheImages(null); - try { - if (cachePgmInputStream_ != null) { - cachePgmInputStream_.close(); - } + closePgmCacheImageInputStream(); cachePgmInputStream_=ImageIO.createImageInputStream(_f); } catch (IOException _exc) { } return cachePgmInputStream_; } + + /** + * Fermeture de l'input stream cache pgm + */ + private void closePgmCacheImageInputStream() { + try { + if (cachePgmInputStream_ != null) + cachePgmInputStream_.close(); + cachePgmInputStream_=null; + } + catch (IOException _exc) {} + } /** * Retourne le flux d'entr\xE9e de l'image cache transform\xE9e en espace transform\xE9. L'ancien flux est alors @@ -353,13 +337,8 @@ * @return Le flux. */ public ImageInputStream getTransfCacheImageInputStream(File _f) { -// if (!getTransfCacheImageFile().exists()) -// rebuiltTransfCacheImage(); - try { - if (cacheTransfInputStream_ != null) { - cacheTransfInputStream_.close(); - } + closeTransfCacheImageInputStream(); cacheTransfInputStream_=ImageIO.createImageInputStream(_f); } catch (IOException _exc) {} @@ -367,24 +346,43 @@ } /** + * Fermeture de l'input stream cache image transform\xE9e + */ + private void closeTransfCacheImageInputStream() { + try { + if (cacheTransfInputStream_ != null) + cacheTransfInputStream_.close(); + cacheTransfInputStream_=null; + } + catch (IOException _exc) {} + } + + /** * Retourne le flux d'entr\xE9e de l'image cache transform\xE9e en espace r\xE9el indiqu\xE9e. L'ancien flux est alors * ferm\xE9. * @param _f L'image cache * @return Le flux. */ public ImageInputStream getRealCacheImageInputStream(File _f) { -// if (!getTransfCacheImageFile().exists()) -// rebuiltTransfCacheImage(); - try { - if (cacheRealInputStream_ != null) { - cacheRealInputStream_.close(); - } + closeRealCacheImageInputStream(); cacheRealInputStream_=ImageIO.createImageInputStream(_f); } catch (IOException _exc) {} return cacheRealInputStream_; } + + /** + * Fermeture de l'input stream cache image reel + */ + private void closeRealCacheImageInputStream() { + try { + if (cacheRealInputStream_ != null) + cacheRealInputStream_.close(); + cacheRealInputStream_=null; + } + catch (IOException _exc) {} + } /** * Retourne la taille des images source. @@ -477,16 +475,28 @@ /** * D\xE9finit que les images transform\xE9es ont chang\xE9 suite au calcul. */ - public void setTransfImagesChanged() { + public void setTransfImagesChanged(ProgressionInterface _prog) { areTransfImagesChanged=true; isModified=true; + // Lib\xE8re les stream cache. + closeRealCacheImageInputStream(); + closeTransfCacheImageInputStream(); + File imgTransfDir=new File(rootPath,IMG_TRANSF_DIR); + + // Destruction de toutes les images caches. + File imgCacheDir=new File(imgTransfDir,"cache"); + File[] oldCacheFiles=imgCacheDir.listFiles(); + if (oldCacheFiles!=null) { + for (File f : oldCacheFiles) { + f.delete(); + } + } + File[] transfFiles=imgTransfDir.listFiles(FLT_FILES); if (transfFiles==null) transfFiles=new File[0]; - rebuiltCacheImagesIfNeeded(Arrays.asList(transfFiles),new ArrayList<File>(),imgTransfDir,null); -// rebuiltTransfCacheImage(); -// fireProjectStateChanged("transfImages"); + rebuiltCacheImagesIfNeeded(Arrays.asList(transfFiles),new ArrayList<File>(),imgTransfDir,_prog); } /** @@ -497,24 +507,26 @@ * * @param _files Les images. */ - public void setSrcImagesFiles(File[] _files) { + public void setSrcImagesFiles(File[] _files, CtuluTaskOperationGUI _task) { File imgInpDir=new File(rootPath,IMG_PGM_DIR); imgInpDir.mkdirs(); areSrcImagesChanged=!CtuluLibArray.isEquals(_files, srcFiles_.toArray(new File[0])); + // Lib\xE8re le stream. + closePgmCacheImageInputStream(); + List<File> newFiles=new ArrayList<File>(); - - // Traitement des fichiers .pgm, pour mise en cache. Le reconditionnement - // a d\xE9ja \xE9t\xE9 fait. + List<File> newpgm=new ArrayList<File>(); + + // Traitement des fichiers .pgm, pour mise en cache. for (File f : _files) { File fimg=new File(imgInpDir,f.getName()); if (!srcFiles_.contains(f)) { // Reconditionnement de l'image. if (f.getName().endsWith(".pgm")) { - CtuluAnalyze ana=new CtuluAnalyze(); - PivExeLauncher.instance().launchRepackingImg(ana, this, null, new File[]{f}); + newpgm.add(f); } else { // Copie du fichier localement au projet. @@ -523,6 +535,10 @@ } newFiles.add(fimg); } + + // Reconditionnement des pgm + CtuluAnalyze ana=new CtuluAnalyze(); + PivExeLauncher.instance().launchRepackingImg(ana, this, _task, newpgm.toArray(new File[0])); // Suppression des anciennes images sources for (File f : imgInpDir.listFiles(FLT_FILES)) { @@ -530,74 +546,11 @@ f.delete(); } - rebuiltCacheImagesIfNeeded(newFiles,srcFiles_,imgInpDir,null); + // Reconstruction des images caches + rebuiltCacheImagesIfNeeded(newFiles,srcFiles_,imgInpDir,_task); } /** - * D\xE9finit que les images reconditionn\xE9e ont chang\xE9 suite au calcul. - */ -// public void setPgmImagesChanged() { -// areSrcImagesChanged=true; -// isModified=true; -// rebuiltPgmCacheImages(null); -// fireProjectStateChanged("pgmImages"); -// } - - /** - * Reconstruit les images en asynchrone car l'op\xE9ration est longue. - */ -// private void rebuiltPgmCacheImages(ProgressionInterface _prog) { -// try { -// if (cachePgmInputStream_ != null) { -// cachePgmInputStream_.close(); -// } -// } -// catch (IOException _exc) {} -// cachePgmInputStream_ = null; - - // Destruction des anciennes images cache. -// for (File cache : getPgmCacheImageFiles()) { -// cache.delete(); -// } -// -// CtuluTaskOperationGUI task = new CtuluTaskOperationGUI(null, -// PivResource.getS("Mise en cache des images")) { -// -// public void act() { -// for (File fpgm : getPgmImageFiles()) { -// createCacheFromImage(fpgm, getCacheImageFile(fpgm)); -// fireProjectStateChanged("pgmImages"); -// } -// } -// -// }; -// task.start(); - // -// File[] files = getSrcImageFiles(); -// if (files.length>0) -// createCacheFromImage(files[0]); -// } - - private void rebuiltTransfCacheImage() { - try { - if (cacheTransfInputStream_ != null) { - cacheTransfInputStream_.close(); - } - if (cacheRealInputStream_ != null) { - cacheRealInputStream_.close(); - } - } - catch (IOException _exc) {} - cacheTransfInputStream_ = null; - cacheRealInputStream_ = null; - - getTransfCacheImageFile().delete(); - File[] files = getTransfImageFiles(); - if (files.length>0) - createCacheFromImage(files[0]); - } - - /** * Les images transform\xE9es ont-elles \xE9t\xE9 modifi\xE9es par le calcul ? * @return true : elles ont \xE9t\xE9 modifi\xE9es. */ @@ -634,18 +587,9 @@ * projet. */ public void dispose() { - try { - if (cachePgmInputStream_ != null) - cachePgmInputStream_.close(); - cachePgmInputStream_=null; - if (cacheRealInputStream_ != null) - cacheRealInputStream_.close(); - cacheRealInputStream_=null; - if (cacheTransfInputStream_ != null) - cacheTransfInputStream_.close(); - cacheTransfInputStream_=null; - } - catch (IOException ex) {} + closePgmCacheImageInputStream(); + closeRealCacheImageInputStream(); + closeTransfCacheImageInputStream(); // Supprime aussi le repertoire temporaire CtuluLibFile.deleteDir(rootPath); @@ -937,7 +881,7 @@ if (orthoPoints!=null) { File grpFile=new File(getOutputDir(),"GRP.dat"); FileWriteOperationAbstract writer=PivGRPFileFormat.getInstance().createWriter(); - CtuluIOOperationSynthese ret=writer.write(orthoPoints, grpFile, null); + writer.write(orthoPoints, grpFile, null); } // Les fichiers de parametres ortho @@ -945,11 +889,11 @@ Object[] params=new Object[]{orthoParams,getSrcImageSize()}; File imgRefFile=new File(getOutputDir(),"img_ref.dat"); FileWriteOperationAbstract writer=PivImgRefFileFormat.getInstance().createWriter(); - CtuluIOOperationSynthese ret=writer.write(params, imgRefFile, null); + writer.write(params, imgRefFile, null); File hFile=new File(getOutputDir(),"h.dat"); writer=PivHFileFormat.getInstance().createWriter(); - ret=writer.write(orthoParams.getWaterElevation(), hFile, null); + writer.write(orthoParams.getWaterElevation(), hFile, null); } // Le fichiers de parametres de calcul @@ -957,28 +901,28 @@ Object[] params=new Object[]{computeParams,flowParams,getTransfImageSize()}; File paramFile=new File(getOutputDir(),"PIV_param.dat"); FileWriteOperationAbstract writer=PivParamFileFormat.getInstance().createWriter(); - CtuluIOOperationSynthese ret=writer.write(params, paramFile, null); + writer.write(params, paramFile, null); } // Le contour de grille if (cntGrid!=null) { File cntGridFile=new File(getOutputDir(),"grid_param.dat"); FileWriteOperationAbstract writer=PivGridParamFileFormat.getInstance().createWriter(); - CtuluIOOperationSynthese ret=writer.write(cntGrid, cntGridFile, null); + writer.write(cntGrid, cntGridFile, null); } // Le fichiers des points de grille if (computeGrid!=null) { File gridFile=new File(getOutputDir(),"grid.dat"); FileWriteOperationAbstract writer=PivGridFileFormat.getInstance().createWriter(); - CtuluIOOperationSynthese ret=writer.write(computeGrid, gridFile, null); + writer.write(computeGrid, gridFile, null); } // Un transect if (transect!=null) { File transectFile=new File(getOutputDir(),"bathy.dat"); FileWriteOperationAbstract writer=PivBathyFileFormat.getInstance().createWriter(); - CtuluIOOperationSynthese ret=writer.write(transect, transectFile, null); + writer.write(transect, transectFile, null); } // Les resultats utilis\xE9s pour le calcul de vitesse moyenne. @@ -1033,7 +977,7 @@ File globalFile = new File(getOutputDir(), "global.xml"); FileWriteOperationAbstract writer = new PivGlobalXmlWriter(); - CtuluIOOperationSynthese ret = writer.write(param, globalFile, null); + writer.write(param, globalFile, null); } /** This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2011-12-02 14:04:58
|
Revision: 6769 http://fudaa.svn.sourceforge.net/fudaa/?rev=6769&view=rev Author: bmarchan Date: 2011-12-02 14:04:52 +0000 (Fri, 02 Dec 2011) Log Message: ----------- Fix : Chgt de nom des calques de vitesses pour claret?\195?\169. Modified Paths: -------------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivRealView.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivShowVelocityAction.java Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivRealView.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivRealView.java 2011-12-02 14:03:44 UTC (rev 6768) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivRealView.java 2011-12-02 14:04:52 UTC (rev 6769) @@ -5,8 +5,6 @@ import java.awt.Color; import java.awt.Dimension; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.beans.PropertyChangeEvent; @@ -170,7 +168,8 @@ return "m/s"; } }; - cqVelResults.setTitle(PivResource.getS("Vit. de surface")); + cqVelResults.setTitle(PivResource.getS("Vit. surf. moyennes")); + cqVelResults.setTitleModifiable(true); cqVelResults.setName("cqRealVel"); // Donne la couleur des fl\xE8ches si pas de palette de couleurs. cqVelResults.setLineModel(0, new TraceLigneModel(TraceLigne.LISSE, 1, Color.RED)); @@ -189,7 +188,8 @@ return "m/s"; } }; - cqInstantVelResults_.setTitle(PivResource.getS("Vit. instantan\xE9es")); + cqInstantVelResults_.setTitle(PivResource.getS("Vit. surf. instantan\xE9es")); + cqInstantVelResults_.setTitleModifiable(true); cqInstantVelResults_.setName("cqInstantVel"); // Donne la couleur des fl\xE8ches si pas de palette de couleurs. cqInstantVelResults_.setLineModel(0, new TraceLigneModel(TraceLigne.LISSE, 1, Color.ORANGE)); @@ -208,7 +208,8 @@ return "m/s"; } }; - cqFlowResults.setTitle(PivResource.getS("Vit. moyennes")); + cqFlowResults.setTitle(PivResource.getS("Vit. vert. moyennes")); + cqFlowResults.setTitleModifiable(true); cqFlowResults.setName("cqRealFlow"); // Donne la couleur des fl\xE8ches si pas de palette de couleurs. cqFlowResults.setLineModel(0, new TraceLigneModel(TraceLigne.LISSE, 1, Color.ORANGE)); Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivShowVelocityAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivShowVelocityAction.java 2011-12-02 14:03:44 UTC (rev 6768) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivShowVelocityAction.java 2011-12-02 14:04:52 UTC (rev 6769) @@ -26,7 +26,7 @@ * @param _impl L'implementation. */ public PivShowVelocityAction(PivImplementation _impl) { - super(PivResource.getS("Voir les vitesses"), null, "SHOW_VELOCITIES_RESULTS"); + super(PivResource.getS("Voir les vitesses moyennes de surface"), null, "SHOW_VELOCITIES_RESULTS"); impl=_impl; setEnabled(false); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2011-12-04 18:30:33
|
Revision: 6781 http://fudaa.svn.sourceforge.net/fudaa/?rev=6781&view=rev Author: bmarchan Date: 2011-12-04 18:30:26 +0000 (Sun, 04 Dec 2011) Log Message: ----------- Add : Bouton d'animation pour les r?\195?\169sultats Modified Paths: -------------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivRealView.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivVisuPanel.java Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java 2011-12-04 18:23:09 UTC (rev 6780) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java 2011-12-04 18:30:26 UTC (rev 6781) @@ -851,6 +851,44 @@ */ @Override public void start() { +// ((JFrame)getFrame()).setTransferHandler(new TransferHandler() { +// +// @Override +// public boolean canImport(TransferSupport support) { +// for (DataFlavor df : support.getDataFlavors()) { +// if (df.equals(DataFlavor.javaFileListFlavor)) { +// return true; +// } +// } +// return false; +// } +// +// /** +// * L'importation de donn\xE9es. +// */ +// @Override +// public boolean importData(TransferSupport support) { +// if (canImport(support)) { +// try { +// List<File> files = (List<File>) support.getTransferable().getTransferData(DataFlavor.javaFileListFlavor); +// if (files.size() > 1) { +// error(PivResource.getS("Un seul fichier projet est autoris\xE9 pour le transfert")); +// return false; +// } +// ouvrir(files.get(0)); +// return true; +// } +// catch (UnsupportedFlavorException ufe) { +// ufe.printStackTrace(); +// } +// catch (IOException ioe) { +// ioe.printStackTrace(); +// } +// } +// return false; +// } +// }); + super.start(); super.addFrameListLeft(); Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivRealView.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivRealView.java 2011-12-04 18:23:09 UTC (rev 6780) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivRealView.java 2011-12-04 18:30:26 UTC (rev 6781) @@ -15,16 +15,20 @@ import java.util.List; import java.util.Map; +import javax.swing.AbstractButton; import javax.swing.BorderFactory; import javax.swing.JComponent; import javax.units.SI; +import org.fudaa.ebli.animation.EbliAnimationAction; +import org.fudaa.ebli.animation.EbliAnimationAdapterInterface; import org.fudaa.ebli.calque.BCalqueAffichage; import org.fudaa.ebli.calque.ZCalqueFleche; import org.fudaa.ebli.calque.dessin.DeForme; import org.fudaa.ebli.calque.edition.ZCalqueLigneBriseeEditable; import org.fudaa.ebli.calque.edition.ZCalqueMultiPointEditable; import org.fudaa.ebli.commun.EbliActionAbstract; +import org.fudaa.ebli.commun.EbliComponentFactory; import org.fudaa.ebli.commun.EbliCoordinateDefinition; import org.fudaa.ebli.commun.EbliFormatter; import org.fudaa.ebli.commun.EbliUIProperties; @@ -71,6 +75,8 @@ private BuComboBox cbImg_; private BuTransparentToggleButton btLock_; private BuComboBox cbVel_; + private EbliAnimationAction actAnim_; + private AbstractButton btAnim_; private PivProject prj_; private List<BCalqueAffichage> layers_=new ArrayList<BCalqueAffichage>(); @@ -94,6 +100,37 @@ PivFlowResultsModel mdlFlowResults; PivInstantVelResultsModel mdlInstantVelResults; + /** + * Une classe de d\xE9finition de la s\xE9quence d'animation. + * @author Bertrand Marchand (mar...@de...) + */ + class SequenceAnimationAdapter implements EbliAnimationAdapterInterface { + + @Override + public int getNbTimeStep() { + return prj_.getTransfImageFiles().length; + } + + @Override + public String getTimeStep(int _idx) { + return prj_.getTransfImageFiles()[_idx].getName(); + } + + @Override + public double getTimeStepValueSec(int _idx) { + return _idx; + } + + @Override + public void setTimeStep(int _idx) { + cbImg_.setSelectedIndex(_idx); + } + + @Override + public String getTitle() { + return cqInstantVelResults_.getTitle(); + } + } /** * Constructeur. @@ -289,6 +326,11 @@ * Construction des outils sp\xE9cifiques \xE0 cette vue. */ private void buildTools() { + // Le bouton d'animation + actAnim_=new EbliAnimationAction(pnLayers_.createAnimSource()); + btAnim_=actAnim_.buildToolButton(EbliComponentFactory.INSTANCE); + btAnim_.setEnabled(true); + // La liste d\xE9roulante des images cbImg_ = new BuComboBox(); cbImg_.addItemListener(new ItemListener() { @@ -364,6 +406,9 @@ * Mise a jour les outils. */ private void majTools() { + // Force la mise a jour du composant d'animation + actAnim_.setAnimAdapterInterface(new SequenceAnimationAdapter()); + Object itImgSel=cbImg_.getSelectedItem(); cbImg_.removeAllItems(); cbImg_.setEnabled(false); @@ -436,7 +481,7 @@ @Override public JComponent[] getSpecificTools() { - return new JComponent[]{cbImg_,btLock_,cbVel_}; + return new JComponent[]{btAnim_,cbImg_,btLock_,cbVel_}; } @Override Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivVisuPanel.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivVisuPanel.java 2011-12-04 18:23:09 UTC (rev 6780) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivVisuPanel.java 2011-12-04 18:30:26 UTC (rev 6781) @@ -11,18 +11,20 @@ import java.util.HashMap; import java.util.Map; +import javax.swing.AbstractButton; import javax.swing.Action; import javax.swing.JComponent; import javax.swing.JMenu; import org.fudaa.ctulu.gis.GISAttributeDouble; import org.fudaa.ctulu.gis.GISAttributeString; +import org.fudaa.ebli.animation.EbliAnimationSourceInterface; import org.fudaa.ebli.calque.BCalqueAffichage; import org.fudaa.ebli.calque.ZEbliCalquesPanel; import org.fudaa.ebli.calque.edition.ZCalqueEditionInteraction; -import org.fudaa.ebli.calque.edition.ZEditorDefault; import org.fudaa.ebli.commun.EbliActionAbstract; import org.fudaa.ebli.commun.EbliActionInterface; +import org.fudaa.ebli.commun.EbliActionPaletteAbstract; import org.fudaa.ebli.commun.EbliUIProperties; import org.fudaa.ebli.trace.TraceIcon; import org.fudaa.ebli.trace.TraceIconModel; @@ -36,6 +38,7 @@ import org.fudaa.fudaa.piv.action.PivShowVelocityAction; import org.fudaa.fudaa.piv.metier.PivProject; +import com.memoire.bu.BuDesktop; import com.memoire.bu.BuSpecificBar; /** @@ -302,6 +305,14 @@ return cqEdition_; } + /** + * Cr\xE9e un source pour l'animation. + * @return La source + */ + public EbliAnimationSourceInterface createAnimSource() { + return new AnimAdapter(); + } + protected PivViewI getCurrentView() { return getViews()[viewMode_]; } @@ -439,7 +450,18 @@ } public JComponent[] getSpecificTools() { - return getCurrentView().getSpecificTools(); + BuDesktop desk=((PivImplementation)getCtuluUI()).getMainPanel().getDesktop(); + + JComponent[] cps=getCurrentView().getSpecificTools(); + for (JComponent cp : cps) { + if (cp instanceof AbstractButton) { + AbstractButton bt=(AbstractButton)cp; + if (bt.getAction() instanceof EbliActionPaletteAbstract) { + ((EbliActionPaletteAbstract)bt.getAction()).setDesktop(desk); + } + } + } + return cps; } /** This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |