|
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.
|