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