|
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...
[truncated message content] |
|
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.
|