/* * 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.TrabalhadoresProcessoData; /** * * @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 PROCESSO_LISTENERS = new Vector(); 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 { TrabalhadoresProcessoData processo = provider.getProcessoByID( ( Integer ) value ); enableButtons( false ); Date dataInicio = ( Date ) processo.get( TrabalhadoresProcessoData.DATA_INICIO ); if( dataInicio != null ) { inicioText.setText( D_F.format( dataInicio ) ); } Date dataFim = ( Date ) processo.get( TrabalhadoresProcessoData.DATA_FIM ); if( dataFim != null ) { fimText.setText( D_F.format( dataFim ) ); } String estado = ( String ) processo.get( TrabalhadoresProcessoData.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 ); } } } }