From: <bma...@us...> - 2015-04-20 09:44:43
|
Revision: 9114 http://sourceforge.net/p/fudaa/svn/9114 Author: bmarchan Date: 2015-04-20 09:44:41 +0000 (Mon, 20 Apr 2015) Log Message: ----------- Nouveaux outils Deplacement et rotation. 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/PivVisuPanel.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivShow3DTransectAction.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivTransectLayer.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 2015-04-20 09:14:18 UTC (rev 9113) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivFille2d.java 2015-04-20 09:44:41 UTC (rev 9114) @@ -40,7 +40,7 @@ JComponent[] cmps=getVisuPanel().getSpecificTools(); JComponent[] tools=new JComponent[cmps.length+superCmps.length]; System.arraycopy(superCmps, 0, tools, 0, superCmps.length); - System.arraycopy(cmps, 0, tools, superCmps.length-1, cmps.length); + System.arraycopy(cmps, 0, tools, superCmps.length, cmps.length); return tools; } 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-04-20 09:14:18 UTC (rev 9113) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java 2015-04-20 09:44:41 UTC (rev 9114) @@ -25,8 +25,10 @@ import javax.imageio.ImageReader; import javax.swing.AbstractButton; import javax.swing.ButtonGroup; +import javax.swing.JCheckBox; import javax.swing.JFileChooser; import javax.swing.JFrame; +import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.SwingUtilities; import javax.swing.TransferHandler; @@ -696,11 +698,22 @@ mr.setResource(PivResource.PIV); } + // Le menu Editer + BuMenu mn= (BuMenu)mb.getMenu("MENU_EDITION"); + int idx=mn.indexOf("COPIER"); + // Au cas ou... + if (idx==-1) + idx=mn.getComponentCount(); + mn.add(get2dFrame().getVisuPanel().getEditAction().buildMenuItem(EbliComponentFactory.INSTANCE),idx++); + mn.add(get2dFrame().getVisuPanel().getDeplacementAction().buildMenuItem(EbliComponentFactory.INSTANCE),idx++); + mn.add(get2dFrame().getVisuPanel().getRotationAction().buildMenuItem(EbliComponentFactory.INSTANCE),idx++); + mn.insertSeparator(idx++); + // les menus exporter et importer sont construit dynamiquement // buildImportMenu(); setEnabledForAction("IMPORTER", false); buildExportMenu(); - BuMenu mn=buildPivMenu(); + mn=buildPivMenu(); mb.addMenu(mn); } @@ -808,7 +821,7 @@ mn.add(sm); mn.add(get2dFrame().getVisuPanel().getRealView().getParamsTransectAction().buildMenuItem(EbliComponentFactory.INSTANCE)); mn.add(new PivComputeFlowAction(this)); - mn.add(get2dFrame().getVisuPanel().getShowFlowAction().buildMenuItem(EbliComponentFactory.INSTANCE)); +// mn.add(get2dFrame().getVisuPanel().getShowFlowAction().buildMenuItem(EbliComponentFactory.INSTANCE)); mn.add(new PivShow3DTransectAction(this)); mn.addSeparator(PivResource.getS("Vue")); @@ -822,8 +835,6 @@ mn.add(itOriginalView); mn.add(itRealView); mn.add(itTransfView); - mn.addSeparator(); - mn.add(get2dFrame().getVisuPanel().getEditAction()); mn.setVisible(true); return mn; 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 2015-04-20 09:14:18 UTC (rev 9113) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivVisuPanel.java 2015-04-20 09:44:41 UTC (rev 9114) @@ -8,6 +8,7 @@ package org.fudaa.fudaa.piv; import java.awt.Color; +import java.util.Arrays; import java.util.HashMap; import java.util.Map; @@ -15,18 +16,22 @@ import javax.swing.Action; import javax.swing.JComponent; import javax.swing.JMenu; +import javax.swing.SwingUtilities; 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.action.SceneDeplacementAction; +import org.fudaa.ebli.calque.action.SceneRotationAction; import org.fudaa.ebli.calque.edition.ZCalqueEditable; 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.EbliComponentFactory; import org.fudaa.ebli.commun.EbliUIProperties; import org.fudaa.ebli.trace.TraceIcon; import org.fudaa.ebli.trace.TraceIconModel; @@ -121,6 +126,8 @@ private PivShowVelocityAction actShowVelocities_; private PivShowFlowAction actShowFlow_; private PivEditAction actEdit_; + private SceneRotationAction actRotation_; + private SceneDeplacementAction actDeplacement_; /** * Construction des calques. Une partie est d\xE9j\xE0 construite par d\xE9faut dans @@ -272,9 +279,8 @@ actShowFlow_=new PivShowFlowAction((PivImplementation)getCtuluUI()); actEdit_=new PivEditAction(this); getScene().addSelectionListener(actEdit_); - // Les actions affich\xE9es dans le menu contextuel. - getEditor().getSceneEditor().setActions(new EbliActionInterface[]{actEdit_,null}); + getEditor().getSceneEditor().setActions(new EbliActionInterface[]{actEdit_}); } /** @@ -349,6 +355,50 @@ return actEdit_; } + public SceneRotationAction getRotationAction() { + if (actRotation_==null) { + actRotation_=new SceneRotationAction(getArbreCalqueModel().getTreeSelectionModel(), gisEditor_, gisEditor_.getSceneEditor(),getEbliFormatter()) { + + /** + * 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. + BuDesktop desk=(BuDesktop)SwingUtilities.getAncestorOfClass(BuDesktop.class,PivVisuPanel.this); + if (desk!=null) + setDesktop(desk); + super.showWindow(); + } + }; + } + + return actRotation_; + } + + public SceneDeplacementAction getDeplacementAction() { + if (actDeplacement_==null) { + actDeplacement_=new SceneDeplacementAction(getArbreCalqueModel().getTreeSelectionModel(), gisEditor_, getEbliFormatter(), null) { + + /** + * 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. + BuDesktop desk=(BuDesktop)SwingUtilities.getAncestorOfClass(BuDesktop.class,PivVisuPanel.this); + if (desk!=null) + setDesktop(desk); + super.showWindow(); + } + }; + } + + return actDeplacement_; + } + /** * @return Le calque d'edition de formes. */ @@ -483,10 +533,27 @@ return new EbliActionInterface[0]; } + AbstractButton btRotation_; + AbstractButton btDeplacement_; + + /** + * @return Les actions sp\xE9cifiques de la vue affich\xE9es dans la barre d'actions. + */ public JComponent[] getSpecificTools() { BuDesktop desk=((PivImplementation)getCtuluUI()).getMainPanel().getDesktop(); - JComponent[] cps=getCurrentView().getSpecificTools(); + JComponent[] cpsView=getCurrentView().getSpecificTools(); + JComponent[] cps=new JComponent[cpsView.length+2]; + System.arraycopy(cpsView, 0, cps, 2, cpsView.length); + + if (btRotation_==null) + btRotation_=getRotationAction().buildToolButton(EbliComponentFactory.INSTANCE); + if (btDeplacement_==null) + btDeplacement_=getDeplacementAction().buildToolButton(EbliComponentFactory.INSTANCE); + + cps[0]=btRotation_; + cps[1]=btDeplacement_; + for (JComponent cp : cps) { if (cp instanceof AbstractButton) { AbstractButton bt=(AbstractButton)cp; Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivShow3DTransectAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivShow3DTransectAction.java 2015-04-20 09:14:18 UTC (rev 9113) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivShow3DTransectAction.java 2015-04-20 09:44:41 UTC (rev 9114) @@ -30,7 +30,7 @@ PivShow3DTransectPanel pn; public PivShow3DTransectAction(PivImplementation _impl) { - super(PivResource.getS("Graphe 3D du(des) transect(s)..."), null, "SHOW_3D_GRAPH_TRANS"); + super(PivResource.getS("Vue 3D du(des) transect(s)..."), null, "SHOW_3D_GRAPH_TRANS"); impl=_impl; _impl.get2dFrame().getVisuPanel().getScene().addSelectionListener(this); Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivTransectLayer.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivTransectLayer.java 2015-04-20 09:14:18 UTC (rev 9113) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivTransectLayer.java 2015-04-20 09:44:41 UTC (rev 9114) @@ -3,7 +3,6 @@ import java.awt.Graphics2D; import org.fudaa.ebli.calque.edition.ZCalqueLigneBriseeEditable; -import org.fudaa.ebli.calque.edition.ZModeleLigneBriseeEditable; import org.fudaa.ebli.geometrie.GrBoite; import org.fudaa.ebli.geometrie.GrMorphisme; import org.fudaa.ebli.geometrie.GrPoint; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2015-06-16 14:54:23
|
Revision: 9132 http://sourceforge.net/p/fudaa/svn/9132 Author: bmarchan Date: 2015-06-16 14:54:20 +0000 (Tue, 16 Jun 2015) Log Message: ----------- Am?\195?\169lioration : Possiblit?\195?\169 d'ouvrir la fenetre parametres transect pour plusieurs transects. Modified Paths: -------------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivTransectParamPanel.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivTransectParamAction.java Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivTransectParamPanel.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivTransectParamPanel.java 2015-06-16 13:08:15 UTC (rev 9131) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivTransectParamPanel.java 2015-06-16 14:54:20 UTC (rev 9132) @@ -5,35 +5,38 @@ import org.fudaa.fudaa.piv.io.PivExeLauncher; import org.fudaa.fudaa.piv.metier.PivTransect; import org.fudaa.fudaa.piv.metier.PivTransectParams; +import org.omg.PortableServer._ServantLocatorStub; /** - * Un panneau de saisie des param\xE8tres du transect pour le calcul des d\xE9bits. + * Un panneau de saisie des param\xE8tres des transects s\xE9lectionn\xE9s pour le calcul des d\xE9bits. * * @author Bertrand Marchand (mar...@de...) * @version $Id$ */ public class PivTransectParamPanel extends CtuluDialogPanel { PivImplementation impl_; - PivTransect savedTrans_; - int idSel_; + PivTransect[] savedTrans_; + PivTransect[] trans_; + int[] selIds_; /** * Constructeur. */ - public PivTransectParamPanel(PivImplementation _impl, int _idSel) { + public PivTransectParamPanel(PivImplementation _impl) { impl_=_impl; - idSel_=_idSel; initComponents(); customize(); - PivTransect[] trans=impl_.getCurrentProject().getTransects(); - // Sauvegarde du transect pr\xE9cedent pour le cas d'annulation. - savedTrans_=trans[_idSel].clone(); + trans_=impl_.getCurrentProject().getTransects(); + // Sauvegarde des transects pr\xE9cedents pour le cas d'annulation. + savedTrans_=new PivTransect[trans_.length]; + for (int i=0; i<savedTrans_.length; i++) + savedTrans_[i]=trans_[i].clone(); - PivTransectParams params=trans[_idSel].getParams(); +// PivTransectParams params=trans[_idSel].getParams(); // if (params==null) // params=new PivTransectParams(); - setFlowParams(params); +// setFlowParams(params); impl_.get2dFrame().getVisuPanel().getRealView().getTransectLayer().setCirclesVisible(true); } @@ -45,26 +48,71 @@ } /** + * Change selection + * @param _selIds Les transects s\xE9lectionn\xE9s. + */ + public void setSelected(int... _selIds) { + selIds_=_selIds; + initFlowParams(); + } + + /** * Rempli le panneau depuis les donn\xE9es du projet. - * @param _params L'objet m\xE9tier param\xE8tres de calcul de d\xE9bit. */ - public void setFlowParams(PivTransectParams _params) { - tfCoef.setText("" + _params.getSurfaceCoef()); - tfDmax.setText("" + _params.getRadius()); - tfInterpolationStep.setText("" + _params.getInterpolationStep()); + private void initFlowParams() { + String scoef=null; + String sradius=null; + String sstep=null; + + for (int id : selIds_) { + if (scoef==null) + scoef=""+trans_[id].getParams().getSurfaceCoef(); + else if (!scoef.equals(""+trans_[id].getParams().getSurfaceCoef())) { + scoef=""; + } + if (sradius==null) + sradius=""+trans_[id].getParams().getRadius(); + else if (!sradius.equals(""+trans_[id].getParams().getRadius())) { + sradius=""; + } + if (sstep==null) + sstep=""+trans_[id].getParams().getInterpolationStep(); + else if (!sstep.equals(""+trans_[id].getParams().getInterpolationStep())) { + sstep=""; + } + } + + if (scoef==null) + scoef=""; + if (sstep==null) + sstep=""; + if (sradius==null) + sradius=""; + + tfCoef.setText(scoef); + tfDmax.setText(sradius); + tfInterpolationStep.setText(sstep); + } - + /** - * Retourne les param\xE8tres saisis par l'utilisateur. Ces param\xE8tres sont - * retourn\xE9s dans _params. - * - * @param _params L'objet m\xE9tier param\xE8tres de calcul de d\xE9bit servant \xE0 transf\xE9rer les - * valeurs mises \xE0 jour. + * Recup\xE8re les param\xE8tres saisis par l'utilisateur. Ces param\xE8tres sont + * retourn\xE9s dans les params transects. */ - public void retrieveFlowParams(PivTransectParams _params) { - _params.setSurfaceCoef(Double.parseDouble(tfCoef.getText().trim())); - _params.setRadius(Double.parseDouble(tfDmax.getText().trim())); - _params.setInterpolationStep(Double.parseDouble(tfInterpolationStep.getText().trim())); + private void retrieveFlowParams() { + String scoef=tfCoef.getText().trim(); + String sradius=tfDmax.getText().trim(); + String sstep=tfInterpolationStep.getText().trim(); + + PivTransect[] trans=impl_.getCurrentProject().getTransects(); + for (int id : selIds_) { + if (!scoef.isEmpty()) + trans[id].getParams().setSurfaceCoef(Double.parseDouble(scoef)); + if (!sradius.isEmpty()) + trans[id].getParams().setRadius(Double.parseDouble(sradius)); + if (!sstep.isEmpty()) + trans[id].getParams().setInterpolationStep(Double.parseDouble(sstep)); + } } /** @@ -176,42 +224,41 @@ public boolean isDataValid() { setErrorText(""); boolean bok= - isStrictPositiveReal(tfCoef.getText(),PivResource.getS("Coefficient de vitesse")) && - isStrictPositiveReal(tfDmax.getText(),PivResource.getS("Rayon de recherche des vitesses")) && - isStrictPositiveReal(tfInterpolationStep.getText(),PivResource.getS("Distance d'extrapolation")); + tfCoef.getText().trim().isEmpty() || isStrictPositiveReal(tfCoef.getText(),PivResource.getS("Coefficient de vitesse")) && + tfDmax.getText().trim().isEmpty() || isStrictPositiveReal(tfDmax.getText(),PivResource.getS("Rayon de recherche des vitesses")) && + tfInterpolationStep.getText().trim().isEmpty() || isStrictPositiveReal(tfInterpolationStep.getText(),PivResource.getS("Distance d'extrapolation")); return bok; } @Override public void apply() { - PivTransect trans=savedTrans_.clone(); - retrieveFlowParams(trans.getParams()); - - CtuluLog log=new CtuluLog(); - log.setDesc(PivResource.getS("Reconditionnement du transect")); - PivExeLauncher.instance().computeTransectRecond(log, impl_.getCurrentProject(), trans, null); - if (log.containsErrorOrSevereError()) { - impl_.error(log.getResume()); - return; + retrieveFlowParams(); + + PivTransect[] trans=impl_.getCurrentProject().getTransects(); + for (int id : selIds_) { + CtuluLog log=new CtuluLog(); + log.setDesc(PivResource.getS("Reconditionnement du transect")); + PivExeLauncher.instance().computeTransectRecond(log, impl_.getCurrentProject(), trans[id], null); + if (log.containsErrorOrSevereError()) { + impl_.error(log.getResume()); + return; + } } - PivTransect[] transects=impl_.getCurrentProject().getTransects(); - transects[idSel_]=trans; - impl_.getCurrentProject().setTransects(transects); + // Pour forcer le rafraichissement d'\xE9cran + impl_.getCurrentProject().setTransects(trans); // Conserve la selection pour l'affichage des cercles. - impl_.get2dFrame().getVisuPanel().getRealView().getTransectLayer().setSelection(new int[]{idSel_}); + impl_.get2dFrame().getVisuPanel().getRealView().getTransectLayer().setSelection(selIds_); } @Override public boolean cancel() { - PivTransect[] trans=impl_.getCurrentProject().getTransects(); - trans[idSel_]=savedTrans_; - impl_.getCurrentProject().setTransects(trans); + impl_.getCurrentProject().setTransects(savedTrans_); // Conserve la selection pour l'affichage des cercles. - impl_.get2dFrame().getVisuPanel().getRealView().getTransectLayer().setSelection(new int[]{idSel_}); + impl_.get2dFrame().getVisuPanel().getRealView().getTransectLayer().setSelection(selIds_); impl_.get2dFrame().getVisuPanel().getRealView().getTransectLayer().setCirclesVisible(false); return super.cancel(); Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivTransectParamAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivTransectParamAction.java 2015-06-16 13:08:15 UTC (rev 9131) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivTransectParamAction.java 2015-06-16 14:54:20 UTC (rev 9132) @@ -20,7 +20,7 @@ import org.fudaa.fudaa.piv.PivResource; /** - * Une action pour saisir les parametres de calcul de d\xE9bit d'un transect. + * Une action pour saisir les parametres de calcul de d\xE9bit des transects selectectionn\xE9s. * * @author Bertrand Marchand (mar...@de...) * @version $Id$ @@ -40,11 +40,12 @@ */ @Override public void actionPerformed(final ActionEvent _e) { - int idSel=impl.get2dFrame().getVisuPanel().getScene().getLayerSelection().getMinIndex(); + int[] selIds=impl.get2dFrame().getVisuPanel().getScene().getLayerSelection().getSelectedIndex(); - PivTransectParamPanel pn=new PivTransectParamPanel(impl, idSel); + PivTransectParamPanel pn=new PivTransectParamPanel(impl); + pn.setSelected(selIds); - pn.affiche(impl.getFrame(), PivResource.getS("Param\xE8tres de calcul de d\xE9bit"),CtuluDialog.OK_CANCEL_APPLY_OPTION); + pn.afficheModale(impl.getFrame(), PivResource.getS("Param\xE8tres de calcul de d\xE9bit"),CtuluDialog.OK_CANCEL_APPLY_OPTION); } @Override @@ -59,7 +60,7 @@ if (cq==impl.get2dFrame().getVisuPanel().getRealView().getTransectLayer() && ((ZCalqueLigneBriseeEditable)cq).getLayerSelection() !=null && - ((ZCalqueLigneBriseeEditable)cq).getLayerSelection().getNbSelectedIndex()==1) { + !((ZCalqueLigneBriseeEditable)cq).getLayerSelection().isEmpty()) { b=true; } super.setEnabled(b); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2015-06-16 16:36:59
|
Revision: 9133 http://sourceforge.net/p/fudaa/svn/9133 Author: bmarchan Date: 2015-06-16 16:36:57 +0000 (Tue, 16 Jun 2015) Log Message: ----------- Ajout des r?\195?\169sultats de d?\195?\169bit dans la fenetre qui s'affiche ?\195?\160 la fin d'un calcul Modified Paths: -------------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivFlowInfoPanel.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeFlowAction.java Modified: 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 2015-06-16 14:54:20 UTC (rev 9132) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivFlowInfoPanel.java 2015-06-16 16:36:57 UTC (rev 9133) @@ -7,10 +7,20 @@ */ package org.fudaa.fudaa.piv; -import com.memoire.bu.BuGridLayout; +import java.awt.BorderLayout; +import java.awt.Component; import java.awt.Dimension; +import java.text.NumberFormat; + import javax.swing.JLabel; -import javax.swing.JTextField; +import javax.swing.JScrollPane; +import javax.swing.JTable; +import javax.swing.SwingConstants; +import javax.swing.event.TableModelListener; +import javax.swing.table.DefaultTableCellRenderer; +import javax.swing.table.TableModel; + +import org.fudaa.ctulu.CtuluLib; import org.fudaa.ctulu.gui.CtuluDialogPanel; import org.fudaa.fudaa.piv.metier.PivFlowResults; @@ -21,56 +31,137 @@ * @version $Id$ */ public class PivFlowInfoPanel extends CtuluDialogPanel { - private PivFlowResults res_; - private JTextField tfWaterElevation; - private JTextField tfDischarge; - private JTextField tfWettedArea; - private JTextField tfMeanVelocity; + private PivFlowResults[] res_; + private double meanDisch_; + private double meanArea_; + private double meanMeanV_; + + /** + * Une classe pour le modele de la table affichant les r\xE9sultats. + */ + private class DischargeTableModel implements TableModel { + + public int getRowCount() { + return res_.length+1; + } + + public int getColumnCount() { + return 7; + } + + public String getColumnName(int columnIndex) { + switch (columnIndex) { + default: + case 0: + return PivResource.getS("N\xB0"); + case 1: + return PivResource.getS("D\xE9bit total (m\xB3/s)"); + case 2: + return PivResource.getS("Ecart (%)"); + case 3: + return PivResource.getS("Aire mouill\xE9e (m\xB2)"); + case 4: + return PivResource.getS("Ecart (%)"); + case 5: + return PivResource.getS("Vit. moy. (m/s)"); + case 6: + return PivResource.getS("Ecart (%)"); + } + } + + public Class<?> getColumnClass(int columnIndex) { + return columnIndex==0 ? String.class:Double.class; + } + + public boolean isCellEditable(int rowIndex, int columnIndex) { + return false; + } + + public Object getValueAt(int rowIndex, int columnIndex) { + double val; + + switch (columnIndex) { + default: + case 0: + return rowIndex==res_.length? PivResource.getS("Moyenne"):""+(rowIndex+1); + case 1: + return rowIndex==res_.length? meanDisch_:res_[rowIndex].getDischarge(); + case 2: + val=rowIndex==res_.length? meanDisch_:res_[rowIndex].getDischarge(); + return Math.abs(val-meanDisch_)/meanDisch_*100; + case 3: + return rowIndex==res_.length? meanArea_:res_[rowIndex].getWettedArea(); + case 4: + val=rowIndex==res_.length? meanArea_:res_[rowIndex].getWettedArea(); + return Math.abs(val-meanArea_)/meanArea_*100; + case 5: + return rowIndex==res_.length? meanMeanV_:res_[rowIndex].getMeanVelocity(); + case 6: + val=rowIndex==res_.length? meanMeanV_:res_[rowIndex].getMeanVelocity(); + return Math.abs(val-meanMeanV_)/meanMeanV_*100; + } + } + + public void setValueAt(Object aValue, int rowIndex, int columnIndex) {} + public void addTableModelListener(TableModelListener l) {} + public void removeTableModelListener(TableModelListener l) {} + } + + /** + * Une classe pour une repr\xE9sentation des doubles. + */ + private class DischargeCellRenderer extends DefaultTableCellRenderer { + NumberFormat fmt = CtuluLib.getDecimalFormat(3); + + public DischargeCellRenderer() { + this.setHorizontalAlignment(SwingConstants.RIGHT); + fmt.setMaximumFractionDigits(3); + fmt.setMinimumFractionDigits(3); + } + + public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { + super.getTableCellRendererComponent(table,value,isSelected,hasFocus,row,column); + + if (value instanceof Double) { + this.setText(fmt.format((Double)value)); + } + return this; + } + } /** * 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("Niveau d'eau (m)"))); - add(tfWaterElevation=new JTextField()); - add(new JLabel(PivResource.getS("D\xE9bit total (m\xB3/s)"))); - add(tfDischarge=new JTextField()); - add(new JLabel(PivResource.getS("Aire mouill\xE9e (m\xB2)"))); - add(tfWettedArea=new JTextField()); - add(new JLabel(PivResource.getS("Vitesse moyenne sur la section (m/s)"))); - add(tfMeanVelocity=new JTextField()); + public PivFlowInfoPanel(PivFlowResults[] _res) { + setLayout(new BorderLayout(5,5)); + JTable tbResults=new JTable(); + tbResults.setModel(new DischargeTableModel()); + tbResults.setDefaultRenderer(Double.class,new DischargeCellRenderer()); + JScrollPane spResults=new JScrollPane(); + spResults.getViewport().add(tbResults); + spResults.setPreferredSize(new Dimension(700,200)); + add(new JLabel(PivResource.getS("Liste des transects")),BorderLayout.NORTH); + add(spResults, BorderLayout.CENTER); - tfWaterElevation.setEditable(false); - tfDischarge.setPreferredSize(new Dimension(80,tfDischarge.getPreferredSize().height)); - tfDischarge.setEditable(false); - tfWettedArea.setEditable(false); - tfMeanVelocity.setEditable(false); - - setResults(_res); + res_=_res; + computeMoyennes(); } - /** - * 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; + protected void computeMoyennes() { + meanDisch_=0; + meanArea_=0; + meanMeanV_=0; - if (res_!=null) { - tfWaterElevation.setText(""+res_.getWaterElevation()); - tfDischarge.setText(""+res_.getDischarge()); - tfWettedArea.setText(""+res_.getWettedArea()); - tfMeanVelocity.setText(""+res_.getMeanVelocity()); + for (PivFlowResults res : res_) { + meanDisch_+=res.getDischarge(); + meanArea_+=res.getWettedArea(); + meanMeanV_+=res.getMeanVelocity(); } - else { - tfWaterElevation.setText(""); - tfDischarge.setText(""); - tfWettedArea.setText(""); - tfMeanVelocity.setText(""); - } + + meanDisch_/=res_.length; + meanArea_/=res_.length; + meanMeanV_/=res_.length; } @Override 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 2015-06-16 14:54:20 UTC (rev 9132) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeFlowAction.java 2015-06-16 16:36:57 UTC (rev 9133) @@ -100,11 +100,11 @@ // Probl\xE8me de thread swing probablement... SwingUtilities.invokeLater(new Runnable() { public void run() { - impl.message(PivResource.getS("Calcul termin\xE9"), PivResource.getS("Le calcul s'est termin\xE9 avec succ\xE8s"), false); +// 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); + PivFlowInfoPanel pnInfo=new PivFlowInfoPanel(impl.getCurrentProject().getFlowResults()); + pnInfo.afficheModale(impl.getFrame(), PivResource.getS("Calcul termin\xE9 avec succ\xE8s"), CtuluDialog.OK_OPTION); impl.get2dFrame().getVisuPanel().setViewMode(PivVisuPanel.MODE_REAL_VIEW); -// PivFlowInfoPanel pnInfo=new PivFlowInfoPanel(impl.getCurrentProject().getFlowResults()[0]); -// 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); } }); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2015-06-22 14:45:19
|
Revision: 9134 http://sourceforge.net/p/fudaa/svn/9134 Author: bmarchan Date: 2015-06-22 14:45:16 +0000 (Mon, 22 Jun 2015) Log Message: ----------- Matrice de transformation repere d'origine vers repere de calcul Modified Paths: -------------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivGlobalXmlParam.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivGlobalXmlReader.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivGlobalXmlWriter.java 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/PivProjectPersistence.java Added Paths: ----------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivTransformationMatrix.java Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivGlobalXmlParam.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivGlobalXmlParam.java 2015-06-16 16:36:57 UTC (rev 9133) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivGlobalXmlParam.java 2015-06-22 14:45:16 UTC (rev 9134) @@ -11,4 +11,12 @@ public GrPoint iaCenter; /** La liste ordonn\xE9e des noms des images source */ public String[] srcImages; + /** Translation X */ + public double tx; + /** Translation Y */ + public double ty; + /** Translation Z */ + public double tz; + /** Rotation Z */ + public double rz; } \ No newline at end of file Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivGlobalXmlReader.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivGlobalXmlReader.java 2015-06-16 16:36:57 UTC (rev 9133) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivGlobalXmlReader.java 2015-06-22 14:45:16 UTC (rev 9134) @@ -79,6 +79,17 @@ params.srcImages[ind]=name; } + // La matrice de transformation espace d'origine => espace de calcul. + NodeList ndlMat=doc.getElementsByTagName("transfMatrix"); + for (int i=0; i<ndlMat.getLength(); i++) { + Element elMat=(Element)ndlMat.item(i); + params.tx=Double.parseDouble(elMat.getAttribute("tx")); + params.ty=Double.parseDouble(elMat.getAttribute("ty")); + params.tz=Double.parseDouble(elMat.getAttribute("tz")); + params.rz=Double.parseDouble(elMat.getAttribute("rz")); + } + + // // Les transects // NodeList ndlTrans=doc.getElementsByTagName("transect"); // params.transects=new PivTransect[ndlTrans.getLength()]; Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivGlobalXmlWriter.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivGlobalXmlWriter.java 2015-06-16 16:36:57 UTC (rev 9133) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivGlobalXmlWriter.java 2015-06-22 14:45:16 UTC (rev 9134) @@ -38,6 +38,10 @@ } writer.endTag("srcImages"); + // La rotation/translation appliqu\xE9s \xE0 l'espace r\xE9el. + writer.startTagWithAttrs("transfMatrix", new String[]{"tx","ty","tz","rz"}, new String[]{ "" + _param.tx,"" + _param.ty,"" + _param.tz,"" + _param.rz}); + writer.endTag("transfMatrix"); + // writeTransects(writer, _param.transects); writer.finish(); 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 2015-06-16 16:36:57 UTC (rev 9133) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProject.java 2015-06-22 14:45:16 UTC (rev 9134) @@ -1,6 +1,7 @@ package org.fudaa.fudaa.piv.metier; import java.awt.Dimension; +import java.awt.geom.AffineTransform; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileFilter; @@ -102,6 +103,10 @@ protected Dimension imgPgmSize=null; /** True : Les images d'origine ont \xE9t\xE9 modifi\xE9es */ protected boolean areSrcImagesChanged=true; + /** La matrice de transformation pour passer du systeme d'origine au systeme de calcul. Identit\xE9 au lancement */ + protected PivTransformationMatrix matrix=new PivTransformationMatrix(); + /** Definit si les coordonn\xE9es affich\xE9es le sont dans le system de coordonn\xE9es d'origine ou de calcul. */ + protected boolean isOriginalSystemCoords_; /** Les listeners notifi\xE9s lors d'une modification du projet. */ protected HashSet<PivProjectStateListener> listeners=new HashSet<PivProjectStateListener>(); @@ -1018,6 +1023,40 @@ return usedInstantResults; } + /** + * @param _matrix La matrice de transformation pour passer du repere origine au repere calcul + */ + public void setMatrixToComputation(PivTransformationMatrix _matrix) { + matrix=_matrix; + isModified=true; + fireProjectStateChanged("matrix"); + } + + /** + * @return La matrice de transformation pour passer du repere origine au repere calcul + */ + public PivTransformationMatrix getMatrixToComputation() { + return matrix; + } + + public void setOriginalSystemCoords(boolean _b) { + isOriginalSystemCoords_=_b; + } + + public boolean isOriginalSystemCoords() { + return isOriginalSystemCoords_; + } + + /** + * @return La matrice de transformation pour le systeme courant. + */ + public PivTransformationMatrix getMatrixForCurrentSystem() { + if (isOriginalSystemCoords()) + return matrix; + else + return new PivTransformationMatrix(); + } + void fireProjectStateChanged(String _prop) { for (PivProjectStateListener listener : listeners) { listener.projectStateChanged(this,_prop); Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProjectPersistence.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProjectPersistence.java 2015-06-16 16:36:57 UTC (rev 9133) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProjectPersistence.java 2015-06-22 14:45:16 UTC (rev 9134) @@ -448,6 +448,12 @@ return names.indexOf(o1.getName()) - names.indexOf(o2.getName()); } }); + + // Affectation de la transformation. + prj_.matrix=new PivTransformationMatrix(); + prj_.matrix.setToTranslation(paramXml.tx, paramXml.ty); + prj_.matrix.setTranslateZ(paramXml.tz); + prj_.matrix.rotate(paramXml.rz); prj_.srcFiles_.clear(); prj_.srcFiles_.addAll(Arrays.asList(srcFiles)); @@ -467,6 +473,12 @@ for (int i=0; i<prj_.srcFiles_.size(); i++) { params.srcImages[i]=prj_.srcFiles_.get(i).getName(); } + + // La matrice de transformation + params.tx=prj_.matrix.getTranslateX(); + params.ty=prj_.matrix.getTranslateY(); + params.tz=prj_.matrix.getTranslateZ(); + params.rz=prj_.matrix.getRotationZ(); File globalFile = new File(prj_.getOutputDir(), "global.xml"); new PivGlobalXmlWriter().write(params, globalFile, _prog); Added: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivTransformationMatrix.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivTransformationMatrix.java (rev 0) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivTransformationMatrix.java 2015-06-22 14:45:16 UTC (rev 9134) @@ -0,0 +1,51 @@ +package org.fudaa.fudaa.piv.metier; + +import java.awt.geom.AffineTransform; +import java.awt.geom.Point2D; + +import org.fudaa.ebli.geometrie.GrPoint; + +/** + * Une classe pour d\xE9finir la translation et la rotation du systeme d'origine vers le systeme de calcul. On ajoute aussi + * une translation en Z qui ne sert pas pour l'affichage, mais pour les calculs. + * @author Bertrand Marchand (mar...@de...) + */ +public class PivTransformationMatrix extends AffineTransform { + /** Translation suivant Z */ + private double tz_=0; + /** Des caches */ + Point2D pt2D=new Point2D.Double(); + + /** + * @return L'angle de rotation suivant Z (en radians). + */ + public double getRotationZ() { + return Math.atan2(getShearY(),getScaleX()); + } + + /** + * @param _tz La translation suivant Z. + */ + public void setTranslateZ(double _tz) { + tz_=_tz; + } + + /** + * @return La translation suivant Z. + */ + public double getTranslateZ() { + return tz_; + } + + /** + * Transforme le point suivant la matrice. + * @param _pt Le point d'entr\xE9e. + * @return LE point transform\xE9. + */ + public GrPoint transform(GrPoint _pt) { + pt2D.setLocation(_pt.x_, _pt.y_); + transform(pt2D, pt2D); + GrPoint pt=new GrPoint(pt2D.getX(),pt2D.getY(),_pt.z_+tz_); + return pt; + } +} Property changes on: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivTransformationMatrix.java ___________________________________________________________________ Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2015-06-22 14:46:12
|
Revision: 9135 http://sourceforge.net/p/fudaa/svn/9135 Author: bmarchan Date: 2015-06-22 14:46:09 +0000 (Mon, 22 Jun 2015) Log Message: ----------- Ajout d'une vue en repere diff?\195?\169rent 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/io/PivDischargeReader.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/PivFlowResultsModel.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/PivRealImageModel.java 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/metier/PivFlowResults.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivGlobalFlowResults.java Added Paths: ----------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivTransformationPanel.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivChangeTransformationAction.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivResultsTransformationAdapter.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 2015-06-22 14:45:16 UTC (rev 9134) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivRealView.java 2015-06-22 14:46:09 UTC (rev 9135) @@ -44,6 +44,7 @@ import org.fudaa.ebli.trace.TraceLigne; import org.fudaa.ebli.trace.TraceLigneModel; import org.fudaa.fudaa.commun.impl.FudaaCommonImplementation; +import org.fudaa.fudaa.piv.action.PivChangeTransformationAction; import org.fudaa.fudaa.piv.action.PivCreateParticleLinesAction; import org.fudaa.fudaa.piv.action.PivNewTransectAction; import org.fudaa.fudaa.piv.action.PivRealViewAction; @@ -61,6 +62,7 @@ import org.fudaa.fudaa.piv.metier.PivProject; import org.fudaa.fudaa.piv.metier.PivProjectStateListener; import org.fudaa.fudaa.piv.metier.PivResultsI; +import org.fudaa.fudaa.piv.metier.PivResultsTransformationAdapter; import org.fudaa.fudaa.piv.particles.PivParticlesLayer; import org.fudaa.fudaa.piv.particles.PivResultSource; @@ -81,10 +83,12 @@ private PivNewTransectAction actNewTransect_; private PivTransectParamAction actParamsTransect_; + private PivChangeTransformationAction actTransfMatrix_; private EbliActionAbstract actRealView_; private PivVisuPanel pnLayers_; private JComboBox<CtuluVariable> cbVar_; + private JComboBox<String> cbRep_; private JComboBox<String> cbImg_; private BuTransparentToggleButton btLock_; private JComboBox<String> cbVel_; @@ -92,9 +96,11 @@ private AbstractButton btAnim_; private PivCreateParticleLinesAction actParticleLines_; private AbstractButton btStreamLines_; + private AbstractButton btTransfMatrix_; private PivProject prj_; private List<BCalqueAffichage> layers_=new ArrayList<BCalqueAffichage>(); private boolean enableEvents2_=true; + private boolean enableEvents_=true; ZCalquePointEditable cqRealOrthoPoints_; ZCalqueMultiPointEditable cqRealControlPoints_; @@ -407,6 +413,23 @@ * Mise a jour des calques depuis le projet. */ private void majLayers() { + PivResultsI averageResults=null; + if (prj_.getAverageResults()!=null) + averageResults=new PivResultsTransformationAdapter(prj_.getAverageResults(),prj_.getMatrixForCurrentSystem()); + PivResultsI[] rawResults=null; + if (prj_.getInstantRawResults()!=null) { + rawResults=new PivResultsI[prj_.getInstantRawResults().length]; + for (int i=0; i<rawResults.length; i++) { + rawResults[i]=new PivResultsTransformationAdapter(prj_.getInstantRawResults()[i], prj_.getMatrixForCurrentSystem()); + } + } + PivResultsI[] filteredResults=null; + if (prj_.getInstantFilteredResults()!=null) { + filteredResults=new PivResultsI[prj_.getInstantFilteredResults().length]; + for (int i=0; i<filteredResults.length; i++) { + filteredResults[i]=new PivResultsTransformationAdapter(prj_.getInstantFilteredResults()[i], prj_.getMatrixForCurrentSystem()); + } + } mdlRealOrthoPoints=new PivOrthoPointsModel(PivVisuPanel.MODE_REAL_VIEW); mdlRealOrthoPoints.setProjet(prj_); @@ -420,48 +443,42 @@ mdlRealImage.setProjet(prj_); cqRealImg_.setModele(mdlRealImage); - if (prj_.getAverageResults()!=null) { - mdlVelResults=new PivVelResultsModel(prj_.getAverageResults()); + if (averageResults!=null) { + mdlVelResults=new PivVelResultsModel(averageResults); cqVelResults.setModele(mdlVelResults); - cqVelResults.setVisible(false); } - if (prj_.getInstantRawResults()!=null) { - mdlInstantVelResults=new PivVelResultsModel(prj_.getInstantRawResults()); + if (rawResults!=null) { + mdlInstantVelResults=new PivVelResultsModel(rawResults); cqInstantVelResults_.setModele(mdlInstantVelResults); - cqInstantVelResults_.setVisible(false); } - if (prj_.getInstantFilteredResults()!=null) { - mdlInstantVelFltResults=new PivVelResultsModel(prj_.getInstantFilteredResults()); + if (filteredResults!=null) { + mdlInstantVelFltResults=new PivVelResultsModel(filteredResults); cqInstantVelFltResults_.setModele(mdlInstantVelFltResults); - cqInstantVelFltResults_.setVisible(false); } mdlFlowResults=new PivFlowResultsModel(); mdlFlowResults.setProjet(prj_); cqFlowResults.setModele(mdlFlowResults); - cqFlowResults.setVisible(false); -// mdlTransect=new PivTransectModel(); -// mdlTransect.setProjet(prj_); // Evite de perdre la selection en cours. cqTransect_.modeleDonnees().setProjet(prj_); - if (prj_.getInstantRawResults()!=null) { - mdlInstantResults=new PivResultsModel(prj_.getInstantRawResults(),null); + if (rawResults!=null) { + mdlInstantResults=new PivResultsModel(rawResults,null); cqInstantIso_.setModele(mdlInstantResults); cqRawParticles_.getSource().setResults(mdlInstantResults); } - if (prj_.getInstantFilteredResults()!=null) { - mdlInstantFltResults=new PivResultsModel(prj_.getInstantFilteredResults(),null); + if (filteredResults!=null) { + mdlInstantFltResults=new PivResultsModel(filteredResults,null); cqInstantFltIso_.setModele(mdlInstantFltResults); cqFltParticles_.getSource().setResults(mdlInstantFltResults); } - if (prj_.getAverageResults()!=null) { - mdlAverageResults=new PivResultsModel(new PivResultsI[]{prj_.getAverageResults()}, null); + if (averageResults!=null) { + mdlAverageResults=new PivResultsModel(new PivResultsI[]{averageResults}, null); cqAverageIso_.setModele(mdlAverageResults); cqAveParticles_.getSource().setResults(mdlAverageResults); } @@ -472,9 +489,6 @@ return layers_.toArray(new BCalqueAffichage[0]); } - - private boolean enableEvents_=true; - /** * Construction des outils sp\xE9cifiques \xE0 cette vue. */ @@ -488,6 +502,10 @@ new PivParticlesLayer[]{cqAveParticles_,cqFltParticles_,cqRawParticles_}); btStreamLines_=actParticleLines_.buildToolButton(EbliComponentFactory.INSTANCE); + // Le bouton des param\xE8tres du rep\xE8re. + actTransfMatrix_=new PivChangeTransformationAction(); + btTransfMatrix_=actTransfMatrix_.buildToolButton(EbliComponentFactory.INSTANCE); + // La liste des variables possibles cbVar_=new JComboBox<>(); cbVar_.addItemListener(new ItemListener() { @@ -504,6 +522,21 @@ cbVar_.setToolTipText(PivResource.getS("Affiche les r\xE9sultats pour la variable s\xE9lectionn\xE9e")); cbVar_.setEnabled(false); + // La liste des rep\xE8res + cbRep_=new JComboBox<>(); + cbRep_.setToolTipText("Changement de rep\xE8re"); + cbRep_.addItem("Rep\xE8re de calcul"); + cbRep_.addItem("Rep\xE8re d'origine"); + cbRep_.setPreferredSize(new Dimension(120, cbRep_.getPreferredSize().height)); + cbRep_.setMaximumSize(cbRep_.getPreferredSize()); + cbRep_.addItemListener(new ItemListener() { + + @Override + public void itemStateChanged(ItemEvent e) { + setViewInOriginalSystemCoords(cbRep_.getSelectedIndex()!=0); + } + }); + // La liste d\xE9roulante des images cbImg_ = new JComboBox<>(); cbImg_.addItemListener(new ItemListener() { @@ -616,6 +649,16 @@ } } } + + /** + * Change la vue du rep\xE8re d'origine vers le rep\xE8re de calcul. + * @param _b True : Vue dans le syst\xE8me d'origine. Sinon dans le syst\xE8me de calcul. + */ + private void setViewInOriginalSystemCoords(boolean _b) { + prj_.setOriginalSystemCoords(_b); + majLayers(); + pnLayers_.restaurer(); + } /** * Mise a jour les outils. @@ -638,6 +681,12 @@ if (prj_==null) return; + actTransfMatrix_.getPanel().setProject(prj_); + + if (prj_.isOriginalSystemCoords()) { + cbRep_.setSelectedIndex(1); + } + // La liste d\xE9roulante des images File[] imgs=prj_.getReadyTransfImageFiles(); if (imgs != null) { @@ -711,6 +760,24 @@ @Override public void projectStateChanged(PivProject _prj, String _prop) { + PivResultsI averageResults=null; + if (prj_.getAverageResults()!=null) + averageResults=new PivResultsTransformationAdapter(prj_.getAverageResults(),prj_.getMatrixForCurrentSystem()); + PivResultsI[] rawResults=null; + if (prj_.getInstantRawResults()!=null) { + rawResults=new PivResultsI[prj_.getInstantRawResults().length]; + for (int i=0; i<rawResults.length; i++) { + rawResults[i]=new PivResultsTransformationAdapter(prj_.getInstantRawResults()[i], prj_.getMatrixForCurrentSystem()); + } + } + PivResultsI[] filteredResults=null; + if (prj_.getInstantFilteredResults()!=null) { + filteredResults=new PivResultsI[prj_.getInstantFilteredResults().length]; + for (int i=0; i<filteredResults.length; i++) { + filteredResults[i]=new PivResultsTransformationAdapter(prj_.getInstantFilteredResults()[i], prj_.getMatrixForCurrentSystem()); + } + } + if ("transfImages".equals(_prop)) { majTools(); mdlRealImage.update(); @@ -725,9 +792,9 @@ mdlFlowResults.update(); } else if("averageResults".equals(_prop)) { - if (_prj.getAverageResults()!=null) { - mdlAverageResults=new PivResultsModel(new PivResultsI[]{prj_.getAverageResults()},null); - mdlVelResults=new PivVelResultsModel(new PivResultsI[]{prj_.getAverageResults()}); + if (averageResults!=null) { + mdlAverageResults=new PivResultsModel(new PivResultsI[]{averageResults},null); + mdlVelResults=new PivVelResultsModel(new PivResultsI[]{averageResults}); } else { mdlAverageResults=null; @@ -740,9 +807,9 @@ majTools(); } else if ("instantResults".equals(_prop)) { - if (_prj.getInstantRawResults()!=null) { - mdlInstantResults=new PivResultsModel(prj_.getInstantRawResults(),null); - mdlInstantVelResults=new PivVelResultsModel(prj_.getInstantRawResults()); + if (rawResults!=null) { + mdlInstantResults=new PivResultsModel(rawResults,null); + mdlInstantVelResults=new PivVelResultsModel(rawResults); } else { mdlInstantResults=null; @@ -755,9 +822,9 @@ majTools(); } else if ("instantFilteredResults".equals(_prop)) { - if (_prj.getInstantFilteredResults()!=null) { - mdlInstantFltResults=new PivResultsModel(prj_.getInstantFilteredResults(),null); - mdlInstantVelFltResults=new PivVelResultsModel(prj_.getInstantFilteredResults()); + if (filteredResults!=null) { + mdlInstantFltResults=new PivResultsModel(filteredResults,null); + mdlInstantVelFltResults=new PivVelResultsModel(filteredResults); } else { mdlInstantFltResults=null; @@ -780,7 +847,7 @@ @Override public JComponent[] getSpecificTools() { - return new JComponent[]{btStreamLines_,btAnim_,cbVar_,cbImg_,btLock_,cbVel_}; + return new JComponent[]{btStreamLines_,btTransfMatrix_,cbRep_,btAnim_,cbVar_,cbImg_,btLock_,cbVel_}; } @Override Added: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivTransformationPanel.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivTransformationPanel.java (rev 0) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivTransformationPanel.java 2015-06-22 14:46:09 UTC (rev 9135) @@ -0,0 +1,129 @@ +/* + * @creation 5 avr. 2005 + * @modification $Date: 2008-05-13 12:10:31 $ + * @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 java.awt.BorderLayout; +import java.awt.Dimension; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import javax.swing.BorderFactory; +import javax.swing.JButton; +import javax.swing.JLabel; +import javax.swing.JPanel; + +import org.fudaa.ebli.commun.EbliFormatterInterface; +import org.fudaa.fudaa.piv.metier.PivProject; +import org.fudaa.fudaa.piv.metier.PivTransformationMatrix; + +import com.memoire.bu.BuGridLayout; +import com.memoire.bu.BuLabel; +import com.memoire.bu.BuPanel; +import com.memoire.bu.BuResource; +import com.memoire.bu.BuTextField; +import com.memoire.bu.BuToolButton; + +/** + * Un panneau pour saisir la matrice de transformation rep\xE8re d'origine vers rep\xE8re de calcul. + * + * @author Bertrand Marchand (mar...@de...) + */ +public class PivTransformationPanel extends JPanel { + + protected JButton btApply_; + protected EbliFormatterInterface formatter_; + protected BuTextField tfTx_; + protected BuTextField tfTy_; + protected BuTextField tfTz_; + protected BuTextField tfRz_; + protected BuLabel lbRz_; + protected PivProject prj_; + + /** + * @param _deplacement le calque de deplacement + * @param _formatter + */ + public PivTransformationPanel(EbliFormatterInterface _formatter) { + super(); + + formatter_ = _formatter; + + tfTx_ = BuTextField.createDoubleField(); + tfTx_.setPreferredSize(new Dimension(90, tfTx_.getPreferredSize().height)); + tfTy_ = BuTextField.createDoubleField(); + tfTz_ = BuTextField.createDoubleField(); + tfRz_ = BuTextField.createDoubleField(); + lbRz_ = new BuLabel("Rz:"); + + btApply_ = new BuToolButton(BuResource.BU.getToolIcon("appliquer")); + btApply_.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent _e) { + if (btApply_.isEnabled() && btApply_ == _e.getSource()) { + Double tx = (Double) tfTx_.getValue(); + Double ty = (Double) tfTy_.getValue(); + Double tz = (Double) tfTz_.getValue(); + Double rz = Math.toRadians((Double)tfRz_.getValue()); + + if (tx != null && ty != null && tz != null && rz != null) { + PivTransformationMatrix mat=new PivTransformationMatrix(); + mat.setToTranslation(-tx, -ty); + mat.setTranslateZ(-tz); + mat.rotate(-rz); + if (prj_ != null) + prj_.setMatrixToComputation(mat); + } + } + } + }); + + buildComponent(); + updateComponent(); + } + + public void setProject(PivProject _prj) { + prj_=_prj; + updateComponent(); + } + + public void updateComponent() { + if (prj_==null) + return; + + tfTx_.setValue(formatter_.getXYFormatter().format(-prj_.getMatrixToComputation().getTranslateX())); + tfTy_.setValue(formatter_.getXYFormatter().format(-prj_.getMatrixToComputation().getTranslateY())); + tfTz_.setValue(formatter_.getXYFormatter().format(-prj_.getMatrixToComputation().getTranslateZ())); + tfRz_.setValue(formatter_.getXYFormatter().format(Math.toDegrees(-prj_.getMatrixToComputation().getRotationZ()))); + } + + protected void buildComponent() { + BuPanel pnMain = new BuPanel(); + pnMain.setLayout(new BuGridLayout(2, 2, 2)); + pnMain.add(new BuLabel("Tx:")); + pnMain.add(tfTx_); + pnMain.add(new BuLabel("Ty:")); + pnMain.add(tfTy_); + pnMain.add(new BuLabel("Tz:")); + pnMain.add(tfTz_); + pnMain.add(lbRz_); + pnMain.add(tfRz_); + + BuPanel pnButtons = new BuPanel(); + pnButtons.setLayout(new BorderLayout(5, 5)); + pnButtons.add(btApply_, BorderLayout.SOUTH); + + setLayout(new BorderLayout(5, 5)); + setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2)); + add(new JLabel("<html><p>Param\xE8tres de transformation du<br>rep\xE8re d'origine vers le rep\xE8re de calcul</html>"), BorderLayout.NORTH); + add(pnMain, BorderLayout.CENTER); + add(pnButtons, BorderLayout.EAST); + + + } +} Property changes on: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivTransformationPanel.java ___________________________________________________________________ Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivChangeTransformationAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivChangeTransformationAction.java (rev 0) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivChangeTransformationAction.java 2015-06-22 14:46:09 UTC (rev 9135) @@ -0,0 +1,33 @@ +package org.fudaa.fudaa.piv.action; + +import javax.swing.JComponent; + +import org.fudaa.ctulu.CtuluLib; +import org.fudaa.ebli.commun.EbliActionPaletteAbstract; +import org.fudaa.ebli.commun.EbliFormatter; +import org.fudaa.ebli.commun.EbliLib; +import org.fudaa.ebli.ressource.EbliResource; +import org.fudaa.fudaa.piv.PivTransformationPanel; + +public class PivChangeTransformationAction extends EbliActionPaletteAbstract { + PivTransformationPanel pn_; + + public PivChangeTransformationAction() { + super(EbliLib.getS("Rep\xE8re"), EbliResource.EBLI.getIcon("repere"), "CHANGE_TRANSF"); + setDefaultToolTip(EbliLib.getS("Transformations du rep\xE8re d'origine vers le rep\xE8re de calcul")); + } + + @Override + protected JComponent buildContentPane() { + return getPanel(); + } + + public PivTransformationPanel getPanel() { + if (pn_==null) { + EbliFormatter fmt=new EbliFormatter(); + fmt.setFmt(CtuluLib.getDecimalFormat(2)); + pn_=new PivTransformationPanel(fmt); + } + return pn_; + } +} Property changes on: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivChangeTransformationAction.java ___________________________________________________________________ Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Modified: 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 2015-06-22 14:45:16 UTC (rev 9134) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivDischargeReader.java 2015-06-22 14:46:09 UTC (rev 9135) @@ -7,11 +7,11 @@ */ package org.fudaa.fudaa.piv.io; +import gnu.trove.TDoubleArrayList; + 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.FileCharSimpleReaderAbstract; @@ -57,10 +57,10 @@ */ 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>(); + TDoubleArrayList lx=new TDoubleArrayList(); + TDoubleArrayList ly=new TDoubleArrayList(); + TDoubleArrayList lvx=new TDoubleArrayList(); + TDoubleArrayList lvy=new TDoubleArrayList(); if (super.in_ == null) { analyze_.addErrorFromFile(PivResource.getS("Flux d'entr\xE9e non trouv\xE9"), 0); @@ -114,10 +114,10 @@ } // 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])); + res.setX(lx.toNativeArray()); + res.setY(ly.toNativeArray()); + res.setVx(lvx.toNativeArray()); + res.setVy(lvy.toNativeArray()); } 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/layer/PivControlPointsModel.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivControlPointsModel.java 2015-06-22 14:45:16 UTC (rev 9134) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivControlPointsModel.java 2015-06-22 14:46:09 UTC (rev 9135) @@ -1,13 +1,16 @@ package org.fudaa.fudaa.piv.layer; -import com.vividsolutions.jts.geom.CoordinateSequence; import org.fudaa.ctulu.gis.GISGeometryFactory; import org.fudaa.ctulu.gis.GISMultiPoint; import org.fudaa.ctulu.gis.GISZoneCollectionMultiPoint; import org.fudaa.ebli.calque.edition.ZModeleMultiPointEditable; +import org.fudaa.ebli.geometrie.GrPoint; import org.fudaa.fudaa.piv.metier.PivOrthoPoint; import org.fudaa.fudaa.piv.metier.PivProject; +import org.fudaa.fudaa.piv.metier.PivTransformationMatrix; +import com.vividsolutions.jts.geom.CoordinateSequence; + /** * Un modele pour les points d'orthorectification recalcul\xE9s, dans l'espace r\xE9el. * @@ -42,6 +45,8 @@ GISZoneCollectionMultiPoint zp = (GISZoneCollectionMultiPoint) getGeomData(); zp.removeAll(null); + PivTransformationMatrix mat=prj_.getMatrixForCurrentSystem(); + if (prj_.getOrthoPoints() != null) { PivOrthoPoint[] pts = prj_.getOrthoPoints(); if (pts.length == 0 || pts[0].getComputeRealPoint() == null) { @@ -50,8 +55,9 @@ CoordinateSequence seq = GISGeometryFactory.INSTANCE.getCoordinateSequenceFactory().create(pts.length, 2); for (int i = 0; i < pts.length; i++) { - seq.setOrdinate(i, 0, pts[i].getComputeRealPoint().x_); - seq.setOrdinate(i, 1, pts[i].getComputeRealPoint().y_); + GrPoint ptReal=mat.transform(pts[i].getComputeRealPoint()); + seq.setOrdinate(i, 0, ptReal.x_); + seq.setOrdinate(i, 1, ptReal.y_); } GISMultiPoint mp = (GISMultiPoint) GISGeometryFactory.INSTANCE.createMultiPoint(seq); Modified: 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 2015-06-22 14:45:16 UTC (rev 9134) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivFlowResultsModel.java 2015-06-22 14:46:09 UTC (rev 9135) @@ -14,6 +14,8 @@ import org.fudaa.fudaa.piv.metier.PivFlowResults; import org.fudaa.fudaa.piv.metier.PivGlobalFlowResults; import org.fudaa.fudaa.piv.metier.PivProject; +import org.fudaa.fudaa.piv.metier.PivResultsI; +import org.fudaa.fudaa.piv.metier.PivResultsTransformationAdapter; /** * Un modele pour le trac\xE9 des d\xE9bits sous forme de vecteurs vitesses. @@ -48,7 +50,11 @@ * Met a jour le mod\xE8le */ public void update() { - res_=new PivGlobalFlowResults(prj_.getFlowResults()); + PivResultsI[] res=prj_.getFlowResults(); + PivResultsI[] adapters=new PivResultsI[res==null ? 0:res.length]; + for (int i=0; i<res.length; i++) + adapters[i]=new PivResultsTransformationAdapter(res[i], prj_.getMatrixForCurrentSystem()); + res_=new PivGlobalFlowResults(adapters); } /** Non implement\xE9 */ 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 2015-06-22 14:45:16 UTC (rev 9134) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivOrthoPointsModel.java 2015-06-22 14:46:09 UTC (rev 9135) @@ -16,7 +16,7 @@ import org.fudaa.fudaa.piv.PivVisuPanel; import org.fudaa.fudaa.piv.metier.PivOrthoPoint; import org.fudaa.fudaa.piv.metier.PivProject; -import org.fudaa.fudaa.piv.metier.PivTransect; +import org.fudaa.fudaa.piv.metier.PivTransformationMatrix; /** * Un modele pour les points d'orthorectification, soit dans l'espace d'image @@ -123,7 +123,7 @@ } /** - * Met a jour le mod\xE8le en fonction des points d'orthorectification. + * Met a jour le mod\xE8le en fonction des points d'orthorectification et du rep\xE8re. */ public void update() { if (!eventEnabled_) return; @@ -137,6 +137,7 @@ if (prj_.getOrthoPoints() != null) { PivOrthoPoint[] pts=prj_.getOrthoPoints(); + PivTransformationMatrix mat=prj_.getMatrixForCurrentSystem(); for (int ipt=0; ipt < pts.length; ipt++) { @@ -194,13 +195,14 @@ // GISMultiPoint mp=(GISMultiPoint) GISGeometryFactory.INSTANCE.createMultiPoint(seq); // zp.addGeometry(mp, null, null); - GISPoint pt=new GISPoint(pts[ipt].getRealPoint().x_, pts[ipt].getRealPoint().y_, 0); + GrPoint ptReal=mat.transform(pts[ipt].getRealPoint()); + GISPoint pt=new GISPoint(ptReal.x_, ptReal.y_, 0); zp.add(pt, null); // Les valeurs d'attributs zp.getModel(ATT_IND_XI).setObject(ipt, pts[ipt].getImgPoint().x_, null); zp.getModel(ATT_IND_YI).setObject(ipt, imgSize.height - pts[ipt].getImgPoint().y_, null); - zp.getModel(PivVisuPanel.ATT_IND_ZR).setObject(ipt, pts[ipt].getRealPoint().z_, null); + zp.getModel(PivVisuPanel.ATT_IND_ZR).setObject(ipt, ptReal.z_, null); zp.getModel(PivVisuPanel.ATT_LABEL).setObject(ipt, "P" + (ipt + 1), null); } } 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 2015-06-22 14:45:16 UTC (rev 9134) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivRealImageModel.java 2015-06-22 14:46:09 UTC (rev 9135) @@ -3,12 +3,15 @@ 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.fudaa.piv.metier.PivProject; +import org.fudaa.fudaa.piv.metier.PivTransformationMatrix; /** * Un modele pour l'image dans l'espace r\xE9el. @@ -57,6 +60,8 @@ File[] imgFiles=prj_.getReadyTransfImageFiles(); + PivTransformationMatrix mat=prj_.getMatrixForCurrentSystem(); + // 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]); @@ -86,6 +91,7 @@ new Point2D.Double(prj_.getOrthoParameters().getXmax(),prj_.getOrthoParameters().getYmin()), new Point2D.Double(prj_.getOrthoParameters().getXmin(),prj_.getOrthoParameters().getYmax()) }; + mat.transform(realPts,0,realPts,0,realPts.length); setImage(imgCont); setProj(imgPts, realPts); Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivTransectModel.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivTransectModel.java 2015-06-22 14:45:16 UTC (rev 9134) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivTransectModel.java 2015-06-22 14:46:09 UTC (rev 9135) @@ -20,6 +20,7 @@ import org.fudaa.fudaa.piv.metier.PivProject; import org.fudaa.fudaa.piv.metier.PivTransect; import org.fudaa.fudaa.piv.metier.PivTransectParams; +import org.fudaa.fudaa.piv.metier.PivTransformationMatrix; import com.vividsolutions.jts.geom.CoordinateSequence; @@ -125,11 +126,16 @@ try { GISZoneCollectionLigneBrisee zl=(GISZoneCollectionLigneBrisee) getGeomData(); zl.removeAll(null); + + PivTransformationMatrix mat=prj_.getMatrixForCurrentSystem(); PivTransect[] trans=prj_.getTransects(); if (trans != null) { for (int i=0; i < trans.length; i++) { - GrPolyligne pl=trans[i].getStraight(); + GrPolyligne pl=new GrPolyligne(); + for (int ipt=0; ipt<trans[i].getStraight().nombre(); ipt++) + pl.sommets_.ajoute(mat.transform(trans[i].getStraight().sommet(ipt))); + this.addGeometry(pl, null, null, new AttributeDataAdapter(trans[i])); // Initialisation du Z. zl.initZAttribute(i); Modified: 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 2015-06-22 14:45:16 UTC (rev 9134) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivFlowResults.java 2015-06-22 14:46:09 UTC (rev 9135) @@ -4,11 +4,13 @@ */ package org.fudaa.fudaa.piv.metier; +import org.fudaa.ctulu.CtuluVariable; + /** * Les r\xE9sultats d'un calcul de d\xE9bit. * @author Bertrand Marchand (mar...@de...) */ -public class PivFlowResults { +public class PivFlowResults implements PivResultsI { /** Le debit */ protected double discharge; /** La surface mouill\xE9e */ @@ -18,13 +20,13 @@ /** Le niveau d'eau */ protected double waterElevation; /** Les coordonn\xE9es X des points */ - protected Double[] x; + protected double[] x; /** Les coordonn\xE9es Y des points */ - protected Double[] y; + protected double[] y; /** Les vitesses suivant Vx */ - protected Double[] vx; + protected double[] vx; /** Les vitesses suivant Vy */ - protected Double[] vy; + protected double[] vy; /** * @return Le debit @@ -125,7 +127,7 @@ * Definit les coordonn\xE9es X des points de r\xE9sultats * @param _x Les coordonn\xE9es X */ - public void setX(Double[] _x) { + public void setX(double[] _x) { x=_x; } @@ -133,7 +135,7 @@ * Definit les coordonn\xE9es Y des points de r\xE9sultats * @param _y Les coordonn\xE9es Y */ - public void setY(Double[] _y) { + public void setY(double[] _y) { y=_y; } @@ -141,7 +143,7 @@ * Definit les vitesses X des points de r\xE9sultats * @param _vx Les vitesses X */ - public void setVx(Double[] _vx) { + public void setVx(double[] _vx) { vx=_vx; } @@ -149,7 +151,42 @@ * Definit les vitesses Y des points de r\xE9sultats * @param _vy Les vitesses Y */ - public void setVy(Double[] _vy) { + public void setVy(double[] _vy) { vy=_vy; } + + @Override + public boolean hasResult(CtuluVariable _tpRes) { + return TYPE.VX.equals(_tpRes) || TYPE.VY.equals(_tpRes); + } + + @Override + public CtuluVariable[] getResults() { + return new CtuluVariable[]{TYPE.VX,TYPE.VY}; + } + + @Override + public int getNbPoints() { + return getNombre(); + } + + @Override + public double getValue(int _ind, CtuluVariable _tpRes) { + if (TYPE.VX.equals(_tpRes)) + return getVx(_ind); + else if (TYPE.VY.equals(_tpRes)) + return getVy(_ind); + else + return -1; + } + + @Override + public double[] getValues(CtuluVariable _tpRes) { + if (TYPE.VX.equals(_tpRes)) + return vy; + else if (TYPE.VY.equals(_tpRes)) + return vy; + else + return null; + } } Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivGlobalFlowResults.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivGlobalFlowResults.java 2015-06-22 14:45:16 UTC (rev 9134) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivGlobalFlowResults.java 2015-06-22 14:46:09 UTC (rev 9135) @@ -1,18 +1,20 @@ package org.fudaa.fudaa.piv.metier; +import org.fudaa.fudaa.piv.metier.PivResultsI.TYPE; + /** * Une classe pour englober la totalit\xE9 des r\xE9sultats de d\xE9bit. * @author Bertrand Marchand (mar...@de...) */ public class PivGlobalFlowResults { - PivFlowResults[] res_; + PivResultsI[] res_; int cpt_; /** * Cr\xE9ation d'un r\xE9sultat global. * @param _res Les r\xE9sultats individuels. Peut \xEAtre <code>null</code> */ - public PivGlobalFlowResults(PivFlowResults[] _res) { + public PivGlobalFlowResults(PivResultsI[] _res) { res_=_res; } @@ -20,7 +22,7 @@ * @return La coordonn\xE9e X du point d'index donn\xE9e. */ public double getX(int _i) { - PivFlowResults res=getRes(_i); + PivResultsI res=getRes(_i); if (res!=null) return res.getX(_i-cpt_); return -1; } @@ -29,7 +31,7 @@ * @return La coordonn\xE9e Y du point d'index donn\xE9e. */ public double getY(int _i) { - PivFlowResults res=getRes(_i); + PivResultsI res=getRes(_i); if (res!=null) return res.getY(_i-cpt_); return -1; } @@ -38,8 +40,8 @@ * @return La vitesse Vx du point d'index donn\xE9e. */ public double getVx(int _i) { - PivFlowResults res=getRes(_i); - if (res!=null) return res.getVx(_i-cpt_); + PivResultsI res=getRes(_i); + if (res!=null) return res.getValue(_i-cpt_,TYPE.VX); return -1; } @@ -47,8 +49,8 @@ * @return La vitesse Vy du point d'index donn\xE9e. */ public double getVy(int _i) { - PivFlowResults res=getRes(_i); - if (res!=null) return res.getVy(_i-cpt_); + PivResultsI res=getRes(_i); + if (res!=null) return res.getValue(_i-cpt_,TYPE.VY); return -1; } @@ -58,20 +60,20 @@ public int getNombre() { cpt_=0; if (res_ != null) { - for (PivFlowResults res : res_) { - cpt_+=res.getNombre(); + for (PivResultsI res : res_) { + cpt_+=res.getNbPoints(); } } return cpt_; } - private PivFlowResults getRes(int _i) { + private PivResultsI getRes(int _i) { cpt_=0; if (res_ != null) { - for (PivFlowResults res : res_) { - if (_i < cpt_+res.getNombre()) + for (PivResultsI res : res_) { + if (_i < cpt_+res.getNbPoints()) return res; - cpt_+=res.getNombre(); + cpt_+=res.getNbPoints(); } } return null; Added: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivResultsTransformationAdapter.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivResultsTransformationAdapter.java (rev 0) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivResultsTransformationAdapter.java 2015-06-22 14:46:09 UTC (rev 9135) @@ -0,0 +1,105 @@ +package org.fudaa.fudaa.piv.metier; + +import java.awt.geom.Point2D; + +import org.fudaa.ctulu.CtuluVariable; + +/** + * Une classe pour retourner des r\xE9sultats avec transformation ou non des coordonn\xE9es. + * @author Bertrand Marchand (mar...@de...) + */ +public class PivResultsTransformationAdapter implements PivResultsI { + PivTransformationMatrix mat_; + PivResultsI res_; + /** Cache localisation des points */ + Point2D[] locationPts_; + /** Cache localisation des extremit\xE9s de vecteurs */ + Point2D[] extPts_; + + public PivResultsTransformationAdapter(PivResultsI _res, PivTransformationMatrix _mat) { + mat_=_mat; + res_=_res; + locationPts_=new Point2D[_res.getNbPoints()]; + extPts_=new Point2D[_res.getNbPoints()]; + } + + private Point2D getLocation(int _ind) { + Point2D pt; + if ((pt=locationPts_[_ind])==null) { + pt=new Point2D.Double(res_.getX(_ind),res_.getY(_ind)); + mat_.transform(pt,pt); + locationPts_[_ind]=pt; + } + return pt; + } + + private Point2D getExt(int _ind) { + Point2D pt; + if ((pt=extPts_[_ind])==null) { + pt=new Point2D.Double(res_.getX(_ind)+res_.getValue(_ind,TYPE.VX),res_.getY(_ind)+res_.getValue(_ind,TYPE.VY)); + mat_.transform(pt,pt); + pt.setLocation(pt.getX()-getLocation(_ind).getX(), pt.getY()-getLocation(_ind).getY()); + extPts_[_ind]=pt; + } + return pt; + } + + @Override + public boolean hasResult(CtuluVariable _tpRes) { + return res_.hasResult(_tpRes); + } + + @Override + public CtuluVariable[] getResults() { + return res_.getResults(); + } + + @Override + public int getNbPoints() { + return res_.getNbPoints(); + } + + @Override + public double getX(int _ind) { + return getLocation(_ind).getX(); + } + + @Override + public double getY(int _ind) { + return getLocation(_ind).getY(); + } + + @Override + public double getValue(int _ind, CtuluVariable _tpRes) { + if (_tpRes.equals(TYPE.VX)) { + return getExt(_ind).getX(); + } + else if (_tpRes.equals(TYPE.VY)) { + return getExt(_ind).getY(); + } + else { + return res_.getValue(_ind, _tpRes); + } + } + + @Override + public double[] getValues(CtuluVariable _tpRes) { + if (_tpRes.equals(TYPE.VX)) { + double[] val=new double[getNbPoints()]; + for (int i=0; i<getNbPoints(); i++) { + val[i]=getExt(i).getX(); + } + return val; + } + else if (_tpRes.equals(TYPE.VY)) { + double[] val=new double[getNbPoints()]; + for (int i=0; i<getNbPoints(); i++) { + val[i]=getExt(i).getY(); + } + return val; + } + else { + return res_.getValues(_tpRes); + } + } +} Property changes on: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivResultsTransformationAdapter.java ___________________________________________________________________ Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2015-07-02 09:24:53
|
Revision: 9137 http://sourceforge.net/p/fudaa/svn/9137 Author: bmarchan Date: 2015-07-02 09:24:50 +0000 (Thu, 02 Jul 2015) Log Message: ----------- Fix : Correctif pour le passage RO <-> RC 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/PivOrthoVerifyGRPPanel.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/PivShow3DTransectPanel.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/PivImportGRPAction.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/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/action/PivOrthoParamAction.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 2015-06-29 13:14:53 UTC (rev 9136) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivOriginalView.java 2015-07-02 09:24:50 UTC (rev 9137) @@ -243,6 +243,13 @@ public ZCalquePointEditable getOrthoPointsLayer() { return cqOrthoPoints_; } + + /** + * Change le repere. + */ + public void changeViewSystemCoords() { + majLayers(); + } @Override public EbliActionAbstract getActivationAction() { 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 2015-06-29 13:14:53 UTC (rev 9136) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivOrthoVerifyGRPPanel.java 2015-07-02 09:24:50 UTC (rev 9137) @@ -4,14 +4,17 @@ import java.awt.Component; import java.awt.Dimension; import java.text.NumberFormat; + import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.SwingConstants; import javax.swing.event.TableModelListener; import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.TableModel; + import org.fudaa.ctulu.CtuluLib; import org.fudaa.ctulu.gui.CtuluDialogPanel; +import org.fudaa.ebli.geometrie.GrMorphisme; import org.fudaa.fudaa.piv.metier.PivOrthoPoint; /** @@ -26,6 +29,7 @@ PivOrthoPoint[] pts_; PivImplementation impl_; boolean bImgVisible_; + private GrMorphisme toReal_; /** * Une classe pour le modele de la table affichant les valeurs r\xE9elles et @@ -73,13 +77,13 @@ case 0: return rowIndex+1; case 1: - return pts_[rowIndex].getRealPoint().x_; + return pts_[rowIndex].getRealPoint().applique(toReal_).x_; case 2: - return pts_[rowIndex].getRealPoint().y_; + return pts_[rowIndex].getRealPoint().applique(toReal_).y_; case 3: - return pts_[rowIndex].getComputeRealPoint().x_; + return pts_[rowIndex].getComputeRealPoint().applique(toReal_).x_; case 4: - return pts_[rowIndex].getComputeRealPoint().y_; + return pts_[rowIndex].getComputeRealPoint().applique(toReal_).y_; case 5: return pts_[rowIndex].getError(); } @@ -119,6 +123,7 @@ public PivOrthoVerifyGRPPanel(PivImplementation _impl) { impl_=_impl; pts_=_impl.getCurrentProject().getOrthoPoints(); + toReal_=_impl.getCurrentProject().getTransformationParameters().getToReal(); // On efface le calque image, l'image qu'elle contient n'est pas forcement pertinente. bImgVisible_=impl_.get2dFrame().getVisuPanel().isImageLayerVisible(); 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-06-29 13:14:53 UTC (rev 9136) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivRealView.java 2015-07-02 09:24:50 UTC (rev 9137) @@ -632,12 +632,10 @@ } /** - * Change la vue du rep\xE8re d'origine vers le rep\xE8re de calcul. - * @param _b True : Vue dans le syst\xE8me d'origine. Sinon dans le syst\xE8me de calcul. + * Change le repere. */ public void changeViewSystemCoords() { majLayers(); - pnLayers_.restaurer(); } /** Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivShow3DTransectPanel.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivShow3DTransectPanel.java 2015-06-29 13:14:53 UTC (rev 9136) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivShow3DTransectPanel.java 2015-07-02 09:24:50 UTC (rev 9137) @@ -5,6 +5,8 @@ import java.awt.Dimension; import org.fudaa.ctulu.gui.CtuluDialogPanel; +import org.fudaa.ebli.geometrie.GrMorphisme; +import org.fudaa.ebli.geometrie.GrPoint; import org.fudaa.ebli.geometrie.GrPolyligne; import org.fudaa.ebli.graphe3D.EG3dGraph; import org.fudaa.ebli.graphe3D.data.EG3dLineModelAbstract; @@ -12,6 +14,9 @@ import org.fudaa.ebli.graphe3D.ui.panel.EG3dGraphPanel; import org.fudaa.ebli.trace.TraceLigne; import org.fudaa.fudaa.piv.metier.PivFlowResults; +import org.fudaa.fudaa.piv.metier.PivResultsI; +import org.fudaa.fudaa.piv.metier.PivResultsI.TYPE; +import org.fudaa.fudaa.piv.metier.PivResultsTransformationAdapter; import org.fudaa.fudaa.piv.metier.PivTransect; /** @@ -25,14 +30,14 @@ EG3dGraph pnGraph_; private EG3dDefaultDataRenderer transRenderer_; private EG3dDefaultDataRenderer disRenderer_; + /** Le morphisme pour passer des donn\xE9es data vers le repere courant */ + GrMorphisme toReal_; class TransectModel extends EG3dLineModelAbstract { - PivTransect trans_; GrPolyligne pl_; - public TransectModel(PivTransect _trans) { - trans_=_trans; - pl_=trans_.getStraight(); + public TransectModel(GrPolyligne _pl) { + pl_=_pl; } @Override @@ -57,42 +62,42 @@ } class DischargeModel extends EG3dLineModelAbstract { - PivFlowResults res_; - PivTransect trans_; + PivResultsI res_; + GrPolyligne pl_; double zniv_; double ratio_; - public DischargeModel(PivTransect _trans, PivFlowResults _res) { + public DischargeModel(GrPolyligne _pl, double _zniv, PivResultsI _res) { res_=_res; - trans_=_trans; - zniv_=_res.getWaterElevation(); + pl_=_pl; + zniv_=_zniv; double lgArrowMax=Double.NEGATIVE_INFINITY; double vx; double vy; - for (int i=0; i<_res.getNombre(); i++) { - vx=_res.getVx(i); - vy=_res.getVy(i); + for (int i=0; i<_res.getNbPoints(); i++) { + vx=_res.getValue(i,TYPE.VX); + vy=_res.getValue(i,TYPE.VY); lgArrowMax=Math.max(lgArrowMax,Math.sqrt(vx*vx+vy*vy)); } - ratio_=_trans.getStraight().longueurXY()/6./lgArrowMax; + ratio_=pl_.longueurXY()/6./lgArrowMax; } // Le nombre est modifi\xE9 pour afficher les fleches + une ligne horizontale @Override public int getNbPoints() { - return res_.getNombre()*5+2; + return res_.getNbPoints()*5+2; } @Override public float getX(int _idx) { // 1er point ligne horizontale if (_idx==0) { - return (float)trans_.getStraight().sommet(0).x_; + return (float)pl_.sommet(0).x_; } // 2eme point ligne horizontale if (_idx==1) { - return (float)trans_.getStraight().sommet(trans_.getStraight().nombre()-1).x_; + return (float)pl_.sommet(pl_.nombre()-1).x_; } _idx-=2; @@ -108,19 +113,19 @@ // Point extremit\xE9 case 1: case 3: - return (float)(res_.getX(_idx/5)+res_.getVx(_idx/5)*ratio_); + return (float)(res_.getX(_idx/5)+res_.getValue(_idx/5,TYPE.VX)*ratio_); // Point extremite 1 fleche case 2: - vx=res_.getVx(_idx/5)*ratio_; - vy=res_.getVy(_idx/5)*ratio_; + vx=res_.getValue(_idx/5,TYPE.VX)*ratio_; + vy=res_.getValue(_idx/5,TYPE.VY)*ratio_; lgFleche=Math.sqrt(vx*vx+vy*vy)/10.; double angVit=Math.atan2(vy, vx); double angFleche=angVit+5./6.*Math.PI; return (float)(lgFleche*Math.cos(angFleche)+res_.getX(_idx/5)+vx); // Point extremite 2 fleche case 4: - vx=res_.getVx(_idx/5)*ratio_; - vy=res_.getVy(_idx/5)*ratio_; + vx=res_.getValue(_idx/5,TYPE.VX)*ratio_; + vy=res_.getValue(_idx/5,TYPE.VY)*ratio_; lgFleche=Math.sqrt(vx*vx+vy*vy)/10.; angVit=Math.atan2(vy,vx); angFleche=angVit-5./6.*Math.PI; @@ -132,11 +137,11 @@ public float getY(int _idx) { // 1er point ligne horizontale if (_idx==0) { - return (float)trans_.getStraight().sommet(0).y_; + return (float)pl_.sommet(0).y_; } // 2eme point ligne horizontale else if (_idx==1) { - return (float)trans_.getStraight().sommet(trans_.getStraight().nombre()-1).y_; + return (float)pl_.sommet(pl_.nombre()-1).y_; } _idx-=2; @@ -152,19 +157,19 @@ // Point extremit\xE9 case 1: case 3: - return (float)(res_.getY(_idx/5)+res_.getVy(_idx/5)*ratio_); + return (float)(res_.getY(_idx/5)+res_.getValue(_idx/5,TYPE.VY)*ratio_); // Point extremite 1 fleche case 2: - vx=res_.getVx(_idx/5)*ratio_; - vy=res_.getVy(_idx/5)*ratio_; + vx=res_.getValue(_idx/5,TYPE.VX)*ratio_; + vy=res_.getValue(_idx/5,TYPE.VY)*ratio_; lgFleche=Math.sqrt(vx*vx+vy*vy)/10.; double angVit=Math.atan2(vy, vx); double angFleche=angVit+5./6.*Math.PI; return (float)(lgFleche*Math.sin(angFleche)+res_.getY(_idx/5)+vy); // Point extremite 2 fleche case 4: - vx=res_.getVx(_idx/5)*ratio_; - vy=res_.getVy(_idx/5)*ratio_; + vx=res_.getValue(_idx/5,TYPE.VX)*ratio_; + vy=res_.getValue(_idx/5,TYPE.VY)*ratio_; lgFleche=Math.sqrt(vx*vx+vy*vy)/10.; angVit=Math.atan2(vy, vx); angFleche=angVit-5./6.*Math.PI; @@ -229,10 +234,12 @@ public void setSelectedTransects(int... _isels) { pnGraph_.removeAllDatas(); + toReal_=impl_.getCurrentProject().getTransformationParameters().getToReal(); + PivTransect[] transects=impl_.getCurrentProject().getTransects(); for (int i=0; i<_isels.length; i++) { - TransectModel mdl=new TransectModel(transects[_isels[i]]); + TransectModel mdl=new TransectModel(transects[_isels[i]].getStraight().applique(toReal_)); pnGraph_.addData(mdl); pnGraph_.setDataRenderer(i, transRenderer_); } @@ -240,7 +247,12 @@ PivFlowResults[] res=impl_.getCurrentProject().getFlowResults(); if (res!=null) { for (int i=0; i<_isels.length; i++) { - DischargeModel mdl=new DischargeModel(transects[_isels[i]],res[_isels[i]]); + PivResultsI resAdapter=new PivResultsTransformationAdapter(res[_isels[i]], toReal_); + GrPolyligne pl=transects[_isels[i]].getStraight().applique(toReal_); + GrPoint ptZ=new GrPoint(0,0,res[_isels[i]].getWaterElevation()).applique(toReal_); + + DischargeModel mdl=new DischargeModel(pl,ptZ.z_,resAdapter); + pnGraph_.addData(mdl); pnGraph_.setDataRenderer(i+_isels.length, disRenderer_); } 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 2015-06-29 13:14:53 UTC (rev 9136) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivVisuPanel.java 2015-07-02 09:24:50 UTC (rev 9137) @@ -227,6 +227,8 @@ setViewMode(MODE_TRANSF_VIEW); else setViewMode(MODE_ORIGINAL_VIEW); + + cbRep_.setSelectedIndex(projet.getTransformationParameters().isCurrentSystemOriginal()?1:0); } /** @@ -311,6 +313,8 @@ projet.getTransformationParameters().setCurrentSystemOriginal(cbRep_.getSelectedIndex() != 0); getRealView().changeViewSystemCoords(); + getOriginalView().changeViewSystemCoords(); + restaurer(); } }); } 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 2015-06-29 13:14:53 UTC (rev 9136) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportGRPAction.java 2015-07-02 09:24:50 UTC (rev 9137) @@ -16,6 +16,7 @@ import org.fudaa.ctulu.CtuluIOResult; import org.fudaa.ctulu.gui.CtuluFileChooser; import org.fudaa.ebli.commun.EbliActionSimple; +import org.fudaa.ebli.geometrie.GrMorphisme; import org.fudaa.fudaa.piv.PivImplementation; import org.fudaa.fudaa.piv.PivResource; import org.fudaa.fudaa.piv.PivUtils; @@ -80,7 +81,13 @@ return; } + // Transformation des points reels vers data. PivOrthoPoint[] pts=ret.getSource(); + GrMorphisme toData=impl.getCurrentProject().getTransformationParameters().getToData(); + for (PivOrthoPoint pt : pts) { + pt.getRealPoint().autoApplique(toData); + } + PivOrthoPoint[] newpts; if (keepPreviousPts) { PivOrthoPoint[] oldpts=impl.getCurrentProject().getOrthoPoints(); 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 2015-06-29 13:14:53 UTC (rev 9136) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportTransectAction.java 2015-07-02 09:24:50 UTC (rev 9137) @@ -6,11 +6,13 @@ import org.fudaa.ctulu.CtuluIOResult; import org.fudaa.ctulu.gui.CtuluFileChooser; import org.fudaa.ebli.commun.EbliActionSimple; +import org.fudaa.ebli.geometrie.GrMorphisme; import org.fudaa.fudaa.piv.PivImplementation; import org.fudaa.fudaa.piv.PivResource; import org.fudaa.fudaa.piv.PivUtils; import org.fudaa.fudaa.piv.PivVisuPanel; import org.fudaa.fudaa.piv.io.PivBathyReader; +import org.fudaa.fudaa.piv.metier.PivOrthoPoint; import org.fudaa.fudaa.piv.metier.PivTransect; /** @@ -62,7 +64,12 @@ impl.error(ret.getAnalyze().getResume()); return; } - impl.getCurrentProject().addTransect(ret.getSource()); + + GrMorphisme toData=impl.getCurrentProject().getTransformationParameters().getToData(); + PivTransect trans=ret.getSource(); + trans.getStraight().autoApplique(toData); + + impl.getCurrentProject().addTransect(trans); impl.get2dFrame().getVisuPanel().setViewMode(PivVisuPanel.MODE_REAL_VIEW); } 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 2015-06-29 13:14:53 UTC (rev 9136) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivNewTransectAction.java 2015-07-02 09:24:50 UTC (rev 9137) @@ -7,16 +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.awt.event.KeyEvent; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; -import java.util.Arrays; import javax.swing.AbstractButton; import javax.swing.JComponent; @@ -35,14 +30,19 @@ 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.GrMorphisme; 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; import org.fudaa.fudaa.piv.metier.PivTransectParams; -import org.fudaa.fudaa.piv.metier.PivTransect; +import com.memoire.bu.BuButton; +import com.memoire.bu.BuDesktop; +import com.memoire.fu.FuLog; + /** * 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. @@ -122,6 +122,11 @@ _pl.sommet(i).z_=(Double) _data.getValue(PivVisuPanel.ATT_IND_ZR, i); } + // Transformation vers repere courant. + GrMorphisme toData=pnCalques_.getProject().getTransformationParameters().getToData(); + _pl.autoApplique(toData); + + PivTransectParams params=new PivTransectParams(); params.setInterpolationStep((Double)_data.getValue(PivVisuPanel.ATT_INTER, 0)); params.setRadius((Double)_data.getValue(PivVisuPanel.ATT_RAYON, 0)); 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 2015-06-29 13:14:53 UTC (rev 9136) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOrthoGRPAction.java 2015-07-02 09:24:50 UTC (rev 9137) @@ -31,6 +31,7 @@ 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.GrMorphisme; import org.fudaa.ebli.geometrie.GrPoint; import org.fudaa.ebli.geometrie.GrPolygone; import org.fudaa.ebli.geometrie.GrPolyligne; @@ -93,12 +94,15 @@ PivOrthoPoint[] oldPoints=pnCalques_.getProject().getOrthoPoints(); // Valeurs des points r\xE9els. + GrMorphisme toData=pnCalques_.getProject().getTransformationParameters().getToData(); + 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()); + realPts[i].autoApplique(toData); } if (oldPoints==null) { 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 2015-06-29 13:14:53 UTC (rev 9136) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOrthoParamAction.java 2015-07-02 09:24:50 UTC (rev 9137) @@ -45,6 +45,12 @@ * @param _e L'evenement pour l'action. */ public void actionPerformed(final ActionEvent _e) { + // On ne saisit les donn\xE9es que dans le rep\xE8re de calcul + if (impl.getCurrentProject().getTransformationParameters().isCurrentSystemOriginal()) { + impl.error(PivResource.getS("Erreur"), PivResource.getS("Les param\xE8tres ne peuvent \xEAtre saisis\nque dans le rep\xE8re de calcul.")); + return; + } + if (!isValide()) return; impl.get2dFrame().getVisuPanel().setViewMode(PivVisuPanel.MODE_REAL_VIEW); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2015-07-02 09:30:13
|
Revision: 9138 http://sourceforge.net/p/fudaa/svn/9138 Author: bmarchan Date: 2015-07-02 09:30:11 +0000 (Thu, 02 Jul 2015) Log Message: ----------- Refactoring Modified Paths: -------------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivVisuPanel.java Added Paths: ----------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivCoordinatesSystemPanel.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivChangeCoordinatesSystemAction.java Removed Paths: ------------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivTransformationPanel.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivChangeTransformationAction.java Copied: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivCoordinatesSystemPanel.java (from rev 9136, trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivTransformationPanel.java) =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivCoordinatesSystemPanel.java (rev 0) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivCoordinatesSystemPanel.java 2015-07-02 09:30:11 UTC (rev 9138) @@ -0,0 +1,129 @@ +/* + * @creation 5 avr. 2005 + * @modification $Date: 2008-05-13 12:10:31 $ + * @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 java.awt.BorderLayout; +import java.awt.Dimension; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import javax.swing.BorderFactory; +import javax.swing.JButton; +import javax.swing.JLabel; +import javax.swing.JPanel; + +import org.fudaa.ebli.commun.EbliFormatterInterface; +import org.fudaa.fudaa.piv.metier.PivProject; +import org.fudaa.fudaa.piv.metier.PivTransformationParameters; + +import com.memoire.bu.BuGridLayout; +import com.memoire.bu.BuLabel; +import com.memoire.bu.BuPanel; +import com.memoire.bu.BuResource; +import com.memoire.bu.BuTextField; +import com.memoire.bu.BuToolButton; + +/** + * Un panneau pour saisir la matrice de transformation rep\xE8re d'origine vers rep\xE8re de calcul. + * + * @author Bertrand Marchand (mar...@de...) + */ +public class PivCoordinatesSystemPanel extends JPanel { + + protected JButton btApply_; + protected EbliFormatterInterface formatter_; + protected BuTextField tfTx_; + protected BuTextField tfTy_; + protected BuTextField tfTz_; + protected BuTextField tfRz_; + protected BuLabel lbRz_; + protected PivProject prj_; + + /** + * @param _deplacement le calque de deplacement + * @param _formatter + */ + public PivCoordinatesSystemPanel(EbliFormatterInterface _formatter) { + super(); + + formatter_ = _formatter; + + tfTx_ = BuTextField.createDoubleField(); + tfTx_.setPreferredSize(new Dimension(90, tfTx_.getPreferredSize().height)); + tfTy_ = BuTextField.createDoubleField(); + tfTz_ = BuTextField.createDoubleField(); + tfRz_ = BuTextField.createDoubleField(); + lbRz_ = new BuLabel("Rz:"); + + btApply_ = new BuToolButton(BuResource.BU.getToolIcon("appliquer")); + btApply_.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent _e) { + if (btApply_.isEnabled() && btApply_ == _e.getSource()) { + Double tx = (Double) tfTx_.getValue(); + Double ty = (Double) tfTy_.getValue(); + Double tz = (Double) tfTz_.getValue(); + Double rz = (Double)tfRz_.getValue(); + + if (tx != null && ty != null && tz != null && rz != null && prj_!=null) { + PivTransformationParameters params=new PivTransformationParameters(); + params.setTranslationX(tx); + params.setTranslationY(ty); + params.setTranslationZ(tz); + params.setRotationZ(rz); + prj_.setTransformationParameters(params); + } + } + } + }); + + buildComponent(); + updateComponent(); + } + + public void setProject(PivProject _prj) { + prj_=_prj; + updateComponent(); + } + + public void updateComponent() { + if (prj_==null) + return; + + tfTx_.setValue(formatter_.getXYFormatter().format(prj_.getTransformationParameters().getTranslationX())); + tfTy_.setValue(formatter_.getXYFormatter().format(prj_.getTransformationParameters().getTranslationY())); + tfTz_.setValue(formatter_.getXYFormatter().format(prj_.getTransformationParameters().getTranslationZ())); + tfRz_.setValue(formatter_.getXYFormatter().format(prj_.getTransformationParameters().getRotationZ())); + } + + protected void buildComponent() { + BuPanel pnMain = new BuPanel(); + pnMain.setLayout(new BuGridLayout(2, 2, 2)); + pnMain.add(new BuLabel("Tx:")); + pnMain.add(tfTx_); + pnMain.add(new BuLabel("Ty:")); + pnMain.add(tfTy_); + pnMain.add(new BuLabel("Tz:")); + pnMain.add(tfTz_); + pnMain.add(lbRz_); + pnMain.add(tfRz_); + + BuPanel pnButtons = new BuPanel(); + pnButtons.setLayout(new BorderLayout(5, 5)); + pnButtons.add(btApply_, BorderLayout.SOUTH); + + setLayout(new BorderLayout(5, 5)); + setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2)); + add(new JLabel("<html><p>Param\xE8tres de transformation du<br>rep\xE8re d'origine vers le rep\xE8re de calcul</html>"), BorderLayout.NORTH); + add(pnMain, BorderLayout.CENTER); + add(pnButtons, BorderLayout.EAST); + + + } +} Deleted: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivTransformationPanel.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivTransformationPanel.java 2015-07-02 09:24:50 UTC (rev 9137) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivTransformationPanel.java 2015-07-02 09:30:11 UTC (rev 9138) @@ -1,129 +0,0 @@ -/* - * @creation 5 avr. 2005 - * @modification $Date: 2008-05-13 12:10:31 $ - * @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 java.awt.BorderLayout; -import java.awt.Dimension; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; - -import javax.swing.BorderFactory; -import javax.swing.JButton; -import javax.swing.JLabel; -import javax.swing.JPanel; - -import org.fudaa.ebli.commun.EbliFormatterInterface; -import org.fudaa.fudaa.piv.metier.PivProject; -import org.fudaa.fudaa.piv.metier.PivTransformationParameters; - -import com.memoire.bu.BuGridLayout; -import com.memoire.bu.BuLabel; -import com.memoire.bu.BuPanel; -import com.memoire.bu.BuResource; -import com.memoire.bu.BuTextField; -import com.memoire.bu.BuToolButton; - -/** - * Un panneau pour saisir la matrice de transformation rep\xE8re d'origine vers rep\xE8re de calcul. - * - * @author Bertrand Marchand (mar...@de...) - */ -public class PivTransformationPanel extends JPanel { - - protected JButton btApply_; - protected EbliFormatterInterface formatter_; - protected BuTextField tfTx_; - protected BuTextField tfTy_; - protected BuTextField tfTz_; - protected BuTextField tfRz_; - protected BuLabel lbRz_; - protected PivProject prj_; - - /** - * @param _deplacement le calque de deplacement - * @param _formatter - */ - public PivTransformationPanel(EbliFormatterInterface _formatter) { - super(); - - formatter_ = _formatter; - - tfTx_ = BuTextField.createDoubleField(); - tfTx_.setPreferredSize(new Dimension(90, tfTx_.getPreferredSize().height)); - tfTy_ = BuTextField.createDoubleField(); - tfTz_ = BuTextField.createDoubleField(); - tfRz_ = BuTextField.createDoubleField(); - lbRz_ = new BuLabel("Rz:"); - - btApply_ = new BuToolButton(BuResource.BU.getToolIcon("appliquer")); - btApply_.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent _e) { - if (btApply_.isEnabled() && btApply_ == _e.getSource()) { - Double tx = (Double) tfTx_.getValue(); - Double ty = (Double) tfTy_.getValue(); - Double tz = (Double) tfTz_.getValue(); - Double rz = (Double)tfRz_.getValue(); - - if (tx != null && ty != null && tz != null && rz != null && prj_!=null) { - PivTransformationParameters params=new PivTransformationParameters(); - params.setTranslationX(tx); - params.setTranslationY(ty); - params.setTranslationZ(tz); - params.setRotationZ(rz); - prj_.setTransformationParameters(params); - } - } - } - }); - - buildComponent(); - updateComponent(); - } - - public void setProject(PivProject _prj) { - prj_=_prj; - updateComponent(); - } - - public void updateComponent() { - if (prj_==null) - return; - - tfTx_.setValue(formatter_.getXYFormatter().format(prj_.getTransformationParameters().getTranslationX())); - tfTy_.setValue(formatter_.getXYFormatter().format(prj_.getTransformationParameters().getTranslationY())); - tfTz_.setValue(formatter_.getXYFormatter().format(prj_.getTransformationParameters().getTranslationZ())); - tfRz_.setValue(formatter_.getXYFormatter().format(prj_.getTransformationParameters().getRotationZ())); - } - - protected void buildComponent() { - BuPanel pnMain = new BuPanel(); - pnMain.setLayout(new BuGridLayout(2, 2, 2)); - pnMain.add(new BuLabel("Tx:")); - pnMain.add(tfTx_); - pnMain.add(new BuLabel("Ty:")); - pnMain.add(tfTy_); - pnMain.add(new BuLabel("Tz:")); - pnMain.add(tfTz_); - pnMain.add(lbRz_); - pnMain.add(tfRz_); - - BuPanel pnButtons = new BuPanel(); - pnButtons.setLayout(new BorderLayout(5, 5)); - pnButtons.add(btApply_, BorderLayout.SOUTH); - - setLayout(new BorderLayout(5, 5)); - setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2)); - add(new JLabel("<html><p>Param\xE8tres de transformation du<br>rep\xE8re d'origine vers le rep\xE8re de calcul</html>"), BorderLayout.NORTH); - add(pnMain, BorderLayout.CENTER); - add(pnButtons, BorderLayout.EAST); - - - } -} 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 2015-07-02 09:24:50 UTC (rev 9137) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivVisuPanel.java 2015-07-02 09:30:11 UTC (rev 9138) @@ -40,7 +40,7 @@ import org.fudaa.ebli.trace.TraceIconModel; import org.fudaa.ebli.trace.TraceLigne; import org.fudaa.ebli.trace.TraceLigneModel; -import org.fudaa.fudaa.piv.action.PivChangeTransformationAction; +import org.fudaa.fudaa.piv.action.PivChangeCoordinatesSystemAction; import org.fudaa.fudaa.piv.action.PivComputeGridDefinitionAction; import org.fudaa.fudaa.piv.action.PivEditAction; import org.fudaa.fudaa.piv.action.PivNewTransectAction; @@ -132,7 +132,7 @@ private PivEditAction actEdit_; private SceneRotationAction actRotation_; private SceneDeplacementAction actDeplacement_; - private PivChangeTransformationAction actTransfMatrix_; + private PivChangeCoordinatesSystemAction actTransfMatrix_; private JComboBox<String> cbRep_; AbstractButton btRotation_; @@ -291,7 +291,7 @@ actShowVelocities_=new PivShowVelocityAction((PivImplementation)getCtuluUI()); actShowFlow_=new PivShowFlowAction((PivImplementation)getCtuluUI()); actEdit_=new PivEditAction(this); - actTransfMatrix_=new PivChangeTransformationAction((PivImplementation)getCtuluUI()); + actTransfMatrix_=new PivChangeCoordinatesSystemAction((PivImplementation)getCtuluUI()); getScene().addSelectionListener(actEdit_); // Les actions affich\xE9es dans le menu contextuel. getEditor().getSceneEditor().setActions(new EbliActionInterface[]{actEdit_}); Copied: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivChangeCoordinatesSystemAction.java (from rev 9136, trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivChangeTransformationAction.java) =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivChangeCoordinatesSystemAction.java (rev 0) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivChangeCoordinatesSystemAction.java 2015-07-02 09:30:11 UTC (rev 9138) @@ -0,0 +1,42 @@ +package org.fudaa.fudaa.piv.action; + +import javax.swing.JComponent; + +import org.fudaa.ctulu.CtuluLib; +import org.fudaa.ebli.commun.EbliActionPaletteAbstract; +import org.fudaa.ebli.commun.EbliFormatter; +import org.fudaa.ebli.commun.EbliLib; +import org.fudaa.ebli.ressource.EbliResource; +import org.fudaa.fudaa.piv.PivImplementation; +import org.fudaa.fudaa.piv.PivCoordinatesSystemPanel; + +public class PivChangeCoordinatesSystemAction extends EbliActionPaletteAbstract { + PivCoordinatesSystemPanel pn_; + PivImplementation impl_; + + public PivChangeCoordinatesSystemAction(PivImplementation _impl) { + super(EbliLib.getS("Rep\xE8re"), EbliResource.EBLI.getIcon("repere"), "CHANGE_TRANSF"); + setDefaultToolTip(EbliLib.getS("Transformations du rep\xE8re d'origine vers le rep\xE8re de calcul")); + impl_=_impl; + } + + @Override + protected JComponent buildContentPane() { + return getPanel(); + } + + public PivCoordinatesSystemPanel getPanel() { + if (pn_==null) { + EbliFormatter fmt=new EbliFormatter(); + fmt.setFmt(CtuluLib.getDecimalFormat(2)); + pn_=new PivCoordinatesSystemPanel(fmt); + } + return pn_; + } + + @Override + public void updateBeforeShow() { + super.updateBeforeShow(); + pn_.setProject(impl_.getCurrentProject()); + } +} Deleted: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivChangeTransformationAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivChangeTransformationAction.java 2015-07-02 09:24:50 UTC (rev 9137) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivChangeTransformationAction.java 2015-07-02 09:30:11 UTC (rev 9138) @@ -1,42 +0,0 @@ -package org.fudaa.fudaa.piv.action; - -import javax.swing.JComponent; - -import org.fudaa.ctulu.CtuluLib; -import org.fudaa.ebli.commun.EbliActionPaletteAbstract; -import org.fudaa.ebli.commun.EbliFormatter; -import org.fudaa.ebli.commun.EbliLib; -import org.fudaa.ebli.ressource.EbliResource; -import org.fudaa.fudaa.piv.PivImplementation; -import org.fudaa.fudaa.piv.PivTransformationPanel; - -public class PivChangeTransformationAction extends EbliActionPaletteAbstract { - PivTransformationPanel pn_; - PivImplementation impl_; - - public PivChangeTransformationAction(PivImplementation _impl) { - super(EbliLib.getS("Rep\xE8re"), EbliResource.EBLI.getIcon("repere"), "CHANGE_TRANSF"); - setDefaultToolTip(EbliLib.getS("Transformations du rep\xE8re d'origine vers le rep\xE8re de calcul")); - impl_=_impl; - } - - @Override - protected JComponent buildContentPane() { - return getPanel(); - } - - public PivTransformationPanel getPanel() { - if (pn_==null) { - EbliFormatter fmt=new EbliFormatter(); - fmt.setFmt(CtuluLib.getDecimalFormat(2)); - pn_=new PivTransformationPanel(fmt); - } - return pn_; - } - - @Override - public void updateBeforeShow() { - super.updateBeforeShow(); - pn_.setProject(impl_.getCurrentProject()); - } -} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2015-07-03 07:05:07
|
Revision: 9139 http://sourceforge.net/p/fudaa/svn/9139 Author: bmarchan Date: 2015-07-03 07:05:05 +0000 (Fri, 03 Jul 2015) Log Message: ----------- Fix : Correctif pour le passage RO <-> RC Modified Paths: -------------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivCoordinatesSystemPanel.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/PivCreateParticleLinesAction.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivResultsModel.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/particles/PivComputeAndDisplayParticlesActivity.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/PivParticlesGISDataModel.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/particles/PivParticlesLayer.java Added Paths: ----------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivVisuPanelController.java Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivCoordinatesSystemPanel.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivCoordinatesSystemPanel.java 2015-07-02 09:30:11 UTC (rev 9138) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivCoordinatesSystemPanel.java 2015-07-03 07:05:05 UTC (rev 9139) @@ -72,7 +72,7 @@ Double rz = (Double)tfRz_.getValue(); if (tx != null && ty != null && tz != null && rz != null && prj_!=null) { - PivTransformationParameters params=new PivTransformationParameters(); + PivTransformationParameters params=prj_.getTransformationParameters(); params.setTranslationX(tx); params.setTranslationY(ty); params.setTranslationZ(tz); 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 2015-07-02 09:30:11 UTC (rev 9138) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivOriginalView.java 2015-07-03 07:05:05 UTC (rev 9139) @@ -198,6 +198,10 @@ @Override public void projectStateChanged(PivProject _prj, String _prop) { + + if ("transfParams".equals(_prop)) { + changeViewSystemCoords(); + } if("pgmImages".equals(_prop)) { majTools(); mdlOriginalImage.setSelectedImage(cbImg_.getSelectedIndex()); @@ -247,7 +251,7 @@ /** * Change le repere. */ - public void changeViewSystemCoords() { + protected void changeViewSystemCoords() { majLayers(); } 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-07-02 09:30:11 UTC (rev 9138) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivRealView.java 2015-07-03 07:05:05 UTC (rev 9139) @@ -136,6 +136,12 @@ PivResultsModel mdlInstantFltResults; PivResultsModel mdlAverageResults; + private PivResultsModel mdlParticleAverageResults_; + + private PivResultsModel mdlParticleRawResults_; + + private PivResultsModel mdlParticleFilteredResults_; + /** * Une classe de d\xE9finition de la s\xE9quence d'animation. * @author Bertrand Marchand (mar...@de...) @@ -406,27 +412,23 @@ } /** - * Mise a jour des calques depuis le projet. + * @return Les resultats avec les coordonn\xE9es converties dans le repere courant. */ + public PivResultsI[] buildResultsToReal(PivResultsI... _res) { + // Optimisation : On est dans le repere calcul, pas de transformation + if (!prj_.getTransformationParameters().isCurrentSystemOriginal()) + return _res; + + PivResultsI[] ret=new PivResultsI[_res.length]; + for (int i=0; i<ret.length; i++) + ret[i]=new PivResultsTransformationAdapter(_res[i], prj_.getTransformationParameters().getToReal()); + return ret; + } + + /** + * Mise a jour des calques quand il y a chagement de projet. + */ protected void majLayers() { - PivResultsI averageResults=null; - if (prj_.getAverageResults()!=null) - averageResults=new PivResultsTransformationAdapter(prj_.getAverageResults(),prj_.getTransformationParameters().getToReal()); - PivResultsI[] rawResults=null; - if (prj_.getInstantRawResults()!=null) { - rawResults=new PivResultsI[prj_.getInstantRawResults().length]; - for (int i=0; i<rawResults.length; i++) { - rawResults[i]=new PivResultsTransformationAdapter(prj_.getInstantRawResults()[i], prj_.getTransformationParameters().getToReal()); - } - } - PivResultsI[] filteredResults=null; - if (prj_.getInstantFilteredResults()!=null) { - filteredResults=new PivResultsI[prj_.getInstantFilteredResults().length]; - for (int i=0; i<filteredResults.length; i++) { - filteredResults[i]=new PivResultsTransformationAdapter(prj_.getInstantFilteredResults()[i], prj_.getTransformationParameters().getToReal()); - } - } - mdlRealOrthoPoints=new PivOrthoPointsModel(PivVisuPanel.MODE_REAL_VIEW); mdlRealOrthoPoints.setProjet(prj_); cqRealOrthoPoints_.setModele(mdlRealOrthoPoints); @@ -439,19 +441,42 @@ mdlRealImage.setProjet(prj_); cqRealImg_.setModele(mdlRealImage); - if (averageResults!=null) { - mdlVelResults=new PivVelResultsModel(averageResults); + if (prj_.getAverageResults()!=null) { + mdlVelResults=new PivVelResultsModel(prj_,prj_.getAverageResults()); cqVelResults.setModele(mdlVelResults); + + mdlAverageResults=new PivResultsModel(prj_, null, prj_.getAverageResults()); + cqAverageIso_.setModele(mdlAverageResults); + + // Les resultats restent dans le repere de calcul. Seules les lignes calcul\xE9es le sont dans le rep\xE8re courant. + mdlParticleAverageResults_=new PivResultsModel(prj_,null,prj_.getAverageResults()); + cqAveParticles_.getSource().setResults(mdlParticleAverageResults_); + cqAveParticles_.changeRepere(); } - if (rawResults!=null) { - mdlInstantVelResults=new PivVelResultsModel(rawResults); + if (prj_.getInstantRawResults()!=null) { + mdlInstantVelResults=new PivVelResultsModel(prj_, prj_.getInstantRawResults()); cqInstantVelResults_.setModele(mdlInstantVelResults); + + mdlInstantResults=new PivResultsModel(prj_, null, prj_.getInstantRawResults()); + cqInstantIso_.setModele(mdlInstantResults); + + // Les resultats restent dans le repere de calcul. Seules les lignes calcul\xE9es le sont dans le rep\xE8re courant. + mdlParticleRawResults_=new PivResultsModel(prj_, null, prj_.getInstantRawResults()); + cqRawParticles_.getSource().setResults(mdlParticleRawResults_); + cqRawParticles_.changeRepere(); } - if (filteredResults!=null) { - mdlInstantVelFltResults=new PivVelResultsModel(filteredResults); + if (prj_.getInstantFilteredResults()!=null) { + mdlInstantVelFltResults=new PivVelResultsModel(prj_, prj_.getInstantFilteredResults()); cqInstantVelFltResults_.setModele(mdlInstantVelFltResults); + + mdlInstantFltResults=new PivResultsModel(prj_,null, prj_.getInstantFilteredResults()); + cqInstantFltIso_.setModele(mdlInstantFltResults); + + mdlParticleFilteredResults_=new PivResultsModel(prj_,null,prj_.getInstantFilteredResults()); + cqFltParticles_.getSource().setResults(mdlParticleFilteredResults_); + cqFltParticles_.changeRepere(); } mdlFlowResults=new PivFlowResultsModel(); @@ -460,24 +485,6 @@ // Evite de perdre la selection en cours. cqTransect_.modeleDonnees().setProjet(prj_); - - if (rawResults!=null) { - mdlInstantResults=new PivResultsModel(rawResults,null); - cqInstantIso_.setModele(mdlInstantResults); - cqRawParticles_.getSource().setResults(mdlInstantResults); - } - - if (filteredResults!=null) { - mdlInstantFltResults=new PivResultsModel(filteredResults,null); - cqInstantFltIso_.setModele(mdlInstantFltResults); - cqFltParticles_.getSource().setResults(mdlInstantFltResults); - } - - if (averageResults!=null) { - mdlAverageResults=new PivResultsModel(new PivResultsI[]{averageResults}, null); - cqAverageIso_.setModele(mdlAverageResults); - cqAveParticles_.getSource().setResults(mdlAverageResults); - } } @Override @@ -634,7 +641,7 @@ /** * Change le repere. */ - public void changeViewSystemCoords() { + protected void changeViewSystemCoords() { majLayers(); } @@ -738,25 +745,23 @@ @Override public void projectStateChanged(PivProject _prj, String _prop) { - PivResultsI averageResults=null; - if (prj_.getAverageResults()!=null) - averageResults=new PivResultsTransformationAdapter(prj_.getAverageResults(),prj_.getTransformationParameters().getToReal()); - PivResultsI[] rawResults=null; - if (prj_.getInstantRawResults()!=null) { - rawResults=new PivResultsI[prj_.getInstantRawResults().length]; - for (int i=0; i<rawResults.length; i++) { - rawResults[i]=new PivResultsTransformationAdapter(prj_.getInstantRawResults()[i], prj_.getTransformationParameters().getToReal()); - } + if ("transfParams".equals(_prop)) { + mdlRealImage.update(); + mdlRealOrthoPoints.update(); + cqTransect_.modeleDonnees().update(); + mdlFlowResults.update(); + mdlAverageResults.setSystemViewOriginal(prj_.getTransformationParameters().isCurrentSystemOriginal()); + mdlVelResults.setSystemViewOriginal(prj_.getTransformationParameters().isCurrentSystemOriginal()); + mdlInstantResults.setSystemViewOriginal(prj_.getTransformationParameters().isCurrentSystemOriginal()); + mdlInstantVelResults.setSystemViewOriginal(prj_.getTransformationParameters().isCurrentSystemOriginal()); + mdlInstantFltResults.setSystemViewOriginal(prj_.getTransformationParameters().isCurrentSystemOriginal()); + mdlInstantVelFltResults.setSystemViewOriginal(prj_.getTransformationParameters().isCurrentSystemOriginal()); + + cqAveParticles_.changeRepere(); + cqFltParticles_.changeRepere(); + cqRawParticles_.changeRepere(); } - PivResultsI[] filteredResults=null; - if (prj_.getInstantFilteredResults()!=null) { - filteredResults=new PivResultsI[prj_.getInstantFilteredResults().length]; - for (int i=0; i<filteredResults.length; i++) { - filteredResults[i]=new PivResultsTransformationAdapter(prj_.getInstantFilteredResults()[i], prj_.getTransformationParameters().getToReal()); - } - } - - if ("transfImages".equals(_prop)) { + else if ("transfImages".equals(_prop)) { majTools(); mdlRealImage.update(); } @@ -770,47 +775,52 @@ mdlFlowResults.update(); } else if("averageResults".equals(_prop)) { - if (averageResults!=null) { - mdlAverageResults=new PivResultsModel(new PivResultsI[]{averageResults},null); - mdlVelResults=new PivVelResultsModel(new PivResultsI[]{averageResults}); - } - else { - mdlAverageResults=null; - mdlVelResults=null; - } + PivResultsI[] aveResultats=null; + if (prj_.getAverageResults()!=null) + aveResultats=new PivResultsI[]{prj_.getAverageResults()}; + + mdlAverageResults.setResults(aveResultats); + mdlParticleAverageResults_.setResults(aveResultats); + mdlVelResults.setResults(aveResultats); +// } +// else { +// mdlAverageResults=null; +// mdlVelResults=null; +// } cqAverageIso_.setModele(mdlAverageResults); cqVelResults.setModele(mdlVelResults); - cqAveParticles_.getSource().setResults(mdlAverageResults); + cqAveParticles_.getSource().setResults(mdlParticleAverageResults_); majTools(); } else if ("instantResults".equals(_prop)) { - if (rawResults!=null) { - mdlInstantResults=new PivResultsModel(rawResults,null); - mdlInstantVelResults=new PivVelResultsModel(rawResults); - } - else { - mdlInstantResults=null; - mdlInstantVelResults=null; - } + mdlParticleRawResults_.setResults(prj_.getInstantRawResults()); + mdlInstantResults.setResults(prj_.getInstantRawResults()); + mdlInstantVelResults.setResults(prj_.getInstantRawResults()); +// } +// else { +// mdlInstantResults=null; +// mdlInstantVelResults=null; +// } cqInstantIso_.setModele(mdlInstantResults); cqInstantVelResults_.setModele(mdlInstantVelResults); - cqRawParticles_.getSource().setResults(mdlInstantResults); + cqRawParticles_.getSource().setResults(mdlParticleRawResults_); majTools(); } else if ("instantFilteredResults".equals(_prop)) { - if (filteredResults!=null) { - mdlInstantFltResults=new PivResultsModel(filteredResults,null); - mdlInstantVelFltResults=new PivVelResultsModel(filteredResults); - } - else { - mdlInstantFltResults=null; - mdlInstantVelFltResults=null; - } +// if (prj_.getInstantFilteredResults()!=null) { + mdlParticleFilteredResults_.setResults(prj_.getInstantFilteredResults()); + mdlInstantFltResults.setResults(prj_.getInstantFilteredResults()); + mdlInstantVelFltResults.setResults(prj_.getInstantFilteredResults()); +// } +// else { +// mdlInstantFltResults=null; +// mdlInstantVelFltResults=null; +// } cqInstantFltIso_.setModele(mdlInstantFltResults); cqInstantVelFltResults_.setModele(mdlInstantVelFltResults); - cqFltParticles_.getSource().setResults(mdlInstantFltResults); + cqFltParticles_.getSource().setResults(mdlParticleFilteredResults_); majTools(); } 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 2015-07-02 09:30:11 UTC (rev 9138) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivVisuPanel.java 2015-07-03 07:05:05 UTC (rev 9139) @@ -49,6 +49,7 @@ import org.fudaa.fudaa.piv.action.PivShowVelocityAction; import org.fudaa.fudaa.piv.layer.PivEditableModel; import org.fudaa.fudaa.piv.metier.PivProject; +import org.fudaa.fudaa.piv.metier.PivTransformationParameters; import com.memoire.bu.BuDesktop; import com.memoire.bu.BuSpecificBar; @@ -145,7 +146,7 @@ * @param _impl L'implementation de l'application. */ public PivVisuPanel(PivImplementation _impl) { - super(_impl); + super(null, new PivVisuPanelController(_impl)); // getCqSelectionI().setEditSelectionWhenDoubleClick(false); getScene().setRestrictedToCalqueActif(true); @@ -211,10 +212,10 @@ * @param _prj Le projet. */ public void setProjet(PivProject _prj) { + projet=_prj; for (PivViewI view : getViews()) { view.setProject(_prj); } - projet=_prj; // -1 : pour forcer la mise a jour de la vue. viewMode_=-1; @@ -309,12 +310,12 @@ @Override public void itemStateChanged(ItemEvent e) { - if (projet != null) - projet.getTransformationParameters().setCurrentSystemOriginal(cbRep_.getSelectedIndex() != 0); - - getRealView().changeViewSystemCoords(); - getOriginalView().changeViewSystemCoords(); + if (projet != null) { + PivTransformationParameters params=projet.getTransformationParameters(); + params.setCurrentSystemOriginal(cbRep_.getSelectedIndex() != 0); + projet.setTransformationParameters(params); restaurer(); + } } }); } Added: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivVisuPanelController.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivVisuPanelController.java (rev 0) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivVisuPanelController.java 2015-07-03 07:05:05 UTC (rev 9139) @@ -0,0 +1,19 @@ +package org.fudaa.fudaa.piv; + +import org.fudaa.ctulu.CtuluUI; +import org.fudaa.ebli.calque.ZEbliCalquePanelController; +import org.fudaa.ebli.commun.EbliActionInterface; + +public class PivVisuPanelController extends ZEbliCalquePanelController { + + public PivVisuPanelController(CtuluUI _ui) { + super(_ui); + } + + @Override + protected EbliActionInterface createRepereAction() { + return null; + } + + +} Property changes on: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivVisuPanelController.java ___________________________________________________________________ Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property 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-07-02 09:30:11 UTC (rev 9138) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivCreateParticleLinesAction.java 2015-07-03 07:05:05 UTC (rev 9139) @@ -6,28 +6,26 @@ import javax.swing.event.TreeSelectionListener; import org.fudaa.ebli.calque.BCalque; -import org.fudaa.ebli.calque.ZEbliCalquesPanel; import org.fudaa.ebli.commun.EbliActionSimple; import org.fudaa.fudaa.commun.impl.FudaaCommonImplementation; import org.fudaa.fudaa.commun.impl.FudaaPanelTask; import org.fudaa.fudaa.piv.PivResource; -import org.fudaa.fudaa.piv.particles.PivParticlesSourceI; +import org.fudaa.fudaa.piv.PivVisuPanel; +import org.fudaa.fudaa.piv.particles.PivComputeParticlesTaskModel; import org.fudaa.fudaa.piv.particles.PivParticlesLayer; -import org.fudaa.fudaa.piv.particles.PivComputeParticlesTaskModel; -import org.fudaa.fudaa.sig.FSigResource; /** * Permet d'afficher le dialogue pour les trajectoire/ligne de courant */ public class PivCreateParticleLinesAction extends EbliActionSimple implements TreeSelectionListener { - protected ZEbliCalquesPanel pnCalque_; + protected PivVisuPanel pnCalque_; protected FudaaCommonImplementation impl_; protected PivParticlesLayer destLayer_; PivParticlesLayer[] layers_; PivComputeParticlesTaskModel taskTrajectories = null; - public PivCreateParticleLinesAction(final ZEbliCalquesPanel panel, FudaaCommonImplementation impl, PivParticlesLayer[] _layers) { + public PivCreateParticleLinesAction(final PivVisuPanel panel, FudaaCommonImplementation impl, PivParticlesLayer[] _layers) { super(PivResource.getS("Calcul des lignes de courant/trajectoires..."), PivResource.PIV.getIcon("crystal_oscilloscope.png"), "TRAJ"); impl_ = impl; pnCalque_ = panel; Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivResultsModel.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivResultsModel.java 2015-07-02 09:30:11 UTC (rev 9138) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivResultsModel.java 2015-07-03 07:05:05 UTC (rev 9139) @@ -24,7 +24,9 @@ import org.fudaa.fudaa.meshviewer.layer.MvIsoModelInterface; import org.fudaa.fudaa.meshviewer.model.MvElementModelDefault; import org.fudaa.fudaa.piv.PivResource; +import org.fudaa.fudaa.piv.metier.PivProject; import org.fudaa.fudaa.piv.metier.PivResultsI; +import org.fudaa.fudaa.piv.metier.PivResultsTransformationAdapter; import org.poly2tri.Poly2Tri; import org.poly2tri.triangulation.TriangulationPoint; import org.poly2tri.triangulation.delaunay.DelaunayTriangle; @@ -45,24 +47,84 @@ private CtuluVariable var; /** Le temps courant pour lequel les valeurs sont retourn\xE9es */ private int tIdx=0; + /** Tous les resultats dans le repere courant pour tous les temps */ + private PivResultsI[] results; /** Tous les resultats pour tous les temps */ - private PivResultsI[] results; + private PivResultsI[] resData; + /** Le projet associ\xE9 */ + private PivProject prj_; /** Pour emettre un evenement de propri\xE9t\xE9 */ private PropertyChangeSupport propDelegate=new PropertyChangeSupport(this); + /** La progression */ + ProgressionInterface prog_; + /** Le system de coordonn\xE9es */ + private boolean isSystemOriginal_=false; /** * Construction avec les resultats. * @param _res Les resultats. */ - public PivResultsModel(PivResultsI[] _res, ProgressionInterface _prog) { + public PivResultsModel(PivProject _prj, ProgressionInterface _prog, PivResultsI... _res) { super(null); - results=_res; + prj_=_prj; + resData=_res; + prog_=_prog; + setSystemViewOriginal(false); + var=results[0].getResults()[0]; - EfGrid grid=buildFromResults(_res[0], _prog); + } + + public void setResults(PivResultsI[] _res) { + + resData=_res; + + if (!isSystemOriginal_) { + results=resData; + } + else { + results=adaptResultsToReal(resData); + } + EfGrid grid=null; + if (results!=null && results.length != 0) { + grid=buildFromResults(results[0], prog_); + } setGrid(grid); } /** + * Definit si le system de coordonn\xE9es est original ou calcul. + * @param _b True : Original + */ + public void setSystemViewOriginal(boolean _b) { + if (!_b) { + results=resData; + } + else { + results=adaptResultsToReal(resData); + } + EfGrid grid=null; + if (results!=null && results.length != 0) { + grid=buildFromResults(results[0], prog_); + } + setGrid(grid); + + propDelegate.firePropertyChange("system", isSystemOriginal_, isSystemOriginal_=_b); + } + + /** + * @return Les resultats avec les coordonn\xE9es adapt\xE9es dans le repere courant. + */ + protected PivResultsI[] adaptResultsToReal(PivResultsI... _res) { + if (_res==null) + return null; + + PivResultsI[] ret=new PivResultsI[_res.length]; + for (int i=0; i<ret.length; i++) + ret[i]=new PivResultsTransformationAdapter(_res[i], prj_.getTransformationParameters().getToOriginal()); + return ret; + } + + /** * Ajout d'un calque listener pour les propri\xE9t\xE9s du mod\xE8le (hors datas). * @param _listener Le listener */ 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 2015-07-02 09:30:11 UTC (rev 9138) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivVelResultsModel.java 2015-07-03 07:05:05 UTC (rev 9139) @@ -9,8 +9,10 @@ import org.fudaa.ebli.geometrie.GrSegment; import org.fudaa.ebli.palette.BPaletteInfo.InfoData; import org.fudaa.fudaa.piv.PivResource; +import org.fudaa.fudaa.piv.metier.PivProject; import org.fudaa.fudaa.piv.metier.PivResultsI; import org.fudaa.fudaa.piv.metier.PivResultsI.TYPE; +import org.fudaa.fudaa.piv.metier.PivResultsTransformationAdapter; import com.memoire.bu.BuTable; @@ -25,17 +27,63 @@ int iselres_=0; /** Le point, toujours le m\xEAme, pour retourner les coordonn\xE9es 3D d'un r\xE9sultat. */ GrPoint ptCache_=new GrPoint(); - /** Les resultats */ + /** Les resultats dans le rep\xE8re courant */ PivResultsI[] results_; + /** Tous les r\xE9sultats */ + PivResultsI[] resData; + /** Le projet */ + PivProject prj_; + /** Le system de coordonn\xE9es */ + private boolean isSystemOriginal_=false; /** * Le constructeur. */ - public PivVelResultsModel(PivResultsI... _res) { - results_=_res; + public PivVelResultsModel(PivProject _prj, PivResultsI... _res) { + resData=_res; + prj_=_prj; + setSystemViewOriginal(false); } + public void setResults(PivResultsI[] _res) { + resData=_res; + + if (!isSystemOriginal_) { + results_=resData; + } + else { + results_=adaptResultsToReal(resData); + } + } + /** + * Definit si le system de coordonn\xE9es est original ou calcul. + * @param _b True : Original + */ + public void setSystemViewOriginal(boolean _b) { + if (!_b) { + results_=resData; + } + else { + results_=adaptResultsToReal(resData); + } + isSystemOriginal_=_b; + } + + /** + * @return Les resultats avec les coordonn\xE9es adapt\xE9es dans le repere courant. + */ + protected PivResultsI[] adaptResultsToReal(PivResultsI... _res) { + if (_res==null) + return null; + + PivResultsI[] ret=new PivResultsI[_res.length]; + for (int i=0; i<ret.length; i++) + ret[i]=new PivResultsTransformationAdapter(_res[i], prj_.getTransformationParameters().getToOriginal()); + return ret; + } + + /** * @return Le nombre de temps du mod\xE8le */ public int getNbTime() { Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/particles/PivComputeAndDisplayParticlesActivity.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/particles/PivComputeAndDisplayParticlesActivity.java 2015-07-02 09:30:11 UTC (rev 9138) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/particles/PivComputeAndDisplayParticlesActivity.java 2015-07-03 07:05:05 UTC (rev 9139) @@ -17,6 +17,7 @@ import org.fudaa.ebli.calque.ZEbliCalquesPanel; import org.fudaa.ebli.calque.edition.ZModeleLigneBriseeDefault; import org.fudaa.fudaa.piv.PivResource; +import org.fudaa.fudaa.piv.PivVisuPanel; import org.fudaa.fudaa.sig.layer.FSigLayerGroup; import com.memoire.fu.FuLog; @@ -101,7 +102,7 @@ FSigLayerGroup ligneDeCourant_; - final ZEbliCalquesPanel pn_; + final PivVisuPanel pn_; boolean stop_; @@ -116,7 +117,7 @@ * @param c * @param _tester Peut \xEAtre null */ - public PivComputeAndDisplayParticlesActivity(final ZEbliCalquesPanel calque, PivParticlesLayer c, EfLineIntersectionsCorrectionTester _tester) { + public PivComputeAndDisplayParticlesActivity(final PivVisuPanel calque, PivParticlesLayer c, EfLineIntersectionsCorrectionTester _tester) { this.pn_ = calque; destLayer_ = c; lineIntersectTester_=_tester; @@ -140,7 +141,7 @@ // final Map<GISAttributeInterface, CtuluVariable> varAtttributes = new HashMap<GISAttributeInterface, CtuluVariable>( // 20); // final List<GISAttributeInterface> attDansOrdreIns = fillCorrespondantAttributeVariable(data, calque, varAtttributes); - PivParticlesGISDataModel model = PivParticlesGISDataModel.build(result, log); + PivParticlesGISDataModel model = PivParticlesGISDataModel.build(result, pn_.getProject().getTransformationParameters().getToReal(), log); if (model == null || log.containsFatalError()) return; final GISZoneCollectionLigneBrisee zone = new GISZoneCollectionLigneBrisee(); 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-07-02 09:30:11 UTC (rev 9138) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/particles/PivComputeParticlesTaskModel.java 2015-07-03 07:05:05 UTC (rev 9139) @@ -36,11 +36,13 @@ import org.fudaa.dodico.ef.operation.EfIndexHelper; import org.fudaa.dodico.ef.operation.EfTrajectoireParameters; import org.fudaa.dodico.ef.operation.EfTrajectoireParametersMarqueur; -import org.fudaa.ebli.calque.ZEbliCalquesPanel; import org.fudaa.ebli.commun.EbliLib; +import org.fudaa.ebli.geometrie.GrPoint; import org.fudaa.fudaa.commun.impl.FudaaPanelTaskModel; import org.fudaa.fudaa.piv.PivResource; import org.fudaa.fudaa.piv.PivUtils; +import org.fudaa.fudaa.piv.PivVisuPanel; +import org.fudaa.fudaa.piv.metier.PivProject; import org.fudaa.fudaa.sig.layer.FSigTempLineInLayer; import com.memoire.bu.BuComboBox; @@ -48,7 +50,6 @@ import com.memoire.bu.BuPanel; import com.memoire.bu.BuValueValidator; import com.memoire.bu.BuVerticalLayout; -import com.memoire.fu.FuLog; import com.vividsolutions.jts.geom.Coordinate; import com.vividsolutions.jts.geom.LineString; @@ -110,7 +111,8 @@ private static final double MAXDIST = 1E-3; PivComputeAndDisplayParticlesActivity algoCalcul_; - ZEbliCalquesPanel pnCalques_; + PivVisuPanel pnCalques_; + PivProject prj_; // choix mode JComboBox<String> choixMode_ = new JComboBox<>(new String[] { PivResource.getS("Lignes de courant"), PivResource.getS("Trajectoires") }); JComponent duree_; @@ -145,9 +147,10 @@ * @param _source * @param _destLayer Le calque de destination. Peut \xEAtre null. */ - public PivComputeParticlesTaskModel(final ZEbliCalquesPanel _pnCalques, PivParticlesLayer _destLayer) { + public PivComputeParticlesTaskModel(final PivVisuPanel _pnCalques, PivParticlesLayer _destLayer) { destlayer_=_destLayer; pnCalques_ = _pnCalques; + prj_=pnCalques_.getProject(); int nbTimeStep = destlayer_.getSource().getNbTimeStep(); if (nbTimeStep < 2) choixMode_.setEnabled(false); @@ -241,12 +244,16 @@ } // -- premier point --// - doubleEditor_.setValue(dataReplay.segment_.get(0).x, x_); - doubleEditor_.setValue(dataReplay.segment_.get(0).y, y_); + GrPoint ptFirst=new GrPoint(dataReplay.segment_.get(0).x,dataReplay.segment_.get(0).y,0); + ptFirst.autoApplique(prj_.getTransformationParameters().getToReal()); + doubleEditor_.setValue(ptFirst.x_, x_); + doubleEditor_.setValue(ptFirst.y_, y_); integerEditor_.setValue(dataReplay.nbPointsInitiaux_, nbPoints_); // -- dernier point --// - doubleEditor_.setValue(dataReplay.segment_.get(dataReplay.segment_.size() - 1).x, x2_); - doubleEditor_.setValue(dataReplay.segment_.get(dataReplay.segment_.size() - 1).y, y2_); + GrPoint ptLast=new GrPoint(dataReplay.segment_.get(dataReplay.segment_.size() - 1).x,dataReplay.segment_.get(dataReplay.segment_.size() - 1).y,0); + ptLast.autoApplique(prj_.getTransformationParameters().getToReal()); + doubleEditor_.setValue(ptLast.x_, x2_); + doubleEditor_.setValue(ptLast.y_, y2_); // -- marqueurs --// if (dataReplay.marqueur_ != null) { @@ -291,12 +298,20 @@ return res; } + /** + * @return Le dernier point, dans l'espace r\xE9el de calcul. + */ private Coordinate getEndCoordinate() { - return new Coordinate(getDoubleValue(x2_), getDoubleValue(y2_)); + GrPoint pt=new GrPoint(getDoubleValue(x2_), getDoubleValue(y2_),0).applique(prj_.getTransformationParameters().getToData()); + return new Coordinate(pt.x_, pt.y_); } + /** + * @return Le premier point, dans l'espace r\xE9el de calcul. + */ private Coordinate getFirstCoordinate() { - return new Coordinate(getDoubleValue(x_), getDoubleValue(y_)); + GrPoint pt=new GrPoint(getDoubleValue(x_), getDoubleValue(y_),0).applique(prj_.getTransformationParameters().getToData()); + return new Coordinate(pt.x_, pt.y_); } @Override @@ -707,13 +722,4 @@ lineChooser_.close(); } - -public ZEbliCalquesPanel getCalque_() { - return pnCalques_; } - -public void setCalque_(ZEbliCalquesPanel calque_) { - this.pnCalques_ = calque_; -} - -} Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/particles/PivParticlesGISDataModel.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/particles/PivParticlesGISDataModel.java 2015-07-02 09:30:11 UTC (rev 9138) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/particles/PivParticlesGISDataModel.java 2015-07-03 07:05:05 UTC (rev 9139) @@ -23,6 +23,8 @@ import org.fudaa.ctulu.gis.GISPolyligne; import org.fudaa.dodico.ef.operation.EfTrajectoireParameters; import org.fudaa.dodico.ef.operation.EfTrajectoireResultBuilder; +import org.fudaa.ebli.geometrie.GrMorphisme; +import org.fudaa.ebli.geometrie.GrPoint; import org.fudaa.fudaa.piv.PivResource; import com.memoire.fu.FuLog; @@ -49,7 +51,7 @@ Map<GISAttributeInterface, List> values_; @SuppressWarnings("unchecked") - protected static PivParticlesGISDataModel build(List<EfTrajectoireResultBuilder> _res/*, EfTrajectoireParameters _params, List<GISAttributeInterface> _att, Map<GISAttributeInterface, CtuluVariable> _corresp*/, CtuluAnalyze _analyse) { + protected static PivParticlesGISDataModel build(List<EfTrajectoireResultBuilder> _res, GrMorphisme _toReal, CtuluAnalyze _analyse) { List<GISPolyligne> poly=new ArrayList<GISPolyligne>(_res.size()); EfTrajectoireParameters params=null; List<GISAttributeInterface> attrs=null; @@ -69,6 +71,11 @@ nbRemove++; } else { + // Changement de coordonn\xE9es pour la visualisation (comme pour les autres calques). Ces coordonn\xE9es ne sont pas sauvegard\xE9es. + for (int i=0; i<coords.size(); i++) { + GrPoint pt=new GrPoint(coords.get(i)).applique(_toReal); + coords.set(i, new Coordinate(pt.x_, pt.y_, pt.z_)); + } poly.add((GISPolyligne) GISGeometryFactory.INSTANCE.createLineString((Coordinate[]) coords.toArray(new Coordinate[coords.size()]))); for (GISAttributeInterface att : attrs) { 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-07-02 09:30:11 UTC (rev 9138) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/particles/PivParticlesLayer.java 2015-07-03 07:05:05 UTC (rev 9139) @@ -17,12 +17,16 @@ import org.fudaa.ctulu.CtuluLib; import org.fudaa.ctulu.CtuluLibArray; import org.fudaa.ctulu.CtuluLibString; +import org.fudaa.ctulu.CtuluLog; import org.fudaa.ctulu.CtuluRange; import org.fudaa.ctulu.gis.GISAttributeInterface; import org.fudaa.ctulu.gis.GISAttributeModel; import org.fudaa.ctulu.gis.GISAttributeModelBooleanInterface; import org.fudaa.ctulu.gis.GISAttributeModelDoubleInterface; +import org.fudaa.ctulu.gis.GISGeometryFactory; +import org.fudaa.ctulu.gis.GISPolyligne; import org.fudaa.ctulu.gis.GISZoneCollection; +import org.fudaa.ctulu.gis.GISZoneCollectionLigneBrisee; import org.fudaa.ctulu.gui.CtuluAnalyzeGUI; import org.fudaa.dodico.ef.operation.EfTrajectoireActivity; import org.fudaa.dodico.ef.operation.EfTrajectoireParameters; @@ -42,9 +46,11 @@ import org.fudaa.ebli.trace.TraceLigne; import org.fudaa.ebli.trace.TraceLigneModel; import org.fudaa.fudaa.piv.PivResource; +import org.fudaa.fudaa.piv.PivVisuPanel; import org.fudaa.fudaa.sig.layer.FSigLayerLine; import com.memoire.fu.FuLog; +import com.vividsolutions.jts.geom.CoordinateSequence; /** * Le layer charge d'afficher les donn\xE9es d'une trajectoire @@ -68,7 +74,7 @@ Map<String, BPalettePlage> namePalette_; - ZEbliCalquesPanel vue2d_; + PivVisuPanel vue2d_; PivParticlesSourceI src_; /** @@ -77,7 +83,7 @@ */ EfTrajectoireParameters dataMemory_; - public PivParticlesLayer(final ZEbliCalquesPanel vue2d, final PivParticlesSourceI _src, final ZModeleLigneBrisee _modele) { + public PivParticlesLayer(final PivVisuPanel vue2d, final PivParticlesSourceI _src, final ZModeleLigneBrisee _modele) { super(_modele==null ? new ZModeleLigneBriseeDefault():_modele); // if (_modele==null) { @@ -347,6 +353,16 @@ return _prop; } + /** + * Appel\xE9 quand le repere a chang\xE9. On reconstruit les lignes suivant la transformation. + */ + public void changeRepere() { + if (dataMemory_!=null) { + CtuluAnalyze log=new CtuluAnalyze(); + restoreData(log, dataMemory_); + } + } + private void restoreData(final CtuluAnalyze log, final EfTrajectoireParameters restore) { log.clear(); final EfTrajectoireActivity ac = new EfTrajectoireActivity(src_.getInterpolator(), null, src_.getTimes()); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2015-08-14 20:43:20
|
Revision: 9146 http://sourceforge.net/p/fudaa/svn/9146 Author: bmarchan Date: 2015-08-14 20:43:18 +0000 (Fri, 14 Aug 2015) Log Message: ----------- Nettoyage sur layers resultats 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/layer/PivResultsLayer.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivResultsModel.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 2015-07-07 15:05:56 UTC (rev 9145) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivRealView.java 2015-08-14 20:43:18 UTC (rev 9146) @@ -61,7 +61,6 @@ import org.fudaa.fudaa.piv.metier.PivProject; import org.fudaa.fudaa.piv.metier.PivProjectStateListener; import org.fudaa.fudaa.piv.metier.PivResultsI; -import org.fudaa.fudaa.piv.metier.PivResultsTransformationAdapter; import org.fudaa.fudaa.piv.particles.PivParticlesLayer; import org.fudaa.fudaa.piv.particles.PivResultSource; @@ -74,7 +73,6 @@ public class PivRealView implements PivViewI, PivProjectStateListener { /** Le nom de la vue en espace image r\xE9el */ public static final String TITLE=PivResource.getS("Espace r\xE9el"); - /** La d\xE9finition de coordonn\xE9e pour X */ private static final EbliCoordinateDefinition DEF_COOR_X=new EbliCoordinateDefinition("X", new EbliFormatter(SI.METER)); /** La d\xE9finition de coordonn\xE9e pour Y */ @@ -82,7 +80,7 @@ private PivNewTransectAction actNewTransect_; private PivTransectParamAction actParamsTransect_; - + private PivCreateParticleLinesAction actParticleLines_; private EbliActionAbstract actRealView_; private PivVisuPanel pnLayers_; private JComboBox<CtuluVariable> cbVar_; @@ -91,15 +89,17 @@ private JComboBox<String> cbVel_; private EbliAnimationAction actAnim_; private AbstractButton btAnim_; - private PivCreateParticleLinesAction actParticleLines_; private AbstractButton btStreamLines_; private PivProject prj_; private List<BCalqueAffichage> layers_=new ArrayList<BCalqueAffichage>(); private boolean enableEvents2_=true; private boolean enableEvents_=true; + /** L'affichage des GRP */ ZCalquePointEditable cqRealOrthoPoints_; + /** L'affichage des GRP de controle */ ZCalqueMultiPointEditable cqRealControlPoints_; + /** L'affichage de l'image en coordon\xE9es r\xE9elles */ PivImageRasterLayer cqRealImg_; /** L'affichage d'un transect */ PivTransectLayer cqTransect_; @@ -135,13 +135,10 @@ PivResultsModel mdlInstantResults; PivResultsModel mdlInstantFltResults; PivResultsModel mdlAverageResults; + PivResultsModel mdlParticleAverageResults_; + PivResultsModel mdlParticleRawResults_; + PivResultsModel mdlParticleFilteredResults_; - private PivResultsModel mdlParticleAverageResults_; - - private PivResultsModel mdlParticleRawResults_; - - private PivResultsModel mdlParticleFilteredResults_; - /** * Une classe de d\xE9finition de la s\xE9quence d'animation. * @author Bertrand Marchand (mar...@de...) @@ -412,20 +409,6 @@ } /** - * @return Les resultats avec les coordonn\xE9es converties dans le repere courant. - */ - public PivResultsI[] buildResultsToReal(PivResultsI... _res) { - // Optimisation : On est dans le repere calcul, pas de transformation - if (!prj_.getTransformationParameters().isCurrentSystemOriginal()) - return _res; - - PivResultsI[] ret=new PivResultsI[_res.length]; - for (int i=0; i<ret.length; i++) - ret[i]=new PivResultsTransformationAdapter(_res[i], prj_.getTransformationParameters().getToReal()); - return ret; - } - - /** * Mise a jour des calques quand il y a chagement de projet. */ protected void majLayers() { @@ -441,20 +424,23 @@ mdlRealImage.setProjet(prj_); cqRealImg_.setModele(mdlRealImage); - if (prj_.getAverageResults()!=null) { - mdlVelResults=new PivVelResultsModel(prj_,prj_.getAverageResults()); + PivResultsI[] aveResultats=null; + if (prj_.getAverageResults()!=null) + aveResultats=new PivResultsI[]{prj_.getAverageResults()}; +// if (prj_.getAverageResults()!=null) { + mdlVelResults=new PivVelResultsModel(prj_,aveResultats); cqVelResults.setModele(mdlVelResults); - mdlAverageResults=new PivResultsModel(prj_, null, prj_.getAverageResults()); + mdlAverageResults=new PivResultsModel(prj_, null, aveResultats); cqAverageIso_.setModele(mdlAverageResults); // Les resultats restent dans le repere de calcul. Seules les lignes calcul\xE9es le sont dans le rep\xE8re courant. - mdlParticleAverageResults_=new PivResultsModel(prj_,null,prj_.getAverageResults()); + mdlParticleAverageResults_=new PivResultsModel(prj_,null,aveResultats); cqAveParticles_.getSource().setResults(mdlParticleAverageResults_); cqAveParticles_.changeRepere(); - } +// } - if (prj_.getInstantRawResults()!=null) { +// if (prj_.getInstantRawResults()!=null) { mdlInstantVelResults=new PivVelResultsModel(prj_, prj_.getInstantRawResults()); cqInstantVelResults_.setModele(mdlInstantVelResults); @@ -465,9 +451,9 @@ mdlParticleRawResults_=new PivResultsModel(prj_, null, prj_.getInstantRawResults()); cqRawParticles_.getSource().setResults(mdlParticleRawResults_); cqRawParticles_.changeRepere(); - } +// } - if (prj_.getInstantFilteredResults()!=null) { +// if (prj_.getInstantFilteredResults()!=null) { mdlInstantVelFltResults=new PivVelResultsModel(prj_, prj_.getInstantFilteredResults()); cqInstantVelFltResults_.setModele(mdlInstantVelFltResults); @@ -477,7 +463,7 @@ mdlParticleFilteredResults_=new PivResultsModel(prj_,null,prj_.getInstantFilteredResults()); cqFltParticles_.getSource().setResults(mdlParticleFilteredResults_); cqFltParticles_.changeRepere(); - } +// } mdlFlowResults=new PivFlowResultsModel(); mdlFlowResults.setProjet(prj_); @@ -637,13 +623,6 @@ } } } - - /** - * Change le repere. - */ - protected void changeViewSystemCoords() { - majLayers(); - } /** * Mise a jour les outils. Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivResultsLayer.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivResultsLayer.java 2015-07-07 15:05:56 UTC (rev 9145) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivResultsLayer.java 2015-08-14 20:43:18 UTC (rev 9146) @@ -232,7 +232,7 @@ CtuluRange range = new CtuluRange(); this.getRange(range); palette.initPlages(10, range.min_, range.max_); - palette.setSousTitre(modele()==null ? null:modele().getCurrentVar().getName()); + palette.setSousTitre((modele()==null || modele().getCurrentVar()==null) ? null:modele().getCurrentVar().getName()); this.setPaletteCouleurPlages(palette); } Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivResultsModel.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivResultsModel.java 2015-07-07 15:05:56 UTC (rev 9145) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivResultsModel.java 2015-08-14 20:43:18 UTC (rev 9146) @@ -67,28 +67,20 @@ public PivResultsModel(PivProject _prj, ProgressionInterface _prog, PivResultsI... _res) { super(null); prj_=_prj; - resData=_res; prog_=_prog; - setSystemViewOriginal(false); - - var=results[0].getResults()[0]; + setResults(_res); } public void setResults(PivResultsI[] _res) { - + PivResultsI[] oldRes=resData; resData=_res; - if (!isSystemOriginal_) { - results=resData; - } - else { - results=adaptResultsToReal(resData); - } - EfGrid grid=null; - if (results!=null && results.length != 0) { - grid=buildFromResults(results[0], prog_); - } - setGrid(grid); + setSystemViewOriginal(isSystemOriginal_); + + if (results!=null && results.length !=0 && var==null) + var=results[0].getResults()[0]; + + propDelegate.firePropertyChange("results", oldRes, resData); } /** @@ -108,7 +100,6 @@ } setGrid(grid); - propDelegate.firePropertyChange("system", isSystemOriginal_, isSystemOriginal_=_b); } /** This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2016-02-24 15:56:10
|
Revision: 9292 http://sourceforge.net/p/fudaa/svn/9292 Author: bmarchan Date: 2016-02-24 15:56:08 +0000 (Wed, 24 Feb 2016) Log Message: ----------- - Add show flow results action - Signe +/- pour l'ecart sur fenetre de resultats de calcul de debit Modified Paths: -------------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivFlowInfoPanel.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/PivRealView.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivVisuPanel.java Added Paths: ----------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivShowFlowResultsAction.java Removed Paths: ------------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivShowFlowAction.java Modified: 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 2016-02-24 12:58:11 UTC (rev 9291) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivFlowInfoPanel.java 2016-02-24 15:56:08 UTC (rev 9292) @@ -10,6 +10,7 @@ import java.awt.BorderLayout; import java.awt.Component; import java.awt.Dimension; +import java.text.DecimalFormat; import java.text.NumberFormat; import javax.swing.JLabel; @@ -88,17 +89,17 @@ return rowIndex==res_.length? meanDisch_:res_[rowIndex].getDischarge(); case 2: val=rowIndex==res_.length? meanDisch_:res_[rowIndex].getDischarge(); - return Math.abs((val-meanDisch_)/meanDisch_*100); + return (val-meanDisch_)/meanDisch_*100; case 3: return rowIndex==res_.length? meanArea_:res_[rowIndex].getWettedArea(); case 4: val=rowIndex==res_.length? meanArea_:res_[rowIndex].getWettedArea(); - return Math.abs((val-meanArea_)/meanArea_*100); + return (val-meanArea_)/meanArea_*100; case 5: return rowIndex==res_.length? meanMeanV_:res_[rowIndex].getMeanVelocity(); case 6: val=rowIndex==res_.length? meanMeanV_:res_[rowIndex].getMeanVelocity(); - return Math.abs((val-meanMeanV_)/meanMeanV_*100); + return (val-meanMeanV_)/meanMeanV_*100; } } @@ -111,19 +112,26 @@ * Une classe pour une repr\xE9sentation des doubles. */ private class DischargeCellRenderer extends DefaultTableCellRenderer { - NumberFormat fmt = CtuluLib.getDecimalFormat(3); + DecimalFormat fmt = CtuluLib.getDecimalFormat(3); + DecimalFormat fmtEcart = CtuluLib.getNoEffectDecimalFormat(); public DischargeCellRenderer() { this.setHorizontalAlignment(SwingConstants.RIGHT); fmt.setMaximumFractionDigits(3); fmt.setMinimumFractionDigits(3); + fmtEcart.setMaximumFractionDigits(1); + fmtEcart.setMinimumFractionDigits(1); + fmtEcart.setPositivePrefix("+"); } public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { super.getTableCellRendererComponent(table,value,isSelected,hasFocus,row,column); if (value instanceof Double) { - this.setText(fmt.format((Double)value)); + if (column==2 || column==4 || column==6) + this.setText(fmtEcart.format((Double)value)); + else + this.setText(fmt.format((Double)value)); } return this; } 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 2016-02-24 12:58:11 UTC (rev 9291) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java 2016-02-24 15:56:08 UTC (rev 9292) @@ -57,6 +57,7 @@ import org.fudaa.fudaa.piv.action.PivOrthoVerifyGRPAction; import org.fudaa.fudaa.piv.action.PivSelectImagesAction; import org.fudaa.fudaa.piv.action.PivShow3DTransectAction; +import org.fudaa.fudaa.piv.action.PivShowFlowResultsAction; import org.fudaa.fudaa.piv.metier.PivProject; import org.fudaa.fudaa.piv.metier.PivProjectStateListener; @@ -820,7 +821,7 @@ mn.add(sm); mn.add(get2dFrame().getVisuPanel().getRealView().getParamsTransectAction().buildMenuItem(EbliComponentFactory.INSTANCE)); mn.add(new PivComputeFlowAction(this)); -// mn.add(get2dFrame().getVisuPanel().getShowFlowAction().buildMenuItem(EbliComponentFactory.INSTANCE)); + mn.add(new PivShowFlowResultsAction(this)); mn.add(new PivShow3DTransectAction(this)); mn.addSeparator(PivResource.getS("Vue")); 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 2016-02-24 12:58:11 UTC (rev 9291) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivRealView.java 2016-02-24 15:56:08 UTC (rev 9292) @@ -311,13 +311,6 @@ 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)); - cqFlowResults.addPropertyChangeListener(new PropertyChangeListener() { - public void propertyChange(PropertyChangeEvent evt) { - if ("visible".equals(evt.getPropertyName())) { - pnLayers_.getShowFlowAction().setSelected((Boolean)evt.getNewValue()); - } - } - }); // Layer des transect cqTransect_= new PivTransectLayer(); 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 2016-02-24 12:58:11 UTC (rev 9291) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivVisuPanel.java 2016-02-24 15:56:08 UTC (rev 9292) @@ -45,7 +45,6 @@ import org.fudaa.fudaa.piv.action.PivEditAction; import org.fudaa.fudaa.piv.action.PivNewTransectAction; import org.fudaa.fudaa.piv.action.PivOrthoGRPAction; -import org.fudaa.fudaa.piv.action.PivShowFlowAction; import org.fudaa.fudaa.piv.action.PivShowVelocityAction; import org.fudaa.fudaa.piv.layer.PivEditableModel; import org.fudaa.fudaa.piv.metier.PivProject; @@ -129,7 +128,6 @@ private PivComputeGridDefinitionAction actComputeGrid_; private PivShowVelocityAction actShowVelocities_; - private PivShowFlowAction actShowFlow_; private PivEditAction actEdit_; private SceneRotationAction actRotation_; private SceneDeplacementAction actDeplacement_; @@ -290,7 +288,6 @@ protected void buildActions() { actComputeGrid_=new PivComputeGridDefinitionAction(this); actShowVelocities_=new PivShowVelocityAction((PivImplementation)getCtuluUI()); - actShowFlow_=new PivShowFlowAction((PivImplementation)getCtuluUI()); actEdit_=new PivEditAction(this); actTransfMatrix_=new PivChangeCoordinatesSystemAction((PivImplementation)getCtuluUI()); getScene().addSelectionListener(actEdit_); @@ -377,14 +374,6 @@ } /** - * Retourne l'action pour voir les d\xE9bits. - * @return L'action. - */ - public PivShowFlowAction getShowFlowAction() { - return actShowFlow_; - } - - /** * Retourne l'action pour \xE9diter une g\xE9om\xE9trie. * @return L'action. */ Deleted: 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 2016-02-24 12:58:11 UTC (rev 9291) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivShowFlowAction.java 2016-02-24 15:56:08 UTC (rev 9292) @@ -1,50 +0,0 @@ -/* - * @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 vitesses moyennes sur la verticale"), 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()); - } -} Added: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivShowFlowResultsAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivShowFlowResultsAction.java (rev 0) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivShowFlowResultsAction.java 2016-02-24 15:56:08 UTC (rev 9292) @@ -0,0 +1,69 @@ +/* + * @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 org.fudaa.ctulu.gui.CtuluDialog; +import org.fudaa.ebli.commun.EbliActionSimple; +import org.fudaa.fudaa.piv.PivFlowInfoPanel; +import org.fudaa.fudaa.piv.PivImplementation; +import org.fudaa.fudaa.piv.PivResource; + +/** + * Une action pour afficher les resultats de calcul de d\xE9bit (sans refaire le calcul). + * + * @author Bertrand Marchand (mar...@de...) + * @version $Id: PivComputeFlowAction.java 9133 2015-06-16 16:36:57Z bmarchan $ + */ +public class PivShowFlowResultsAction extends EbliActionSimple { + PivImplementation impl; + CtuluDialog diProgress_; + + /** + * Constructeur. + * @param _impl L'implementation. + */ + public PivShowFlowResultsAction(PivImplementation _impl) { + super(PivResource.getS("Afficher les r\xE9sultats du calcul..."), null, "SHOW_FLOW_RESULTS"); + + impl=_impl; + setEnabled(false); + } + + /** + * Affiche la fenetre resultats. + * @param _e L'evenement pour l'action. + */ + @Override + public void actionPerformed(final ActionEvent _e) { + if (!isValide()) { + return; + } + + PivFlowInfoPanel pnInfo=new PivFlowInfoPanel(impl.getCurrentProject().getFlowResults()); + pnInfo.afficheModale(impl.getFrame(), PivResource.getS("R\xE9sultats du calcul"), CtuluDialog.OK_OPTION); + } + + /** + * @return true Si toutes les donn\xE9es sont pr\xE9sentes pour un lancement. + */ + public boolean isValide() { + if (impl.getCurrentProject().getFlowResults()==null) { + impl.error(PivResource.getS("Erreur"), PivResource.getS("Il n'existe pas de r\xE9sultats de calcul de d\xE9bit")); + return false; + } + + return true; + } + + @Override + public String getEnableCondition() { + return PivResource.getS("Les r\xE9sultats de calcul de d\xE9bit doivent exister"); + } +} Property changes on: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivShowFlowResultsAction.java ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2016-03-03 09:20:11
|
Revision: 9310 http://sourceforge.net/p/fudaa/svn/9310 Author: bmarchan Date: 2016-03-03 09:20:09 +0000 (Thu, 03 Mar 2016) Log Message: ----------- Ajout centre de rotation dans panneau de transformation + sauvegarde/restitution Modified Paths: -------------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivCoordinatesSystemPanel.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivGlobalXmlParam.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivGlobalXmlReader.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivGlobalXmlWriter.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProjectPersistence.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivTransformationParameters.java Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivCoordinatesSystemPanel.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivCoordinatesSystemPanel.java 2016-02-26 10:04:29 UTC (rev 9309) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivCoordinatesSystemPanel.java 2016-03-03 09:20:09 UTC (rev 9310) @@ -23,7 +23,7 @@ import com.memoire.bu.BuGridLayout; import com.memoire.bu.BuLabel; -import com.memoire.bu.BuPanel; +import com.memoire.bu.BuLib; import com.memoire.bu.BuResource; import com.memoire.bu.BuTextField; import com.memoire.bu.BuToolButton; @@ -40,8 +40,9 @@ protected BuTextField tfTx_; protected BuTextField tfTy_; protected BuTextField tfTz_; + protected BuTextField tfXCenter_; + protected BuTextField tfYCenter_; protected BuTextField tfRz_; - protected BuLabel lbRz_; protected PivProject prj_; /** @@ -57,8 +58,10 @@ tfTx_.setPreferredSize(new Dimension(90, tfTx_.getPreferredSize().height)); tfTy_ = BuTextField.createDoubleField(); tfTz_ = BuTextField.createDoubleField(); + tfXCenter_ = BuTextField.createDoubleField(); + tfYCenter_ = BuTextField.createDoubleField(); tfRz_ = BuTextField.createDoubleField(); - lbRz_ = new BuLabel("Rz:"); + tfRz_.setToolTipText(PivResource.getS("Angle en degr\xE9s")); btApply_ = new BuToolButton(BuResource.BU.getToolIcon("appliquer")); btApply_.addActionListener(new ActionListener() { @@ -70,13 +73,17 @@ Double ty = (Double) tfTy_.getValue(); Double tz = (Double) tfTz_.getValue(); Double rz = (Double)tfRz_.getValue(); + Double xc = (Double)tfXCenter_.getValue(); + Double yc = (Double)tfYCenter_.getValue(); - if (tx != null && ty != null && tz != null && rz != null && prj_!=null) { + if (tx != null && ty != null && tz != null && rz != null && xc != null && yc != null && prj_!=null) { PivTransformationParameters params=prj_.getTransformationParameters(); params.setTranslationX(tx); params.setTranslationY(ty); params.setTranslationZ(tz); params.setRotationZ(rz); + params.setXCenter(xc); + params.setYCenter(yc); prj_.setTransformationParameters(params); } } @@ -100,27 +107,47 @@ tfTy_.setValue(formatter_.getXYFormatter().format(prj_.getTransformationParameters().getTranslationY())); tfTz_.setValue(formatter_.getXYFormatter().format(prj_.getTransformationParameters().getTranslationZ())); tfRz_.setValue(formatter_.getXYFormatter().format(prj_.getTransformationParameters().getRotationZ())); + tfXCenter_.setValue(formatter_.getXYFormatter().format(prj_.getTransformationParameters().getXCenter())); + tfYCenter_.setValue(formatter_.getXYFormatter().format(prj_.getTransformationParameters().getYCenter())); } protected void buildComponent() { - BuPanel pnMain = new BuPanel(); - pnMain.setLayout(new BuGridLayout(2, 2, 2)); - pnMain.add(new BuLabel("Tx:")); - pnMain.add(tfTx_); - pnMain.add(new BuLabel("Ty:")); - pnMain.add(tfTy_); - pnMain.add(new BuLabel("Tz:")); - pnMain.add(tfTz_); - pnMain.add(lbRz_); - pnMain.add(tfRz_); + JLabel lbTx = new JLabel("Tx:"); + JLabel lbXCenter = new BuLabel(PivResource.getS("X centre:")); + BuLib.giveSameWidth(lbTx,lbXCenter); + + JPanel pnTrans = new JPanel(); + pnTrans.setLayout(new BuGridLayout(2, 2, 2)); + pnTrans.setBorder(BorderFactory.createTitledBorder(PivResource.getS("Translation"))); + pnTrans.add(lbTx); + pnTrans.add(tfTx_); + pnTrans.add(new BuLabel("Ty:")); + pnTrans.add(tfTy_); + pnTrans.add(new BuLabel("Tz:")); + pnTrans.add(tfTz_); + + JPanel pnRot = new JPanel(); + pnRot.setLayout(new BuGridLayout(2, 2, 2)); + pnRot.setBorder(BorderFactory.createTitledBorder(PivResource.getS("Rotation"))); + pnRot.add(lbXCenter); + pnRot.add(tfXCenter_); + pnRot.add(new BuLabel(PivResource.getS("Y centre:"))); + pnRot.add(tfYCenter_); + pnRot.add(new BuLabel("Rz:")); + pnRot.add(tfRz_); + + JPanel pnMain = new JPanel(); + pnMain.setLayout(new BuGridLayout(1, 2, 2)); + pnMain.add(pnTrans); + pnMain.add(pnRot); - BuPanel pnButtons = new BuPanel(); + JPanel pnButtons = new JPanel(); pnButtons.setLayout(new BorderLayout(5, 5)); pnButtons.add(btApply_, BorderLayout.SOUTH); setLayout(new BorderLayout(5, 5)); setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2)); - add(new JLabel(PivResource.getS("<html><p>Param\xE8tres de transformation<br>du rep\xE8re d'origine<br>vers le rep\xE8re de calcul</html>")), BorderLayout.NORTH); + add(new JLabel(PivResource.getS("<html><p>Param\xE8tres de transformation du rep\xE8re<br>d'origine vers le rep\xE8re de calcul</html>")), BorderLayout.NORTH); add(pnMain, BorderLayout.CENTER); add(pnButtons, BorderLayout.EAST); Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivGlobalXmlParam.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivGlobalXmlParam.java 2016-02-26 10:04:29 UTC (rev 9309) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivGlobalXmlParam.java 2016-03-03 09:20:09 UTC (rev 9310) @@ -17,6 +17,10 @@ public double ty; /** Translation Z */ public double tz; + /** Le coordonn\xE9e X du point centre de la rotation suivant Z */ + public double xcenter; + /** Le coordonn\xE9e Y du point centre de la rotation suivant Z */ + public double ycenter; /** Rotation Z */ public double rz; } \ No newline at end of file Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivGlobalXmlReader.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivGlobalXmlReader.java 2016-02-26 10:04:29 UTC (rev 9309) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivGlobalXmlReader.java 2016-03-03 09:20:09 UTC (rev 9310) @@ -87,6 +87,13 @@ params.ty=Double.parseDouble(elMat.getAttribute("ty")); params.tz=Double.parseDouble(elMat.getAttribute("tz")); params.rz=Double.parseDouble(elMat.getAttribute("rz")); + String xcenter = elMat.getAttribute("xcenter"); + String ycenter = elMat.getAttribute("ycenter"); + // Formats sup\xE9rieurs \xE0 1.4.5 + if (!xcenter.isEmpty() && !ycenter.isEmpty()) { + params.xcenter=Double.parseDouble(xcenter); + params.ycenter=Double.parseDouble(ycenter); + } } Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivGlobalXmlWriter.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivGlobalXmlWriter.java 2016-02-26 10:04:29 UTC (rev 9309) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivGlobalXmlWriter.java 2016-03-03 09:20:09 UTC (rev 9310) @@ -39,7 +39,8 @@ writer.endTag("srcImages"); // La rotation/translation appliqu\xE9s \xE0 l'espace r\xE9el. - writer.startTagWithAttrs("transfMatrix", new String[]{"tx","ty","tz","rz"}, new String[]{ "" + _param.tx,"" + _param.ty,"" + _param.tz,"" + _param.rz}); + writer.startTagWithAttrs("transfMatrix", new String[]{"tx","ty","tz","rz","xcenter","ycenter"}, + new String[]{ "" + _param.tx,"" + _param.ty,"" + _param.tz,"" + _param.rz,"" + _param.xcenter,"" + _param.ycenter}); writer.endTag("transfMatrix"); // writeTransects(writer, _param.transects); Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProjectPersistence.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProjectPersistence.java 2016-02-26 10:04:29 UTC (rev 9309) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProjectPersistence.java 2016-03-03 09:20:09 UTC (rev 9310) @@ -450,7 +450,7 @@ }); // Affectation des param\xE8tres de transformation. - PivTransformationParameters params=new PivTransformationParameters(paramXml.tx,paramXml.ty,paramXml.tz,paramXml.rz); + PivTransformationParameters params=new PivTransformationParameters(paramXml.tx, paramXml.ty, paramXml.tz, paramXml.rz, paramXml.xcenter, paramXml.ycenter); prj_.setTransformationParameters(params); prj_.srcFiles_.clear(); @@ -477,6 +477,8 @@ params.ty=prj_.getTransformationParameters().getTranslationY(); params.tz=prj_.getTransformationParameters().getTranslationZ(); params.rz=prj_.getTransformationParameters().getRotationZ(); + params.xcenter = prj_.getTransformationParameters().getXCenter(); + params.ycenter = prj_.getTransformationParameters().getYCenter(); File globalFile = new File(prj_.getOutputDir(), "global.xml"); new PivGlobalXmlWriter().write(params, globalFile, _prog); Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivTransformationParameters.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivTransformationParameters.java 2016-02-26 10:04:29 UTC (rev 9309) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivTransformationParameters.java 2016-03-03 09:20:09 UTC (rev 9310) @@ -4,7 +4,7 @@ /** * Les param\xE8tres de transformation du rep\xE8re d'origine vers le rep\xE8re de calcul. On stocke ces param\xE8tres, - * car ils sont dfifficiles a retrouver depuis les matrices de transformation. + * car ils sont difficiles a retrouver depuis les matrices de transformation. * @author Bertrand Marchand (mar...@de...) */ public class PivTransformationParameters { @@ -16,6 +16,10 @@ private double translationZ; /** La rotation suivant z, en degr\xE9s */ private double rotationZ; + /** La coordonn\xE9e X du point de rotation Z */ + private double xcenter; + /** La coordonn\xE9e Y du point de rotation Z */ + private double ycenter; /** Morphisme de original -> calcul */ private GrMorphisme toComputing; /** Morphisme de calcul -> original */ @@ -26,14 +30,16 @@ private GrMorphisme identite=GrMorphisme.identite(); public PivTransformationParameters() { - this(0,0,0,0); + this(0, 0, 0, 0, 0, 0); } - public PivTransformationParameters(double _tx, double _ty, double _tz, double _rz) { + public PivTransformationParameters(double _tx, double _ty, double _tz, double _rz, double _xpt, double _ypt) { translationX=_tx; translationY=_ty; translationZ=_tz; rotationZ=_rz; + xcenter = _xpt; + ycenter = _ypt; } /** @@ -108,6 +114,42 @@ } } + /** + * @return the X rotation + */ + public double getXCenter() { + return xcenter; + } + + /** + * @param _xRotation the X rotation to set + */ + public void setXCenter(double _xRotation) { + if (xcenter != _xRotation) { + this.xcenter=_xRotation; + toComputing=null; + toOriginal=null; + } + } + + /** + * @return the Y rotation + */ + public double getYCenter() { + return ycenter; + } + + /** + * @param _yRotation the Y rotation to set + */ + public void setYCenter(double _yRotation) { + if (ycenter != _yRotation) { + this.ycenter=_yRotation; + toComputing=null; + toOriginal=null; + } + } + public GrMorphisme getToComputing() { if (toComputing==null) toComputing=GrMorphisme.translation(translationX, translationY, translationZ).composition(GrMorphisme.rotationZ(Math.toRadians(rotationZ))); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2016-10-14 12:35:29
|
Revision: 9440 http://sourceforge.net/p/fudaa/svn/9440 Author: bmarchan Date: 2016-10-14 12:35:26 +0000 (Fri, 14 Oct 2016) Log Message: ----------- Actions Import Ortho parameters et Import Compute parameters 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/PivUtils.java Added Paths: ----------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivDefineComputeParamAction.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivDefineOrthoParamAction.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportComputeParamAction.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportOrthoParamAction.java Removed Paths: ------------- 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/PivOrthoParamAction.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 2016-10-13 21:22:53 UTC (rev 9439) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java 2016-10-14 12:35:26 UTC (rev 9440) @@ -47,13 +47,15 @@ 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.PivDefineComputeParamAction; +import org.fudaa.fudaa.piv.action.PivDefineOrthoParamAction; import org.fudaa.fudaa.piv.action.PivExportImagesAction; +import org.fudaa.fudaa.piv.action.PivImportComputeParamAction; import org.fudaa.fudaa.piv.action.PivImportGRPAction; import org.fudaa.fudaa.piv.action.PivImportGridAction; +import org.fudaa.fudaa.piv.action.PivImportOrthoParamAction; 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; import org.fudaa.fudaa.piv.action.PivSelectImagesAction; import org.fudaa.fudaa.piv.action.PivShow3DTransectAction; @@ -88,8 +90,8 @@ protected static BuInformationsSoftware isPIV_ = new BuInformationsSoftware(); static { isPIV_.name = "LSPIV"; - isPIV_.version = "1.4.5"; - isPIV_.date = "2016-03-23"; + isPIV_.version = "1.5.0"; + isPIV_.date = "2016-10-13"; isPIV_.rights = PivResource.getS("Tous droits r\xE9serv\xE9s")+". CEREMA (c)1999-2016"; isPIV_.license = "GPL2"; isPIV_.languages = "en,fr"; @@ -168,8 +170,10 @@ setEnabledForAction("IMPORT_GRP", bprjOpen && bprjHasSrcImg); setEnabledForAction("VERIFY_GRP", bprjOpen && project.getOrthoPoints()!=null); setEnabledForAction("DEFINE_ORTHO_PARAM", bprjOpen && project.getOrthoPoints()!=null && bprjHasSrcImg); + setEnabledForAction("IMPORT_ORTHO_PARAM", bprjOpen && project.getOrthoPoints()!=null && bprjHasSrcImg); setEnabledForAction("COMPUTE_ORTHO", bprjOpen); setEnabledForAction("DEFINE_PIV_PARAM", bprjOpen && bprjHasTransfImg); + setEnabledForAction("IMPORT_PIV_PARAM", bprjOpen && bprjHasTransfImg); setEnabledForAction("DEFINE_GRID", bprjOpen && bprjHasTransfImg); setEnabledForAction("IMPORT_GRID", bprjOpen && bprjHasTransfImg); setEnabledForAction("IMPORT_TRANSECT", bprjOpen && bprjHasTransfImg); @@ -790,19 +794,38 @@ sm.add(bt); mn.add(sm); mn.add(new PivOrthoVerifyGRPAction(this)); - mn.add(new PivOrthoParamAction(this)); + + sm=new BuMenu(PivResource.getS("Param\xE8tres de transformation"),"mnTRF",true); + bt=new PivDefineOrthoParamAction(this).buildMenuItem(EbliComponentFactory.INSTANCE); + bt.setText(PivResource.getS("D\xE9finir...")); + sm.add(bt); + bt=new PivImportOrthoParamAction(this).buildMenuItem(EbliComponentFactory.INSTANCE); + bt.setText(PivResource.getS("Importer...")); + sm.add(bt); + mn.add(sm); + mn.add(new PivOrthoLaunchAction(this)); mn.addSeparator(PivResource.getS("Analyse LSPIV")); - mn.add(new PivComputeParamAction(this)); + + sm=new BuMenu(PivResource.getS("Param\xE8tres de calcul"),"mnCAL",true); + bt=new PivDefineComputeParamAction(this).buildMenuItem(EbliComponentFactory.INSTANCE); + bt.setText(PivResource.getS("D\xE9finir...")); + sm.add(bt); + bt=new PivImportComputeParamAction(this).buildMenuItem(EbliComponentFactory.INSTANCE); + bt.setText(PivResource.getS("Importer...")); + sm.add(bt); + mn.add(sm); + sm=new BuMenu(PivResource.getS("Points de grille"),"mnGRP"); bt=get2dFrame().getVisuPanel().getComputeGridDefinitionAction().buildMenuItem(EbliComponentFactory.INSTANCE); bt.setText(PivResource.getS("D\xE9finir...")); sm.add(bt); - bt=new PivImportGridAction((this)).buildMenuItem(EbliComponentFactory.INSTANCE); + bt=new PivImportGridAction(this).buildMenuItem(EbliComponentFactory.INSTANCE); bt.setText(PivResource.getS("Importer...")); sm.add(bt); mn.add(sm); + mn.add(new PivComputeLaunchAction(this)); mn.addSeparator(PivResource.getS("Post-traitement")); Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivUtils.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivUtils.java 2016-10-13 21:22:53 UTC (rev 9439) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivUtils.java 2016-10-14 12:35:26 UTC (rev 9440) @@ -51,6 +51,16 @@ */ public static BuFileFilter FILE_FLT_GRID; /** + * Un filtre des fichiers img_ref.dat, utilis\xE9e lors de l'import + * par boite de dialogue. + */ + public static BuFileFilter FILE_FLT_TRANSF_PARAMS; + /** + * Un filtre des fichiers PIV_param.dat, utilis\xE9e lors de l'import + * par boite de dialogue. + */ + public static BuFileFilter FILE_FLT_COMPUTE_PARAMS; + /** * Un filtre des fichiers images, utilis\xE9e lors de la selection * des fichiers par boite de dialogue. */ @@ -69,12 +79,14 @@ * Initialise les champs statiques d\xE9pendants du language. */ static { - PivUtils.FILE_FLT_PROJ=new BuFileFilter("lspiv.zip",PivResource.getS("Fichier projet")); - PivUtils.FILE_FLT_PGM=new BuFileFilter("pgm",PivResource.getS("Fichiers images en niveaux de gris")); - PivUtils.FILE_FLT_IMAGES=new BuFileFilter(new String[]{"jpg","jpeg","gif","png","pgm","tif","tiff","bmp"},PivResource.getS("Fichiers images")); - PivUtils.FILE_FLT_GRID=new BuFileFilter("dat",PivResource.getS("Fichier grid")); - PivUtils.FILE_FLT_GRP=new BuFileFilter("dat",PivResource.getS("Fichier GRP")); - PivUtils.FILE_FLT_BATHY=new BuFileFilter(new String[]{"dat",FILE_FLT_TRANS_BTH.getFirstExt()},PivResource.getS("Fichier bathy")); + FILE_FLT_PROJ=new BuFileFilter("lspiv.zip",PivResource.getS("Fichier projet")); + FILE_FLT_PGM=new BuFileFilter("pgm",PivResource.getS("Fichiers images en niveaux de gris")); + FILE_FLT_IMAGES=new BuFileFilter(new String[]{"jpg","jpeg","gif","png","pgm","tif","tiff","bmp"},PivResource.getS("Fichiers images")); + FILE_FLT_GRID=new BuFileFilter("dat",PivResource.getS("Fichier grid")); + FILE_FLT_GRP=new BuFileFilter("dat",PivResource.getS("Fichier GRP")); + FILE_FLT_BATHY=new BuFileFilter(new String[]{"dat",FILE_FLT_TRANS_BTH.getFirstExt()},PivResource.getS("Fichier bathy")); + FILE_FLT_TRANSF_PARAMS=new BuFileFilter("dat",PivResource.getS("Fichier params transformation")); + FILE_FLT_COMPUTE_PARAMS=new BuFileFilter("dat",PivResource.getS("Fichier params calcul")); } /** Deleted: 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 2016-10-13 21:22:53 UTC (rev 9439) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeParamAction.java 2016-10-14 12:35:26 UTC (rev 9440) @@ -1,63 +0,0 @@ -/* - * @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 org.fudaa.ctulu.gui.CtuluDialog; -import org.fudaa.ebli.commun.EbliActionSimple; -import org.fudaa.fudaa.piv.PivComputeParamPanel; -import org.fudaa.fudaa.piv.PivImplementation; -import org.fudaa.fudaa.piv.PivResource; -import org.fudaa.fudaa.piv.PivVisuPanel; -import org.fudaa.fudaa.piv.metier.PivComputeParameters; - -/** - * Une action pour saisir les parametres de calcul. - * - * @author Bertrand Marchand (mar...@de...) - * @version $Id$ - */ -public class PivComputeParamAction extends EbliActionSimple { - PivImplementation impl; - - public PivComputeParamAction(PivImplementation _impl) { - super(PivResource.getS("Param\xE8tres de calcul..."), null, "DEFINE_PIV_PARAM"); - impl=_impl; - setEnabled(false); - } - - /** - * Affiche le panneau des param\xE8tres de calcul. - * @param _e L'evenement pour l'action. - */ - public void actionPerformed(final ActionEvent _e) { - impl.get2dFrame().getVisuPanel().setViewMode(PivVisuPanel.MODE_TRANSF_VIEW); - - PivComputeParamPanel pn=new PivComputeParamPanel(impl.get2dFrame().getVisuPanel()) { - - @Override - public void apply() { - PivComputeParameters params=new PivComputeParameters(); - retrieveComputeParams(params); - impl.getCurrentProject().setComputeParameters(params); - } - }; - - PivComputeParameters params=impl.getCurrentProject().getComputeParameters(); - if (params==null) - params=new PivComputeParameters(); - pn.setComputeParams(params); - - pn.affiche(impl.getFrame(), PivResource.getS("Param\xE8tres de calcul"), CtuluDialog.OK_CANCEL_APPLY_OPTION); - } - - public String getEnableCondition() { - return PivResource.getS("Il doit exister au moins une image transform\xE9e"); - } -} Copied: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivDefineComputeParamAction.java (from rev 9280, 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/PivDefineComputeParamAction.java (rev 0) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivDefineComputeParamAction.java 2016-10-14 12:35:26 UTC (rev 9440) @@ -0,0 +1,63 @@ +/* + * @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 org.fudaa.ctulu.gui.CtuluDialog; +import org.fudaa.ebli.commun.EbliActionSimple; +import org.fudaa.fudaa.piv.PivComputeParamPanel; +import org.fudaa.fudaa.piv.PivImplementation; +import org.fudaa.fudaa.piv.PivResource; +import org.fudaa.fudaa.piv.PivVisuPanel; +import org.fudaa.fudaa.piv.metier.PivComputeParameters; + +/** + * Une action pour saisir les parametres de calcul. + * + * @author Bertrand Marchand (mar...@de...) + * @version $Id$ + */ +public class PivDefineComputeParamAction extends EbliActionSimple { + PivImplementation impl; + + public PivDefineComputeParamAction(PivImplementation _impl) { + super(PivResource.getS("Param\xE8tres de calcul..."), null, "DEFINE_PIV_PARAM"); + impl=_impl; + setEnabled(false); + } + + /** + * Affiche le panneau des param\xE8tres de calcul. + * @param _e L'evenement pour l'action. + */ + public void actionPerformed(final ActionEvent _e) { + impl.get2dFrame().getVisuPanel().setViewMode(PivVisuPanel.MODE_TRANSF_VIEW); + + PivComputeParamPanel pn=new PivComputeParamPanel(impl.get2dFrame().getVisuPanel()) { + + @Override + public void apply() { + PivComputeParameters params=new PivComputeParameters(); + retrieveComputeParams(params); + impl.getCurrentProject().setComputeParameters(params); + } + }; + + PivComputeParameters params=impl.getCurrentProject().getComputeParameters(); + if (params==null) + params=new PivComputeParameters(); + pn.setComputeParams(params); + + pn.affiche(impl.getFrame(), PivResource.getS("Param\xE8tres de calcul"), CtuluDialog.OK_CANCEL_APPLY_OPTION); + } + + public String getEnableCondition() { + return PivResource.getS("Il doit exister au moins une image transform\xE9e"); + } +} Copied: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivDefineOrthoParamAction.java (from rev 9320, 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/PivDefineOrthoParamAction.java (rev 0) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivDefineOrthoParamAction.java 2016-10-14 12:35:26 UTC (rev 9440) @@ -0,0 +1,73 @@ +/* + * @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 org.fudaa.ctulu.CtuluLog; +import org.fudaa.ctulu.gui.CtuluDialog; +import org.fudaa.ebli.commun.EbliActionSimple; +import org.fudaa.fudaa.piv.PivImplementation; +import org.fudaa.fudaa.piv.PivOrthoParamPanel; +import org.fudaa.fudaa.piv.PivResource; +import org.fudaa.fudaa.piv.PivVisuPanel; + +/** + * Une action pour saisir les parametres de l'orthorectification. + * + * @author Bertrand Marchand (mar...@de...) + * @version $Id$ + */ +public class PivDefineOrthoParamAction extends EbliActionSimple { + PivImplementation impl; + + /** + * Constructeur. + * @param _impl L'implementation. + */ + public PivDefineOrthoParamAction(PivImplementation _impl) { + super(PivResource.getS("Param\xE8tres de transformation..."), null, "DEFINE_ORTHO_PARAM"); + impl=_impl; + setEnabled(false); + } + + public String getEnableCondition() { + return PivResource.getS("Il doit exister au moins une image source"); + } + + /** + * Affichage du panneau des param\xE8tres d'orthorectification. + * @param _e L'evenement pour l'action. + */ + public void actionPerformed(final ActionEvent _e) { + // On ne saisit les donn\xE9es que dans le rep\xE8re de calcul + if (impl.getCurrentProject().getTransformationParameters().isCurrentSystemInitial()) { + impl.error(PivResource.getS("Erreur"), PivResource.getS("Les param\xE8tres ne peuvent \xEAtre saisis\nque dans le rep\xE8re de calcul.")); + return; + } + + if (!isValide()) return; + + impl.get2dFrame().getVisuPanel().setViewMode(PivVisuPanel.MODE_REAL_VIEW); + + PivOrthoParamPanel pnParams=new PivOrthoParamPanel(impl); + + // La fenetre est affich\xE9e en mode non modal, le traitement est fait dans la + // fenetre elle meme. + pnParams.affiche(impl.getFrame(), PivResource.getS("Param\xE8tres de transformation"),CtuluDialog.OK_CANCEL_APPLY_OPTION); + } + + public boolean isValide() { + String mes=impl.getCurrentProject().areOrthoPointsOk(); + if (mes!=null) { + impl.error(PivResource.getS("Erreur"), mes); + return false; + } + return true; + } +} Added: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportComputeParamAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportComputeParamAction.java (rev 0) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportComputeParamAction.java 2016-10-14 12:35:26 UTC (rev 9440) @@ -0,0 +1,95 @@ +/* + * @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.CtuluIOResult; +import org.fudaa.ctulu.gui.CtuluFileChooser; +import org.fudaa.ebli.commun.EbliActionSimple; +import org.fudaa.fudaa.piv.PivImplementation; +import org.fudaa.fudaa.piv.PivResource; +import org.fudaa.fudaa.piv.PivUtils; +import org.fudaa.fudaa.piv.PivVisuPanel; +import org.fudaa.fudaa.piv.io.PivParamReader; +import org.fudaa.fudaa.piv.metier.PivComputeParameters; + +/** + * Une action pour importer les parametres de calcul. + * + * @author Bertrand Marchand (mar...@de...) + * @version $Id: PivImportGridAction.java 9083 2015-03-17 13:05:54Z bmarchan $ + */ +public class PivImportComputeParamAction extends EbliActionSimple { + PivImplementation impl; + CtuluFileChooser fcParams; + + /** + * Constructeur + * @param _impl L'implementation. + */ + public PivImportComputeParamAction(PivImplementation _impl) { + super(PivResource.getS("Import des param\xE8tres de calcul..."), null, "IMPORT_PIV_PARAM"); + + impl=_impl; + setEnabled(false); + } + + /** + * Selectionne le fichier d'import, et remplace les parametres. + * @param _e L'evenement pour l'action. + */ + @Override + public void actionPerformed(final ActionEvent _e) { + if (!isValide()) { + return; + } + + if (!impl.question(PivResource.getS("Param\xE8tres de calcul"), PivResource.getS("Les param\xE8tres de filtres seront aussi import\xE9s.\nVoulez-vous continuer ?"))) { + return; + } + + // Selection du fichier + if (fcParams==null) + fcParams = new CtuluFileChooser(true); + + fcParams.setAcceptAllFileFilterUsed(true); + fcParams.setFileFilter(PivUtils.FILE_FLT_COMPUTE_PARAMS); + fcParams.setMultiSelectionEnabled(false); + fcParams.setDialogTitle(PivResource.getS("S\xE9lection d'un fichier de parametres de calcul")); + if (fcParams.showOpenDialog(impl.getFrame()) == CtuluFileChooser.CANCEL_OPTION) { + return; + } + File paramsFile=fcParams.getSelectedFile(); + + CtuluIOResult<Object[]> ret = new PivParamReader().read(paramsFile, null); + if (ret.getAnalyze().containsErrorOrSevereError()) { + impl.error(ret.getAnalyze().getResume()); + return; + } + + PivComputeParameters params=(PivComputeParameters)ret.getSource()[0]; + + impl.getCurrentProject().setComputeParameters(params); + + impl.get2dFrame().getVisuPanel().setViewMode(PivVisuPanel.MODE_TRANSF_VIEW); + } + + /** + * @return true Si toutes les donn\xE9es sont pr\xE9sentes pour un lancement. + */ + public boolean isValide() { + return true; + } + + @Override + 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/PivImportComputeParamAction.java ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportOrthoParamAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportOrthoParamAction.java (rev 0) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportOrthoParamAction.java 2016-10-14 12:35:26 UTC (rev 9440) @@ -0,0 +1,107 @@ +/* + * @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.CtuluIOResult; +import org.fudaa.ctulu.gui.CtuluFileChooser; +import org.fudaa.ebli.commun.EbliActionSimple; +import org.fudaa.fudaa.piv.PivImplementation; +import org.fudaa.fudaa.piv.PivResource; +import org.fudaa.fudaa.piv.PivUtils; +import org.fudaa.fudaa.piv.PivVisuPanel; +import org.fudaa.fudaa.piv.io.PivHReader; +import org.fudaa.fudaa.piv.io.PivImgRefReader; +import org.fudaa.fudaa.piv.metier.PivOrthoParameters; + +/** + * Une action pour importer les parametres de transformation. + * + * @author Bertrand Marchand (mar...@de...) + * @version $Id: PivImportGridAction.java 9083 2015-03-17 13:05:54Z bmarchan $ + */ +public class PivImportOrthoParamAction extends EbliActionSimple { + PivImplementation impl; + CtuluFileChooser fcParams; + + /** + * Constructeur + * @param _impl L'implementation. + */ + public PivImportOrthoParamAction(PivImplementation _impl) { + super(PivResource.getS("Import des param\xE8tres d'orthorectification..."), null, "IMPORT_ORTHO_PARAM"); + + impl=_impl; + setEnabled(false); + } + + /** + * Selectionne le fichier d'import, et remplace les parametres. + * @param _e L'evenement pour l'action. + */ + @Override + public void actionPerformed(final ActionEvent _e) { + if (!isValide()) { + return; + } + + // Selection du fichier + if (fcParams==null) + fcParams = new CtuluFileChooser(true); + + fcParams.setAcceptAllFileFilterUsed(true); + fcParams.setFileFilter(PivUtils.FILE_FLT_TRANSF_PARAMS); + fcParams.setMultiSelectionEnabled(false); + fcParams.setDialogTitle(PivResource.getS("S\xE9lection d'un fichier de parametres de transformation")); + if (fcParams.showOpenDialog(impl.getFrame()) == CtuluFileChooser.CANCEL_OPTION) { + return; + } + File imgrefFile=fcParams.getSelectedFile(); + + CtuluIOResult<PivOrthoParameters> ret = new PivImgRefReader().read(imgrefFile, null); + if (ret.getAnalyze().containsErrorOrSevereError()) { + impl.error(ret.getAnalyze().getResume()); + return; + } + + PivOrthoParameters params=ret.getSource(); + + // Lecture du fichier h.dat associ\xE9. + File hFile = new File(imgrefFile.getParentFile(), "h.dat"); + if (hFile.exists()) { + CtuluIOResult<Double> ret2 = new PivHReader().read(hFile, null); + if (ret.getAnalyze().containsErrorOrSevereError()) { + impl.error(ret.getAnalyze().getResume()); + return; + } + + params.setWaterElevation(ret2.getSource()); + } + else { + impl.warn(PivResource.getS("Fichier manquant"), PivResource.getS("Le fichier h.dat correspondant est manquant.\nLe niveau d'eau ne sera pas initialis\xE9.")); + } + + impl.getCurrentProject().setOrthoParameters(params); + + 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; + } + + @Override + public String getEnableCondition() { + return PivResource.getS("Il doit exister au moins une image source"); + } +} Property changes on: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportOrthoParamAction.java ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Deleted: 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 2016-10-13 21:22:53 UTC (rev 9439) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOrthoParamAction.java 2016-10-14 12:35:26 UTC (rev 9440) @@ -1,73 +0,0 @@ -/* - * @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 org.fudaa.ctulu.CtuluLog; -import org.fudaa.ctulu.gui.CtuluDialog; -import org.fudaa.ebli.commun.EbliActionSimple; -import org.fudaa.fudaa.piv.PivImplementation; -import org.fudaa.fudaa.piv.PivOrthoParamPanel; -import org.fudaa.fudaa.piv.PivResource; -import org.fudaa.fudaa.piv.PivVisuPanel; - -/** - * Une action pour saisir les parametres de l'orthorectification. - * - * @author Bertrand Marchand (mar...@de...) - * @version $Id$ - */ -public class PivOrthoParamAction extends EbliActionSimple { - PivImplementation impl; - - /** - * Constructeur. - * @param _impl L'implementation. - */ - public PivOrthoParamAction(PivImplementation _impl) { - super(PivResource.getS("Param\xE8tres de transformation..."), null, "DEFINE_ORTHO_PARAM"); - impl=_impl; - setEnabled(false); - } - - public String getEnableCondition() { - return PivResource.getS("Il doit exister au moins une image source"); - } - - /** - * Affichage du panneau des param\xE8tres d'orthorectification. - * @param _e L'evenement pour l'action. - */ - public void actionPerformed(final ActionEvent _e) { - // On ne saisit les donn\xE9es que dans le rep\xE8re de calcul - if (impl.getCurrentProject().getTransformationParameters().isCurrentSystemInitial()) { - impl.error(PivResource.getS("Erreur"), PivResource.getS("Les param\xE8tres ne peuvent \xEAtre saisis\nque dans le rep\xE8re de calcul.")); - return; - } - - if (!isValide()) return; - - impl.get2dFrame().getVisuPanel().setViewMode(PivVisuPanel.MODE_REAL_VIEW); - - PivOrthoParamPanel pnParams=new PivOrthoParamPanel(impl); - - // La fenetre est affich\xE9e en mode non modal, le traitement est fait dans la - // fenetre elle meme. - pnParams.affiche(impl.getFrame(), PivResource.getS("Param\xE8tres de transformation"),CtuluDialog.OK_CANCEL_APPLY_OPTION); - } - - public boolean isValide() { - String mes=impl.getCurrentProject().areOrthoPointsOk(); - if (mes!=null) { - impl.error(PivResource.getS("Erreur"), mes); - return false; - } - return true; - } -} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2016-11-18 11:05:04
|
Revision: 9455 http://sourceforge.net/p/fudaa/svn/9455 Author: bmarchan Date: 2016-11-18 11:05:02 +0000 (Fri, 18 Nov 2016) Log Message: ----------- Ajout des parametres supplementaires pour les filtres de vitesse. Modified Paths: -------------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivFilterInstantResultsPanel.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/PivComputeParameters.java Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivFilterInstantResultsPanel.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivFilterInstantResultsPanel.java 2016-11-18 11:01:34 UTC (rev 9454) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivFilterInstantResultsPanel.java 2016-11-18 11:05:02 UTC (rev 9455) @@ -44,6 +44,8 @@ private JTextField tfNormalMinLimit_; private JTextField tfNormalMaxLimit_; private JCheckBox cbVelFlt_; + private JTextField tfVxMinLimit_; + private JTextField tfVxMaxLimit_; private JTextField tfVyMinLimit_; private JTextField tfVyMaxLimit_; private JCheckBox cbCorrelFlt_; @@ -72,6 +74,8 @@ boolean b=cbVelFlt_.isSelected(); tfNormalMinLimit_.setEnabled(b); tfNormalMaxLimit_.setEnabled(b); + tfVxMinLimit_.setEnabled(b); + tfVxMaxLimit_.setEnabled(b); tfVyMinLimit_.setEnabled(b); tfVyMaxLimit_.setEnabled(b); } @@ -101,8 +105,31 @@ pnNormalLimits.add(pn); pnVelocity.add(pnNormalLimits); + JPanel pnVxLimits=new JPanel(); + pnVxLimits.setBorder(BorderFactory.createTitledBorder(PivResource.getS("Limites de la composante Vx (m/s)"))); + pnVxLimits.setLayout(new BuVerticalLayout(3,true,false)); + + pn=new JPanel(); + pn.setLayout(new BorderLayout(3,3)); + JLabel lbVxMinLimit=new JLabel(PivResource.getS("Min:")); + pn.add(lbVxMinLimit, BorderLayout.WEST); + tfVxMinLimit_ = new JTextField(); + tfVxMinLimit_.setEnabled(false); + pn.add(tfVxMinLimit_, BorderLayout.CENTER); + pnVxLimits.add(pn); + + pn=new JPanel(); + pn.setLayout(new BorderLayout(3,3)); + JLabel lbVxMaxLimit=new JLabel(PivResource.getS("Max:")); + pn.add(lbVxMaxLimit, BorderLayout.WEST); + tfVxMaxLimit_ = new JTextField(); + tfVxMaxLimit_.setEnabled(false); + pn.add(tfVxMaxLimit_, BorderLayout.CENTER); + pnVxLimits.add(pn); + pnVelocity.add(pnVxLimits); + JPanel pnVyLimits=new JPanel(); - pnVyLimits.setBorder(BorderFactory.createTitledBorder(PivResource.getS("Limites de la vitesse v transversale (m/s)"))); + pnVyLimits.setBorder(BorderFactory.createTitledBorder(PivResource.getS("Limites de la componsante Vy (m/s)"))); pnVyLimits.setLayout(new BuVerticalLayout(3,true,false)); pn=new JPanel(); @@ -123,9 +150,10 @@ pn.add(tfVyMaxLimit_, BorderLayout.CENTER); pnVyLimits.add(pn); pnVelocity.add(pnVyLimits); + tp.addTab(PivResource.getS("Vitesse"), pnVelocity); - BuLib.giveSameWidth(lbNormalMinLimit, lbNormalMaxLimit, lbVyMinLimit, lbVyMaxLimit); + BuLib.giveSameWidth(lbNormalMinLimit, lbNormalMaxLimit, lbVxMinLimit, lbVxMaxLimit, lbVyMinLimit, lbVyMaxLimit); // Filtre pour la correlation @@ -236,20 +264,27 @@ if (_params.getSmin()==PivUtils.FORTRAN_DOUBLE_MIN && _params.getSmax()==PivUtils.FORTRAN_DOUBLE_MAX && - _params.getVmin()==PivUtils.FORTRAN_DOUBLE_MIN && - _params.getVmax()==PivUtils.FORTRAN_DOUBLE_MAX) { + _params.getVxmin()==PivUtils.FORTRAN_DOUBLE_MIN && + _params.getVxmax()==PivUtils.FORTRAN_DOUBLE_MAX && + _params.getVymin()==PivUtils.FORTRAN_DOUBLE_MIN && + _params.getVymax()==PivUtils.FORTRAN_DOUBLE_MAX + ) { cbVelFlt_.setSelected(false); tfNormalMinLimit_.setText("0."); tfNormalMaxLimit_.setText(""+_params.getSmax()); - tfVyMinLimit_.setText(""+_params.getVmin()); - tfVyMaxLimit_.setText(""+_params.getVmax()); + tfVxMinLimit_.setText(""+_params.getVxmin()); + tfVxMaxLimit_.setText(""+_params.getVxmax()); + tfVyMinLimit_.setText(""+_params.getVymin()); + tfVyMaxLimit_.setText(""+_params.getVymax()); } else { cbVelFlt_.setSelected(true); tfNormalMinLimit_.setText(""+_params.getSmin()); tfNormalMaxLimit_.setText(""+_params.getSmax()); - tfVyMinLimit_.setText(""+_params.getVmin()); - tfVyMaxLimit_.setText(""+_params.getVmax()); + tfVxMinLimit_.setText(""+_params.getVxmin()); + tfVxMaxLimit_.setText(""+_params.getVxmax()); + tfVyMinLimit_.setText(""+_params.getVymin()); + tfVyMaxLimit_.setText(""+_params.getVymax()); } } @@ -273,14 +308,18 @@ if (cbVelFlt_.isSelected()) { _params.setSmin(Double.parseDouble(tfNormalMinLimit_.getText())); _params.setSmax(Double.parseDouble(tfNormalMaxLimit_.getText())); - _params.setVmin(Double.parseDouble(tfVyMinLimit_.getText())); - _params.setVmax(Double.parseDouble(tfVyMaxLimit_.getText())); + _params.setVxmin(Double.parseDouble(tfVxMinLimit_.getText())); + _params.setVxmax(Double.parseDouble(tfVxMaxLimit_.getText())); + _params.setVymin(Double.parseDouble(tfVyMinLimit_.getText())); + _params.setVymax(Double.parseDouble(tfVyMaxLimit_.getText())); } else { _params.setSmin(PivUtils.FORTRAN_DOUBLE_MIN); _params.setSmax(PivUtils.FORTRAN_DOUBLE_MAX); - _params.setVmin(PivUtils.FORTRAN_DOUBLE_MIN); - _params.setVmax(PivUtils.FORTRAN_DOUBLE_MAX); + _params.setVxmin(PivUtils.FORTRAN_DOUBLE_MIN); + _params.setVxmax(PivUtils.FORTRAN_DOUBLE_MAX); + _params.setVymin(PivUtils.FORTRAN_DOUBLE_MIN); + _params.setVymax(PivUtils.FORTRAN_DOUBLE_MAX); } } @@ -346,8 +385,11 @@ !cbVelFlt_.isSelected() || ( isReal(tfNormalMinLimit_.getText(),PivResource.getS("Min norme de vitesse")) && isReal(tfNormalMaxLimit_.getText(),PivResource.getS("Max norme de vitesse")) && - isReal(tfVyMinLimit_.getText(),PivResource.getS("Min vitesse transversale")) && - isReal(tfVyMaxLimit_.getText(),PivResource.getS("Max vitesse transversale"))); + isReal(tfVyMinLimit_.getText(),PivResource.getS("Min Vx")) && + isReal(tfVyMaxLimit_.getText(),PivResource.getS("Max Vx")) && + isReal(tfVyMinLimit_.getText(),PivResource.getS("Min Vy")) && + isReal(tfVyMaxLimit_.getText(),PivResource.getS("Max Vy")) + ); if (!bok) return false; double min; @@ -366,16 +408,28 @@ PivResource.getS("Max norme de vitesse"), PivUtils.FORTRAN_DOUBLE_MAX)); return false; } + min=Double.parseDouble(tfVxMinLimit_.getText()); + if (min<PivUtils.FORTRAN_DOUBLE_MIN) { + setErrorText(PivResource.getS("{0}: Doit \xEAtre sup\xE9rieur \xE0 {1}", + PivResource.getS("Min Vx"), PivUtils.FORTRAN_DOUBLE_MIN)); + return false; + } + max=Double.parseDouble(tfVxMaxLimit_.getText()); + if (max>PivUtils.FORTRAN_DOUBLE_MAX) { + setErrorText(PivResource.getS("{0}: Doit \xEAtre inf\xE9rieur \xE0 {1}", + PivResource.getS("Max Vx"), PivUtils.FORTRAN_DOUBLE_MAX)); + return false; + } min=Double.parseDouble(tfVyMinLimit_.getText()); if (min<PivUtils.FORTRAN_DOUBLE_MIN) { setErrorText(PivResource.getS("{0}: Doit \xEAtre sup\xE9rieur \xE0 {1}", - PivResource.getS("Min vitesse transversale"), PivUtils.FORTRAN_DOUBLE_MIN)); + PivResource.getS("Min Vy"), PivUtils.FORTRAN_DOUBLE_MIN)); return false; } max=Double.parseDouble(tfVyMaxLimit_.getText()); if (max>PivUtils.FORTRAN_DOUBLE_MAX) { setErrorText(PivResource.getS("{0}: Doit \xEAtre inf\xE9rieur \xE0 {1}", - PivResource.getS("Max vitesse transversale"), PivUtils.FORTRAN_DOUBLE_MAX)); + PivResource.getS("Max Vy"), PivUtils.FORTRAN_DOUBLE_MAX)); return false; } } 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 2016-11-18 11:01:34 UTC (rev 9454) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivParamReader.java 2016-11-18 11:05:02 UTC (rev 9455) @@ -16,6 +16,8 @@ import org.fudaa.fudaa.piv.metier.PivComputeParameters; import org.fudaa.fudaa.piv.metier.PivTransectParams; +import com.memoire.fu.FuLog; + /** * Un lecteur pour les fichiers des parametres pour le calcul par PIV. * @@ -26,6 +28,8 @@ /** Drapeau d'interruption */ boolean bstop_; + /** Version du fichier */ + String version_="1.0"; /** * Le constructeur. @@ -65,9 +69,15 @@ } in_.setJumpBlankLine(true); - + + // Entete "# FileVersion <num> / IA size" + in_.readFields(); + if ("#".equals(in_.stringField(0)) && "FileVersion".equals(in_.stringField(1))) { + version_ = in_.stringField(2); + } + FuLog.debug("Version du fichier"+"="+version_); + // IA size - in_.readLine(); in_.readFields(); params.setIASize(in_.intField(0)); @@ -110,12 +120,25 @@ in_.readFields(); params.setSmax(in_.doubleField(0)); - // Seuils limites de vitesse transversale vmin, vmax + // Seuils composante VX vmin, vmax in_.readLine(); in_.readFields(); - params.setVmin(in_.doubleField(0)); + params.setVxmin(in_.doubleField(0)); in_.readFields(); - params.setVmax(in_.doubleField(0)); + params.setVxmax(in_.doubleField(0)); + + if ("2.0".equals(version_)) { + // Seuils composante Vy vmin, vmax + in_.readLine(); + in_.readFields(); + params.setVymin(in_.doubleField(0)); + in_.readFields(); + params.setVymax(in_.doubleField(0)); + } + else { + params.setVymin(params.getVxmin()); + params.setVymax(params.getVxmax()); + } // Coefficient de surface in_.readLine(); 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 2016-11-18 11:01:34 UTC (rev 9454) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivParamWriter.java 2016-11-18 11:05:02 UTC (rev 9455) @@ -15,6 +15,8 @@ * @version $Id$ */ public class PivParamWriter extends FileCharSimpleWriterAbstract<Object[]> { + /** Version du fichier */ + public static final String VERSION="2.0"; /** * Ecrit les param\xE8tres d'orthorectification. @@ -45,8 +47,10 @@ final PrintWriter writer = new PrintWriter(out_); try { + // Entete + writer.println("# FileVersion "+VERSION+ " / IA Size"); + // IA size - writer.println("IA size"); writer.println(pivDefined ? params.getIASize():-1); // SA size @@ -78,11 +82,14 @@ writer.println(pivDefined ? params.getSmin():-1); writer.println(pivDefined ? params.getSmax():-1); - // Seuils limites de vitesse v transversale : vmin - vmax - writer.println("Seuils limites de vitesse v transversale : vmin - vmax"); - writer.println(pivDefined ? params.getVmin():-1); - writer.println(pivDefined ? params.getVmax():-1); + writer.println("Seuils limites de la composante Vx : min - max"); + writer.println(pivDefined ? params.getVxmin():-1); + writer.println(pivDefined ? params.getVxmax():-1); + writer.println("Seuils limites de la composante Vy : min - max"); + writer.println(pivDefined ? params.getVymin():-1); + writer.println(pivDefined ? params.getVymax():-1); + // Coefficient de surface writer.println("Coefficient de surface"); writer.println(flowDefined ? paramsFlow.getSurfaceCoef():-1); Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivComputeParameters.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivComputeParameters.java 2016-11-18 11:01:34 UTC (rev 9454) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivComputeParameters.java 2016-11-18 11:05:02 UTC (rev 9455) @@ -32,10 +32,14 @@ protected double smin=PivUtils.FORTRAN_DOUBLE_MIN; /** Valeur max des normes de vitesse */ protected double smax=PivUtils.FORTRAN_DOUBLE_MAX; - /** Valeur min des vitesses transversales */ - protected double vmin=PivUtils.FORTRAN_DOUBLE_MIN; - /** Valeur max des vitesses transversales */ - protected double vmax=PivUtils.FORTRAN_DOUBLE_MAX; + /** Valeur min composante Vx */ + protected double vxmin=PivUtils.FORTRAN_DOUBLE_MIN; + /** Valeur max composante Vx */ + protected double vxmax=PivUtils.FORTRAN_DOUBLE_MAX; + /** Valeur min composante Vy */ + protected double vymin=PivUtils.FORTRAN_DOUBLE_MIN; + /** Valeur max composante Vy */ + protected double vymax=PivUtils.FORTRAN_DOUBLE_MAX; public PivComputeParameters() { } @@ -183,30 +187,58 @@ /** * @return the vmin */ - public double getVmin() { - return vmin; + public double getVxmin() { + return vxmin; } /** * @param vmin the vmin to set */ - public void setVmin(double vmin) { - this.vmin = vmin; + public void setVxmin(double vmin) { + this.vxmin = vmin; } /** * @return the vmax */ - public double getVmax() { - return vmax; + public double getVxmax() { + return vxmax; } /** * @param vmax the vmax to set */ - public void setVmax(double vmax) { - this.vmax = vmax; + public void setVxmax(double vmax) { + this.vxmax = vmax; } + + /** + * @return the vmin + */ + public double getVymin() { + return vymin; + } + + /** + * @param vmin the vmin to set + */ + public void setVymin(double vmin) { + this.vymin = vmin; + } + + /** + * @return the vmax + */ + public double getVymax() { + return vymax; + } + + /** + * @param vmax the vmax to set + */ + public void setVymax(double vmax) { + this.vymax = vmax; + } /** * Definit la position de IA suivant J et I This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2016-11-21 15:34:02
|
Revision: 9456 http://sourceforge.net/p/fudaa/svn/9456 Author: bmarchan Date: 2016-11-21 15:34:00 +0000 (Mon, 21 Nov 2016) Log Message: ----------- Sauvegarde des fichiers de resultats Modified Paths: -------------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProjectPersistence.java Added Paths: ----------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivAverageScalWriter.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivAverageVelWriter.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivInstantFilteredWriter.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivInstantScalWriter.java Added: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivAverageScalWriter.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivAverageScalWriter.java (rev 0) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivAverageScalWriter.java 2016-11-21 15:34:00 UTC (rev 9456) @@ -0,0 +1,45 @@ +package org.fudaa.fudaa.piv.io; + +import java.io.PrintWriter; +import java.util.Locale; + +import org.fudaa.dodico.fortran.FileCharSimpleWriterAbstract; +import org.fudaa.fudaa.piv.metier.PivResultsI; +import org.fudaa.fudaa.piv.metier.PivResultsI.TYPE; + + +/** + * Une classe pour ecrire un fichier des r\xE9sultats scalaires moyenn\xE9s. + * + * @author Bertrand Marchand (mar...@de...) + * @version $Id: PivParamWriter.java 9455 2016-11-18 11:05:02Z bmarchan $ + */ +public class PivAverageScalWriter extends FileCharSimpleWriterAbstract<PivResultsI> { + + /** + * Ecrit les resultats. + */ + @Override + protected void internalWrite(final PivResultsI _res) { + if (!_res.hasResult(TYPE.NORME) || + !_res.hasResult(TYPE.CORREL) || + !_res.hasResult(TYPE.OMEGA) || + !_res.hasResult(TYPE.DIVERG)) { + donneesInvalides(_res); + return; + } + + final PrintWriter writer = new PrintWriter(out_); + + try { + for (int i=0; i<_res.getNbPoints(); i++) { + // Format fixe. + String s=String.format(Locale.US, "%8.4f %8.4f %8.4f %8.4f %8.4f %8.4f", _res.getX(i),_res.getY(i),_res.getValue(i, TYPE.NORME),_res.getValue(i, TYPE.CORREL),_res.getValue(i, TYPE.OMEGA),_res.getValue(i, TYPE.DIVERG)); + writer.println(s); + } + } + catch (final Exception _evt) { + analyze_.manageException(_evt); + } + } +} Property changes on: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivAverageScalWriter.java ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivAverageVelWriter.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivAverageVelWriter.java (rev 0) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivAverageVelWriter.java 2016-11-21 15:34:00 UTC (rev 9456) @@ -0,0 +1,41 @@ +package org.fudaa.fudaa.piv.io; + +import java.io.PrintWriter; + +import org.fudaa.dodico.fortran.FileCharSimpleWriterAbstract; +import org.fudaa.fudaa.piv.metier.PivResultsI; +import org.fudaa.fudaa.piv.metier.PivResultsI.TYPE; + + +/** + * Une classe pour ecrire un fichier des r\xE9sultats de vitesses moyenn\xE9es. + * + * @author Bertrand Marchand (mar...@de...) + * @version $Id: PivParamWriter.java 9455 2016-11-18 11:05:02Z bmarchan $ + */ +public class PivAverageVelWriter extends FileCharSimpleWriterAbstract<PivResultsI> { + + /** + * Ecrit les resultats. + */ + @Override + protected void internalWrite(final PivResultsI _res) { + if (!_res.hasResult(TYPE.VX) || + !_res.hasResult(TYPE.VY)) { + donneesInvalides(_res); + return; + } + + final PrintWriter writer = new PrintWriter(out_); + + try { + for (int i=0; i<_res.getNbPoints(); i++) { + // (est lu par les solveurs en format libre). + writer.println(_res.getX(i)+" "+_res.getY(i)+" "+_res.getValue(i, TYPE.VX)+" "+_res.getValue(i, TYPE.VY)); + } + } + catch (final Exception _evt) { + analyze_.manageException(_evt); + } + } +} Property changes on: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivAverageVelWriter.java ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivInstantFilteredWriter.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivInstantFilteredWriter.java (rev 0) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivInstantFilteredWriter.java 2016-11-21 15:34:00 UTC (rev 9456) @@ -0,0 +1,42 @@ +package org.fudaa.fudaa.piv.io; + +import java.io.PrintWriter; + +import org.fudaa.dodico.fortran.FileCharSimpleWriterAbstract; +import org.fudaa.fudaa.piv.metier.PivResultsI; +import org.fudaa.fudaa.piv.metier.PivResultsI.TYPE; + + +/** + * Une classe pour ecrire un fichier des r\xE9sultats instantan\xE9es filtr\xE9s en espace r\xE9el. + * + * @author Bertrand Marchand (mar...@de...) + * @version $Id: PivParamWriter.java 9455 2016-11-18 11:05:02Z bmarchan $ + */ +public class PivInstantFilteredWriter extends FileCharSimpleWriterAbstract<PivResultsI> { + + /** + * Ecrit les resultats. + */ + @Override + protected void internalWrite(final PivResultsI _res) { + if (!_res.hasResult(TYPE.VX) || + !_res.hasResult(TYPE.VY)) { + donneesInvalides(_res); + return; + } + + final PrintWriter writer = new PrintWriter(out_); + + try { + + for (int i=0; i<_res.getNbPoints(); i++) { + // (est lu par les solveurs en format libre). + writer.println(_res.getX(i)+" "+_res.getY(i)+" "+_res.getValue(i, TYPE.VX)+" "+_res.getValue(i, TYPE.VY)); + } + } + catch (final Exception _evt) { + analyze_.manageException(_evt); + } + } +} Property changes on: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivInstantFilteredWriter.java ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivInstantScalWriter.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivInstantScalWriter.java (rev 0) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivInstantScalWriter.java 2016-11-21 15:34:00 UTC (rev 9456) @@ -0,0 +1,46 @@ +package org.fudaa.fudaa.piv.io; + +import java.io.PrintWriter; +import java.util.Locale; + +import org.fudaa.dodico.fortran.FileCharSimpleWriterAbstract; +import org.fudaa.fudaa.piv.metier.PivResultsI; +import org.fudaa.fudaa.piv.metier.PivResultsI.TYPE; + + +/** + * Une classe pour ecrire un fichier des r\xE9sultats scalaires instantan\xE9es filtr\xE9s en espace r\xE9el. + * + * @author Bertrand Marchand (mar...@de...) + * @version $Id: PivParamWriter.java 9455 2016-11-18 11:05:02Z bmarchan $ + */ +public class PivInstantScalWriter extends FileCharSimpleWriterAbstract<PivResultsI> { + + /** + * Ecrit les resultats. + */ + @Override + protected void internalWrite(final PivResultsI _res) { + if (!_res.hasResult(TYPE.NORME) || + !_res.hasResult(TYPE.CORREL) || + !_res.hasResult(TYPE.OMEGA) || + !_res.hasResult(TYPE.DIVERG)) { + donneesInvalides(_res); + return; + } + + final PrintWriter writer = new PrintWriter(out_); + + try { + + for (int i=0; i<_res.getNbPoints(); i++) { + // Format fixe. + String s=String.format(Locale.US, "%8.4f %8.4f %8.4f %8.4f %8.4f %8.4f", _res.getX(i),_res.getY(i),_res.getValue(i, TYPE.NORME),_res.getValue(i, TYPE.CORREL),_res.getValue(i, TYPE.OMEGA),_res.getValue(i, TYPE.DIVERG)); + writer.println(s); + } + } + catch (final Exception _evt) { + analyze_.manageException(_evt); + } + } +} Property changes on: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivInstantScalWriter.java ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProjectPersistence.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProjectPersistence.java 2016-11-18 11:05:02 UTC (rev 9455) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProjectPersistence.java 2016-11-21 15:34:00 UTC (rev 9456) @@ -18,7 +18,9 @@ import org.fudaa.fudaa.piv.PivResource; import org.fudaa.fudaa.piv.PivUtils; import org.fudaa.fudaa.piv.io.PivAverageScalReader; +import org.fudaa.fudaa.piv.io.PivAverageScalWriter; import org.fudaa.fudaa.piv.io.PivAverageVelReader; +import org.fudaa.fudaa.piv.io.PivAverageVelWriter; import org.fudaa.fudaa.piv.io.PivBathyPReader; import org.fudaa.fudaa.piv.io.PivBathyReader; import org.fudaa.fudaa.piv.io.PivBathyWriter; @@ -37,7 +39,9 @@ import org.fudaa.fudaa.piv.io.PivImgRefReader; import org.fudaa.fudaa.piv.io.PivImgRefWriter; import org.fudaa.fudaa.piv.io.PivInstantFilteredReader; +import org.fudaa.fudaa.piv.io.PivInstantFilteredWriter; import org.fudaa.fudaa.piv.io.PivInstantScalReader; +import org.fudaa.fudaa.piv.io.PivInstantScalWriter; import org.fudaa.fudaa.piv.io.PivInstantVelReader; import org.fudaa.fudaa.piv.io.PivParamReader; import org.fudaa.fudaa.piv.io.PivParamWriter; @@ -537,6 +541,12 @@ // Les resultats utilis\xE9s pour le calcul de vitesse moyenne. saveInstantResultsList(false); + // Les resultats moyenn\xE9s + saveAverageResults(prj_, prj_.averageResults, null); + + // Les resultats filtr\xE9s instantan\xE9s + saveInstantFilteredResults(prj_, prj_.instantFilteredResults, null); + // Les donn\xE9es globales saveGlobalData(null); @@ -614,4 +624,57 @@ } } + /** + * Sauve les resultats filtr\xE9s, dans l'ordre + * @param prj_ Le projet + * @param _res Les resultats a sauver + * @param _prog L'interface de progression. + */ + public void saveInstantFilteredResults(PivProject prj_, PivResultsI[] _res, ProgressionInterface _prog) { + + // Suppression des anciens fichiers vitesses + File dirVelFilter=new File(prj_.rootPath,PivProject.VEL_FILTER_DIR); + dirVelFilter.mkdir(); + File[] files=dirVelFilter.listFiles(); + if (files!=null) { + for (File file : files) { + file.delete(); + } + } + + // Suppression des anciens fichiers scalaires + File dirVelScal=new File(prj_.rootPath,PivProject.VEL_SCAL_DIR); + dirVelScal.mkdir(); + files=dirVelScal.listFiles(); + if (files!=null) { + for (File file : files) { + file.delete(); + } + } + + if (_res==null) return; + + for (int i = 0; i < _res.length; i++) { + File velFile = new File(dirVelFilter, "filter_piv" + PivUtils.formatOn4Chars(i + 1) + ".dat"); + new PivInstantFilteredWriter().write(_res[i], velFile, _prog); + + File scalFile = new File(dirVelScal, "scal_piv" + PivUtils.formatOn4Chars(i + 1) + ".dat"); + new PivInstantScalWriter().write(_res[i], scalFile, _prog); + } + } + + /** + * Sauve les resultats moyenn\xE9s dans l'espace r\xE9el + * @param prj_ Le projet + * @param _res Les resultats a sauver + * @param _prog L'interface de progression. + */ + public void saveAverageResults(PivProject prj_, PivResultsI _res, ProgressionInterface _prog) { + + File velFile = new File(prj_.getOutputDir(),"average_vel.out"); + new PivAverageVelWriter().write(_res, velFile, _prog); + + File scalFile = new File(prj_.getOutputDir(), "average_scal.out"); + new PivAverageScalWriter().write(_res, scalFile, _prog); + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2016-11-25 14:40:53
|
Revision: 9468 http://sourceforge.net/p/fudaa/svn/9468 Author: bmarchan Date: 2016-11-25 14:40:50 +0000 (Fri, 25 Nov 2016) Log Message: ----------- Fix : Pas de possibilit?\195?\169 de supprimer des vitesses sur le calque vitesses brutes et moyennes. 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/layer/PivVelResultsLayer.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 2016-11-25 14:38:35 UTC (rev 9467) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivRealView.java 2016-11-25 14:40:50 UTC (rev 9468) @@ -249,6 +249,7 @@ // Layer des vitesses moyennes. cqVelResults = new PivVelResultsLayer(); + cqVelResults.setEditable(false); cqVelResults.setTitle(PivResource.getS("Vit. surf. moy.")); cqVelResults.setLongTitle(PivResource.getS("Vitesses de surface moyenn\xE9es")); cqVelResults.setTitleModifiable(true); @@ -266,6 +267,7 @@ // Layer des vitesses instantan\xE9es brutes. cqInstantVelResults_ = new PivVelResultsLayer(); + cqInstantVelResults_.setEditable(false); cqInstantVelResults_.setTitle(PivResource.getS("Vit. surf. inst. brutes")); cqInstantVelResults_.setLongTitle(PivResource.getS("Vitesses de surface instantan\xE9es brutes")); cqInstantVelResults_.setName("cqInstantVel"); @@ -273,16 +275,11 @@ cqInstantVelResults_.setLineModel(0, new TraceLigneModel(TraceLigne.LISSE, 1, Color.ORANGE)); cqInstantVelResults_.setTitleModifiable(true); cqInstantVelResults_.setVisible(false); -// cqInstantVelResults_.addPropertyChangeListener(new PropertyChangeListener() { -// public void propertyChange(PropertyChangeEvent evt) { -// if ("visible".equals(evt.getPropertyName())) { -// pnLayers_.getShowVelocitiesAction().setSelected((Boolean)evt.getNewValue()); -// } -// } -// }); // Layer des vitesses instantan\xE9es filtr\xE9es. cqInstantVelFltResults_ = new PivVelResultsLayer(); + // Editable, pour supprimer des vitesses. + cqInstantVelFltResults_.setEditable(true); cqInstantVelFltResults_.setTitle(PivResource.getS("Vit. surf. inst. filtr\xE9es")); cqInstantVelFltResults_.setLongTitle(PivResource.getS("Vitesses de surface instantan\xE9es filtr\xE9es")); cqInstantVelFltResults_.setName("cqInstantVelFlt"); @@ -290,13 +287,6 @@ cqInstantVelFltResults_.setLineModel(0, new TraceLigneModel(TraceLigne.LISSE, 1, Color.GREEN.darker())); cqInstantVelFltResults_.setTitleModifiable(true); cqInstantVelFltResults_.setVisible(false); -// cqInstantVelFltResults_.addPropertyChangeListener(new PropertyChangeListener() { -// public void propertyChange(PropertyChangeEvent evt) { -// if ("visible".equals(evt.getPropertyName())) { -// pnLayers_.getShowVelocitiesAction().setSelected((Boolean)evt.getNewValue()); -// } -// } -// }); // Layer des d\xE9bits. cqFlowResults = new ZCalqueFleche() { Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivVelResultsLayer.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivVelResultsLayer.java 2016-11-25 14:38:35 UTC (rev 9467) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivVelResultsLayer.java 2016-11-25 14:40:50 UTC (rev 9468) @@ -27,6 +27,9 @@ */ public class PivVelResultsLayer extends ZCalqueFleche implements ZCalqueEditable { + /** Defini le caractere editable du calque */ + private boolean isEditable_=false; + @Override protected String getFlecheUnit() { return "m/s"; @@ -121,16 +124,34 @@ @Override public boolean removeSelectedObjects(CtuluCommandContainer _cmd, CtuluUI _ui) { - FuLog.debug("Remove object"); - if (!isSelectionEmpty()) { - final boolean r = modeleDonnees().removeVelocity(getSelectedIndex(), _cmd); - if (r) { - // Sinon, le calque ne se repaint pas toujours... - repaint(); + if (isEditable_) { + FuLog.debug("Remove object"); + if (!isSelectionEmpty()) { + final boolean r=modeleDonnees().removeVelocity(getSelectedIndex(), _cmd); + if (r) { + // Sinon, le calque ne se repaint pas toujours... + repaint(); + } } } return false; } + + /** + * La methode parent n'a aucun sens => On la surcharge. + */ + @Override + public boolean isEditable() { + return isEditable_; + } + + /** + * Definit si le calque est editable. Si c'est le cas, les methode d'editions peuvent \xEAtre appel\xE9es. + * @param _b True : Le calque est editable. + */ + public void setEditable(boolean _b) { + isEditable_=_b; + } // Not used @Override This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2016-12-19 10:11:52
|
Revision: 9486 http://sourceforge.net/p/fudaa/svn/9486 Author: bmarchan Date: 2016-12-19 10:11:49 +0000 (Mon, 19 Dec 2016) Log Message: ----------- Lecture et affichage du champ "D?\195?\169bit mesur?\195?\169" dans les r?\195?\169sultats du calcul de d?\195?\169bit Modified Paths: -------------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivFlowInfoPanel.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivExportGaugingReportAction.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/layer/PivTransectModel.java 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/PivResultsI.java Modified: 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 2016-12-16 16:04:05 UTC (rev 9485) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivFlowInfoPanel.java 2016-12-19 10:11:49 UTC (rev 9486) @@ -37,6 +37,7 @@ private double meanDisch_; private double meanArea_; private double meanMeanV_; + private double meanMeasuredDisch_; /** * Une classe pour le modele de la table affichant les r\xE9sultats. @@ -48,7 +49,7 @@ } public int getColumnCount() { - return 7; + return 9; } public String getColumnName(int columnIndex) { @@ -68,6 +69,10 @@ return PivResource.getS("Vit. moy. (m/s)"); case 6: return PivResource.getS("Ecart (%)"); + case 7: + return PivResource.getS("D\xE9bit mesur\xE9 (m/s)"); + case 8: + return PivResource.getS("Ecart (%)"); } } @@ -101,6 +106,11 @@ case 6: val=rowIndex==res_.length? meanMeanV_:res_[rowIndex].getMeanVelocity(); return (val-meanMeanV_)/meanMeanV_*100; + case 7: + return rowIndex==res_.length? meanMeasuredDisch_:res_[rowIndex].getValue(-1,ResultType.MEASURED_DISCHARGE); + case 8: + val=rowIndex==res_.length? meanMeasuredDisch_:res_[rowIndex].getValue(-1,ResultType.MEASURED_DISCHARGE); + return (val-meanMeasuredDisch_)/meanMeasuredDisch_*100; } } @@ -129,7 +139,10 @@ super.getTableCellRendererComponent(table,value,isSelected,hasFocus,row,column); if (value instanceof Double) { - if (column==2 || column==4 || column==6) + if (((Double) value).isNaN()) { + this.setText(value.toString()); + } + else if (column==2 || column==4 || column==6 || column==8) this.setText(fmtEcart.format((Double)value)); else this.setText(fmt.format((Double)value)); @@ -147,9 +160,14 @@ JTable tbResults=new JTable(); tbResults.setModel(new DischargeTableModel()); tbResults.setDefaultRenderer(Double.class,new DischargeCellRenderer()); + tbResults.getColumnModel().getColumn(0).setMaxWidth(60); + tbResults.getColumnModel().getColumn(2).setMaxWidth(70); + tbResults.getColumnModel().getColumn(4).setMaxWidth(70); + tbResults.getColumnModel().getColumn(6).setMaxWidth(70); + tbResults.getColumnModel().getColumn(8).setMaxWidth(70); JScrollPane spResults=new JScrollPane(); spResults.getViewport().add(tbResults); - spResults.setPreferredSize(new Dimension(700,200)); + spResults.setPreferredSize(new Dimension(850,200)); add(new JLabel(PivResource.getS("Liste des transects")),BorderLayout.NORTH); add(spResults, BorderLayout.CENTER); @@ -159,9 +177,10 @@ protected void computeMoyennes() { PivGlobalFlowResults globRes=new PivGlobalFlowResults(res_); - meanDisch_=globRes.getAverageScalarResult(ResultType.DISCHARGE); + meanDisch_=globRes.getAverageScalarResult(ResultType.FULL_DISCHARGE); meanArea_=globRes.getAverageScalarResult(ResultType.WETTED_AREA); meanMeanV_=globRes.getAverageScalarResult(ResultType.MEAN_VELOCITY); + meanMeasuredDisch_=globRes.getAverageScalarResult(ResultType.MEASURED_DISCHARGE); } @Override Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivExportGaugingReportAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivExportGaugingReportAction.java 2016-12-16 16:04:05 UTC (rev 9485) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivExportGaugingReportAction.java 2016-12-19 10:11:49 UTC (rev 9486) @@ -345,7 +345,7 @@ final PivOrthoParameters orthoParams = impl.getCurrentProject().getOrthoParameters(); final PivGlobalFlowResults globRes = new PivGlobalFlowResults(flowResults); - final Double meanDisch=globRes.getAverageScalarResult(ResultType.DISCHARGE); + final Double meanDisch=globRes.getAverageScalarResult(ResultType.FULL_DISCHARGE); final Double meanArea=globRes.getAverageScalarResult(ResultType.WETTED_AREA); final Double meanMeanV=globRes.getAverageScalarResult(ResultType.MEAN_VELOCITY); Modified: 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 2016-12-16 16:04:05 UTC (rev 9485) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivDischargeReader.java 2016-12-19 10:11:49 UTC (rev 9486) @@ -17,6 +17,7 @@ import org.fudaa.dodico.fortran.FileCharSimpleReaderAbstract; import org.fudaa.fudaa.piv.PivResource; import org.fudaa.fudaa.piv.metier.PivFlowResults; +import org.fudaa.fudaa.piv.metier.PivResultsI.ResultType; /** * Un lecteur pour les fichiers des r\xE9sultats de calcul de d\xE9bit. @@ -80,6 +81,7 @@ // 1ere ligne in_.readFields(); + // Le niveau d'eau res.setWaterElevation(in_.doubleField(0)); // Debit res.setDischarge(in_.doubleField(1)); @@ -87,6 +89,10 @@ res.setWettedArea(in_.doubleField(2)); // Vitesse moyenne res.setMeanVelocity(in_.doubleField(3)); + // D\xE9bit mesur\xE9 (Fudaa-LSPIV > 1.5.0) + if (in_.getNumberOfFields()>4) { + res.setValue(0, ResultType.MEASURED_DISCHARGE, in_.doubleField(4)); + } // Boucle jusque fin de fichier. Exception EOF si fin. while (true) { Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivTransectModel.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivTransectModel.java 2016-12-16 16:04:05 UTC (rev 9485) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivTransectModel.java 2016-12-19 10:11:49 UTC (rev 9486) @@ -19,6 +19,7 @@ import org.fudaa.fudaa.piv.PivVisuPanel; import org.fudaa.fudaa.piv.metier.PivFlowResults; import org.fudaa.fudaa.piv.metier.PivProject; +import org.fudaa.fudaa.piv.metier.PivResultsI.ResultType; import org.fudaa.fudaa.piv.metier.PivTransect; import org.fudaa.fudaa.piv.metier.PivTransectParams; @@ -252,6 +253,7 @@ Double discharge=res.getDischarge(); Double wettedArea=res.getWettedArea(); Double meanVelocity=res.getMeanVelocity(); + Double measuredDischarge=res.getValue(-1,ResultType.MEASURED_DISCHARGE); for (int idx : selIds) { res=prj_.getFlowResults()[idx]; @@ -263,6 +265,8 @@ wettedArea=null; if (meanVelocity != res.getMeanVelocity()) meanVelocity=null; + if (measuredDischarge != res.getValue(-1,ResultType.MEASURED_DISCHARGE)) + measuredDischarge=null; } if (waterElevation != null) @@ -273,6 +277,8 @@ _d.put(PivResource.getS("Aire mouill\xE9e (m\xB2)"), "" + wettedArea); if (meanVelocity != null) _d.put(PivResource.getS("Vitesse moyenne sur la section (m/s)"), "" + meanVelocity); + if (measuredDischarge != null) + _d.put(PivResource.getS("D\xE9bit mesur\xE9 (m\xB3/s)"), "" + measuredDischarge); } } Modified: 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 2016-12-16 16:04:05 UTC (rev 9485) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivFlowResults.java 2016-12-19 10:11:49 UTC (rev 9486) @@ -19,6 +19,8 @@ protected double meanVelocity; /** Le niveau d'eau */ protected double waterElevation; + /** Le d\xE9bit mesur\xE9. Peut \xEAtre NaN si la mesure n'est pas calcul\xE9e (Fudaa-LSPIV < 1.5.0). */ + protected double measuredDischarge = Double.NaN; /** Les coordonn\xE9es X des points */ protected double[] x; /** Les coordonn\xE9es Y des points */ @@ -162,7 +164,7 @@ @Override public ResultType[] getResults() { - return new ResultType[]{ResultType.VX,ResultType.VY,ResultType.DISCHARGE, ResultType.WETTED_AREA, ResultType.MEAN_VELOCITY, ResultType.WATER_ELEVATION}; + return new ResultType[]{ResultType.VX,ResultType.VY,ResultType.FULL_DISCHARGE, ResultType.WETTED_AREA, ResultType.MEAN_VELOCITY, ResultType.WATER_ELEVATION, ResultType.MEASURED_DISCHARGE}; } @Override @@ -176,7 +178,7 @@ return getVx(_ind); else if (ResultType.VY.equals(_tpRes)) return getVy(_ind); - else if (ResultType.DISCHARGE.equals(_tpRes)) + else if (ResultType.FULL_DISCHARGE.equals(_tpRes)) return discharge; else if (ResultType.WETTED_AREA.equals(_tpRes)) return wettedArea; @@ -184,6 +186,8 @@ return meanVelocity; else if (ResultType.WATER_ELEVATION.equals(_tpRes)) return waterElevation; + else if (ResultType.MEASURED_DISCHARGE.equals(_tpRes)) + return measuredDischarge; else return -1; } @@ -194,7 +198,7 @@ return vy; else if (ResultType.VY.equals(_tpRes)) return vy; - else if (ResultType.DISCHARGE.equals(_tpRes)) + else if (ResultType.FULL_DISCHARGE.equals(_tpRes)) return new double[]{discharge}; else if (ResultType.WETTED_AREA.equals(_tpRes)) return new double[]{wettedArea}; @@ -202,6 +206,8 @@ return new double[]{meanVelocity}; else if (ResultType.WATER_ELEVATION.equals(_tpRes)) return new double[]{waterElevation}; + else if (ResultType.MEASURED_DISCHARGE.equals(_tpRes)) + return new double[]{measuredDischarge}; else return null; } @@ -211,14 +217,14 @@ if (!hasResult(_tpRes)) return; - if (_ind>=vx.length) + if (_tpRes.isVector() && _ind>=vx.length) return; if (ResultType.VX.equals(_tpRes)) vx[_ind] = _val; else if (ResultType.VY.equals(_tpRes)) vy[_ind] = _val; - else if (ResultType.DISCHARGE.equals(_tpRes)) + else if (ResultType.FULL_DISCHARGE.equals(_tpRes)) discharge = _val; else if (ResultType.WETTED_AREA.equals(_tpRes)) wettedArea = _val; @@ -226,5 +232,7 @@ meanVelocity = _val; else if (ResultType.WATER_ELEVATION.equals(_tpRes)) waterElevation = _val; + else if (ResultType.MEASURED_DISCHARGE.equals(_tpRes)) + measuredDischarge = _val; } } Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivResultsI.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivResultsI.java 2016-12-16 16:04:05 UTC (rev 9485) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivResultsI.java 2016-12-19 10:11:49 UTC (rev 9486) @@ -22,7 +22,10 @@ CORREL(true), OMEGA(true), DIVERG(true), - DISCHARGE(false), + /** D\xE9bit total */ + FULL_DISCHARGE(false), + /** D\xE9bit mesur\xE9 */ + MEASURED_DISCHARGE(false), WETTED_AREA(false), MEAN_VELOCITY(false), WATER_ELEVATION(false); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2017-01-02 14:44:00
|
Revision: 9497 http://sourceforge.net/p/fudaa/svn/9497 Author: bmarchan Date: 2017-01-02 14:43:57 +0000 (Mon, 02 Jan 2017) Log Message: ----------- Fudaa-LSPIV : Detection de mises ?\195?\160 jour Modified Paths: -------------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java Added Paths: ----------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivUpdatePanel.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 2017-01-02 14:42:28 UTC (rev 9496) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java 2017-01-02 14:43:57 UTC (rev 9497) @@ -16,6 +16,9 @@ import java.beans.PropertyVetoException; import java.io.File; import java.io.IOException; +import java.io.InputStreamReader; +import java.io.LineNumberReader; +import java.net.URL; import java.util.Iterator; import java.util.List; import java.util.Observable; @@ -78,6 +81,7 @@ import com.memoire.bu.BuRegistry; import com.memoire.bu.BuResource; import com.memoire.bu.BuUserPreferencesPanel; +import com.memoire.fu.FuLib; import com.memoire.fu.FuLog; /** @@ -92,9 +96,9 @@ protected static BuInformationsSoftware isPIV_ = new BuInformationsSoftware(); static { isPIV_.name = "LSPIV"; - isPIV_.version = "1.5.0"; + isPIV_.version = "1.5.1"; isPIV_.date = "2016-12-20"; - isPIV_.rights = PivResource.getS("Tous droits r\xE9serv\xE9s")+". CEREMA (c)1999-2016"; + isPIV_.rights = PivResource.getS("Tous droits r\xE9serv\xE9s")+". CEREMA (c)1999-2017"; isPIV_.license = "GPL2"; isPIV_.languages = "en,fr"; isPIV_.authors=new String[]{"B.Marchand (mar...@de...)"}; @@ -102,6 +106,7 @@ isPIV_.http="http://forge.irstea.fr/projects/fudaa-lspiv"; isPIV_.man="guide_Fudaa-lspiv_"+BuPreferences.BU.getStringProperty("locale.language", System.getProperty("piv.lang", "fr"))+".pdf"; isPIV_.citation=PivResource.getS("Ichiro Fujita (Prof.), Universit\xE9 de Kob\xE9"); + isPIV_.update=System.getProperty("piv.update", "http://www.deltacad.fr/downloads"); isPIV_.logo = PivResource.PIV.getIcon("iconepiv.gif"); isPIV_.banner = PivResource.PIV.getIcon("banniere.jpg"); @@ -269,6 +274,10 @@ create(); } else if ("AIDE_INDEX".equals(action)) { showHelp(); + } else if ("MAJ".equals(action)) { + if (!checkForUpdate(false)) { + message(PivResource.getS("Information"),PivResource.getS("La version de Fudaa-LSPIV est \xE0 jour"),false); + } } else if (action.startsWith("REOUVRIR")) { FuLog.trace(action.substring(9,action.length()-1)); @@ -706,6 +715,8 @@ setEnabledForAction("IMPORTER", true); setEnabledForAction("EXPORTER", true); + setEnabledForAction("MAJ", true); + BuMenuRecentFiles mr= (BuMenuRecentFiles)mb.getMenu("REOUVRIR"); if (mr != null) { mr.setPreferences(PivPreferences.PIV); @@ -939,6 +950,42 @@ PivResource.getS("La biblioth\xE8que JAI Image I/O n'est probablement pas install\xE9e.\nElle doit l'\xEAtre dans le r\xE9pertoire des extensions Java.\n\nL'application ne fonctionnera pas correctement.")); } } + + /** + * Controle l'existence d'une mise a jour sur l'URL de mise a jour et affiche un dialogue pour t\xE9l\xE9charger si c'est le cas. + * @param _showHideButton True : Le bouton "Ne plus afficher" est affich\xE9 dans le dialogue. + * @return True : Une mise a jour existe. + */ + public boolean checkForUpdate(boolean _showHideButton) { + try { + URL urlFlag=new URL(isPIV_.update+"/fudaa-lspiv-lastversion.txt"); + if (FuLib.existsURL(urlFlag)) { + LineNumberReader is=null; + try { + is=new LineNumberReader(new InputStreamReader(urlFlag.openStream())); + String lastversion; + while ((lastversion=is.readLine()) != null && lastversion.trim().startsWith("#")) { + } + + if (lastversion.compareTo(isPIV_.version)>0) { + URL urlJar = new URL(isPIV_.update+"/fudaa-lspiv-"+lastversion+"-setup.jar"); + new PivUpdatePanel(lastversion, urlJar, _showHideButton).afficheModale(this.getFrame(),PivResource.getS("Mise \xE0 jour disponible")); + return true; + } + } + finally { + if (is!=null) { + is.close(); + } + } + } + } + catch (IOException e) { + e.printStackTrace(); + } + + return false; + } /** * D\xE9marre l'application. @@ -949,6 +996,10 @@ super.addFrameListLeft(); controlJAILibrary(); + + if (PivPreferences.PIV.getBooleanProperty(FudaaStartupExitPreferencesPanel.PREF_CHECK_NEW_VERSION, true)) { + checkForUpdate(true); + } } } Added: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivUpdatePanel.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivUpdatePanel.java (rev 0) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivUpdatePanel.java 2017-01-02 14:43:57 UTC (rev 9497) @@ -0,0 +1,82 @@ +/* + * @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 java.awt.Cursor; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.net.URL; + +import javax.swing.BorderFactory; +import javax.swing.JCheckBox; +import javax.swing.JLabel; + +import org.fudaa.ctulu.gui.CtuluDialogPanel; +import org.fudaa.fudaa.commun.FudaaBrowserControl; +import org.fudaa.fudaa.commun.impl.FudaaStartupExitPreferencesPanel; +import org.jdesktop.swingx.VerticalLayout; + + +/** + * Un panneau pour l'affichage de la version a telecharger. + * @author Bertrand Marchand (mar...@de...) + * @version $Id: PivFlowInfoPanel.java 9491 2016-12-20 14:46:54Z bmarchan $ + */ +public class PivUpdatePanel extends CtuluDialogPanel { + + private JCheckBox cbHidden_; + + public PivUpdatePanel(String _version, final URL _url, boolean _showHideButton) { + setLayout(new VerticalLayout(10)); + setBorder(BorderFactory.createEmptyBorder(5, 5, 15, 5)); + + final JLabel lbLink=new JLabel(PivResource.getS("<html><a href=\"{0}\">T\xE9l\xE9chargez la version {1} de Fudaa-LSPIV</a></html>", _url.toString(), _version)); + lbLink.addMouseListener(new MouseAdapter() { + public void mouseEntered(MouseEvent me) { + lbLink.setCursor(new Cursor(Cursor.HAND_CURSOR)); + } + + public void mouseExited(MouseEvent me) { + lbLink.setCursor(Cursor.getDefaultCursor()); + } + + public void mouseClicked(MouseEvent me) { + try { + FudaaBrowserControl.displayURL(_url); + } + catch (Exception e) { + System.out.println(e); + } + } + }); + + + add(new JLabel(PivResource.getS("<html>Une mise \xE0 jour de Fudaa-LSPIV est disponible.<br>Cliquez sur le lien ci-dessous pour la t\xE9l\xE9charger.</html>"))); + add(lbLink); + + if (_showHideButton) { + cbHidden_=new JCheckBox(PivResource.getS("Ne plus afficher ce dialogue")); + add(cbHidden_); + } + } + + @Override + public boolean isDataValid() { + return true; + } + + @Override + public void apply() { + super.apply(); + + if (cbHidden_ != null) + PivPreferences.PIV.putBooleanProperty(FudaaStartupExitPreferencesPanel.PREF_CHECK_NEW_VERSION, !cbHidden_.isSelected()); + } + + +} \ No newline at end of file Property changes on: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivUpdatePanel.java ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2017-01-09 17:22:34
|
Revision: 9500 http://sourceforge.net/p/fudaa/svn/9500 Author: bmarchan Date: 2017-01-09 17:22:31 +0000 (Mon, 09 Jan 2017) Log Message: ----------- LSPIV : Import vid?\195?\169o par ffmpeg Modified Paths: -------------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivComputeParamPanel.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivManageOriginalFilesPanel.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivTransectParamPanel.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivUtils.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/PivProjectPersistence.java Added Paths: ----------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImportVideoParamPanel.java Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivComputeParamPanel.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivComputeParamPanel.java 2017-01-09 11:12:07 UTC (rev 9499) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivComputeParamPanel.java 2017-01-09 17:22:31 UTC (rev 9500) @@ -357,111 +357,6 @@ _params.setTimeInterval(Double.parseDouble(tfTemps.getText().trim())); } - /** - * Controle que la valeur du champ de nom donn\xE9 est un entier positif. - * @param _sval La valeur du champ. - * @param _param Le nom du champ. - * @return true si la valeur est correcte. - */ - private boolean isPositiveInteger(String _sval, String _param) { - boolean bok=false; - try { - bok=false; - int val=Integer.parseInt(_sval.trim()); - bok=val>=0; - } - catch (NumberFormatException _exc) {} - if (!bok) { - setErrorText(PivResource.getS("{0}: Doit \xEAtre un entier >= 0",_param)); - return false; - } - return true; - } - - /** - * Controle que la valeur du champ de nom donn\xE9 est un r\xE9el positif. - * @param _sval La valeur du champ. - * @param _param Le nom du champ. - * @return true si la valeur est correcte. - */ - private boolean isPositiveReal(String _sval, String _param) { - boolean bok=false; - try { - bok=false; - double val=Double.parseDouble(_sval.trim()); - bok=val>=0; - } - catch (NumberFormatException _exc) {} - if (!bok) { - setErrorText(PivResource.getS("{0}: Doit \xEAtre un r\xE9el >= 0",_param)); - return false; - } - return true; - } - - /** - * Controle que la valeur du champ de nom donn\xE9 est un entier positif. - * @param _sval La valeur du champ. - * @param _param Le nom du champ. - * @return true si la valeur est correcte. - */ - private boolean isStrictPositiveInteger(String _sval, String _param) { - boolean bok=false; - try { - bok=false; - int val=Integer.parseInt(_sval.trim()); - bok=val>0; - } - catch (NumberFormatException _exc) {} - if (!bok) { - setErrorText(PivResource.getS("{0}: Doit \xEAtre un entier > 0",_param)); - return false; - } - return true; - } - - /** - * Controle que la valeur du champ de nom donn\xE9 est un entier . - * @param _sval La valeur du champ. - * @param _param Le nom du champ. - * @return true si la valeur est correcte. - */ - private boolean isInteger(String _sval, String _param) { - boolean bok=false; - try { - bok=false; - Integer.parseInt(_sval.trim()); - bok=true; - } - catch (NumberFormatException _exc) {} - if (!bok) { - setErrorText(PivResource.getS("{0}: Doit \xEAtre un entier",_param)); - return false; - } - return true; - } - - /** - * Controle que la valeur du champ de nom donn\xE9 est un r\xE9el positif. - * @param _sval La valeur du champ. - * @param _param Le nom du champ. - * @return true si la valeur est correcte. - */ - private boolean isStrictPositiveReal(String _sval, String _param) { - boolean bok=false; - try { - bok=false; - double val=Double.parseDouble(_sval.trim()); - bok=val>0; - } - catch (NumberFormatException _exc) {} - if (!bok) { - setErrorText(PivResource.getS("{0}: Doit \xEAtre un r\xE9el > 0",_param)); - return false; - } - return true; - } - @Override public boolean isDataValid() { boolean bposx=!tfPosX.getText().trim().isEmpty(); @@ -473,20 +368,20 @@ } boolean bok= - isStrictPositiveReal(tfNbImgSec.getText(),PivResource.getS("Nombre d'images par secondes")) && - isStrictPositiveReal(tfTemps.getText(),PivResource.getS("Intervalle de temps")) && - isStrictPositiveReal(tfIASize.getText(),PivResource.getS("Taille de l'aire")+" (m)") && - isStrictPositiveInteger(tfIASizePix.getText(),PivResource.getS("Taille de l'aire")+" (pix)") && - (!bposx || isInteger(tfPosX.getText(), PivResource.getS("Position J"))) && - (!bposy || isInteger(tfPosY.getText(), PivResource.getS("Position I"))) && - isPositiveReal(tfSim.getText(),PivResource.getS("Sim")+" (m/s)") && - isPositiveReal(tfSip.getText(),PivResource.getS("Sip")+" (m/s)") && - isPositiveReal(tfSjm.getText(),PivResource.getS("Sjm")+" (m/s)") && - isPositiveReal(tfSjp.getText(),PivResource.getS("Sjp")+" (m/s)") && - isPositiveInteger(tfSimPix.getText(),PivResource.getS("Sim")+" (pix)") && - isPositiveInteger(tfSipPix.getText(),PivResource.getS("Sip")+" (pix)") && - isPositiveInteger(tfSjmPix.getText(),PivResource.getS("Sjm")+" (pix)") && - isPositiveInteger(tfSjpPix.getText(),PivResource.getS("Sjp")+" (pix)") + PivUtils.isStrictPositiveReal(this,tfNbImgSec.getText(),PivResource.getS("Nombre d'images par secondes")) && + PivUtils.isStrictPositiveReal(this,tfTemps.getText(),PivResource.getS("Intervalle de temps")) && + PivUtils.isStrictPositiveReal(this,tfIASize.getText(),PivResource.getS("Taille de l'aire")+" (m)") && + PivUtils.isStrictPositiveInteger(this,tfIASizePix.getText(),PivResource.getS("Taille de l'aire")+" (pix)") && + (!bposx || PivUtils.isInteger(this,tfPosX.getText(), PivResource.getS("Position J"))) && + (!bposy || PivUtils.isInteger(this,tfPosY.getText(), PivResource.getS("Position I"))) && + PivUtils.isPositiveReal(this,tfSim.getText(),PivResource.getS("Sim")+" (m/s)") && + PivUtils.isPositiveReal(this,tfSip.getText(),PivResource.getS("Sip")+" (m/s)") && + PivUtils.isPositiveReal(this,tfSjm.getText(),PivResource.getS("Sjm")+" (m/s)") && + PivUtils.isPositiveReal(this,tfSjp.getText(),PivResource.getS("Sjp")+" (m/s)") && + PivUtils.isPositiveInteger(this,tfSimPix.getText(),PivResource.getS("Sim")+" (pix)") && + PivUtils.isPositiveInteger(this,tfSipPix.getText(),PivResource.getS("Sip")+" (pix)") && + PivUtils.isPositiveInteger(this,tfSjmPix.getText(),PivResource.getS("Sjm")+" (pix)") && + PivUtils.isPositiveInteger(this,tfSjpPix.getText(),PivResource.getS("Sjp")+" (pix)") ; if (!bok) return false; Added: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImportVideoParamPanel.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImportVideoParamPanel.java (rev 0) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImportVideoParamPanel.java 2017-01-09 17:22:31 UTC (rev 9500) @@ -0,0 +1,141 @@ +/* + * @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 java.io.File; + +import javax.swing.BorderFactory; +import javax.swing.JCheckBox; +import javax.swing.JFileChooser; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JTextField; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; + +import org.fudaa.ctulu.gui.CtuluDialogPanel; +import org.fudaa.ctulu.gui.CtuluFileChooserPanel; + +import com.memoire.bu.BuGridLayout; +import com.memoire.bu.BuVerticalLayout; + + +/** + * Un panneau pour l'affichage des param\xE8tres dimport vid\xE9o. + * @author Bertrand Marchand (mar...@de...) + * @version $Id$ + */ +public class PivImportVideoParamPanel extends CtuluDialogPanel { + + /** Le file chooser de la vid\xE9o. */ + private CtuluFileChooserPanel fcVideo_; + private JTextField tfNbImgs_; + private JTextField tfBeginning_; + private JTextField tfEnding_; + private JCheckBox cbBeginning_; + private JCheckBox cbEnding_; + + public PivImportVideoParamPanel() { + + setBorder(BorderFactory.createEmptyBorder(5, 5, 15, 5)); + setLayout(new BuVerticalLayout(10)); + + fcVideo_=new CtuluFileChooserPanel(PivResource.getS("Fichier vid\xE9o")); + fcVideo_.setFileSelectMode(JFileChooser.FILES_ONLY); + fcVideo_.setWriteMode(false); + JPanel pnDirExport=CtuluFileChooserPanel.buildPanel(fcVideo_, PivResource.getS("Fichier vid\xE9o:")); + + tfNbImgs_=new JTextField(); + tfBeginning_=new JTextField(); + tfBeginning_.setEnabled(false); + tfEnding_=new JTextField(); + tfEnding_.setEnabled(false); + + cbBeginning_=new JCheckBox(PivResource.getS("Instant de d\xE9but")+" (s):"); + cbBeginning_.addChangeListener(new ChangeListener() { + + @Override + public void stateChanged(ChangeEvent e) { + tfBeginning_.setEnabled(cbBeginning_.isSelected()); + } + }); + cbEnding_=new JCheckBox(PivResource.getS("Instant de fin")+" (s):"); + cbEnding_.addChangeListener(new ChangeListener() { + + @Override + public void stateChanged(ChangeEvent e) { + tfEnding_.setEnabled(cbEnding_.isSelected()); + } + }); + + JPanel pnSampling = new JPanel(); + pnSampling.setBorder(BorderFactory.createTitledBorder(PivResource.getS("Echantillonage"))); + pnSampling.setLayout(new BuGridLayout(2, 5, 5, true, false)); + + pnSampling.add(new JLabel(PivResource.getS("Nombre d'images par secondes:"))); + pnSampling.add(tfNbImgs_); + pnSampling.add(cbBeginning_); + pnSampling.add(tfBeginning_); + pnSampling.add(cbEnding_); + pnSampling.add(tfEnding_); + + add(pnDirExport); + add(pnSampling); + } + + @Override + public boolean isDataValid() { + File fv=fcVideo_.getFile(); + if (fv == null || !fv.exists()) { + setErrorText(PivResource.getS("Un fichier vid\xE9o doit \xEAtre s\xE9lectionn\xE9 et exister")); + return false; + } + if (!PivUtils.isStrictPositiveInteger(this, tfNbImgs_.getText(),PivResource.getS("Nombre d'images par secondes"))) { + return false; + } + if (cbBeginning_.isSelected() && !PivUtils.isPositiveReal(this, tfBeginning_.getText(),PivResource.getS("Instant de d\xE9but"))) { + return false; + } + if (cbEnding_.isSelected() && !PivUtils.isPositiveReal(this, tfEnding_.getText(),PivResource.getS("Instant de fin"))) { + return false; + } + if (cbBeginning_.isSelected() && cbEnding_.isSelected() && Double.parseDouble(tfEnding_.getText())<Double.parseDouble(tfBeginning_.getText())) { + setErrorText(PivResource.getS("La valeur de fin doit \xEAtre sup\xE9rieure ou \xE9gale \xE0 la valeur de d\xE9but")); + return false; + } + + return true; + } + + public File getVideoFile() { + return fcVideo_.getFile(); + } + + public int getNbImages() { + return Integer.parseInt(tfNbImgs_.getText()); + } + + public Double getBeginTime() { + if (cbBeginning_.isSelected()) { + return Double.parseDouble(tfBeginning_.getText()); + } + return null; + } + + public Double getEndTime() { + if (cbEnding_.isSelected()) { + return Double.parseDouble(tfEnding_.getText()); + } + return null; + } + + @Override + public void apply() { + } + +} \ No newline at end of file Property changes on: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImportVideoParamPanel.java ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property 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 2017-01-09 11:12:07 UTC (rev 9499) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivManageOriginalFilesPanel.java 2017-01-09 17:22:31 UTC (rev 9500) @@ -7,19 +7,29 @@ */ package org.fudaa.fudaa.piv; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; import java.io.File; +import java.io.IOException; import javax.swing.JFileChooser; import javax.swing.JLabel; -import org.fudaa.ctulu.CtuluUI; +import org.fudaa.ctulu.CtuluLibFile; +import org.fudaa.ctulu.CtuluLog; import org.fudaa.ctulu.gui.CtuluCellTextRenderer; +import org.fudaa.ctulu.gui.CtuluDialog; import org.fudaa.ctulu.gui.CtuluDialogPanel; import org.fudaa.ctulu.gui.CtuluFileChooser; import org.fudaa.ctulu.gui.CtuluListEditorModel; import org.fudaa.ctulu.gui.CtuluListEditorPanel; +import org.fudaa.ctulu.gui.CtuluTaskOperationGUI; +import org.fudaa.fudaa.piv.io.PivExeLauncher; +import org.fudaa.fudaa.piv.metier.PivProject; +import com.memoire.bu.BuButton; import com.memoire.bu.BuVerticalLayout; +import com.memoire.fu.FuLog; /** * Un panneau pour gerer les images d'origine, qu'elles soient pgm ou autres. @@ -29,21 +39,24 @@ */ public class PivManageOriginalFilesPanel extends CtuluDialogPanel { - private CtuluUI ui_; + private PivImplementation impl_; /** Le repertoire racine du projet */ private File prjRoot_; /** Le mod\xE8le pour la liste des images */ private CtuluListEditorModel mdFiles_; - + /** Le panneau d'import video */ + private PivImportVideoParamPanel pnImport_; + private CtuluDialog diProgress_; + /** * Constructeur. - * @param _ui Le parent pour la boite de dialogue. + * @param _impl Le parent pour la boite de dialogue. */ - public PivManageOriginalFilesPanel(CtuluUI _ui) { - ui_=_ui; + public PivManageOriginalFilesPanel(PivImplementation _impl) { + impl_=_impl; setLayout(new BuVerticalLayout(5, true, true)); - 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.")); + 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.")); // Label images add(new JLabel(PivResource.getS("Liste des images"),JLabel.LEFT)); @@ -69,7 +82,7 @@ fc.setFileSelectionMode(JFileChooser.FILES_ONLY); fc.setAcceptAllFileFilterUsed(false); fc.setDialogTitle(PivResource.getS("Ouverture d'un projet")); - if (fc.showOpenDialog(ui_.getParentComponent()) == JFileChooser.CANCEL_OPTION) { + if (fc.showOpenDialog(impl_.getParentComponent()) == JFileChooser.CANCEL_OPTION) { return; } @@ -80,7 +93,79 @@ } }; + + BuButton btImport=new BuButton(PivResource.PIV.getIcon("video"), PivResource.getS("Importer...")); + btImport.setToolTipText(PivResource.getS("Importer les images depuis une vid\xE9o")); + btImport.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + if (pnImport_==null) { + pnImport_=new PivImportVideoParamPanel(); + } + + if (pnImport_.afficheModale(PivManageOriginalFilesPanel.this, PivResource.getS("Import des images"))==0) { + + if (!PivExeLauncher.instance().areExeOK()) { + PivExePanel pnExe = new PivExePanel(); + + if (!pnExe.afficheModaleOk(impl_.getFrame(), PivResource.getS("R\xE9pertoire contenant les executables"))) { + return; + } + } + + // La tache a ex\xE9cuter. + CtuluTaskOperationGUI r=new CtuluTaskOperationGUI(impl_, PivResource.getS("Echantillonnage")) { + + public void act() { + + try { + CtuluLog ana=new CtuluLog(); + ana.setDesc(getName()); + + // Les images sont cr\xE9\xE9es dans un repertoire temporaire, pour ne + // pas \xE9craser les images existantes avant validation. + File tmpOutDir=CtuluLibFile.createTempDir(); + + PivExeLauncher.instance().computeSampling(ana, impl_.getCurrentProject(), pnImport_.getVideoFile(), tmpOutDir, pnImport_.getNbImages(), pnImport_.getBeginTime(), + pnImport_.getEndTime(), this); + if (ana.containsErrorOrSevereError()) { + impl_.error(ana.getResume()); + return; + } + + File[] fimgs=tmpOutDir.listFiles(PivProject.FLT_FILES); + if (fimgs == null) { + fimgs=new File[0]; + } + + mdFiles_.setData(fimgs); + } + catch (IOException _exc) { + _exc.printStackTrace(); + } + finally { + diProgress_.dispose(); + } + + impl_.message(PivResource.getS("L'\xE9chantillonnage s'est termin\xE9e avec succ\xE8s")); + } + }; + + PivProgressionPanel pnProgress_=new PivProgressionPanel(r); + diProgress_=pnProgress_.createDialog(PivManageOriginalFilesPanel.this); + diProgress_.setOption(CtuluDialog.ZERO_OPTION); + diProgress_.setDefaultCloseOperation(CtuluDialog.DO_NOTHING_ON_CLOSE); + diProgress_.setTitle(r.getName()); + + r.start(); + diProgress_.afficheDialogModal(); + } + } + }); + pnFiles.addButton(btImport); + pnFiles.setValueListCellRenderer(new CtuluCellTextRenderer() { @Override public void setValue(Object _file) { Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivTransectParamPanel.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivTransectParamPanel.java 2017-01-09 11:12:07 UTC (rev 9499) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivTransectParamPanel.java 2017-01-09 17:22:31 UTC (rev 9500) @@ -115,118 +115,13 @@ } } - /** - * Controle que la valeur du champ de nom donn\xE9 est un entier positif. - * @param _sval La valeur du champ. - * @param _param Le nom du champ. - * @return true si la valeur est correcte. - */ - protected boolean isPositiveInteger(String _sval, String _param) { - boolean bok=false; - try { - bok=false; - int val=Integer.parseInt(_sval.trim()); - bok=val>=0; - } - catch (NumberFormatException _exc) {} - if (!bok) { - setErrorText(PivResource.getS("{0}: Doit \xEAtre un entier >= 0",_param)); - return false; - } - return true; - } - - /** - * Controle que la valeur du champ de nom donn\xE9 est un entier positif. - * @param _sval La valeur du champ. - * @param _param Le nom du champ. - * @return true si la valeur est correcte. - */ - protected boolean isStrictPositiveInteger(String _sval, String _param) { - boolean bok=false; - try { - bok=false; - int val=Integer.parseInt(_sval.trim()); - bok=val>0; - } - catch (NumberFormatException _exc) {} - if (!bok) { - setErrorText(PivResource.getS("{0}: Doit \xEAtre un entier > 0",_param)); - return false; - } - return true; - } - - /** - * Controle que la valeur du champ de nom donn\xE9 est un entier . - * @param _sval La valeur du champ. - * @param _param Le nom du champ. - * @return true si la valeur est correcte. - */ - protected boolean isInteger(String _sval, String _param) { - boolean bok=false; - try { - bok=false; - Integer.parseInt(_sval.trim()); - bok=true; - } - catch (NumberFormatException _exc) {} - if (!bok) { - setErrorText(PivResource.getS("{0}: Doit \xEAtre un entier",_param)); - return false; - } - return true; - } - - /** - * Controle que la valeur du champ de nom donn\xE9 est un r\xE9el. - * @param _sval La valeur du champ. - * @param _param Le nom du champ. - * @return true si la valeur est correcte. - */ - protected boolean isReal(String _sval, String _param) { - boolean bok=false; - try { - bok=false; - Double.parseDouble(_sval.trim()); - bok=true; - } - catch (NumberFormatException _exc) {} - if (!bok) { - setErrorText(PivResource.getS("{0}: Doit \xEAtre un r\xE9el",_param)); - return false; - } - return true; - } - - /** - * Controle que la valeur du champ de nom donn\xE9 est un r\xE9el positif. - * @param _sval La valeur du champ. - * @param _param Le nom du champ. - * @return true si la valeur est correcte. - */ - private boolean isStrictPositiveReal(String _sval, String _param) { - boolean bok=false; - try { - bok=false; - double val=Double.parseDouble(_sval.trim()); - bok=val>0; - } - catch (NumberFormatException _exc) {} - if (!bok) { - setErrorText(PivResource.getS("{0}: Doit \xEAtre un r\xE9el > 0",_param)); - return false; - } - return true; - } - @Override public boolean isDataValid() { setErrorText(""); boolean bok= - tfCoef.getText().trim().isEmpty() || isStrictPositiveReal(tfCoef.getText(),PivResource.getS("Coefficient de vitesse")) && - tfDmax.getText().trim().isEmpty() || isStrictPositiveReal(tfDmax.getText(),PivResource.getS("Rayon de recherche des vitesses")) && - tfInterpolationStep.getText().trim().isEmpty() || isStrictPositiveReal(tfInterpolationStep.getText(),PivResource.getS("Distance d'extrapolation")); + tfCoef.getText().trim().isEmpty() || PivUtils.isStrictPositiveReal(this,tfCoef.getText(),PivResource.getS("Coefficient de vitesse")) && + tfDmax.getText().trim().isEmpty() || PivUtils.isStrictPositiveReal(this,tfDmax.getText(),PivResource.getS("Rayon de recherche des vitesses")) && + tfInterpolationStep.getText().trim().isEmpty() || PivUtils.isStrictPositiveReal(this,tfInterpolationStep.getText(),PivResource.getS("Distance d'extrapolation")); return bok; } Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivUtils.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivUtils.java 2017-01-09 11:12:07 UTC (rev 9499) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivUtils.java 2017-01-09 17:22:31 UTC (rev 9500) @@ -1,7 +1,11 @@ package org.fudaa.fudaa.piv; import java.awt.Color; +import java.io.IOException; +import java.io.LineNumberReader; +import java.io.StringReader; +import org.fudaa.ctulu.gui.CtuluDialogPanel; import org.fudaa.ebli.trace.TraceLigne; import org.fudaa.ebli.trace.TraceLigneModel; @@ -108,4 +112,154 @@ sb.append(_i); return sb.toString(); } + + /** + * Controle que la valeur du champ de nom donn\xE9 est un entier positif. + * @param _sval La valeur du champ. + * @param _param Le nom du champ. + * @return true si la valeur est correcte. + */ + public static boolean isPositiveInteger(CtuluDialogPanel _pn, String _sval, String _param) { + boolean bok=false; + try { + bok=false; + int val=Integer.parseInt(_sval.trim()); + bok=val>=0; + } + catch (NumberFormatException _exc) {} + if (!bok) { + _pn.setErrorText(PivResource.getS("{0}: Doit \xEAtre un entier >= 0",_param)); + return false; + } + return true; + } + + /** + * Controle que la valeur du champ de nom donn\xE9 est un entier positif. + * @param _sval La valeur du champ. + * @param _param Le nom du champ. + * @return true si la valeur est correcte. + */ + public static boolean isStrictPositiveInteger(CtuluDialogPanel _pn, String _sval, String _param) { + boolean bok=false; + try { + bok=false; + int val=Integer.parseInt(_sval.trim()); + bok=val>0; + } + catch (NumberFormatException _exc) {} + if (!bok) { + _pn.setErrorText(PivResource.getS("{0}: Doit \xEAtre un entier > 0",_param)); + return false; + } + return true; + } + + /** + * Controle que la valeur du champ de nom donn\xE9 est un entier . + * @param _sval La valeur du champ. + * @param _param Le nom du champ. + * @return true si la valeur est correcte. + */ + public static boolean isInteger(CtuluDialogPanel _pn, String _sval, String _param) { + boolean bok=false; + try { + bok=false; + Integer.parseInt(_sval.trim()); + bok=true; + } + catch (NumberFormatException _exc) {} + if (!bok) { + _pn.setErrorText(PivResource.getS("{0}: Doit \xEAtre un entier",_param)); + return false; + } + return true; + } + + /** + * Controle que la valeur du champ de nom donn\xE9 est un r\xE9el positif. + * @param _sval La valeur du champ. + * @param _param Le nom du champ. + * @return true si la valeur est correcte. + */ + public static boolean isPositiveReal(CtuluDialogPanel _pn, String _sval, String _param) { + boolean bok=false; + try { + bok=false; + double val=Double.parseDouble(_sval.trim()); + bok=val>=0; + } + catch (NumberFormatException _exc) {} + if (!bok) { + _pn.setErrorText(PivResource.getS("{0}: Doit \xEAtre un r\xE9el >= 0",_param)); + return false; + } + return true; + } + + /** + * Controle que la valeur du champ de nom donn\xE9 est un r\xE9el. + * @param _sval La valeur du champ. + * @param _param Le nom du champ. + * @return true si la valeur est correcte. + */ + public static boolean isReal(CtuluDialogPanel _pn, String _sval, String _param) { + boolean bok=false; + try { + bok=false; + Double.parseDouble(_sval.trim()); + bok=true; + } + catch (NumberFormatException _exc) {} + if (!bok) { + _pn.setErrorText(PivResource.getS("{0}: Doit \xEAtre un r\xE9el",_param)); + return false; + } + return true; + } + + /** + * Controle que la valeur du champ de nom donn\xE9 est un r\xE9el positif. + * @param _sval La valeur du champ. + * @param _param Le nom du champ. + * @return true si la valeur est correcte. + */ + public static boolean isStrictPositiveReal(CtuluDialogPanel _pn, String _sval, String _param) { + boolean bok=false; + try { + bok=false; + double val=Double.parseDouble(_sval.trim()); + bok=val>0; + } + catch (NumberFormatException _exc) {} + if (!bok) { + _pn.setErrorText(PivResource.getS("{0}: Doit \xEAtre un r\xE9el > 0",_param)); + return false; + } + return true; + } + + /** + * Limite un texte avec retours charriots \xE0 une largeur maxi. Les caract\xE8res au del\xE0 sont remplac\xE9s par ... + * @param _mess Le message + * @param _maxWidth La largeur maxi (en nombre de caract\xE8res) + * @return + */ + public static String trunkErrorMessage(String _mess, int _maxWidth) { + StringBuffer ret=new StringBuffer(); + + String[] lines=_mess.split("\r\n|\r|\n"); + for (String line : lines) { + if (line.length()>_maxWidth) { + ret.append(line.substring(0, _maxWidth)).append("..."); + } + else { + ret.append(line); + } + + ret.append("\n"); + } + + return ret.toString(); + } } 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 2017-01-09 11:12:07 UTC (rev 9499) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivSelectImagesAction.java 2017-01-09 17:22:31 UTC (rev 9500) @@ -38,7 +38,7 @@ * @param _impl L'implementation. */ public PivSelectImagesAction(PivImplementation _impl) { - super(PivResource.getS("S\xE9lection des images sources..."), null, "SELECT_IMAGES"); + super(PivResource.getS("Gestion des images sources..."), null, "SELECT_IMAGES"); impl=_impl; setEnabled(false); 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 2017-01-09 11:12:07 UTC (rev 9499) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivExeLauncher.java 2017-01-09 17:22:31 UTC (rev 9500) @@ -50,7 +50,8 @@ Q_compute, vel_transf, vel_scal, - moy_scal + moy_scal, + ffmpeg } /** Les scripts pouvant etre lanc\xE9s */ @@ -170,6 +171,74 @@ } /** + * Lance le calcul d'echantillonnage d'images depuis un fichier vid\xE9o. + * + * @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. + * @see #launchOrthoPlan + */ + public boolean computeSampling(CtuluLog _ana, PivProject _prj, File _fvideo, File _tmpOutDir, int _nbImgs, Double _tdeb, Double _tfin, CtuluTaskOperationGUI _task) { + File prjRoot=_prj.getRoot(); +// File prjImgInp=new File(prjRoot,IMG_PGM_DIR); +// +// // Nettoyage eventuel du repertoire des images sources. +// prjImgInp.mkdir(); +// for (File f : prjImgInp.listFiles()) f.delete(); + + String desc=PivResource.getS("Lancement de l'echantillonnage..."); + FuLog.trace(desc); + if (_task!=null) { + _task.setDesc(desc); + _task.setProgression(5); + } + + try { + ArrayList<String> cmdArray=new ArrayList<>(); + cmdArray.add(exePath+File.separator+EXE.ffmpeg + EXE_EXT); + cmdArray.add("-i"); + cmdArray.add(_fvideo.getAbsolutePath()); + cmdArray.add("-r"); + cmdArray.add(""+_nbImgs); + if (_tdeb!=null) { + cmdArray.add("-ss"); + cmdArray.add(""+_tdeb); + } + if (_tfin!=null) { + cmdArray.add("-to"); + cmdArray.add(""+_tfin); + } + cmdArray.add(new File(_tmpOutDir,"image%4d.png").getAbsolutePath()); + + String outs = FuLib.runProgram(cmdArray.toArray(new String[0]), prjRoot); + if (FuLib.lastRunStatus!=0) { + String text=PivUtils.trunkErrorMessage(outs.toString(),132); + _ana.addError(PivResource.getS("Erreur dans l'\xE9chantillonnage:\n")+text); + return false; + } + + if (_task!=null && _task.isStopRequested()) { + _ana.addError(PivResource.getS("Echantillonnage interrompu")); + return false; + } + + FuLog.trace(PivResource.getS("Echantillonnage ok.")); + } + catch (IOException ex) { + _ana.addError(ex.getMessage()); + return false; + } + + + if (_task!=null) + _task.setProgression(90); + + + return true; + } + + /** * Lance le calcul des coefficients d'orthorectification. * @param _ana L'analyse pour la tache ex\xE9cut\xE9e. * @param _prj Le projet. Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProjectPersistence.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProjectPersistence.java 2017-01-09 11:12:07 UTC (rev 9499) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProjectPersistence.java 2017-01-09 17:22:31 UTC (rev 9500) @@ -8,6 +8,7 @@ import java.io.PrintWriter; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collections; import java.util.Comparator; import java.util.List; @@ -124,6 +125,9 @@ // Et ceux utilis\xE9s pour le calcul de moyenne prj_.usedInstantResults=loadInstantResultsList(_prog); + // Les images + prj_.srcFiles_=loadSrcImages(_prog); + // Les param\xE8tres globaux loadGlobalData(_prog); @@ -433,8 +437,6 @@ * @return Les param\xE8tres globaux. */ public void loadGlobalData(ProgressionInterface _prog) { - File imgSrcDir=new File(prj_.rootPath,PivProject.IMG_PGM_DIR); - File globalFile = new File(prj_.getOutputDir(), "global.xml"); CtuluIOResult<PivGlobalXmlParam> ret = new PivGlobalXmlReader().read(globalFile, _prog); if (ret.getAnalyze().containsSevereError()) { @@ -447,10 +449,8 @@ prj_.computeParams.setIACenterPosition(paramXml.iaCenter); // Tri des images suivant leur ordre sauvegard\xE9. - File[] srcFiles=imgSrcDir.listFiles(PivProject.FLT_FILES); - if (srcFiles==null) srcFiles=new File[0]; final List<String> names = Arrays.asList(paramXml.srcImages); - Arrays.sort(srcFiles, new Comparator<File>() { + Collections.sort(prj_.srcFiles_, new Comparator<File>() { @Override public int compare(File o1, File o2) { return names.indexOf(o1.getName()) - names.indexOf(o2.getName()); @@ -460,9 +460,14 @@ // Affectation des param\xE8tres de transformation. PivTransformationParameters params=new PivTransformationParameters(paramXml.tx, paramXml.ty, paramXml.tz, paramXml.rz, paramXml.xcenter, paramXml.ycenter); prj_.setTransformationParameters(params); + } - prj_.srcFiles_.clear(); - prj_.srcFiles_.addAll(Arrays.asList(srcFiles)); + public List<File> loadSrcImages(ProgressionInterface _prog) { + File imgSrcDir=new File(prj_.rootPath,PivProject.IMG_PGM_DIR); + File[] srcFiles=imgSrcDir.listFiles(PivProject.FLT_FILES); + if (srcFiles==null) srcFiles=new File[0]; + + return Arrays.asList(srcFiles); } /** This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2017-01-10 10:28:50
|
Revision: 9504 http://sourceforge.net/p/fudaa/svn/9504 Author: bmarchan Date: 2017-01-10 10:28:48 +0000 (Tue, 10 Jan 2017) Log Message: ----------- Nom par defaut de rapport de jaugeage 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/PivExportGaugingReportAction.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 2017-01-09 19:45:47 UTC (rev 9503) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java 2017-01-10 10:28:48 UTC (rev 9504) @@ -155,6 +155,17 @@ public File getCurrentProjectFile() { return prjFile; } + + /** + * @return Le nom par default pour la sauvegarde. Si le nom courant est null, renvoie un nom par defaut. + */ + public File getSavedProjectFile() { + if (getCurrentProjectFile()==null) + return new File("fudaa-lspiv.lspiv.zip"); + else { + return getCurrentProjectFile(); + } + } /** * Appel\xE9e quand le projet courant est modifi\xE9. Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivExportGaugingReportAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivExportGaugingReportAction.java 2017-01-09 19:45:47 UTC (rev 9503) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivExportGaugingReportAction.java 2017-01-10 10:28:48 UTC (rev 9504) @@ -12,6 +12,7 @@ import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; +import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.text.DecimalFormat; @@ -38,6 +39,7 @@ import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.fudaa.ctulu.CtuluLib; +import org.fudaa.ctulu.CtuluLibFile; import org.fudaa.ctulu.CtuluLibImage; import org.fudaa.ctulu.CtuluLog; import org.fudaa.ctulu.gui.CtuluFileChooser; @@ -56,6 +58,7 @@ import org.fudaa.fudaa.piv.metier.PivGlobalFlowResults; import org.fudaa.fudaa.piv.metier.PivOrthoParameters; import org.fudaa.fudaa.piv.metier.PivOrthoPoint; +import org.fudaa.fudaa.piv.metier.PivProject; import org.fudaa.fudaa.piv.metier.PivResultsI.ResultType; import org.fudaa.fudaa.piv.metier.PivTransect; @@ -127,6 +130,8 @@ CtuluFileChooser fcReport_; /** Les variables users (inconnues du systeme) du modele Excel. */ HashMap<String,UserCellData> userVars=new HashMap<>(); + /** Le nom fichier projet pour changer le nom du rapport. */ + File projectFile_; /** * Constructeur. @@ -314,25 +319,45 @@ sheet.enableLocking(); } - if (fcReport_ == null) { - fcReport_=new CtuluFileChooser(true); - fcReport_.setTester(new CtuluFileChooserTestWritable(impl)); - fcReport_.setAcceptAllFileFilterUsed(true); - fcReport_.setFileFilter(PivUtils.FILE_FLT_XLSX); - fcReport_.setMultiSelectionEnabled(false); - fcReport_.setDialogTitle(PivResource.getS("Ficher Excel d'export")); - } - if (fcReport_.showSaveDialog(impl.getFrame()) == JFileChooser.CANCEL_OPTION) { - return; - } - - wb.write(new FileOutputStream(fcReport_.getSelectedFile())); + saveReport(wb); } catch (Exception e) { e.printStackTrace(); } } + + /** + * Sauve le rapport sur le fichier selectionn\xE9. + * @param wb + * @throws IOException + */ + protected void saveReport(Workbook wb) throws IOException { + + if (fcReport_ == null) { + fcReport_=new CtuluFileChooser(true); + fcReport_.setTester(new CtuluFileChooserTestWritable(impl)); + fcReport_.setAcceptAllFileFilterUsed(true); + fcReport_.setFileFilter(PivUtils.FILE_FLT_XLSX); + fcReport_.setMultiSelectionEnabled(false); + fcReport_.setDialogTitle(PivResource.getS("Ficher Excel d'export")); + } + // Changement de projet => On change le nom du rapport + if (!impl.getSavedProjectFile().equals(projectFile_)) { + projectFile_=impl.getSavedProjectFile(); + + String fsave=projectFile_.getName(); + fsave=fsave.substring(0, fsave.indexOf(PivUtils.FILE_FLT_PROJ.getFirstExt()) - 1); + fcReport_.setSelectedFile(new File(fsave + "_" + PivResource.getS("rapport") + ".xlsx")); + } + + if (fcReport_.showSaveDialog(impl.getFrame()) == JFileChooser.CANCEL_OPTION) { + return; + } + + wb.write(new FileOutputStream(fcReport_.getSelectedFile())); + } + /** * Calcule les donn\xE9es non stock\xE9es dans le projet, necessaires \xE0 la r\xE9alisation du template. */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2017-01-10 16:13:56
|
Revision: 9506 http://sourceforge.net/p/fudaa/svn/9506 Author: bmarchan Date: 2017-01-10 16:13:53 +0000 (Tue, 10 Jan 2017) Log Message: ----------- LSPIV : Diff?\195?\169rents correctifs sur rapport de jaugeage Modified Paths: -------------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivFilterInstantResultsPanel.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivFlowInfoPanel.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivExportGaugingReportAction.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivComputeParameters.java Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivFilterInstantResultsPanel.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivFilterInstantResultsPanel.java 2017-01-10 16:12:51 UTC (rev 9505) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivFilterInstantResultsPanel.java 2017-01-10 16:13:53 UTC (rev 9506) @@ -205,8 +205,7 @@ public void setFilterValues(PivComputeParameters _params) { if (_params==null) return; - if (_params.getMinCorrelation()==PivUtils.FORTRAN_DOUBLE_MIN && - _params.getMaxCorrelation()==PivUtils.FORTRAN_DOUBLE_MAX) { + if (!_params.isCorrelationFiltered()) { cbCorrelFlt_.setSelected(false); tfCorrelMinLimit_.setText("0."); tfCorrelMaxLimit_.setText("1."); @@ -217,13 +216,7 @@ tfCorrelMaxLimit_.setText(""+_params.getMaxCorrelation()); } - if (_params.getSmin()==PivUtils.FORTRAN_DOUBLE_MIN && - _params.getSmax()==PivUtils.FORTRAN_DOUBLE_MAX && - _params.getVxmin()==PivUtils.FORTRAN_DOUBLE_MIN && - _params.getVxmax()==PivUtils.FORTRAN_DOUBLE_MAX && - _params.getVymin()==PivUtils.FORTRAN_DOUBLE_MIN && - _params.getVymax()==PivUtils.FORTRAN_DOUBLE_MAX - ) { + if (!_params.isVelocityFiltered()) { cbVelFlt_.setSelected(false); tfNormalMinLimit_.setText("0."); tfNormalMaxLimit_.setText(""+_params.getSmax()); Modified: 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 2017-01-10 16:12:51 UTC (rev 9505) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivFlowInfoPanel.java 2017-01-10 16:13:53 UTC (rev 9506) @@ -58,21 +58,21 @@ case 0: return PivResource.getS("N\xB0"); case 1: - return PivResource.getS("D\xE9bit total (m\xB3/s)"); + return PivResource.getS("<html>D\xE9bit total (m\xB3/s)</html>"); case 2: - return PivResource.getS("Ecart (%)"); + return PivResource.getS("<html>Ecart (%)</html>"); case 3: - return PivResource.getS("Aire mouill\xE9e (m\xB2)"); + return PivResource.getS("<html>Aire mouill\xE9e (m\xB2)</html>"); case 4: - return PivResource.getS("Ecart (%)"); + return PivResource.getS("<html>Ecart (%)</html>"); case 5: - return PivResource.getS("Vit. moy. (m/s)"); + return PivResource.getS("<html>Vit. moy. (m/s)</html>"); case 6: - return PivResource.getS("Ecart (%)"); + return PivResource.getS("<html>Ecart (%)</html>"); case 7: - return PivResource.getS("D\xE9bit mesur\xE9 (m\xB3/s)"); + return PivResource.getS("<html>D\xE9bit mesur\xE9 (m\xB3/s)</html>"); case 8: - return PivResource.getS("Ecart (%)"); + return PivResource.getS("<html>D\xE9bit mesur\xE9 / D\xE9bit total (%)</html>"); } } @@ -109,8 +109,8 @@ case 7: return rowIndex==res_.length? meanMeasuredDisch_:res_[rowIndex].getValue(-1,ResultType.MEASURED_DISCHARGE); case 8: - val=rowIndex==res_.length? meanMeasuredDisch_:res_[rowIndex].getValue(-1,ResultType.MEASURED_DISCHARGE); - return (val-meanMeasuredDisch_)/meanMeasuredDisch_*100; + val=rowIndex==res_.length? meanMeasuredDisch_/meanDisch_:res_[rowIndex].getValue(-1,ResultType.MEASURED_DISCHARGE)/res_[rowIndex].getDischarge(); + return val*100; } } @@ -164,7 +164,11 @@ tbResults.getColumnModel().getColumn(2).setMaxWidth(70); tbResults.getColumnModel().getColumn(4).setMaxWidth(70); tbResults.getColumnModel().getColumn(6).setMaxWidth(70); - tbResults.getColumnModel().getColumn(8).setMaxWidth(70); + // Customization pour avoir le titre sur 2 lignes. + tbResults.getTableHeader().setPreferredSize( + new Dimension(tbResults.getColumnModel().getTotalColumnWidth(), 40)); + ((JLabel)tbResults.getTableHeader().getDefaultRenderer()).setVerticalAlignment(JLabel.TOP); + JScrollPane spResults=new JScrollPane(); spResults.getViewport().add(tbResults); spResults.setPreferredSize(new Dimension(850,200)); Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivExportGaugingReportAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivExportGaugingReportAction.java 2017-01-10 16:12:51 UTC (rev 9505) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivExportGaugingReportAction.java 2017-01-10 16:13:53 UTC (rev 9506) @@ -155,6 +155,9 @@ } try { + // Nettoie les valeurs \xE0 chaque changement du nom de projet. + if (isProjectFileModified()) + userVars.clear(); computeNeededDatas(); HashMap<String, AbstractCellData> systemDatas=defineSystemVariables(); @@ -343,7 +346,7 @@ } // Changement de projet => On change le nom du rapport - if (!impl.getSavedProjectFile().equals(projectFile_)) { + if (isProjectFileModified()) { projectFile_=impl.getSavedProjectFile(); String fsave=projectFile_.getName(); @@ -400,7 +403,8 @@ final HashMap<String,Object> imgOptions = new HashMap<>(); imgOptions.put(CtuluLibImage.PARAMS_FILL_BACKGROUND_BOOLEAN, Boolean.FALSE); - final DecimalFormat fmtStd = CtuluLib.getDecimalFormat(3); + final DecimalFormat fmt3Digit = CtuluLib.getDecimalFormat(3); + final DecimalFormat fmt1Digit = CtuluLib.getDecimalFormat(1); final DecimalFormat fmtEcart = CtuluLib.getNoEffectDecimalFormat(); fmtEcart.setMaximumFractionDigits(1); fmtEcart.setMinimumFractionDigits(1); @@ -409,29 +413,48 @@ fmtExp.setMaximumFractionDigits(3); fmtExp.setMinimumFractionDigits(2); - systemVars_.put("__COEF_VITESSE",new AbstractScalarCellData() { + systemVars_.put("__COEF_VITESSE_MAX", new AbstractScalarCellData() { @Override public String getValue(int _row, int _col) { - // On prend le coef de vitesse du premier transect, s'il existe - return (transects==null || transects.length==0) ? null:format(fmtStd,transects[0].getParams().getSurfaceCoef(),null); + if (transects==null || transects.length==0) + return null; + + double val=Double.NEGATIVE_INFINITY; + for (PivTransect trans : transects) { + val=Math.max(val, trans.getParams().getSurfaceCoef()); + } + return format(fmt3Digit,val,null); } }); + systemVars_.put("__COEF_VITESSE_MIN", new AbstractScalarCellData() { + @Override + public String getValue(int _row, int _col) { + if (transects==null || transects.length==0) + return null; + + double val=Double.POSITIVE_INFINITY; + for (PivTransect trans : transects) { + val=Math.min(val, trans.getParams().getSurfaceCoef()); + } + return format(fmt3Digit,val,null); + } + }); systemVars_.put("__CORREL_MAX",new AbstractScalarCellData() { @Override public String getValue(int _row, int _col) { - return pivParams==null ? null:""+format(fmtStd,pivParams.getMaxCorrelation(),null); + return pivParams==null || !pivParams.isCorrelationFiltered() ? null:""+format(fmt3Digit,pivParams.getMaxCorrelation(),null); } }); systemVars_.put("__CORREL_MIN",new AbstractScalarCellData() { @Override public String getValue(int _row, int _col) { - return pivParams==null ? null:""+format(fmtStd,pivParams.getMinCorrelation(),null); + return pivParams==null || !pivParams.isCorrelationFiltered() ? null:""+format(fmt3Digit,pivParams.getMinCorrelation(),null); } }); systemVars_.put("__DEBIT_MOYEN",new AbstractScalarCellData() { @Override public String getValue(int _row, int _col) { - return meanDisch==null ? null:format(fmtStd,meanDisch,"m\xB3/s"); + return meanDisch==null ? null:format(fmt3Digit,meanDisch,"m\xB3/s"); } }); systemVars_.put("__ERREUR_MAX",new AbstractScalarCellData() { @@ -444,19 +467,19 @@ for (PivOrthoPoint pt : orthoPoints) { maxi=Math.max(maxi, pt.getError()); } - return format(fmtStd,maxi,"m"); + return format(fmt3Digit,maxi,"m"); } }); systemVars_.put("__HAUTEUR",new AbstractScalarCellData() { @Override public String getValue(int _row, int _col) { - return orthoParams==null ? null:format(fmtStd,orthoParams.getWaterElevation(),"m"); + return orthoParams==null ? null:format(fmt3Digit,orthoParams.getWaterElevation(),"m"); } }); systemVars_.put("__IA_M",new AbstractScalarCellData() { @Override public String getValue(int _row, int _col) { - return (pivParams==null || orthoParams==null) ? null:format(fmtStd,pivParams.getIASize()*orthoParams.getResolution(),"m"); + return (pivParams==null || orthoParams==null) ? null:format(fmt3Digit,pivParams.getIASize()*orthoParams.getResolution(),"m"); } }); systemVars_.put("__IA_PIX",new AbstractScalarCellData() { @@ -468,7 +491,7 @@ systemVars_.put("__INTERTEMPS",new AbstractScalarCellData() { @Override public String getValue(int _row, int _col) { - return pivParams==null ? null:format(fmtStd,pivParams.getTimeInterval(),"s"); + return pivParams==null ? null:format(fmt3Digit,pivParams.getTimeInterval(),"s"); } }); systemVars_.put("__NOM_PROJET",new AbstractScalarCellData() { @@ -489,6 +512,12 @@ return ""+impl.getCurrentProject().getSrcImageFiles().length; } }); + systemVars_.put("__NOMBRE_IMAGES_SECONDE", new AbstractScalarCellData() { + @Override + public String getValue(int _row, int _col) { + return pivParams==null ? null:format(fmt3Digit,1./pivParams.getTimeInterval(),null); + } + }); systemVars_.put("__NOMBRE_TRANSECTS", new AbstractScalarCellData() { @Override public String getValue(int _row, int _col) { @@ -498,40 +527,77 @@ systemVars_.put("__NORME_MAX", new AbstractScalarCellData() { @Override public String getValue(int _row, int _col) { - return pivParams==null ? null:format(fmtStd,pivParams.getSmax(),"m/s"); + return pivParams==null || !pivParams.isVelocityFiltered() ? null:format(fmt3Digit,pivParams.getSmax(),"m/s"); } }); systemVars_.put("__NORME_MIN", new AbstractScalarCellData() { @Override public String getValue(int _row, int _col) { - return pivParams==null ? null:format(fmtStd,pivParams.getSmin(),"m/s"); + return pivParams==null || !pivParams.isVelocityFiltered() ? null:format(fmt3Digit,pivParams.getSmin(),"m/s"); } }); - systemVars_.put("__PAS_INTERPOLATION", new AbstractScalarCellData() { + systemVars_.put("__PAS_INTERPOLATION_MAX", new AbstractScalarCellData() { @Override public String getValue(int _row, int _col) { - // On prend le pas du premier transect, s'il existe - return (transects==null || transects.length==0) ? null:format(fmtStd,transects[0].getParams().getInterpolationStep(),"m"); + if (transects==null || transects.length==0) + return null; + + double val=Double.NEGATIVE_INFINITY; + for (PivTransect trans : transects) { + val=Math.max(val, trans.getParams().getInterpolationStep()); + } + return format(fmt3Digit,val,"m"); } }); + systemVars_.put("__PAS_INTERPOLATION_MIN", new AbstractScalarCellData() { + @Override + public String getValue(int _row, int _col) { + if (transects==null || transects.length==0) + return null; + + double val=Double.POSITIVE_INFINITY; + for (PivTransect trans : transects) { + val=Math.min(val, trans.getParams().getInterpolationStep()); + } + return format(fmt3Digit,val,"m"); + } + }); systemVars_.put("__RATIO_DEBIT_MESURE", new AbstractScalarCellData() { @Override public String getValue(int _row, int _col) { - return meanMeasuredDisch==null ? null:meanMeasuredDisch/meanDisch*100+" %"; + return meanMeasuredDisch==null ? null:format(fmt1Digit,meanMeasuredDisch/meanDisch*100, "%"); } }); - systemVars_.put("__RAYON_RECHERCHE", new AbstractScalarCellData() { + systemVars_.put("__RAYON_RECHERCHE_MAX", new AbstractScalarCellData() { @Override public String getValue(int _row, int _col) { - // On prend le rayon du premier transect, s'il existe - return (transects==null || transects.length==0) ? null:format(fmtStd,transects[0].getParams().getRadius(),"m"); + if (transects==null || transects.length==0) + return null; + + double val=Double.NEGATIVE_INFINITY; + for (PivTransect trans : transects) { + val=Math.max(val, trans.getParams().getRadius()); + } + return format(fmt3Digit,val,"m"); } }); + systemVars_.put("__RAYON_RECHERCHE_MIN", new AbstractScalarCellData() { + @Override + public String getValue(int _row, int _col) { + if (transects==null || transects.length==0) + return null; + + double val=Double.POSITIVE_INFINITY; + for (PivTransect trans : transects) { + val=Math.min(val, trans.getParams().getRadius()); + } + return format(fmt3Digit,val,"m"); + } + }); systemVars_.put("__RESOLUTION", new AbstractScalarCellData() { @Override public String getValue(int _row, int _col) { - // On prend le rayon du premier transect, s'il existe - return orthoParams==null ? null:format(fmtStd,orthoParams.getResolution(),"m/pix"); + return orthoParams==null ? null:format(fmt3Digit,orthoParams.getResolution(),"m/pix"); } }); systemVars_.put("__TB_RESULTATS_DEBIT", new AbstractCellData() { @@ -540,39 +606,43 @@ if (flowResults==null || flowResults.length==0) return null; + // Une ligne blanche entre les r\xE9sultats et la moyenne + if (rowIndex==flowResults.length) + return ""; + Double val; switch (_col) { default: case 0: - return rowIndex==flowResults.length? PivResource.getS("Moyenne"):""+(rowIndex+1); + return rowIndex==flowResults.length+1? PivResource.getS("Moyenne"):""+(rowIndex+1); case 1: - val=rowIndex==flowResults.length? meanDisch:flowResults[rowIndex].getDischarge(); - return format(fmtStd, val,null); + val=rowIndex==flowResults.length+1? meanDisch:flowResults[rowIndex].getDischarge(); + return format(fmt3Digit, val,null); case 2: - val=rowIndex==flowResults.length? meanDisch:flowResults[rowIndex].getDischarge(); + val=rowIndex==flowResults.length+1? meanDisch:flowResults[rowIndex].getDischarge(); val = (val-meanDisch)/meanDisch*100; return format(fmtEcart, val,null); case 3: - val = rowIndex==flowResults.length? meanArea:flowResults[rowIndex].getWettedArea(); - return format(fmtStd, val,null); + val = rowIndex==flowResults.length+1? meanArea:flowResults[rowIndex].getWettedArea(); + return format(fmt3Digit, val,null); case 4: - val=rowIndex==flowResults.length? meanArea:flowResults[rowIndex].getWettedArea(); + val=rowIndex==flowResults.length+1? meanArea:flowResults[rowIndex].getWettedArea(); val = (val-meanArea)/meanArea*100; return format(fmtEcart, val,null); case 5: - val = rowIndex==flowResults.length? meanMeanV:flowResults[rowIndex].getMeanVelocity(); - return format(fmtStd, val,null); + val = rowIndex==flowResults.length+1? meanMeanV:flowResults[rowIndex].getMeanVelocity(); + return format(fmt3Digit, val,null); case 6: - val=rowIndex==flowResults.length? meanMeanV:flowResults[rowIndex].getMeanVelocity(); + val=rowIndex==flowResults.length+1? meanMeanV:flowResults[rowIndex].getMeanVelocity(); val = (val-meanMeanV)/meanMeanV*100; return format(fmtEcart, val,null); case 7: - val = rowIndex==flowResults.length? meanMeasuredDisch:flowResults[rowIndex].getValue(-1,ResultType.MEASURED_DISCHARGE); - return format(fmtStd, val,null); + val = rowIndex==flowResults.length+1? meanMeasuredDisch:flowResults[rowIndex].getValue(-1,ResultType.MEASURED_DISCHARGE); + return format(fmt3Digit, val,null); case 8: - val=rowIndex==flowResults.length? meanMeasuredDisch:flowResults[rowIndex].getValue(-1,ResultType.MEASURED_DISCHARGE); - val = (val-meanMeasuredDisch)/meanMeasuredDisch*100; + val=rowIndex==flowResults.length+1? meanMeasuredDisch/meanDisch:flowResults[rowIndex].getValue(-1,ResultType.MEASURED_DISCHARGE)/flowResults[rowIndex].getDischarge(); + val*=100; return format(fmtEcart, val,null); } } @@ -584,7 +654,7 @@ @Override public int getNbRows() { - return transects==null ? 0 : transects.length+1; + return transects==null ? 0 : transects.length+2; } }); systemVars_.put("__SIM_MS", new AbstractScalarCellData() { @@ -599,7 +669,7 @@ val = orthoParams.getResolution()*pivParams.getSim()/pivParams.getTimeInterval(); } - return format(fmtStd, val,"m/s"); + return format(fmt3Digit, val,"m/s"); } return null; } @@ -622,7 +692,7 @@ val = orthoParams.getResolution()*pivParams.getSip()/pivParams.getTimeInterval(); } - return format(fmtStd, val,"m/s"); + return format(fmt3Digit, val,"m/s"); } return null; } @@ -645,7 +715,7 @@ val = orthoParams.getResolution()*pivParams.getSjm()/pivParams.getTimeInterval(); } - return format(fmtStd, val,"m/s"); + return format(fmt3Digit, val,"m/s"); } return null; } @@ -668,7 +738,7 @@ val = orthoParams.getResolution()*pivParams.getSjp()/pivParams.getTimeInterval(); } - return format(fmtStd, val,"m/s"); + return format(fmt3Digit, val,"m/s"); } return null; } @@ -731,49 +801,49 @@ systemVars_.put("__VX_MAX", new AbstractScalarCellData() { @Override public String getValue(int _row, int _col) { - return pivParams==null ? null:format(fmtStd, pivParams.getVxmax(), "m/s"); + return pivParams==null || !pivParams.isVelocityFiltered() ? null:format(fmt3Digit, pivParams.getVxmax(), "m/s"); } }); systemVars_.put("__VX_MIN", new AbstractScalarCellData() { @Override public String getValue(int _row, int _col) { - return pivParams==null ? null:format(fmtStd, pivParams.getVxmin(), "m/s"); + return pivParams==null || !pivParams.isVelocityFiltered() ? null:format(fmt3Digit, pivParams.getVxmin(), "m/s"); } }); systemVars_.put("__VY_MAX", new AbstractScalarCellData() { @Override public String getValue(int _row, int _col) { - return pivParams==null ? null:format(fmtStd, pivParams.getVymax(),"m/s"); + return pivParams==null || !pivParams.isVelocityFiltered() ? null:format(fmt3Digit, pivParams.getVymax(),"m/s"); } }); systemVars_.put("__VY_MIN", new AbstractScalarCellData() { @Override public String getValue(int _row, int _col) { - return pivParams==null ? null:format(fmtStd, pivParams.getVymin(),"m/s"); + return pivParams==null || !pivParams.isVelocityFiltered() ? null:format(fmt3Digit, pivParams.getVymin(),"m/s"); } }); systemVars_.put("__X_MAX", new AbstractScalarCellData() { @Override public String getValue(int _row, int _col) { - return orthoParams==null ? null:format(fmtStd, orthoParams.getXmax(),"m"); + return orthoParams==null ? null:format(fmt3Digit, orthoParams.getXmax(),"m"); } }); systemVars_.put("__X_MIN", new AbstractScalarCellData() { @Override public String getValue(int _row, int _col) { - return orthoParams==null ? null:format(fmtStd, orthoParams.getXmin(),"m"); + return orthoParams==null ? null:format(fmt3Digit, orthoParams.getXmin(),"m"); } }); systemVars_.put("__Y_MAX", new AbstractScalarCellData() { @Override public String getValue(int _row, int _col) { - return orthoParams==null ? null:format(fmtStd, orthoParams.getYmax(),"m"); + return orthoParams==null ? null:format(fmt3Digit, orthoParams.getYmax(),"m"); } }); systemVars_.put("__Y_MIN", new AbstractScalarCellData() { @Override public String getValue(int _row, int _col) { - return orthoParams==null ? null:format(fmtStd, orthoParams.getYmin(),"m"); + return orthoParams==null ? null:format(fmt3Digit, orthoParams.getYmin(),"m"); } }); @@ -806,6 +876,13 @@ } return ret; } + + /** + * @return True si le nom du projet a \xE9t\xE9 modifi\xE9. + */ + private boolean isProjectFileModified() { + return !impl.getSavedProjectFile().equals(projectFile_); + } /** * @return true Si toutes les donn\xE9es sont pr\xE9sentes pour un lancement. Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivComputeParameters.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivComputeParameters.java 2017-01-10 16:12:51 UTC (rev 9505) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivComputeParameters.java 2017-01-10 16:13:53 UTC (rev 9506) @@ -254,4 +254,24 @@ public GrPoint getIACenterPosition() { return ptCenter; } + + /** + * @return True si les vitesses sont filtr\xE9es + */ + public boolean isVelocityFiltered() { + return smin != PivUtils.FORTRAN_DOUBLE_MIN || + smax != PivUtils.FORTRAN_DOUBLE_MAX || + vxmin != PivUtils.FORTRAN_DOUBLE_MIN || + vxmax != PivUtils.FORTRAN_DOUBLE_MAX || + vymin != PivUtils.FORTRAN_DOUBLE_MIN || + vymax != PivUtils.FORTRAN_DOUBLE_MAX; + } + + /** + * @return True si la correlation est filtr\xE9e + */ + public boolean isCorrelationFiltered() { + return minCorrelation != PivUtils.FORTRAN_DOUBLE_MIN || + maxCorrelation != PivUtils.FORTRAN_DOUBLE_MAX; + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2017-01-26 16:54:35
|
Revision: 9531 http://sourceforge.net/p/fudaa/svn/9531 Author: bmarchan Date: 2017-01-26 16:54:33 +0000 (Thu, 26 Jan 2017) Log Message: ----------- Fix LSPIV : Import des fichiers avec le nom correspondant Modified Paths: -------------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivUtils.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportComputeParamAction.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/PivImportOrthoParamAction.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportTransectAction.java Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivUtils.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivUtils.java 2017-01-25 16:13:07 UTC (rev 9530) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivUtils.java 2017-01-26 16:54:33 UTC (rev 9531) @@ -91,11 +91,15 @@ FILE_FLT_PROJ=new BuFileFilter("lspiv.zip",PivResource.getS("Fichier projet")); FILE_FLT_PGM=new BuFileFilter("pgm",PivResource.getS("Fichiers images en niveaux de gris")); FILE_FLT_IMAGES=new BuFileFilter(new String[]{"jpg","jpeg","gif","png","pgm","tif","tiff","bmp"},PivResource.getS("Fichiers images")); - FILE_FLT_GRID=new BuFileFilter("dat",PivResource.getS("Fichier grid")); - FILE_FLT_GRP=new BuFileFilter("dat",PivResource.getS("Fichier GRP")); + FILE_FLT_GRID=new BuFileFilter("grid.dat",PivResource.getS("Fichier grille (grid.dat)")); + FILE_FLT_GRID.setExtensionListInDescription(false); + FILE_FLT_GRP=new BuFileFilter("GRP.dat",PivResource.getS("Fichier points (GRP.dat)")); + FILE_FLT_GRP.setExtensionListInDescription(false); FILE_FLT_BATHY=new BuFileFilter(new String[]{"dat",FILE_FLT_TRANS_BTH.getFirstExt()},PivResource.getS("Fichier bathy")); - FILE_FLT_TRANSF_PARAMS=new BuFileFilter("dat",PivResource.getS("Fichier params transformation")); - FILE_FLT_COMPUTE_PARAMS=new BuFileFilter("dat",PivResource.getS("Fichier params calcul")); + FILE_FLT_TRANSF_PARAMS=new BuFileFilter("img_ref.dat",PivResource.getS("Fichier transformation (img_ref.dat)")); + FILE_FLT_TRANSF_PARAMS.setExtensionListInDescription(false); + FILE_FLT_COMPUTE_PARAMS=new BuFileFilter("PIV_param.dat",PivResource.getS("Fichier calcul (PIV_param.dat)")); + FILE_FLT_COMPUTE_PARAMS.setExtensionListInDescription(false); FILE_FLT_XLSX=new BuFileFilter("xlsx",PivResource.getS("Fichier Excel")); } Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportComputeParamAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportComputeParamAction.java 2017-01-25 16:13:07 UTC (rev 9530) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportComputeParamAction.java 2017-01-26 16:54:33 UTC (rev 9531) @@ -56,13 +56,16 @@ } // Selection du fichier - if (fcParams==null) - fcParams = new CtuluFileChooser(true); + if (fcParams == null) { + fcParams=new CtuluFileChooser(true); + fcParams.setAcceptAllFileFilterUsed(true); + fcParams.setFileFilter(PivUtils.FILE_FLT_COMPUTE_PARAMS); + // Pas terrible, mais evite de redonner le nom manuellement. + fcParams.setSelectedFile(new File(PivUtils.FILE_FLT_COMPUTE_PARAMS.getFirstExt())); + fcParams.setMultiSelectionEnabled(false); + fcParams.setDialogTitle(PivResource.getS("S\xE9lection d'un fichier de parametres de calcul")); + } - fcParams.setAcceptAllFileFilterUsed(true); - fcParams.setFileFilter(PivUtils.FILE_FLT_COMPUTE_PARAMS); - fcParams.setMultiSelectionEnabled(false); - fcParams.setDialogTitle(PivResource.getS("S\xE9lection d'un fichier de parametres de calcul")); if (fcParams.showOpenDialog(impl.getFrame()) == CtuluFileChooser.CANCEL_OPTION) { return; } 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 2017-01-25 16:13:07 UTC (rev 9530) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportGRPAction.java 2017-01-26 16:54:33 UTC (rev 9531) @@ -64,12 +64,16 @@ } // Selection du fichier - if (fcGRP==null) - fcGRP = new CtuluFileChooser(true); - fcGRP.setAcceptAllFileFilterUsed(true); - fcGRP.setFileFilter(PivUtils.FILE_FLT_GRP); - fcGRP.setMultiSelectionEnabled(false); - fcGRP.setDialogTitle(PivResource.getS("S\xE9lection d'un fichier GRP")); + if (fcGRP == null) { + fcGRP=new CtuluFileChooser(true); + fcGRP.setAcceptAllFileFilterUsed(true); + fcGRP.setFileFilter(PivUtils.FILE_FLT_GRP); + // Pas terrible, mais evite de redonner le nom manuellement. + fcGRP.setSelectedFile(new File(PivUtils.FILE_FLT_GRP.getFirstExt())); + fcGRP.setMultiSelectionEnabled(false); + fcGRP.setDialogTitle(PivResource.getS("S\xE9lection d'un fichier GRP")); + } + if (fcGRP.showOpenDialog(impl.getFrame()) == JFileChooser.CANCEL_OPTION) { return; } 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 2017-01-25 16:13:07 UTC (rev 9530) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportGridAction.java 2017-01-26 16:54:33 UTC (rev 9531) @@ -61,12 +61,16 @@ } // Selection du fichier - if (fcGrid==null) - fcGrid = new CtuluFileChooser(true); - fcGrid.setAcceptAllFileFilterUsed(true); - fcGrid.setFileFilter(PivUtils.FILE_FLT_GRID); - fcGrid.setMultiSelectionEnabled(false); - fcGrid.setDialogTitle(PivResource.getS("S\xE9lection d'un fichier de grille")); + if (fcGrid == null) { + fcGrid=new CtuluFileChooser(true); + fcGrid.setAcceptAllFileFilterUsed(true); + fcGrid.setFileFilter(PivUtils.FILE_FLT_GRID); + // Pas terrible, mais evite de redonner le nom manuellement. + fcGrid.setSelectedFile(new File(PivUtils.FILE_FLT_GRID.getFirstExt())); + fcGrid.setMultiSelectionEnabled(false); + fcGrid.setDialogTitle(PivResource.getS("S\xE9lection d'un fichier de grille")); + } + if (fcGrid.showOpenDialog(impl.getFrame()) == CtuluFileChooser.CANCEL_OPTION) { return; } Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportOrthoParamAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportOrthoParamAction.java 2017-01-25 16:13:07 UTC (rev 9530) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportOrthoParamAction.java 2017-01-26 16:54:33 UTC (rev 9531) @@ -53,13 +53,16 @@ } // Selection du fichier - if (fcParams==null) - fcParams = new CtuluFileChooser(true); + if (fcParams == null) { + fcParams=new CtuluFileChooser(true); + fcParams.setAcceptAllFileFilterUsed(true); + fcParams.setFileFilter(PivUtils.FILE_FLT_TRANSF_PARAMS); + // Pas terrible, mais evite de redonner le nom manuellement. + fcParams.setSelectedFile(new File(PivUtils.FILE_FLT_TRANSF_PARAMS.getFirstExt())); + fcParams.setMultiSelectionEnabled(false); + fcParams.setDialogTitle(PivResource.getS("S\xE9lection d'un fichier de parametres de transformation")); + } - fcParams.setAcceptAllFileFilterUsed(true); - fcParams.setFileFilter(PivUtils.FILE_FLT_TRANSF_PARAMS); - fcParams.setMultiSelectionEnabled(false); - fcParams.setDialogTitle(PivResource.getS("S\xE9lection d'un fichier de parametres de transformation")); if (fcParams.showOpenDialog(impl.getFrame()) == CtuluFileChooser.CANCEL_OPTION) { return; } 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 2017-01-25 16:13:07 UTC (rev 9530) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportTransectAction.java 2017-01-26 16:54:33 UTC (rev 9531) @@ -48,12 +48,15 @@ } // Selection du fichier - if (fcTransect==null) - fcTransect = new CtuluFileChooser(); - fcTransect.setAcceptAllFileFilterUsed(true); - fcTransect.setFileFilter(PivUtils.FILE_FLT_BATHY); - fcTransect.setMultiSelectionEnabled(false); - fcTransect.setDialogTitle(PivResource.getS("S\xE9lection d'un fichier transect")); + if (fcTransect == null) { + fcTransect=new CtuluFileChooser(true); + fcTransect.setAcceptAllFileFilterUsed(true); + fcTransect.setFileFilter(PivUtils.FILE_FLT_BATHY); + fcTransect.setSelectedFile(new File("trans0001.bth_dat")); + fcTransect.setMultiSelectionEnabled(false); + fcTransect.setDialogTitle(PivResource.getS("S\xE9lection d'un fichier transect")); + } + if (fcTransect.showOpenDialog(impl.getFrame()) == CtuluFileChooser.CANCEL_OPTION) { return; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2017-02-02 11:37:37
|
Revision: 9532 http://sourceforge.net/p/fudaa/svn/9532 Author: bmarchan Date: 2017-02-02 11:37:34 +0000 (Thu, 02 Feb 2017) Log Message: ----------- Fix LSPIV : Pb sur le calcul de moyennes apr?\195?\168s suppression de vitesses filtr?\195?\169es si aucune sauvegarde entre temps 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/io/PivExeLauncher.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 2017-01-26 16:54:33 UTC (rev 9531) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java 2017-02-02 11:37:34 UTC (rev 9532) @@ -97,7 +97,7 @@ static { isPIV_.name = "LSPIV"; isPIV_.version = "1.5.1"; - isPIV_.date = "2016-12-20"; + isPIV_.date = "2017-02-02"; isPIV_.rights = PivResource.getS("Tous droits r\xE9serv\xE9s")+". CEREMA (c)1999-2017"; isPIV_.license = "GPL2"; isPIV_.languages = "en,fr"; 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 2017-01-26 16:54:33 UTC (rev 9531) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivExeLauncher.java 2017-02-02 11:37:34 UTC (rev 9532) @@ -708,6 +708,9 @@ PivResultsI res=null; try { + // Sauvegarde des r\xE9sultats filtr\xE9s qui ont pu \xEAtre modifi\xE9s par l'utilisateur. + _prj.getPersistenceManager().saveInstantFilteredResults(_prj, _prj.getInstantFilteredResults(), _task); + // Cr\xE9ation du fichier contenant la liste des fichiers piv.dat pour la moyenne. _prj.getPersistenceManager().saveInstantResultsList(false); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2017-02-07 10:55:55
|
Revision: 9536 http://sourceforge.net/p/fudaa/svn/9536 Author: bmarchan Date: 2017-02-07 10:55:52 +0000 (Tue, 07 Feb 2017) Log Message: ----------- LSPIV : Gestion de la saisie de r?\195?\169solution par couples de points Modified Paths: -------------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivScalingResolutionPanel.form trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivScalingResolutionPanel.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivDefineParamScalingAction.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivDefineResolutionScalingAction.java Added Paths: ----------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivEnterLineAction.java Removed Paths: ------------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivEnterDistanceAction.java Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivScalingResolutionPanel.form =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivScalingResolutionPanel.form 2017-02-06 17:12:24 UTC (rev 9535) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivScalingResolutionPanel.form 2017-02-07 10:55:52 UTC (rev 9536) @@ -58,23 +58,23 @@ <Group type="102" alignment="0" attributes="0"> <EmptySpace max="-2" attributes="0"/> <Group type="103" groupAlignment="0" attributes="0"> - <Component id="spCouple" max="32767" attributes="0"/> <Group type="102" alignment="1" attributes="0"> - <EmptySpace min="0" pref="0" max="32767" attributes="0"/> + <EmptySpace min="0" pref="169" max="32767" attributes="0"/> <Component id="btAdd" min="-2" max="-2" attributes="0"/> <EmptySpace max="-2" attributes="0"/> <Component id="btDelete" min="-2" max="-2" attributes="0"/> </Group> <Group type="102" alignment="1" attributes="0"> <Component id="rbDistanceResol" min="-2" max="-2" attributes="0"/> - <EmptySpace max="32767" attributes="0"/> - <Component id="rbCoordsResol" min="-2" max="-2" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> + <Component id="coComputedResol" max="32767" attributes="0"/> </Group> <Group type="102" attributes="0"> <Component id="lbComputedResol" min="-2" max="-2" attributes="0"/> <EmptySpace max="-2" attributes="0"/> <Component id="tfComputedResol" max="32767" attributes="0"/> </Group> + <Component id="spCouple" alignment="1" max="32767" attributes="0"/> </Group> <EmptySpace max="-2" attributes="0"/> </Group> @@ -86,10 +86,10 @@ <EmptySpace max="-2" attributes="0"/> <Group type="103" groupAlignment="3" attributes="0"> <Component id="rbDistanceResol" alignment="3" min="-2" pref="25" max="-2" attributes="0"/> - <Component id="rbCoordsResol" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="coComputedResol" alignment="3" min="-2" max="-2" attributes="0"/> </Group> <EmptySpace max="-2" attributes="0"/> - <Component id="spCouple" pref="119" max="32767" attributes="0"/> + <Component id="spCouple" pref="135" max="32767" attributes="0"/> <EmptySpace max="-2" attributes="0"/> <Group type="103" groupAlignment="3" attributes="0"> <Component id="btDelete" alignment="3" min="-2" max="-2" attributes="0"/> @@ -111,17 +111,9 @@ <Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor"> <ComponentRef name="bgResol"/> </Property> - <Property name="text" type="java.lang.String" value="Saisie par couple de points / distance"/> + <Property name="text" type="java.lang.String" value="Saisie par couple de points /"/> </Properties> </Component> - <Component class="javax.swing.JRadioButton" name="rbCoordsResol"> - <Properties> - <Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor"> - <ComponentRef name="bgResol"/> - </Property> - <Property name="text" type="java.lang.String" value="Saisie par couple de points / coordonnées"/> - </Properties> - </Component> <Container class="javax.swing.JScrollPane" name="spCouple"> <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/> @@ -146,6 +138,16 @@ <Property name="text" type="java.lang.String" value="Ajouter un couple"/> </Properties> </Component> + <Component class="javax.swing.JComboBox" name="coComputedResol"> + <Properties> + <Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor"> + <StringArray count="0"/> + </Property> + </Properties> + <AuxValues> + <AuxValue name="JavaCodeGenerator_TypeParameters" type="java.lang.String" value="<String>"/> + </AuxValues> + </Component> </SubComponents> </Container> <Container class="javax.swing.JPanel" name="pnEntering"> Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivScalingResolutionPanel.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivScalingResolutionPanel.java 2017-02-06 17:12:24 UTC (rev 9535) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivScalingResolutionPanel.java 2017-02-07 10:55:52 UTC (rev 9536) @@ -2,6 +2,8 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; import java.text.DecimalFormat; import java.util.ArrayList; import java.util.List; @@ -22,7 +24,7 @@ import org.fudaa.ebli.geometrie.GrPoint; import org.fudaa.ebli.geometrie.GrPolygone; import org.fudaa.ebli.geometrie.GrPolyligne; -import org.fudaa.fudaa.piv.action.PivEnterDistanceAction; +import org.fudaa.fudaa.piv.action.PivEnterLineAction; import com.memoire.fu.FuLog; @@ -34,23 +36,32 @@ */ public class PivScalingResolutionPanel extends CtuluDialogPanel { - class CoupleDistanceRow { + class CoupleRow { int i1; int j1; int i2; int j2; - /** Peut \xEAtre null quand elle n'a pas \xE9t\xE9 donn\xE9e. */ + /** Peut \xEAtre null quand pas saisi. */ + Double x1; + /** Peut \xEAtre null quand pas saisi. */ + Double y1; + /** Peut \xEAtre null quand pas saisi. */ + Double x2; + /** Peut \xEAtre null quand pas saisi. */ + Double y2; + /** Peut \xEAtre null quand pas saisi. */ Double distance; - /** Peut \xEAtre null si la distance n'a pas \xE9t\xE9 donn\xE9e */ + /** Peut \xEAtre null si la distance ou les coordonn\xE9es n'ont pas \xE9t\xE9 donn\xE9s */ Double resolution; } /** - * Un modele pour les couples / distance + * Un modele pour les couples / (distance ou coordonn\xE9es) * @author Bertrand Marchand (mar...@de...) */ - class CoupleDistanceTableModel extends AbstractTableModel { - List<CoupleDistanceRow> rows = new ArrayList<>(); + class CoupleTableModel extends AbstractTableModel { + List<CoupleRow> rows = new ArrayList<>(); + boolean modeDistance_=true; @Override public int getRowCount() { @@ -59,7 +70,7 @@ @Override public int getColumnCount() { - return 6; + return modeDistance_ ? 6:9; } @Override @@ -75,8 +86,20 @@ case 3: return rows.get(row).j2; case 4: - return rows.get(row).distance; + if (modeDistance_) + return rows.get(row).distance; + else + return rows.get(row).x1; case 5: + if (modeDistance_) + return rows.get(row).resolution; + else + return rows.get(row).y1; + case 6: + return rows.get(row).x2; + case 7: + return rows.get(row).y2; + case 8: return rows.get(row).resolution; } } @@ -94,44 +117,96 @@ case 3: return PivResource.getS("J2"); case 4: - return PivResource.getS("Distance"); + if (modeDistance_) + return PivResource.getS("Distance"); + else + return PivResource.getS("X1"); case 5: + if (modeDistance_) + return PivResource.getS("R\xE9solution"); + else + return PivResource.getS("Y1"); + case 6: + return PivResource.getS("X2"); + case 7: + return PivResource.getS("Y2"); + case 8: return PivResource.getS("R\xE9solution"); } } @Override public boolean isCellEditable(int row, int column) { - return column==4; + if (modeDistance_) + return column==4; + else + return column==4 || column==5 || column==6 || column==7; } @Override public void setValueAt(Object aValue, int row, int column) { + Double val=null; + if (!aValue.toString().trim().isEmpty()) { + // Double attendu + try { + val=Double.parseDouble(aValue.toString().trim()); + } + catch (NumberFormatException _exc) { + } + } + switch (column) { default: case 4: - rows.get(row).distance=null; - rows.get(row).resolution=null; - - if (!aValue.toString().trim().isEmpty()) { - // Double attendu - try { - rows.get(row).distance=Double.parseDouble(aValue.toString()); - double dx=rows.get(row).i2 - rows.get(row).i1; - double dy=rows.get(row).j2 - rows.get(row).j1; - rows.get(row).resolution=rows.get(row).distance / Math.max(1, Math.sqrt(dx*dx + dy*dy)); - } - catch (NumberFormatException _exc) {} - } - - fireTableDataChanged(); + if (modeDistance_) + rows.get(row).distance=val; + else + rows.get(row).x1=val; break; + case 5: + rows.get(row).y1=val; + break; + case 6: + rows.get(row).x2=val; + break; + case 7: + rows.get(row).y2=val; + break; } + + computeResolution(row); + + fireTableDataChanged(); } + + /** + * Initialise la r\xE9solution en fonction des donn\xE9es de la table. + * @param row La ligne pour laquelle initialiser la r\xE9solution + */ + public void computeResolution(int row) { + rows.get(row).resolution=null; + if (modeDistance_) { + if (rows.get(row).distance!=null) { + double dxi=rows.get(row).i2 - rows.get(row).i1; + double dyi=rows.get(row).j2 - rows.get(row).j1; + rows.get(row).resolution=rows.get(row).distance / Math.max(1, Math.sqrt(dxi*dxi + dyi*dyi)); + } + } + else { + if (rows.get(row).x1!=null && rows.get(row).y1!=null && rows.get(row).x2!=null && rows.get(row).y2!=null) { + double dxi=rows.get(row).i2 - rows.get(row).i1; + double dyi=rows.get(row).j2 - rows.get(row).j1; + double dxr=rows.get(row).x2 - rows.get(row).x1; + double dyr=rows.get(row).y2 - rows.get(row).y1; + rows.get(row).resolution= Math.sqrt(dxr*dxr + dyr*dyr) / Math.max(1, Math.sqrt(dxi*dxi + dyi*dyi)); + } + } + } - public void addCouple(CoupleDistanceRow _cpl) { + + public void addCouple(CoupleRow _cpl) { rows.add(_cpl); fireTableDataChanged(); } @@ -144,12 +219,25 @@ } /** + * Definit que le mod\xE8le est en mode distance ou en mode coordonn\xE9es r\xE9elles. + * @param _b True : En mode distance. + */ + public void setModeDistance(boolean _b) { + modeDistance_=_b; + + for (int i=0; i<rows.size(); i++) { + computeResolution(i); + } + fireTableStructureChanged(); + } + + /** * @return La resolution moyenne, ou null si aucune r\xE9solution n'est d\xE9finie dans le tableau. */ public Double getAverageResolution() { int nb=0; double somme=0; - for (CoupleDistanceRow cpl : rows) { + for (CoupleRow cpl : rows) { if (cpl.resolution!=null) { somme+=cpl.resolution; nb++; @@ -182,7 +270,7 @@ if (pl.sommets_.nombre() == 2) { cqEdition_.endEdition(); - CoupleDistanceRow couple=new CoupleDistanceRow(); + CoupleRow couple=new CoupleRow(); couple.i1=(int)pl.sommet(0).x_; couple.j1=(int)pl.sommet(0).y_; couple.i2=(int)pl.sommet(1).x_; @@ -237,10 +325,10 @@ private PivVisuPanel pnLayers_; private ZCalqueEditionInteractionTargetI ctrl_=new EditionController(); - private PivEnterDistanceAction actEnterDistance_; + private PivEnterLineAction actEnterDistance_; private ZCalqueEditionInteraction cqEdition_; private CtuluTable tbCouple=new CtuluTable(); - private CoupleDistanceTableModel mdlDistance; + private CoupleTableModel mdlDistance; /** * Constructeur. @@ -255,9 +343,10 @@ } private void customize() { + setHelpText(PivResource.getS("<html>Vous pouvez d\xE9finir la r\xE9solution soit directement, soit en saisissant des couples de points et moyennation.<br><br><u>Saisie par couple de points</u> :<br>Saisissez 2 points \xE0 l'\xE9cran, puis renseignez les coordonn\xE9es ou la distance dans la table (suivant l'option choisie)</html>")); + rbDirectResol.setText(PivResource.getS("Saisie directe de la r\xE9solution")+" (m/pix):"); - rbDistanceResol.setText(PivResource.getS("Saisie par couple de points / distance")); - rbCoordsResol.setText(PivResource.getS("Saisie par couple de points / coordonn\xE9es")); + rbDistanceResol.setText(PivResource.getS("Saisie par couples de points /")); btDelete.setText(PivResource.getS("Supprimer")); btDelete.setToolTipText(PivResource.getS("Supprime les couples s\xE9lectionn\xE9s")); btDelete.addActionListener(new ActionListener() { @@ -269,26 +358,34 @@ lbComputedResol.setText(PivResource.getS("R\xE9solution moyenne calcul\xE9e")+" (m/pix):"); - actEnterDistance_=new PivEnterDistanceAction(pnLayers_); + actEnterDistance_=new PivEnterLineAction(pnLayers_); actEnterDistance_.setEditionController(ctrl_); btAdd.setAction(actEnterDistance_); actEnterDistance_.addPropertyChangeListener(new EbliSelectedChangeListener(btAdd)); spCouple.setViewportView(tbCouple); - rbDirectResol.addActionListener(new ActionListener() { + coComputedResol.removeAllItems(); + coComputedResol.addItem(PivResource.getS("Distance")); + coComputedResol.addItem(PivResource.getS("Coordonn\xE9es")); + coComputedResol.addItemListener(new ItemListener() { + @Override - public void actionPerformed(ActionEvent e) { - rbResolChanged(); + public void itemStateChanged(ItemEvent e) { + if (e.getStateChange()!=ItemEvent.SELECTED) + return; + + mdlDistance.setModeDistance(coComputedResol.getSelectedIndex()==0); } }); - rbDistanceResol.addActionListener(new ActionListener() { + + rbDirectResol.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { rbResolChanged(); } }); - rbCoordsResol.addActionListener(new ActionListener() { + rbDistanceResol.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { rbResolChanged(); @@ -297,7 +394,7 @@ rbDirectResol.setSelected(true); - mdlDistance= new CoupleDistanceTableModel(); + mdlDistance= new CoupleTableModel(); mdlDistance.addTableModelListener(new TableModelListener() { @Override public void tableChanged(TableModelEvent e) { @@ -326,9 +423,10 @@ protected void rbResolChanged() { tfDirectResol.setEnabled(rbDirectResol.isSelected()); - tbCouple.setEnabled(rbDistanceResol.isSelected() || rbCoordsResol.isSelected()); - btAdd.setEnabled((rbDistanceResol.isSelected() || rbCoordsResol.isSelected())); - btDelete.setEnabled((rbDistanceResol.isSelected() || rbCoordsResol.isSelected()) && tbCouple.getSelectedRows().length>0); + tbCouple.setEnabled(rbDistanceResol.isSelected()); + coComputedResol.setEnabled(rbDistanceResol.isSelected()); + btAdd.setEnabled((rbDistanceResol.isSelected())); + btDelete.setEnabled(rbDistanceResol.isSelected() && tbCouple.getSelectedRows().length>0); } protected boolean isDistanceResolution() { @@ -378,12 +476,12 @@ bgResol = new javax.swing.ButtonGroup(); pnDirect = new javax.swing.JPanel(); rbDistanceResol = new javax.swing.JRadioButton(); - rbCoordsResol = new javax.swing.JRadioButton(); spCouple = new javax.swing.JScrollPane(); btDelete = new javax.swing.JButton(); tfComputedResol = new javax.swing.JTextField(); lbComputedResol = new javax.swing.JLabel(); btAdd = new javax.swing.JToggleButton(); + coComputedResol = new javax.swing.JComboBox<>(); pnEntering = new javax.swing.JPanel(); rbDirectResol = new javax.swing.JRadioButton(); tfDirectResol = new javax.swing.JTextField(); @@ -391,17 +489,16 @@ pnDirect.setBorder(javax.swing.BorderFactory.createEtchedBorder()); bgResol.add(rbDistanceResol); - rbDistanceResol.setText("Saisie par couple de points / distance"); + rbDistanceResol.setText("Saisie par couple de points /"); - bgResol.add(rbCoordsResol); - rbCoordsResol.setText("Saisie par couple de points / coordonn\xE9es"); - btDelete.setText("Supprimer"); tfComputedResol.setEnabled(false); lbComputedResol.setText("R\xE9solution moyenne calcul\xE9e"); + btAdd.setText("Ajouter un couple"); + javax.swing.GroupLayout pnDirectLayout = new javax.swing.GroupLayout(pnDirect); pnDirect.setLayout(pnDirectLayout); pnDirectLayout.setHorizontalGroup( @@ -409,20 +506,20 @@ .addGroup(pnDirectLayout.createSequentialGroup() .addContainerGap() .addGroup(pnDirectLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(spCouple) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pnDirectLayout.createSequentialGroup() - .addGap(0, 0, Short.MAX_VALUE) + .addGap(0, 169, Short.MAX_VALUE) .addComponent(btAdd) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(btDelete)) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pnDirectLayout.createSequentialGroup() .addComponent(rbDistanceResol) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(rbCoordsResol)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(coComputedResol, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGroup(pnDirectLayout.createSequentialGroup() .addComponent(lbComputedResol) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(tfComputedResol))) + .addComponent(tfComputedResol)) + .addComponent(spCouple, javax.swing.GroupLayout.Alignment.TRAILING)) .addContainerGap()) ); pnDirectLayout.setVerticalGroup( @@ -431,9 +528,9 @@ .addContainerGap() .addGroup(pnDirectLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(rbDistanceResol, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(rbCoordsResol)) + .addComponent(coComputedResol, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(spCouple, javax.swing.GroupLayout.DEFAULT_SIZE, 119, Short.MAX_VALUE) + .addComponent(spCouple, javax.swing.GroupLayout.DEFAULT_SIZE, 135, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(pnDirectLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(btDelete) @@ -498,10 +595,10 @@ private javax.swing.ButtonGroup bgResol; private javax.swing.JToggleButton btAdd; private javax.swing.JButton btDelete; + private javax.swing.JComboBox<String> coComputedResol; private javax.swing.JLabel lbComputedResol; private javax.swing.JPanel pnDirect; private javax.swing.JPanel pnEntering; - private javax.swing.JRadioButton rbCoordsResol; private javax.swing.JRadioButton rbDirectResol; private javax.swing.JRadioButton rbDistanceResol; private javax.swing.JScrollPane spCouple; Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivDefineParamScalingAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivDefineParamScalingAction.java 2017-02-06 17:12:24 UTC (rev 9535) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivDefineParamScalingAction.java 2017-02-07 10:55:52 UTC (rev 9536) @@ -119,6 +119,6 @@ @Override public String getEnableCondition() { - return PivResource.getS("Le projet doit \xEAtre cr\xE9\xE9"); + return PivResource.getS("Il doit exister au moins une image source"); } } Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivDefineResolutionScalingAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivDefineResolutionScalingAction.java 2017-02-06 17:12:24 UTC (rev 9535) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivDefineResolutionScalingAction.java 2017-02-07 10:55:52 UTC (rev 9536) @@ -8,20 +8,12 @@ package org.fudaa.fudaa.piv.action; import java.awt.event.ActionEvent; -import java.io.File; -import org.fudaa.ctulu.CtuluLog; 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.PivManageOriginalFilesPanel; -import org.fudaa.fudaa.piv.PivProgressionPanel; import org.fudaa.fudaa.piv.PivResource; import org.fudaa.fudaa.piv.PivScalingResolutionPanel; -import org.fudaa.fudaa.piv.PivVisuPanel; -import org.fudaa.fudaa.piv.io.PivExeLauncher; /** * Une action pour selectionner et reconditionner les images sources. @@ -46,7 +38,6 @@ } /** - * Selectionne les images, pour les reconditionne dans un thread s\xE9par\xE9. * @param _e L'evenement pour l'action. */ @Override @@ -55,47 +46,11 @@ return; } - // Selection des images + // D\xE9finition de la r\xE9solution. if (pnResolution==null) pnResolution = new PivScalingResolutionPanel(impl.get2dFrame().getVisuPanel()); pnResolution.affiche(impl.getFrame(), PivResource.getS("D\xE9finition de la r\xE9solution"), CtuluDialog.OK_CANCEL_OPTION); - -// final File[] srcImgFiles=pnResolution.getFiles(); - - // Le reconditionnement des images. -// CtuluTaskOperationGUI r=new CtuluTaskOperationGUI(impl, PivResource.getS("Traitement des images sources")) { -// -// @Override -// public void act() { -// try { -// CtuluLog ana=new CtuluLog(); -// ana.setDesc(getName()); -// impl.getCurrentProject().setSrcImagesFiles(srcImgFiles, this, ana); -// -// if (ana.containsErrorOrSevereError()) { -// impl.error(ana.getResume()); -// return; -// } -// -// } -// finally { -// diProgress_.dispose(); -// } -// } -// }; -// -// 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(); - - impl.get2dFrame().getVisuPanel().setViewMode(PivVisuPanel.MODE_ORIGINAL_VIEW); - impl.get2dFrame().restaurer(); } /** @@ -107,6 +62,6 @@ @Override public String getEnableCondition() { - return PivResource.getS("Le projet doit \xEAtre cr\xE9\xE9"); + return PivResource.getS("Il doit exister au moins une image source"); } } Deleted: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivEnterDistanceAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivEnterDistanceAction.java 2017-02-06 17:12:24 UTC (rev 9535) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivEnterDistanceAction.java 2017-02-07 10:55:52 UTC (rev 9536) @@ -1,176 +0,0 @@ -/* - * @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.Container; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; - -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.ebli.calque.dessin.DeForme; -import org.fudaa.ebli.calque.edition.ZCalqueEditionInteraction; -import org.fudaa.ebli.calque.edition.ZCalqueEditionInteractionTargetI; -import org.fudaa.ebli.commun.EbliActionPaletteAbstract; -import org.fudaa.fudaa.piv.PivResource; -import org.fudaa.fudaa.piv.PivSimplifiedEditionPalette; -import org.fudaa.fudaa.piv.PivVisuPanel; -import org.fudaa.fudaa.piv.action.PivComputeGridDefinitionAction.Piv2dFrameListener; - -import com.memoire.bu.BuDesktop; - -/** - * Une action pour saisir une distance (trac\xE9 d'une ligne simple). - * - * @author Bertrand Marchand (mar...@de...) - * @version $Id: PivDefineAreaCenterAction.java 6709 2011-11-24 16:17:00Z bmarchan $ - */ -public class PivEnterDistanceAction extends EbliActionPaletteAbstract { - - private PivVisuPanel pnCalques_; - /** Le calque d'\xE9dition. */ - private ZCalqueEditionInteraction cqEdition_; - /** Le controller d'edition */ - private ZCalqueEditionInteractionTargetI controller_; - /** La palette pour la reprise. */ - private PivSimplifiedEditionPalette palette_; - /** Le listener sur le statut gele du calque d'\xE9dition */ - private PropertyChangeListener listener_; - - /** - * Constructeur. - * @param _pn Le panneau des calques. - */ - public PivEnterDistanceAction(PivVisuPanel _pn) { - super(PivResource.getS("Saisir un couple"), null, "DEFINE_DISTANCE"); - setDefaultToolTip(PivResource.getS("Ajoute un couple par saisie de 2 points")); - pnCalques_=_pn; - - // Pour ecouter le statut du calque d'edition -// listener_=new PropertyChangeListener() { -// @Override -// public void propertyChange(PropertyChangeEvent evt) { -// setSelected(!(Boolean)evt.getNewValue()); -// } -// }; - - setCalqueInteraction(_pn.getEditionLayer()); - } - - /** - * 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_==_cq) return; -// -// if (cqEdition_!=null) -// cqEdition_.removePropertyChangeListener("gele", listener_); - - cqEdition_=_cq; - -// if (cqEdition_!=null) -// cqEdition_.addPropertyChangeListener("gele", listener_); - } - - /** - * Definit le controlleur d'edition. - * @param _ctrl Le controlleur. - */ - public void setEditionController(ZCalqueEditionInteractionTargetI _ctrl) { - controller_=_ctrl; - } - - /** - * Surcharge pour activer/desactiver le calque d'edition. - */ - @Override - public void changeAction() { - if (isSelected()) - pnCalques_.setViewMode(PivVisuPanel.MODE_ORIGINAL_VIEW); - -// cqEdition_.setListener(controller_); -// cqEdition_.setTypeForme(DeForme.LIGNE_BRISEE); -// cqEdition_.setFormEndedByDoubleClic(true); -// pnCalques_.setCalqueInteractionActif(cqEdition_); -// } -// else { -// pnCalques_.unsetCalqueInteractionActif(cqEdition_); -// cqEdition_.cancelEdition(); -// } - super.changeAction(); - } - - /** - * 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 rendre inactif le calque d'\xE9dition apr\xE8s que la palette a - * \xE9t\xE9 ferm\xE9e. - */ - @Override - public void hideWindow() { - pnCalques_.unsetCalqueInteractionActif(cqEdition_); - cqEdition_.cancelEdition(); - setSelected(false); - - super.hideWindow(); - } - - /** - * 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_); - palette_.currentFormeChanged(null); - } - - @Override - protected JComponent buildContentPane() { - if (palette_==null){ - // Cr\xE9ation de l'internal frame de reprise - palette_=new PivSimplifiedEditionPalette(pnCalques_, PivResource.getS("Points")); - palette_.setCalqueInteraction(cqEdition_); - palette_.setButtonVisible(PivSimplifiedEditionPalette.BUTTON_END, false); - // 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 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); - } - }); - } - } - return palette_.getComponent(); - } -} Copied: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivEnterLineAction.java (from rev 9535, trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivEnterDistanceAction.java) =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivEnterLineAction.java (rev 0) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivEnterLineAction.java 2017-02-07 10:55:52 UTC (rev 9536) @@ -0,0 +1,176 @@ +/* + * @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.Container; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; + +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.ebli.calque.dessin.DeForme; +import org.fudaa.ebli.calque.edition.ZCalqueEditionInteraction; +import org.fudaa.ebli.calque.edition.ZCalqueEditionInteractionTargetI; +import org.fudaa.ebli.commun.EbliActionPaletteAbstract; +import org.fudaa.fudaa.piv.PivResource; +import org.fudaa.fudaa.piv.PivSimplifiedEditionPalette; +import org.fudaa.fudaa.piv.PivVisuPanel; +import org.fudaa.fudaa.piv.action.PivComputeGridDefinitionAction.Piv2dFrameListener; + +import com.memoire.bu.BuDesktop; + +/** + * Une action pour saisir une distance (trac\xE9 d'une ligne simple). + * + * @author Bertrand Marchand (mar...@de...) + * @version $Id: PivDefineAreaCenterAction.java 6709 2011-11-24 16:17:00Z bmarchan $ + */ +public class PivEnterLineAction extends EbliActionPaletteAbstract { + + private PivVisuPanel pnCalques_; + /** Le calque d'\xE9dition. */ + private ZCalqueEditionInteraction cqEdition_; + /** Le controller d'edition */ + private ZCalqueEditionInteractionTargetI controller_; + /** La palette pour la reprise. */ + private PivSimplifiedEditionPalette palette_; + /** Le listener sur le statut gele du calque d'\xE9dition */ + private PropertyChangeListener listener_; + + /** + * Constructeur. + * @param _pn Le panneau des calques. + */ + public PivEnterLineAction(PivVisuPanel _pn) { + super(PivResource.getS("Saisir un couple"), null, "DEFINE_DISTANCE"); + setDefaultToolTip(PivResource.getS("Ajoute un couple par saisie de 2 points")); + pnCalques_=_pn; + + // Pour ecouter le statut du calque d'edition +// listener_=new PropertyChangeListener() { +// @Override +// public void propertyChange(PropertyChangeEvent evt) { +// setSelected(!(Boolean)evt.getNewValue()); +// } +// }; + + setCalqueInteraction(_pn.getEditionLayer()); + } + + /** + * 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_==_cq) return; +// +// if (cqEdition_!=null) +// cqEdition_.removePropertyChangeListener("gele", listener_); + + cqEdition_=_cq; + +// if (cqEdition_!=null) +// cqEdition_.addPropertyChangeListener("gele", listener_); + } + + /** + * Definit le controlleur d'edition. + * @param _ctrl Le controlleur. + */ + public void setEditionController(ZCalqueEditionInteractionTargetI _ctrl) { + controller_=_ctrl; + } + + /** + * Surcharge pour activer/desactiver le calque d'edition. + */ + @Override + public void changeAction() { + if (isSelected()) + pnCalques_.setViewMode(PivVisuPanel.MODE_ORIGINAL_VIEW); + +// cqEdition_.setListener(controller_); +// cqEdition_.setTypeForme(DeForme.LIGNE_BRISEE); +// cqEdition_.setFormEndedByDoubleClic(true); +// pnCalques_.setCalqueInteractionActif(cqEdition_); +// } +// else { +// pnCalques_.unsetCalqueInteractionActif(cqEdition_); +// cqEdition_.cancelEdition(); +// } + super.changeAction(); + } + + /** + * 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 rendre inactif le calque d'\xE9dition apr\xE8s que la palette a + * \xE9t\xE9 ferm\xE9e. + */ + @Override + public void hideWindow() { + pnCalques_.unsetCalqueInteractionActif(cqEdition_); + cqEdition_.cancelEdition(); + setSelected(false); + + super.hideWindow(); + } + + /** + * 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_); + palette_.currentFormeChanged(null); + } + + @Override + protected JComponent buildContentPane() { + if (palette_==null){ + // Cr\xE9ation de l'internal frame de reprise + palette_=new PivSimplifiedEditionPalette(pnCalques_, PivResource.getS("Points")); + palette_.setCalqueInteraction(cqEdition_); + palette_.setButtonVisible(PivSimplifiedEditionPalette.BUTTON_END, false); + // 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 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); + } + }); + } + } + return palette_.getComponent(); + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2017-03-13 09:26:13
|
Revision: 9539 http://sourceforge.net/p/fudaa/svn/9539 Author: bmarchan Date: 2017-03-13 09:26:10 +0000 (Mon, 13 Mar 2017) Log Message: ----------- Ajoute le choix du mode d'orthorectification 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/io/PivCoeffReader.java 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/PivProjectPersistence.java Added Paths: ----------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivOrthoModePanel.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivChooseOrthoModeAction.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 2017-02-16 22:21:18 UTC (rev 9538) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java 2017-03-13 09:26:10 UTC (rev 9539) @@ -7,7 +7,6 @@ */ package org.fudaa.fudaa.piv; -import java.awt.Color; import java.awt.Desktop; import java.awt.Dimension; import java.awt.Point; @@ -14,7 +13,6 @@ import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.UnsupportedFlavorException; import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; import java.beans.PropertyVetoException; import java.io.File; import java.io.IOException; @@ -33,7 +31,6 @@ import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JOptionPane; -import javax.swing.JPanel; import javax.swing.SwingUtilities; import javax.swing.TransferHandler; @@ -51,6 +48,7 @@ import org.fudaa.fudaa.commun.impl.FudaaStartupExitPreferencesPanel; import org.fudaa.fudaa.piv.action.PivAutoCacheAction; import org.fudaa.fudaa.piv.action.PivAverageFilteredResultsAction; +import org.fudaa.fudaa.piv.action.PivChooseOrthoModeAction; import org.fudaa.fudaa.piv.action.PivComputeFlowAction; import org.fudaa.fudaa.piv.action.PivComputeLaunchAction; import org.fudaa.fudaa.piv.action.PivDefineComputeParamAction; @@ -75,7 +73,6 @@ import com.memoire.bu.BuAbstractPreferencesPanel; import com.memoire.bu.BuBrowserPreferencesPanel; -import com.memoire.bu.BuCheckBoxMenuItem; import com.memoire.bu.BuDesktopPreferencesPanel; import com.memoire.bu.BuInformationsSoftware; import com.memoire.bu.BuLanguagePreferencesPanel; @@ -84,7 +81,6 @@ import com.memoire.bu.BuMenuItem; import com.memoire.bu.BuMenuRecentFiles; import com.memoire.bu.BuPreferences; -import com.memoire.bu.BuRadioButtonMenuItem; import com.memoire.bu.BuRegistry; import com.memoire.bu.BuResource; import com.memoire.bu.BuUserPreferencesPanel; @@ -222,6 +218,9 @@ setEnabledForAction("EXPORT_GAUGING_REPORT", bprjOpen); setEnabledForAction("SCALING_PARAMS", bprjHasSrcImg); setEnabledForAction("SCALING_RESOLUTION", bprjHasSrcImg); + setEnabledForAction("DEFINE_ORTHO_MODE", bprjHasSrcImg); + setEnabledForAction("MN_SCALING", bprjHasSrcImg && !project.isFullOrtho()); + setEnabledForAction("MN_ORTHO", bprjHasSrcImg && project.isFullOrtho()); refreshTitle(); } @@ -827,14 +826,16 @@ mn.add(new PivAutoCacheAction(this).buildMenuItem(EbliComponentFactory.INSTANCE)); mn.addSeparator(PivResource.getS("Orthorectification")); + mn.add(new PivChooseOrthoModeAction(this).buildMenuItem(EbliComponentFactory.INSTANCE)); - BuMenu mnMae=new BuMenu(PivResource.getS("Mise \xE0 l'\xE9chelle"),"MAE"); - mnMae.add(new PivDefineResolutionScalingAction(this).buildMenuItem(EbliComponentFactory.INSTANCE)); - mnMae.add(new PivDefineParamScalingAction(this).buildMenuItem(EbliComponentFactory.INSTANCE)); + BuMenu mnScaling=new BuMenu(PivResource.getS("Mise \xE0 l'\xE9chelle"),"MN_SCALING"); + mnScaling.add(new PivDefineResolutionScalingAction(this).buildMenuItem(EbliComponentFactory.INSTANCE)); + mnScaling.add(new PivDefineParamScalingAction(this).buildMenuItem(EbliComponentFactory.INSTANCE)); + mnScaling.setEnabled(false); - mn.add(mnMae); + mn.add(mnScaling); - BuMenu mnOrtho=new BuMenu(PivResource.getS("Orthorectification"),"ORTHO"); + BuMenu mnOrtho=new BuMenu(PivResource.getS("Orthorectification"),"MN_ORTHO"); sm=new BuMenu(PivResource.getS("Points de r\xE9f\xE9rence"),"mnGRP"); bt=get2dFrame().getVisuPanel().getOrthoGRPAction().buildMenuItem(EbliComponentFactory.INSTANCE); bt.setText(PivResource.getS("Nouveaux...")); @@ -852,6 +853,8 @@ bt.setText(PivResource.getS("Importer...")); sm.add(bt); mnOrtho.add(sm); + mnOrtho.setEnabled(false); + mn.add(mnOrtho); mn.add(new PivOrthoLaunchAction(this)); @@ -985,9 +988,6 @@ * @return True : Une mise a jour existe. */ public boolean checkForUpdate(boolean _showHideButton) { - - isPIV_.update=System.getProperty("piv.update", "https://forge.irstea.fr/projects/fudaa-lspiv/files"); - try { URL urlFlag=new URL(isPIV_.update+"/fudaa-lspiv-lastversion.txt"); if (FuLib.existsURL(urlFlag)) { Added: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivOrthoModePanel.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivOrthoModePanel.java (rev 0) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivOrthoModePanel.java 2017-03-13 09:26:10 UTC (rev 9539) @@ -0,0 +1,58 @@ +package org.fudaa.fudaa.piv; + +import javax.swing.BorderFactory; +import javax.swing.ButtonGroup; +import javax.swing.JRadioButton; +import javax.swing.border.EtchedBorder; + +import org.fudaa.ctulu.gui.CtuluDialogPanel; + +import com.memoire.bu.BuVerticalLayout; + +/** + * Un panneau de saisie du mode d'orthorectification. + * + * @author Bertrand Marchand (mar...@de...) + * @version $Id: PivTransectParamPanel.java 9500 2017-01-09 17:22:31Z bmarchan $ + */ +public class PivOrthoModePanel extends CtuluDialogPanel { + PivImplementation impl_; + JRadioButton rbScaling_; + JRadioButton rbOrtho_; + + /** + * Constructeur. + */ + public PivOrthoModePanel(PivImplementation _impl) { + impl_=_impl; + customize(); + } + + private void customize() { + rbScaling_ = new JRadioButton(PivResource.getS("Mise \xE0 l'\xE9chelle")); + rbOrtho_ = new JRadioButton(PivResource.getS("Orthorectification compl\xE8te")); + rbOrtho_.setSelected(true); + ButtonGroup bg=new ButtonGroup(); + bg.add(rbScaling_); + bg.add(rbOrtho_); + + setLayout(new BuVerticalLayout(2)); + setBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED)); + add(rbScaling_); + add(rbOrtho_); + } + + public void setModeFullOrtho(boolean _b) { + if (_b) { + rbOrtho_.setSelected(true); + } + else { + rbScaling_.setSelected(true); + } + + } + + public boolean isModeFullOrtho() { + return rbOrtho_.isSelected(); + } +} Property changes on: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivOrthoModePanel.java ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivChooseOrthoModeAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivChooseOrthoModeAction.java (rev 0) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivChooseOrthoModeAction.java 2017-03-13 09:26:10 UTC (rev 9539) @@ -0,0 +1,51 @@ +/* + * @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 org.fudaa.ctulu.gui.CtuluDialog; +import org.fudaa.ebli.commun.EbliActionSimple; +import org.fudaa.fudaa.piv.PivImplementation; +import org.fudaa.fudaa.piv.PivOrthoModePanel; +import org.fudaa.fudaa.piv.PivResource; + +/** + * Une action pour choisir le mode op\xE9ratoire de l'othorectification. + * + * @author Bertrand Marchand (mar...@de...) + * @version $Id: PivTransectParamAction.java 9132 2015-06-16 14:54:20Z bmarchan $ + */ +public class PivChooseOrthoModeAction extends EbliActionSimple { + PivImplementation impl; + + public PivChooseOrthoModeAction(PivImplementation _impl) { + super(PivResource.getS("Mode d'orthorectification..."), null, "DEFINE_ORTHO_MODE"); + impl=_impl; + setEnabled(false); + } + + /** + * Affiche le panneau des param\xE8tres de calcul. + * @param _e L'evenement pour l'action. + */ + @Override + public void actionPerformed(final ActionEvent _e) { + PivOrthoModePanel pn=new PivOrthoModePanel(impl); + pn.setModeFullOrtho(impl.getCurrentProject().isFullOrtho()); + + if (pn.afficheModale(impl.getFrame(), PivResource.getS("Mode d'orthorectification"),CtuluDialog.OK_CANCEL_OPTION)==CtuluDialog.OK_OPTION) { + impl.getCurrentProject().setFullOrtho(pn.isModeFullOrtho()); + } + } + + @Override + public String getEnableCondition() { + return PivResource.getS("Il doit exister au moins une image source"); + } +} Property changes on: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivChooseOrthoModeAction.java ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivCoeffReader.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivCoeffReader.java 2017-02-16 22:21:18 UTC (rev 9538) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivCoeffReader.java 2017-03-13 09:26:10 UTC (rev 9539) @@ -14,6 +14,8 @@ import org.fudaa.dodico.fortran.FileCharSimpleReaderAbstract; import org.fudaa.fudaa.piv.PivResource; +import gnu.trove.TDoubleArrayList; + /** * Un lecteur pour le fichier des coefficients d'orthorectification. * @@ -45,7 +47,7 @@ * @return les infos non bloquantes. */ private synchronized double[] readCoeffs() { - double[] coeffs=new double[0]; + TDoubleArrayList coeffs=new TDoubleArrayList(); if (super.in_ == null) { analyze_.addError(PivResource.getS("Flux d'entr\xE9e non trouv\xE9"), 0); @@ -59,15 +61,23 @@ in_.setJumpBlankLine(true); - // Nombre de coeffs in_.readFields(); - coeffs=new double[in_.intField(0)]; + // Nombre de coeffs (les anciens fichiers n'ont pas cette ligne) + try { + in_.intField(0); + } + catch (NumberFormatException _exc) { + coeffs.add(in_.doubleField(0)); + } - // Les coeffs - for (int i=0; i<coeffs.length; i++) { - in_.readFields(); - coeffs[i]=in_.doubleField(0); + // Les coeffs (jusqu'\xE0 la fin du fichier) + try { + while (true) { + in_.readFields(); + coeffs.add(in_.doubleField(0)); + } } + catch (EOFException _exc) {} if (progress_ != null) { progress_.setProgression(100); @@ -82,7 +92,7 @@ catch (final NumberFormatException e) { analyze_.manageException(e); } - return coeffs; + return coeffs.toNativeArray(); } /** 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 2017-02-16 22:21:18 UTC (rev 9538) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProject.java 2017-03-13 09:26:10 UTC (rev 9539) @@ -104,8 +104,8 @@ protected boolean areSrcImagesChanged=true; /** Les param\xE8tres de transformation du syteme initial vers le systeme de calcul. */ protected PivTransformationParameters transfParams=new PivTransformationParameters(); - /** Les coefficients de transformation pour l'orthorectification. 0 : On est en mise \xE0 l'echelle. */ - protected double[] coeffs=new double[0]; + /** Les coefficients de transformation pour l'orthorectification. Length=0 : On est en mise \xE0 l'echelle. */ + protected double[] coeffs=null; /** Les listeners notifi\xE9s lors d'une modification du projet. */ protected HashSet<PivProjectStateListener> listeners=new HashSet<PivProjectStateListener>(); @@ -750,11 +750,30 @@ } /** - * @return True, si le projet est en full ortho (ce n'est pas une mise \xE0 l'echelle). + * @return True, si le projet est en full ortho (par opposition \xE0 une mise \xE0 l'echelle). */ public boolean isFullOrtho() { - return coeffs!=null && coeffs.length>0; + return coeffs==null || coeffs.length>0; } + + /** + * Definit que le projet est en full ortho (ou en mise \xE0 l'\xE9chelle). + * @param _b True : Full ortho, False : Mise \xE0 l'echelle. + */ + public void setFullOrtho(boolean _b) { + if (_b==isFullOrtho()) + return; + + if (_b) { + coeffs=null; + } + else { + coeffs=new double[0]; + } + + isModified=true; + fireProjectStateChanged("orthoMode"); + } /** * Retourne les points d'orthorectification. Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProjectPersistence.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProjectPersistence.java 2017-02-16 22:21:18 UTC (rev 9538) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProjectPersistence.java 2017-03-13 09:26:10 UTC (rev 9539) @@ -25,6 +25,8 @@ import org.fudaa.fudaa.piv.io.PivBathyPReader; import org.fudaa.fudaa.piv.io.PivBathyReader; import org.fudaa.fudaa.piv.io.PivBathyWriter; +import org.fudaa.fudaa.piv.io.PivCoeffReader; +import org.fudaa.fudaa.piv.io.PivCoeffWriter; import org.fudaa.fudaa.piv.io.PivDischargeReader; import org.fudaa.fudaa.piv.io.PivGRPReader; import org.fudaa.fudaa.piv.io.PivGRPWriter; @@ -80,6 +82,13 @@ CtuluIOResult<PivOrthoPoint[]> ret = new PivGRPReader().read(grpFile, _prog); prj_.orthoPoints=ret.getSource(); } + + // Le fichier des coefficients ortho + File coeffFile=new File(prj_.getOutputDir(),"coeff.dat"); + if (coeffFile.exists()) { + CtuluIOResult<double[]> ret = new PivCoeffReader().read(coeffFile, _prog); + prj_.coeffs=ret.getSource(); + } // Les fichiers de parametres ortho File imgRefFile=new File(prj_.getOutputDir(),"img_ref.dat"); @@ -514,6 +523,12 @@ File grpFile=new File(prj_.getOutputDir(),"GRP.dat"); new PivGRPWriter().write(prj_.orthoPoints, grpFile, null); } + + // Le fichier des coefficients ortho + if (prj_.coeffs!=null) { + File coeffFile=new File(prj_.getOutputDir(),"coeff.dat"); + new PivCoeffWriter().write(prj_.coeffs, coeffFile, null); + } // Les fichiers de parametres ortho if (prj_.orthoParams!=null) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2017-03-13 21:46:38
|
Revision: 9542 http://sourceforge.net/p/fudaa/svn/9542 Author: bmarchan Date: 2017-03-13 21:46:36 +0000 (Mon, 13 Mar 2017) Log Message: ----------- LSPIV : Saisie des parametres de scaling Modified Paths: -------------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivScalingTransformationPanel.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivDefineParamScalingAction.java Added Paths: ----------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivScalingParamPanel.form trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivScalingParamPanel.java Copied: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivScalingParamPanel.form (from rev 9538, trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivOrthoParamPanel.form) =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivScalingParamPanel.form (rev 0) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivScalingParamPanel.form 2017-03-13 21:46:36 UTC (rev 9542) @@ -0,0 +1,130 @@ +<?xml version="1.0" encoding="UTF-8" ?> + +<Form version="1.3" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JPanelFormInfo"> + <Properties> + <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor"> + <Border info="org.netbeans.modules.form.compat2.border.EmptyBorderInfo"> + <EmptyBorder/> + </Border> + </Property> + </Properties> + <AuxValues> + <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/> + <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/> + <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/> + <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/> + <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/> + <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/> + <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/> + <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/> + <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/> + </AuxValues> + + <Layout> + <DimensionLayout dim="0"> + <Group type="103" groupAlignment="0" attributes="0"> + <Component id="pnPositions" alignment="0" max="32767" attributes="0"/> + </Group> + </DimensionLayout> + <DimensionLayout dim="1"> + <Group type="103" groupAlignment="0" attributes="0"> + <Component id="pnPositions" alignment="0" max="32767" attributes="0"/> + </Group> + </DimensionLayout> + </Layout> + <SubComponents> + <Container class="javax.swing.JPanel" name="pnPositions"> + <Properties> + <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor"> + <Border info="org.netbeans.modules.form.compat2.border.TitledBorderInfo"> + <TitledBorder title="Position des coins (m)"/> + </Border> + </Property> + </Properties> + + <Layout> + <DimensionLayout dim="0"> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" attributes="0"> + <Group type="103" groupAlignment="0" attributes="0"> + <Component id="lbXmin" alignment="0" min="-2" max="-2" attributes="0"/> + <Component id="lbYmin" alignment="0" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace min="-2" pref="8" max="-2" attributes="0"/> + <Group type="103" groupAlignment="0" attributes="0"> + <Component id="tfXmin" pref="83" max="32767" attributes="1"/> + <Component id="tfYmin" alignment="0" pref="76" max="32767" attributes="0"/> + </Group> + <EmptySpace type="unrelated" max="-2" attributes="0"/> + <Group type="103" groupAlignment="1" attributes="0"> + <Component id="lbYmax" min="-2" max="-2" attributes="0"/> + <Component id="lbXmax" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="0" attributes="0"> + <Component id="tfXmax" pref="85" max="32767" attributes="1"/> + <Component id="tfYmax" alignment="0" pref="78" max="32767" attributes="0"/> + </Group> + <EmptySpace max="-2" attributes="0"/> + </Group> + </Group> + </DimensionLayout> + <DimensionLayout dim="1"> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" alignment="0" attributes="0"> + <Group type="103" groupAlignment="3" attributes="0"> + <Component id="lbXmin" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="tfXmin" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="lbXmax" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="tfXmax" alignment="3" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="3" attributes="0"> + <Component id="lbYmax" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="tfYmax" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="lbYmin" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="tfYmin" alignment="3" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace max="32767" attributes="0"/> + </Group> + </Group> + </DimensionLayout> + </Layout> + <SubComponents> + <Component class="javax.swing.JLabel" name="lbXmin"> + <Properties> + <Property name="text" type="java.lang.String" value="Xmin:"/> + </Properties> + </Component> + <Component class="javax.swing.JTextField" name="tfXmin"> + <Properties> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.modules.form.RADConnectionPropertyEditor"> + <Connection code="new Dimension(50,tfXmin.getPreferredSize().height)" type="code"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="lbXmax"> + <Properties> + <Property name="text" type="java.lang.String" value="Xmax:"/> + </Properties> + </Component> + <Component class="javax.swing.JTextField" name="tfXmax"> + </Component> + <Component class="javax.swing.JLabel" name="lbYmax"> + <Properties> + <Property name="text" type="java.lang.String" value="Ymax:"/> + </Properties> + </Component> + <Component class="javax.swing.JTextField" name="tfYmax"> + </Component> + <Component class="javax.swing.JLabel" name="lbYmin"> + <Properties> + <Property name="text" type="java.lang.String" value="Ymin:"/> + </Properties> + </Component> + <Component class="javax.swing.JTextField" name="tfYmin"> + </Component> + </SubComponents> + </Container> + </SubComponents> +</Form> Copied: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivScalingParamPanel.java (from rev 9538, trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivOrthoParamPanel.java) =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivScalingParamPanel.java (rev 0) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivScalingParamPanel.java 2017-03-13 21:46:36 UTC (rev 9542) @@ -0,0 +1,235 @@ +package org.fudaa.fudaa.piv; + +import java.awt.Dimension; + +import org.fudaa.ctulu.gui.CtuluDialogPanel; +import org.fudaa.fudaa.piv.metier.PivOrthoParameters; + +/** + * Un panneau de saisie des param\xE8tres de scaling. + * + * @author Bertrand Marchand (mar...@de...) + * @version $Id$ + */ +public class PivScalingParamPanel extends CtuluDialogPanel { + PivImplementation impl_; + + /** + * Constructeur. + */ + public PivScalingParamPanel(PivImplementation _impl) { + impl_=_impl; + initComponents(); + customize(); + + PivOrthoParameters params=impl_.getCurrentProject().getOrthoParameters(); + if (params==null) + params=new PivOrthoParameters(); + setParams(params); + } + + private void customize() { + lbXmin.setText(PivResource.getS("Xmin: ")); + lbYmin.setText(PivResource.getS("Ymin: ")); + lbXmax.setText(PivResource.getS("Xmax: ")); + lbYmax.setText(PivResource.getS("Ymax: ")); + pnPositions.setBorder(javax.swing.BorderFactory.createTitledBorder(PivResource.getS("Position des coins (m)"))); + } + + /** + * Rempli le panneau depuis les donn\xE9es du projet. + * @param _params L'objet m\xE9tier pour l'orthorectification. + */ + public void setParams(PivOrthoParameters _params) { + tfXmin.setText("" + _params.getXmin()); + tfXmax.setText("" + _params.getXmax()); + tfYmin.setText("" + _params.getYmin()); + tfYmax.setText("" + _params.getYmax()); + } + + /** + * Met a jour les parametres d'ortho rectification donn\xE9s. + * @param _params Les parametres d'ortho rectification. + */ + public void retrieveParams(PivOrthoParameters _params) { + _params.setXmin(Double.parseDouble(tfXmin.getText().trim())); + _params.setYmin(Double.parseDouble(tfYmin.getText().trim())); + _params.setXmax(Double.parseDouble(tfXmax.getText().trim())); + _params.setYmax(Double.parseDouble(tfYmax.getText().trim())); + } + + @Override + public boolean isDataValid() { + boolean bok=false; + double xmin=0; + double xmax=0; + double ymin=0; + double ymax=0; + + try { + bok=false; + xmin=Double.parseDouble(tfXmin.getText().trim()); + bok=true; + } + catch (NumberFormatException _exc) {} + if (!bok) { + setErrorText(PivResource.getS("Xmin doit \xEAtre un r\xE9el")); + return false; + } + + try { + bok=false; + xmax=Double.parseDouble(tfXmax.getText().trim()); + bok=true; + } + catch (NumberFormatException _exc) {} + if (!bok) { + setErrorText(PivResource.getS("Xmax doit \xEAtre un r\xE9el")); + return false; + } + + if (xmin>=xmax) { + setErrorText(PivResource.getS("Xmax doit \xEAtre strictement sup\xE9rieur \xE0 Xmin")); + return false; + } + + try { + bok=false; + ymin=Double.parseDouble(tfYmin.getText().trim()); + bok=true; + } + catch (NumberFormatException _exc) {} + if (!bok) { + setErrorText(PivResource.getS("Ymin doit \xEAtre un r\xE9el")); + return false; + } + + try { + bok=false; + ymax=Double.parseDouble(tfYmax.getText().trim()); + bok=true; + } + catch (NumberFormatException _exc) {} + if (!bok) { + setErrorText(PivResource.getS("Ymax doit \xEAtre un r\xE9el")); + return false; + } + + if (ymin>=ymax) { + setErrorText(PivResource.getS("Ymax doit \xEAtre strictement sup\xE9rieur \xE0 Ymin")); + return false; + } + + return true; + } + + /** + * Surcharg\xE9 pour pouvoir pr\xE9visualiser l'image transform\xE9e sans sortir du + * dialogue. + */ + @Override + public void apply() { + PivOrthoParameters params=impl_.getCurrentProject().getOrthoParameters(); + if (params==null) + params=new PivOrthoParameters(); + + retrieveParams(params); + impl_.getCurrentProject().setOrthoParameters(params); + } + + /** This method is called from within the constructor to + * initialize the form. + * WARNING: Do NOT modify this code. The content of this method is + * always regenerated by the Form Editor. + */ + @SuppressWarnings("unchecked") + // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents + private void initComponents() { + + pnPositions = new javax.swing.JPanel(); + lbXmin = new javax.swing.JLabel(); + tfXmin = new javax.swing.JTextField(); + lbXmax = new javax.swing.JLabel(); + tfXmax = new javax.swing.JTextField(); + lbYmax = new javax.swing.JLabel(); + tfYmax = new javax.swing.JTextField(); + lbYmin = new javax.swing.JLabel(); + tfYmin = new javax.swing.JTextField(); + + setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 1)); + + pnPositions.setBorder(javax.swing.BorderFactory.createTitledBorder("Position des coins (m)")); + + lbXmin.setText("Xmin:"); + + tfXmin.setPreferredSize(new Dimension(50,tfXmin.getPreferredSize().height)); + + lbXmax.setText("Xmax:"); + + lbYmax.setText("Ymax:"); + + lbYmin.setText("Ymin:"); + + javax.swing.GroupLayout pnPositionsLayout = new javax.swing.GroupLayout(pnPositions); + pnPositions.setLayout(pnPositionsLayout); + pnPositionsLayout.setHorizontalGroup( + pnPositionsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(pnPositionsLayout.createSequentialGroup() + .addGroup(pnPositionsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(lbXmin) + .addComponent(lbYmin)) + .addGap(8, 8, 8) + .addGroup(pnPositionsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(tfXmin, javax.swing.GroupLayout.DEFAULT_SIZE, 83, Short.MAX_VALUE) + .addComponent(tfYmin, javax.swing.GroupLayout.DEFAULT_SIZE, 76, Short.MAX_VALUE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addGroup(pnPositionsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(lbYmax) + .addComponent(lbXmax)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(pnPositionsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(tfXmax, javax.swing.GroupLayout.DEFAULT_SIZE, 85, Short.MAX_VALUE) + .addComponent(tfYmax, javax.swing.GroupLayout.DEFAULT_SIZE, 78, Short.MAX_VALUE)) + .addContainerGap()) + ); + pnPositionsLayout.setVerticalGroup( + pnPositionsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(pnPositionsLayout.createSequentialGroup() + .addGroup(pnPositionsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(lbXmin) + .addComponent(tfXmin, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(lbXmax) + .addComponent(tfXmax, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(pnPositionsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(lbYmax) + .addComponent(tfYmax, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(lbYmin) + .addComponent(tfYmin, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + ); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); + this.setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(pnPositions, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(pnPositions, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + ); + }// </editor-fold>//GEN-END:initComponents + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JLabel lbXmax; + private javax.swing.JLabel lbXmin; + private javax.swing.JLabel lbYmax; + private javax.swing.JLabel lbYmin; + private javax.swing.JPanel pnPositions; + private javax.swing.JTextField tfXmax; + private javax.swing.JTextField tfXmin; + private javax.swing.JTextField tfYmax; + private javax.swing.JTextField tfYmin; + // End of variables declaration//GEN-END:variables +} Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivScalingTransformationPanel.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivScalingTransformationPanel.java 2017-03-13 16:37:57 UTC (rev 9541) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivScalingTransformationPanel.java 2017-03-13 21:46:36 UTC (rev 9542) @@ -289,6 +289,9 @@ } public void setParams(PivOrthoParameters _params) { + if (_params==null) + return; + GrPoint[] imgPoints = _params.getScalingImgPoints(); GrPoint[] realPoints = _params.getScalingRealPoints(); @@ -364,6 +367,9 @@ @Override public void apply() { PivOrthoParameters params=prj_.getOrthoParameters(); + if (params==null) + params = new PivOrthoParameters(); + retrieveParams(params); prj_.setOrthoParameters(params); } Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivDefineParamScalingAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivDefineParamScalingAction.java 2017-03-13 16:37:57 UTC (rev 9541) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivDefineParamScalingAction.java 2017-03-13 21:46:36 UTC (rev 9542) @@ -8,19 +8,12 @@ package org.fudaa.fudaa.piv.action; import java.awt.event.ActionEvent; -import java.io.File; -import org.fudaa.ctulu.CtuluLog; 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.PivManageOriginalFilesPanel; -import org.fudaa.fudaa.piv.PivProgressionPanel; import org.fudaa.fudaa.piv.PivResource; -import org.fudaa.fudaa.piv.PivVisuPanel; -import org.fudaa.fudaa.piv.io.PivExeLauncher; +import org.fudaa.fudaa.piv.PivScalingParamPanel; /** * Une action pour selectionner et reconditionner les images sources. @@ -30,7 +23,7 @@ */ public class PivDefineParamScalingAction extends EbliActionSimple { PivImplementation impl; - PivManageOriginalFilesPanel pnMngImages; + PivScalingParamPanel pnParams; CtuluDialog diProgress_; /** @@ -54,60 +47,9 @@ return; } - if (!PivExeLauncher.instance().areExeOK()) { - PivExePanel pnExe = new PivExePanel(); - - // TODO BM : Verifier que les nouvelles images sont compatibles avec les donn\xE9es d'ortho ou message. - - if (!pnExe.afficheModaleOk(impl.getFrame(), PivResource.getS("R\xE9pertoire contenant les executables"))) { - return; - } - } - // Selection des images - if (pnMngImages==null) - pnMngImages = new PivManageOriginalFilesPanel(impl); - pnMngImages.setRootProject(impl.getCurrentProject().getRoot()); - pnMngImages.setFiles(impl.getCurrentProject().getSrcImageFiles()); - if (!pnMngImages.afficheModaleOk(impl.getFrame(), PivResource.getS("Gestion des images"), CtuluDialog.OK_CANCEL_OPTION)) { - return; - } - - final File[] srcImgFiles=pnMngImages.getFiles(); - - // Le reconditionnement des images. - CtuluTaskOperationGUI r=new CtuluTaskOperationGUI(impl, PivResource.getS("Traitement des images sources")) { - - @Override - public void act() { - try { - CtuluLog ana=new CtuluLog(); - ana.setDesc(getName()); - impl.getCurrentProject().setSrcImagesFiles(srcImgFiles, this, ana); - - if (ana.containsErrorOrSevereError()) { - impl.error(ana.getResume()); - return; - } - - } - finally { - diProgress_.dispose(); - } - } - }; - - 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(); - - impl.get2dFrame().getVisuPanel().setViewMode(PivVisuPanel.MODE_ORIGINAL_VIEW); - impl.get2dFrame().restaurer(); + pnParams = new PivScalingParamPanel(impl); + pnParams.affiche(impl.getFrame(), PivResource.getS("Param\xE8tres"), CtuluDialog.OK_CANCEL_OPTION); } /** This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |