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