From: <bma...@us...> - 2015-03-31 14:13:38
|
Revision: 9097 http://sourceforge.net/p/fudaa/svn/9097 Author: bmarchan Date: 2015-03-31 14:13:30 +0000 (Tue, 31 Mar 2015) Log Message: ----------- Am?\195?\169lioration du trac?\195?\169 de particules 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/action/PivCreateParticleLinesAction.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/particles/PivComputeParticlesTaskModel.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/particles/PivParticlesLayer.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/particles/PivParticlesSourceI.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/particles/PivResultSource.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 2015-03-31 10:13:52 UTC (rev 9096) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java 2015-03-31 14:13:30 UTC (rev 9097) @@ -734,6 +734,7 @@ mn.addSeparator(PivResource.getS("Post-traitement")); mn.add(new PivComputeAverageAction(this)); mn.add(get2dFrame().getVisuPanel().getShowVelocitiesAction().buildMenuItem(EbliComponentFactory.INSTANCE)); + mn.add(get2dFrame().getVisuPanel().getRealView().getTraceParticlesAction().buildMenuItem(EbliComponentFactory.INSTANCE)); mn.addSeparator(PivResource.getS("D\xE9bit")); sm=new BuMenu(PivResource.getS("Transect"),"mnGRP"); 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 2015-03-31 10:13:52 UTC (rev 9096) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivRealView.java 2015-03-31 14:13:30 UTC (rev 9097) @@ -90,7 +90,7 @@ private BuComboBox cbVel_; private EbliAnimationAction actAnim_; private AbstractButton btAnim_; - private PivCreateParticleLinesAction actStreamLines_; + private PivCreateParticleLinesAction actParticleLines_; private AbstractButton btStreamLines_; private PivProject prj_; private List<BCalqueAffichage> layers_=new ArrayList<BCalqueAffichage>(); @@ -480,9 +480,9 @@ btAnim_=actAnim_.buildToolButton(EbliComponentFactory.INSTANCE); btAnim_.setEnabled(true); - actStreamLines_=new PivCreateParticleLinesAction(pnLayers_, (FudaaCommonImplementation)pnLayers_.getCtuluUI(), + actParticleLines_=new PivCreateParticleLinesAction(pnLayers_, (FudaaCommonImplementation)pnLayers_.getCtuluUI(), new PivParticlesLayer[]{cqAveParticles_,cqFltParticles_,cqRawParticles_}); - btStreamLines_=actStreamLines_.buildToolButton(EbliComponentFactory.INSTANCE); + btStreamLines_=actParticleLines_.buildToolButton(EbliComponentFactory.INSTANCE); // La liste des variables possibles cbVar_=new BuComboBox(); @@ -620,7 +620,7 @@ // Force la mise a jour du composant d'animation actAnim_.setAnimAdapterInterface(new SequenceAnimationAdapter()); // Les calques peuvent avoir chang\xE9. - actStreamLines_.setLayers(new PivParticlesLayer[]{cqAveParticles_, cqFltParticles_, cqRawParticles_}); + actParticleLines_.setLayers(new PivParticlesLayer[]{cqAveParticles_, cqFltParticles_, cqRawParticles_}); Object itImgSel=cbImg_.getSelectedItem(); cbImg_.removeAllItems(); @@ -888,4 +888,12 @@ } return actParamsTransect_; } + + /** + * Retourne l'action pour la saisie des parametres d'un transect. + * @return L'action. + */ + public PivCreateParticleLinesAction getTraceParticlesAction() { + return actParticleLines_; + } } Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivCreateParticleLinesAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivCreateParticleLinesAction.java 2015-03-31 10:13:52 UTC (rev 9096) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivCreateParticleLinesAction.java 2015-03-31 14:13:30 UTC (rev 9097) @@ -28,7 +28,7 @@ PivComputeParticlesTaskModel taskTrajectories = null; public PivCreateParticleLinesAction(final ZEbliCalquesPanel panel, FudaaCommonImplementation impl, PivParticlesLayer[] _layers) { - super(FSigResource.getS("Calcul des lignes de courants/trajectoires"), FSigResource.FSIG.getIcon("crystal_oscilloscope.png"), "TRAJ"); + super(FSigResource.getS("Calcul des lignes de courants/trajectoires..."), FSigResource.FSIG.getIcon("crystal_oscilloscope.png"), "TRAJ"); impl_ = impl; pnCalque_ = panel; layers_=_layers; @@ -43,6 +43,10 @@ @Override public void actionPerformed(final ActionEvent _e) { + if (destLayer_.getSource().getGrid()==null) { + impl_.error(PivResource.getS("Pas de r\xE9sultats disponibles pour le trac\xE9 de particules")); + return; + } taskTrajectories = new PivComputeParticlesTaskModel(pnCalque_,destLayer_); new FudaaPanelTask(pnCalque_.getCtuluUI(), taskTrajectories).afficheDialog(); } Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/particles/PivComputeParticlesTaskModel.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/particles/PivComputeParticlesTaskModel.java 2015-03-31 10:13:52 UTC (rev 9096) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/particles/PivComputeParticlesTaskModel.java 2015-03-31 14:13:30 UTC (rev 9097) @@ -595,15 +595,16 @@ pn.add(new JLabel(PivResource.getS("Mode"))); pn.add(choixMode_); pn.add(new JLabel(PivResource.getS("Vecteur"))); - ListModel<PivVectorDefinitionI> flecheListModel = destlayer_.getSource().getNewFlecheListModel(); + ListModel<PivVectorDefinitionI> flecheListModel = destlayer_.getSource().getFlecheListModel(); CtuluComboBoxModelAdapter cb = new CtuluComboBoxModelAdapter(flecheListModel); cbVitesse_ = new BuComboBox(cb); cb.setSelectedItem(flecheListModel.getElementAt(0)); pn.add(cbVitesse_); - pn.add(new JLabel(PivResource.getS("Pas de temps intial"))); + pn.add(new JLabel(PivResource.getS("Pas de temps initial"))); cbFirstTime_ = new BuComboBox(new CtuluComboBoxModelAdapter(destlayer_.getSource().getTimeListModel())); - cbFirstTime_.setSelectedIndex(0); + if (cbFirstTime_.getItemCount()>0) + cbFirstTime_.setSelectedIndex(0); pn.add(cbFirstTime_); pn.add(new JLabel(PivResource.getS("Dur\xE9e d'int\xE9gration:"))); pn.add(duree_); Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/particles/PivParticlesLayer.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/particles/PivParticlesLayer.java 2015-03-31 10:13:52 UTC (rev 9096) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/particles/PivParticlesLayer.java 2015-03-31 14:13:30 UTC (rev 9097) @@ -7,8 +7,10 @@ import java.awt.Graphics2D; import java.util.ArrayList; import java.util.HashMap; +import java.util.Iterator; import java.util.List; import java.util.Map; +import java.util.Map.Entry; import org.fudaa.ctulu.CtuluAnalyze; import org.fudaa.ctulu.CtuluAnalyzeGroup; @@ -33,6 +35,7 @@ import org.fudaa.ebli.geometrie.GrMorphisme; import org.fudaa.ebli.geometrie.GrPoint; import org.fudaa.ebli.palette.BPalettePlage; +import org.fudaa.ebli.palette.BPalettePlageProperties; import org.fudaa.ebli.palette.PaletteManager; import org.fudaa.ebli.trace.TraceIcon; import org.fudaa.ebli.trace.TraceIconModel; @@ -58,7 +61,7 @@ /** * Only modified form constructor or from initFrom method. */ - GISAttributeInterface attrMark_=PivParticlesGISDataModel.ATT_MARK; +// GISAttributeInterface attrMark_=PivParticlesGISDataModel.ATT_MARK; // GISAttributeInterface attrTime_=new GISAttributeDouble("Time", true); // GISAttributeInterface attrVX_=new GISAttributeDouble("VX", true); // GISAttributeInterface attrVY_=new GISAttributeDouble("VY", true); @@ -131,7 +134,7 @@ final GISZoneCollection geomData = modele_.getGeomData(); final int nbAttributes = geomData.getNbAttributes(); for (int i = 0; i < nbAttributes; i++) { - if (geomData.getAttribute(i) != attrMark_) { + if (geomData.getAttribute(i) != PivParticlesGISDataModel.ATT_MARK) { attList_.add(geomData.getAttribute(i)); // attListModel_.addElement(geomData.getAttribute(i).getLongName()); } @@ -250,56 +253,104 @@ public void initFrom(final EbliUIProperties _p) { if (_p != null) { -// attSelectionModel_.clearSelection(); + // attSelectionModel_.clearSelection(); super.initFrom(_p); initPaletteMap(); - FuLog.warning("A modifier: "+new Exception().getStackTrace()[0].toString()); -// if (true) return; -// if (TrIsoLayerDefault.restorePalette(_p, namePalette_)) { -// updateLegende(); -// } -// if (idx >= 0) { -// attSelectionModel_.setSelectionInterval(idx, idx); -// } -// final EfTrajectoireParameters initParam=(EfTrajectoireParameters) _p.get(FSigTrPostTrajectoireLineLayerPersistence.INIT_DATA); -// if (initParam != null) { -// this.dataMemory_=initParam; -// } -// else { -// final FSigTrPostTrajectoireLineLayerPersistData data=(FSigTrPostTrajectoireLineLayerPersistData) _p.get(FSigTrPostTrajectoireLineLayerPersistence.COMPUTE_DATA); -// if (data != null) { - final CtuluAnalyze log=new CtuluAnalyze(); - final PivParticlesLayerPersistData data=(PivParticlesLayerPersistData) _p.get(PivParticlesLayerPersistData.COMPUTE_DATA); - if (data!=null) { - EfTrajectoireParameters restore=data.restore(src_, log); -// final EfTrajectoireParameters restore=(EfTrajectoireParameters)_p.get(FSigTrPostTrajectoireLineLayerPersistence.COMPUTE_DATA); - if (!log.isEmpty()) { - final CtuluAnalyzeGroup gr=new CtuluAnalyzeGroup(null); - gr.addAnalyzer(log); - CtuluAnalyzeGUI.showDialog(gr, vue2d_.getCtuluUI(), PivResource.getS("Rechargement des donn\xE9es trajectoires")); - } -// if (restore != null && _p.getBoolean(FSigTrPostTrajectoireLineLayerPersistence.RECOMPUTE)) { - if (restore!=null) restoreData(log, restore); - this.dataMemory_=restore; + + // if (idx >= 0) { + // attSelectionModel_.setSelectionInterval(idx, idx); + // } + // final EfTrajectoireParameters initParam=(EfTrajectoireParameters) + // _p.get(FSigTrPostTrajectoireLineLayerPersistence.INIT_DATA); + // if (initParam != null) { + // this.dataMemory_=initParam; + // } + // else { + // final FSigTrPostTrajectoireLineLayerPersistData + // data=(FSigTrPostTrajectoireLineLayerPersistData) + // _p.get(FSigTrPostTrajectoireLineLayerPersistence.COMPUTE_DATA); + // if (data != null) { + final CtuluAnalyze log=new CtuluAnalyze(); + final PivParticlesLayerPersistData data=(PivParticlesLayerPersistData) _p.get(PivParticlesLayerPersistData.COMPUTE_DATA); + if (data != null) { + EfTrajectoireParameters restore=data.restore(src_, log); + // final EfTrajectoireParameters + // restore=(EfTrajectoireParameters)_p.get(FSigTrPostTrajectoireLineLayerPersistence.COMPUTE_DATA); + if (!log.isEmpty()) { + final CtuluAnalyzeGroup gr=new CtuluAnalyzeGroup(null); + gr.addAnalyzer(log); + CtuluAnalyzeGUI.showDialog(gr, vue2d_.getCtuluUI(), PivResource.getS("Rechargement des trac\xE9s de particules")); } - else { - this.dataMemory_=null; - } -// } -// } + // if (restore != null && + // _p.getBoolean(FSigTrPostTrajectoireLineLayerPersistence.RECOMPUTE)) { + if (restore != null) + restoreData(log, restore); + this.dataMemory_=restore; + } + else { + this.dataMemory_=null; + } + // } + // } + // } +// final String markId=(String) _p.get("mark.attribute"); +// if (markId != null) { +// attrMark_=modeleDonnees().getGeomData().getAttributeWithID(markId); // } - final String markId=(String) _p.get("mark.attribute"); - if (markId != null) { - attrMark_=modeleDonnees().getGeomData().getAttributeWithID(markId); - } - attSel_ = getAttForName(_p.getString("att.selected")); + attSel_=getAttForName(_p.getString("att.selected")); + + if (restorePalettes(_p, namePalette_)) { + updateLegende(); + } } } + public static boolean restorePalettes(final EbliUIProperties _p, final Map<String, BPalettePlage> _dest) { + final String[] names = (String[]) _p.get("post.paletteNames"); + if (names != null && names.length > 0) { + final BPalettePlageProperties[] props = (BPalettePlageProperties[]) _p.get("post.paletteProps"); + if (_dest.size() > 0) { + _dest.clear(); + } + for (int i = 0; i < names.length; i++) { + if (props[i] != null && names[i] != null) { + BPalettePlage plage = new BPalettePlage(props[i]); +// initSubTitleLabel(plage); + _dest.put(names[i], plage); + } + } + return true; + } + return false; + } + + public static EbliUIProperties savePalettes(final Map<String, BPalettePlage> _nameBPalette, final EbliUIProperties _prop) { + if (_prop == null) { + return null; + } + if (_nameBPalette == null || _nameBPalette.size() == 0) { + return _prop; + } + final List<String> paletteNames = new ArrayList<>(_nameBPalette.size()); + final List<BPalettePlageProperties> palettes = new ArrayList<>(_nameBPalette.size()); + + for (final Iterator<Entry<String,BPalettePlage>> it = _nameBPalette.entrySet().iterator(); it.hasNext();) { + Entry<String, BPalettePlage> e=it.next(); + final String key = e.getKey(); + if (!CtuluLibString.isEmpty(key)) { + paletteNames.add(key); + palettes.add(((BPalettePlage) e.getValue()).save()); + } + } + _prop.put("post.paletteNames", paletteNames.toArray(new String[paletteNames.size()])); + _prop.put("post.paletteProps", palettes.toArray(new BPalettePlageProperties[palettes.size()])); + return _prop; + } + private void restoreData(final CtuluAnalyze log, final EfTrajectoireParameters restore) { log.clear(); final EfTrajectoireActivity ac = new EfTrajectoireActivity(src_.getInterpolator(), null, src_.getTimes()); - final String title = PivResource.getS("Calcul"); +// final String title = PivResource.getS("Calcul"); final List<EfTrajectoireResultBuilder> computeLigneCourant = ac.computeLigneCourant(restore, null, log); final PivComputeAndDisplayParticlesActivity activity = new PivComputeAndDisplayParticlesActivity(vue2d_,this,null); activity.reloadLinesIn(PivParticlesLayer.this, restore, computeLigneCourant, log); @@ -380,7 +431,7 @@ } // on trace les icones apres pour qu'ils soient dessin\xE9s au-dessus des lignes. final GISZoneCollection geomData = super.modeleDonnees().getGeomData(); - final int idxMark = geomData.getIndiceOf(attrMark_); + final int idxMark = geomData.getIndiceOf(PivParticlesGISDataModel.ATT_MARK); // final int idxAttSelected = geomData.getIndiceOf(attSel_); // si idxSelected est positif on utilise une palette // final int idxSelected = isPaletteCouleurUsed_ && idxAttSelected >= 0 ? geomData.getIndiceOf(attList_.get(idxAttSelected)) : -1; @@ -453,9 +504,9 @@ // c'est pour que la variable en cours soit enregistr\xE9e updateLegende(false); final EbliUIProperties res = super.saveUIProperties(); -// TODO TrIsoLayerDefault.savePalettes(namePalette_, res); + savePalettes(namePalette_, res); res.put("att.selected", getSelectedAttributeName()); - res.put("mark.attribute", attrMark_ == null ? CtuluLibString.EMPTY_STRING : attrMark_.getID()); +// res.put("mark.attribute", attrMark_ == null ? CtuluLibString.EMPTY_STRING : attrMark_.getID()); if (dataMemory_!=null) res.put(PivParticlesLayerPersistData.COMPUTE_DATA, new PivParticlesLayerPersistData(dataMemory_)); // res.put(FSigTrPostTrajectoireLineLayerPersistence.INIT_DATA, dataMemory_); Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/particles/PivParticlesSourceI.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/particles/PivParticlesSourceI.java 2015-03-31 10:13:52 UTC (rev 9096) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/particles/PivParticlesSourceI.java 2015-03-31 14:13:30 UTC (rev 9097) @@ -156,7 +156,7 @@ */ // ListModel getFlecheListModel(); - public ListModel<PivVectorDefinitionI> getNewFlecheListModel(); + public ListModel<PivVectorDefinitionI> getFlecheListModel(); /** * @return le maillage de l'objet source Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/particles/PivResultSource.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/particles/PivResultSource.java 2015-03-31 10:13:52 UTC (rev 9096) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/particles/PivResultSource.java 2015-03-31 14:13:30 UTC (rev 9097) @@ -63,7 +63,7 @@ } @Override - public ListModel<PivVectorDefinitionI> getNewFlecheListModel() { + public ListModel<PivVectorDefinitionI> getFlecheListModel() { if (flecheList_==null) { PivVectorDefinitionI fch; flecheList_=new DefaultListModel<>(); @@ -125,8 +125,8 @@ @Override public ListModel<Double> getTimeListModel() { if (timeList_==null) { + timeList_=new DefaultListModel<>(); if (res_ != null) { - timeList_=new DefaultListModel<>(); for (int i=0; i < res_.getNbTime(); i++) { timeList_.addElement(getTimeStep(i)); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |