You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
SIPRP/trunk/siprp/medicina/processo/ProcessoPanel.java

245 lines
6.6 KiB

/*
* ProcessoPanel.java
*
* Created on March 21, 2007, 9:11 AM
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package siprp.medicina.processo;
import com.evolute.utils.dataui.ControllableComponent;
import com.evolute.utils.images.ImageIconLoader;
import com.evolute.utils.ui.DialogException;
import info.clearthought.layout.TableLayout;
import info.clearthought.layout.TableLayoutConstraints;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;
import java.util.Vector;
import javax.swing.*;
import siprp.medicina.processo.data.MarcacoesProcessoData;
/**
*
* @author fpalma
*/
public class ProcessoPanel extends JPanel
implements ActionListener, ControllableComponent
{
private static final String ECDS_ICON_PATH = "siprp/medicina/processo/icons/ecds.png";
private static final String CONSULTA_ICON_PATH = "siprp/medicina/processo/icons/consulta.png";
private static final String FICHA_APTIDAO_ICON_PATH = "siprp/medicina/processo/icons/fichaaptidao.png";
private static final String FECHAR_ICON_PATH = "siprp/medicina/processo/icons/lock.png";
private static final DateFormat D_F = DateFormat.getDateInstance( DateFormat.SHORT, new Locale( "pt", "PT" ) );
private JTextField estadoText;
private JTextField inicioText;
private JTextField fimText;
private JButton motivoButton;
private JButton ocasionalMotivoButton;
private JButton novoECDButton;
private JButton novaConsultaButton;
private JButton emitirFAButton;
private JButton fecharButton;
private final Vector<ProcessoListener> PROCESSO_LISTENERS = new Vector<ProcessoListener>();
private ProcessoDataProvider provider;
/** Creates a new instance of ProcessoPanel */
public ProcessoPanel()
throws Exception
{
provider = ProcessoDataProvider.getProvider();
setupComponents();
}
private void setupComponents()
{
motivoButton = new JButton( "Motivo" );
ocasionalMotivoButton = new JButton( " " );
JLabel estadoLabel = new JLabel( "Estado" );
estadoText = new JTextField();
estadoText.setPreferredSize( new Dimension( 120, 20 ) );
estadoText.setEditable( false );
JLabel inicioLabel = new JLabel( "In\u00edcio" );
inicioText = new JTextField();
inicioText.setPreferredSize( new Dimension( 120, 20 ) );
inicioText.setEditable( false );
JLabel fimLabel = new JLabel( "Fim" );
fimText = new JTextField();
fimText.setPreferredSize( new Dimension( 120, 20 ) );
fimText.setEditable( false );
novoECDButton = new JButton( "Marcar ECDs" );
novoECDButton.setIcon( getIcon( ECDS_ICON_PATH ) );
novoECDButton.addActionListener( this );
novaConsultaButton = new JButton( "Marcar Consulta" );
novaConsultaButton.setIcon( getIcon( CONSULTA_ICON_PATH ) );
novaConsultaButton.addActionListener( this );
emitirFAButton = new JButton( "Ficha de Aptid\u00e3o" );
emitirFAButton.setIcon( getIcon( FICHA_APTIDAO_ICON_PATH ) );
emitirFAButton.addActionListener( this );
fecharButton = new JButton( "Fechar Processo" );
fecharButton.setIcon( getIcon( FECHAR_ICON_PATH ) );
fecharButton.addActionListener( this );
JPanel buttonPanel = new JPanel();
double cols[] =
new double[]{ TableLayout.MINIMUM, TableLayout.PREFERRED, TableLayout.FILL };
double rows[] =
new double[]{ TableLayout.PREFERRED, TableLayout.PREFERRED, TableLayout.PREFERRED,
TableLayout.PREFERRED, TableLayout.FILL };
TableLayout tableLayout = new TableLayout( cols, rows );
setLayout( tableLayout );
add( motivoButton, new TableLayoutConstraints( 0, 0, 1, 0 ) );
add( ocasionalMotivoButton, new TableLayoutConstraints( 2, 0 ) );
add( estadoLabel, new TableLayoutConstraints( 0, 1 ) );
add( estadoText, new TableLayoutConstraints( 1, 1 ) );
add( inicioLabel, new TableLayoutConstraints( 0, 2 ) );
add( inicioText, new TableLayoutConstraints( 1, 2 ) );
add( fimLabel, new TableLayoutConstraints( 0, 3 ) );
add( fimText, new TableLayoutConstraints( 1, 3 ) );
add( buttonPanel, new TableLayoutConstraints( 2, 1, 2, 3 ) );
buttonPanel.setLayout( new GridLayout( 2, 2 ) );
buttonPanel.add( novoECDButton );
buttonPanel.add( novaConsultaButton );
buttonPanel.add( emitirFAButton );
buttonPanel.add( fecharButton );
}
public void actionPerformed(ActionEvent e)
{
Object source = e.getSource();
if( source.equals( novoECDButton ) )
{
novoECD();
}
else if( source.equals( novaConsultaButton ) )
{
novaConsulta();
}
else if( source.equals( emitirFAButton ) )
{
emitirFA();
}
else if( source.equals( fecharButton ) )
{
fecharProcesso();
}
}
protected void novoECD()
{
}
protected void novaConsulta()
{
}
protected void emitirFA()
{
}
protected void fecharProcesso()
{
}
public void clear()
{
estadoText.setText( "" );
inicioText.setText( "" );
fimText.setText( "" );
motivoButton.setText( "Motivo" );
ocasionalMotivoButton.setText( " " );
}
protected void enableButtons( boolean enable )
{
novoECDButton.setEnabled( enable );
novaConsultaButton.setEnabled( enable );
emitirFAButton.setEnabled( enable );
fecharButton.setEnabled( enable );
motivoButton.setEnabled( enable );
ocasionalMotivoButton.setEnabled( enable );
}
public void addProcessoListener( ProcessoListener listener )
{
PROCESSO_LISTENERS.add( listener );
}
public Icon getIcon( String path )
{
try
{
return ImageIconLoader.loadImageIcon( getClass(), path );
}
catch( Exception ex )
{
ex.printStackTrace();
return null;
}
}
public Object save()
{
return null;
}
public void enableComponents( boolean enable )
{
}
public void fill( Object value )
{
clear();
if( value == null )
{
enableButtons( false );
}
else
{
try
{
MarcacoesProcessoData processo = provider.getProcessoByID( ( Integer ) value );
enableButtons( false );
Date dataInicio = ( Date ) processo.get( MarcacoesProcessoData.DATA_INICIO );
if( dataInicio != null )
{
inicioText.setText( D_F.format( dataInicio ) );
}
Date dataFim = ( Date ) processo.get( MarcacoesProcessoData.DATA_FIM );
if( dataFim != null )
{
fimText.setText( D_F.format( dataFim ) );
}
String estado = ( String ) processo.get( MarcacoesProcessoData.ESTADO );
if( estado == null )
{
estadoText.setText( ProcessoDataProvider.PROCESSO_POR_ABRIR_DESCRIPTION );
}
else
{
estadoText.setText( ProcessoDataProvider.ESTADO_PROCESSO_BY_CODE.get( estado ) );
}
}
catch( Exception ex )
{
DialogException.showExceptionMessage( ex, "Erro a carregar dados do processo", true );
}
}
}
}