From 204030565f69d02938de15808e7473b653caa559 Mon Sep 17 00:00:00 2001 From: Frederico Palma Date: Mon, 10 Sep 2007 16:42:07 +0000 Subject: [PATCH] git-svn-id: https://svn.coded.pt/svn/SIPRP@566 bb69d46d-e84e-40c8-a05a-06db0d633741 --- .../processo/detalhes/ProcessoInfoPanel.java | 162 ++++++++++++++++-- 1 file changed, 149 insertions(+), 13 deletions(-) diff --git a/trunk/SIPRPSoft/src/siprp/medicina/processo/detalhes/ProcessoInfoPanel.java b/trunk/SIPRPSoft/src/siprp/medicina/processo/detalhes/ProcessoInfoPanel.java index eef9c165..ef9621c7 100644 --- a/trunk/SIPRPSoft/src/siprp/medicina/processo/detalhes/ProcessoInfoPanel.java +++ b/trunk/SIPRPSoft/src/siprp/medicina/processo/detalhes/ProcessoInfoPanel.java @@ -4,25 +4,47 @@ import info.clearthought.layout.TableLayout; import info.clearthought.layout.TableLayoutConstraints; import java.awt.GridLayout; +import java.text.DateFormat; +import java.util.Arrays; +import java.util.Date; +import java.util.HashMap; +import java.util.Locale; +import java.util.Vector; import javax.swing.BorderFactory; import javax.swing.JFrame; +import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; +import javax.swing.JTextField; +import siprp.medicina.MedicinaConstants; +import siprp.medicina.MedicinaDataProvider; import siprp.medicina.processo.ProcessoDataProvider; +import siprp.medicina.processo.data.TrabalhadoresConsultasData; +import siprp.medicina.processo.data.TrabalhadoresProcessoData; +import com.evolute.utils.dataui.ControllableComponent; import com.evolute.utils.tables.BaseTable; +import com.evolute.utils.tables.ColumnizedObjectArray; import com.evolute.utils.tables.VectorTableModel; +import com.evolute.utils.ui.DialogException; public class ProcessoInfoPanel - extends JPanel + extends JPanel + implements ControllableComponent { + protected static final DateFormat D_F = DateFormat.getDateInstance( DateFormat.SHORT, new Locale( "pt", "PT" ) ); + protected JFrame owner; + protected JTextField descricaoText; + protected JTextField estadoECDsText; protected BaseTable ecdsTable; protected VectorTableModel ecdsModel; + protected JTextField estadoConsultasText; protected BaseTable consultasTable; protected VectorTableModel consultasModel; + protected JTextField estadoFichaAptidaoText; protected BaseTable fichaAptidaoTable; protected VectorTableModel fichaAptidaoModel; @@ -38,16 +60,27 @@ public class ProcessoInfoPanel private void setupComponents() { + descricaoText = new JTextField(); + descricaoText.setEditable( false ); + JLabel estadoECDsLabel = new JLabel( "Estado" ); + estadoECDsText = new JTextField(); + estadoECDsText.setEditable( false ); ecdsModel = new VectorTableModel( new String[]{ "Situa\u00e7\u00e3o", "#", "\u00DAltima Data" } ); ecdsTable = new BaseTable( ecdsModel ); JScrollPane ecdsScroll = new JScrollPane( ecdsTable, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED ); + JLabel estadoConsultasLabel = new JLabel( "Estado" ); + estadoConsultasText = new JTextField(); + estadoConsultasText.setEditable( false ); consultasModel = new VectorTableModel( new String[]{ "Situa\u00e7\u00e3o", "#", "\u00DAltima Data" } ); consultasTable = new BaseTable( consultasModel ); JScrollPane consultasScroll = new JScrollPane( consultasTable, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED ); + JLabel estadoFichaAptidaoLabel = new JLabel( "Estado" ); + estadoFichaAptidaoText = new JTextField(); + estadoFichaAptidaoText.setEditable( false ); fichaAptidaoModel = new VectorTableModel( new String[]{ "Situa\u00e7\u00e3o", "Resultado", "\u00DAltima Data" } ); fichaAptidaoTable = new BaseTable( fichaAptidaoModel ); JScrollPane fichaAptidaoScroll = @@ -59,35 +92,138 @@ public class ProcessoInfoPanel BorderFactory.createTitledBorder( BorderFactory.createEtchedBorder(), "ECDs") ); - ecdsPanel.setLayout( new GridLayout( 1, 1 ) ); - ecdsPanel.add( ecdsScroll ); + double ecdsRows[] = new double[]{ TableLayoutConstraints.MINIMUM, TableLayoutConstraints.FILL }; + double ecdsCols[] = new double[]{ TableLayoutConstraints.MINIMUM, TableLayoutConstraints.FILL }; + TableLayout ecdsLayout = new TableLayout( ecdsCols, ecdsRows ); + ecdsPanel.setLayout( ecdsLayout ); + ecdsPanel.add( estadoECDsLabel, new TableLayoutConstraints( 0, 0 ) ); + ecdsPanel.add( estadoECDsText, new TableLayoutConstraints( 1, 0 ) ); + ecdsPanel.add( ecdsScroll, new TableLayoutConstraints( 0, 1, 1, 1 ) ); JPanel consultasPanel = new JPanel(); consultasPanel.setBorder( BorderFactory.createTitledBorder( BorderFactory.createEtchedBorder(), "Consultas") ); - consultasPanel.setLayout( new GridLayout( 1, 1 ) ); - consultasPanel.add( consultasScroll ); + double consultasRows[] = new double[]{ TableLayoutConstraints.MINIMUM, TableLayoutConstraints.FILL }; + double consultasCols[] = new double[]{ TableLayoutConstraints.MINIMUM, TableLayoutConstraints.FILL }; + TableLayout consultasLayout = new TableLayout( consultasCols, consultasRows ); + consultasPanel.setLayout( consultasLayout ); + consultasPanel.add( estadoConsultasLabel, new TableLayoutConstraints( 0, 0 ) ); + consultasPanel.add( estadoConsultasText, new TableLayoutConstraints( 1, 0 ) ); + consultasPanel.add( consultasScroll, new TableLayoutConstraints( 0, 1, 1, 1 ) ); JPanel fichaAptidaoPanel = new JPanel(); fichaAptidaoPanel.setBorder( BorderFactory.createTitledBorder( BorderFactory.createEtchedBorder(), "Ficha de Aptid\u00e3o") ); - fichaAptidaoPanel.setLayout( new GridLayout( 1, 1 ) ); - fichaAptidaoPanel.add( fichaAptidaoScroll ); - + double fichaAptidaoRows[] = new double[]{ TableLayoutConstraints.MINIMUM, TableLayoutConstraints.FILL }; + double fichaAptidaoCols[] = new double[]{ TableLayoutConstraints.MINIMUM, TableLayoutConstraints.FILL }; + TableLayout fichaAptidaoLayout = new TableLayout( fichaAptidaoCols, fichaAptidaoRows ); + fichaAptidaoPanel.setLayout( fichaAptidaoLayout ); + fichaAptidaoPanel.add( estadoFichaAptidaoLabel, new TableLayoutConstraints( 0, 0 ) ); + fichaAptidaoPanel.add( estadoFichaAptidaoText, new TableLayoutConstraints( 1, 0 ) ); + fichaAptidaoPanel.add( fichaAptidaoScroll, new TableLayoutConstraints( 0, 1, 1, 1 ) ); - double rows[] = new double[]{ TableLayoutConstraints.FILL, TableLayoutConstraints.FILL, - TableLayoutConstraints.FILL }; + double rows[] = new double[]{ TableLayoutConstraints.MINIMUM, TableLayoutConstraints.FILL, + TableLayoutConstraints.FILL, TableLayoutConstraints.FILL }; double cols[] = new double[]{ TableLayoutConstraints.FILL }; TableLayout layout = new TableLayout( cols, rows ); layout.setHGap( 5 ); layout.setVGap( 5 ); setLayout( layout ); - add( ecdsPanel, new TableLayoutConstraints( 0, 0 ) ); - add( consultasPanel, new TableLayoutConstraints( 0, 1 ) ); - add( fichaAptidaoPanel, new TableLayoutConstraints( 0, 2 ) ); + add( descricaoText, new TableLayoutConstraints( 0, 0 ) ); + add( ecdsPanel, new TableLayoutConstraints( 0, 1 ) ); + add( consultasPanel, new TableLayoutConstraints( 0, 2 ) ); + add( fichaAptidaoPanel, new TableLayoutConstraints( 0, 3 ) ); + } + + @Override + public void setEnabled( boolean enabled ) + { + // TODO Auto-generated method stub + super.setEnabled( enabled ); + } + + @Override + public void clear() + { + descricaoText.setText( "" ); + ecdsModel.clearAll(); + consultasModel.clearAll(); + fichaAptidaoModel.clearAll(); + } + + @Override + public Object save() + { + // TODO Auto-generated method stub + return null; + } + + @Override + public void fill( Object value ) + { + clear(); + Integer id = ( Integer ) value; + if( id != null ) + { + try + { + TrabalhadoresProcessoData processo = processoProvider.getProcessoByID( id ); + if( processo == null ) + { + throw new Exception( "Processo n\u00e3o existente: " + id ); + } + Date dataInicio = ( Date ) processo.get( TrabalhadoresProcessoData.DATA_INICIO ); + Date dataFim = ( Date ) processo.get( TrabalhadoresProcessoData.DATA_FIM ); + String codigoEstado = ( String ) processo.get( TrabalhadoresProcessoData.ESTADO ); + String estado = processoProvider.getDescricaoEstadoProcessoByCodigo( codigoEstado ); + String desc = D_F.format( dataInicio ); + Integer motivo = ( Integer ) processo.get( TrabalhadoresProcessoData.MOTIVO ); + desc += ": " + MedicinaDataProvider.MOTIVOS_BY_ID.get( motivo ) + " : " + estado; + descricaoText.setText( desc ); + + Integer consultaIds[] = processoProvider.getConsultaIDsForProcesso( id ); + Arrays.sort( consultaIds ); + HashMap numeroConsultasPorEstado = new HashMap(); + HashMap dataConsultaPorEstado = new HashMap(); + for( int n = 0; n < consultaIds.length; n++ ) + { + TrabalhadoresConsultasData consulta = processoProvider.getConsultaByID( consultaIds[ n ] ); + Date dataConsulta = ( Date ) consulta.get( TrabalhadoresConsultasData.DATA ); + Integer estadoConsulta = ( Integer ) consulta.get( TrabalhadoresConsultasData.ESTADO ); + if( estadoConsulta != null ) + { + Integer oldCount = numeroConsultasPorEstado.get( estadoConsulta ); + if( oldCount == null ) + { + oldCount = new Integer( 0 ); + } + numeroConsultasPorEstado.put( estadoConsulta, new Integer( oldCount.intValue() + 1 ) ); + } + dataConsultaPorEstado.put( estadoConsulta, dataConsulta ); + } + Vector consultasValues = consultasModel.getValues(); + Integer estadosConsultaUsados[] = numeroConsultasPorEstado.keySet().toArray( new Integer[ numeroConsultasPorEstado.size() ] ); + Arrays.sort( estadosConsultaUsados ); + for( int n = 0; n < estadosConsultaUsados.length; n++ ) + { + String estadoStr = MedicinaConstants.ESTADOS_CONSULTA_STR[ estadosConsultaUsados[ n ].intValue() ]; + Integer numero = numeroConsultasPorEstado.get( estadosConsultaUsados[ n ] ); + Date dataUltimaConsulta = dataConsultaPorEstado.get( estadosConsultaUsados ); + Object linha[] = new Object[]{ estadoStr, numero, dataUltimaConsulta }; + consultasValues.add( new ColumnizedObjectArray( linha, false ) ); + } + consultasModel.setValues( consultasValues ); + } + catch( Exception ex ) + { + DialogException.showExceptionMessage( ex, "Erro a carregar dados do processo", true ); + return; + } + } + } }