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/ficha/UpperPanel.java

276 lines
7.0 KiB

/*
* UpperPanel.java
*
* Created on 29 de Março de 2004, 17:44
*/
package siprp.ficha;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
import com.evolute.utils.*;
import com.evolute.utils.data.*;
import com.evolute.utils.dataui.*;
import com.evolute.utils.jdo.*;
import com.evolute.utils.metadb.*;
import com.evolute.utils.ui.*;
import com.evolute.utils.ui.text.*;
import siprp.*;
import siprp.data.*;
/**
*
* @author fpalma
*/
public class UpperPanel extends JPanel
implements ControllableComponent, ItemListener
{
protected JDOProvider JDO;
protected JFrame owner;
private JTextField empresaText;
private JTextField nomeText;
private JComboBox medicosCombo;
private JTextField cpText;
private FichaDataProvider provider;
private Hashtable medicosHash;
/** Creates a new instance of UpperPanel */
public UpperPanel()
throws Exception
{
provider = (FichaDataProvider)FichaDataProvider.getProvider();
medicosHash = new Hashtable();
JDO = ( JDOProvider ) Singleton.getInstance( Singleton.DEFAULT_JDO_PROVIDER );
setupComponents();
}
private void setupComponents()
throws Exception
{
JLabel empresaLabel = new JLabel( "Empresa/Entidade" );
empresaText = new JTextField();
empresaText.setEditable( false );
JLabel nomeLabel = new JLabel( "Nome" );
nomeText = new JTextField();
nomeText.setEditable( false );
JLabel medicoLabel = new JLabel( "M\u00e9dico" );
medicosCombo = new JComboBox();
JLabel cpLabel = new JLabel( "c.p." );
cpText = new JTextField();
cpText.setEditable( false );
fillCombo();
GridBagLayout gridbag = new GridBagLayout();
setLayout( gridbag );
GridBagConstraints constraints = new GridBagConstraints();
constraints.insets = new Insets( 0, 1, 0, 1 );
constraints.fill = GridBagConstraints.HORIZONTAL;
constraints.gridheight = 1;
constraints.weighty = 0;
constraints.gridwidth = 1;
constraints.weightx = 0;
gridbag.setConstraints( empresaLabel, constraints );
add( empresaLabel );
constraints.gridwidth = GridBagConstraints.REMAINDER;
constraints.weightx = 1;
gridbag.setConstraints( empresaText, constraints );
add( empresaText );
constraints.gridwidth = 1;
constraints.weightx = 0;
gridbag.setConstraints( nomeLabel, constraints );
add( nomeLabel );
constraints.gridwidth = GridBagConstraints.REMAINDER;
constraints.weightx = 1;
gridbag.setConstraints( nomeText, constraints );
add( nomeText );
constraints.gridwidth = 1;
constraints.weightx = 0;
gridbag.setConstraints( medicoLabel, constraints );
add( medicoLabel );
constraints.gridwidth = 1;
constraints.weightx = 0.8;
gridbag.setConstraints( medicosCombo, constraints );
add( medicosCombo );
constraints.gridwidth = 1;
constraints.weightx = 0;
gridbag.setConstraints( cpLabel, constraints );
add( cpLabel );
constraints.gridwidth = GridBagConstraints.REMAINDER;
constraints.weightx = 0.2;
gridbag.setConstraints( cpText, constraints );
add( cpText );
new CopyPasteHandler( empresaText );
new CopyPasteHandler( nomeText );
new CopyPasteHandler( cpText );
}
public void fill(Object value)
{
Integer values[] = (Integer[])value;
Integer empresaID = values[0];
Integer estabelecimentoID = values[1];
Integer trabalhadorID = values[2];
clear();
try
{
TrabalhadorData trabalhador;
EstabelecimentoData estabelecimento;
EmpresaData empresa;
if( trabalhadorID != null )
{
trabalhador = ( TrabalhadorData ) JDO.load( TrabalhadorData.class, trabalhadorID );
String nome = (String) trabalhador.get( TrabalhadorData.NOME );
nomeText.setText( nome );
}
String nomeEstabelecimento = "";
if( estabelecimentoID != null )
{
estabelecimento = ( EstabelecimentoData ) JDO.load( EstabelecimentoData.class, estabelecimentoID );
nomeEstabelecimento = (String) estabelecimento.get( EstabelecimentoData.NOME );
}
if( empresaID != null )
{
empresa = ( EmpresaData ) JDO.load( EmpresaData.class, empresaID );
String nomeEmpresa = (String) empresa.get( EmpresaData.DESIGNACAO_SOCIAL );
empresaText.setText( nomeEmpresa + ( nomeEstabelecimento.length() > 0?" / " + nomeEstabelecimento:"" ) );
}
}
catch( Exception ex )
{
DialogException.showExceptionMessage( ex, "Erro a carregar os dados do cabe\u00e7alho...", true );
}
}
public Object save()
{
Integer id = ( (IDObject) medicosCombo.getSelectedItem() ).getID();
if( id != null )
{
try
{
MedicoData medico = ( MedicoData )JDO.load( MedicoData.class, id );
return medico;
}
catch( Exception ex )
{
ex.printStackTrace();
}
}
else
{
throw new ValuesException( "A ficha tem de ter um m\u00e9dico associado" );
}
return null;
}
public void fillCombo()
throws Exception
{
medicosCombo.removeItemListener( this );
medicosCombo.removeAllItems();
medicosHash.clear();
Object medicos[][] = provider.getAllMedicos();
for( int n = 0; n < medicos.length; n++ )
{
Object medico[] = new Object[ 4 ];
medico[ 0 ] = new Integer( ( (Number)medicos[n][0] ).intValue() );
medico[ 1 ] = medicos[ n ][ 1 ];
medico[ 2 ] = medicos[ n ][ 2 ];
medico[ 3 ] = new Integer( n );
medicosHash.put( medicos[ n ][ 0 ], medico );
medicosCombo.addItem( new MappableObject( (Integer) medico[ 0 ], medico[ 1 ] ) );
}
if( medicos.length > 0 )
{
medicosCombo.setSelectedIndex( 0 );
cpText.setText( medicos[ 0 ][ 2 ] != null?(String)medicos[ 0 ][ 2 ]:"" );
}
else
{
medicosCombo.addItem( new MappableObject( null, "" ) );
medicosCombo.setSelectedIndex( 0 );
cpText.setText( "" );
}
medicosCombo.addItem( new MappableObject( new Integer( -1 ), "Novo/Editar" ) );
medicosCombo.addItemListener( this );
}
public void itemStateChanged(java.awt.event.ItemEvent itemEvent)
{
int index = medicosCombo.getSelectedIndex();
if( index == medicosCombo.getItemCount() - 1 )
{
try
{
MedicoEditor me = new MedicoEditor( owner );
me.show();
// boolean isNew = me.getIsNew();
Integer id = me.getID();
if( id == null )
{
medicosCombo.setSelectedIndex( 0 );
}
else
{
fillCombo();
if( id != null )
{
Object[] medico = (Object[])medicosHash.get( id );
medicosCombo.setSelectedIndex( ((Integer)medico[ 3 ] ).intValue() );
}
}
}
catch( Exception ex )
{
JOptionPane.showMessageDialog( null, "Erro a abrir a janela de edi\u00e7\u00e3o...", "Erro...",
JOptionPane.ERROR_MESSAGE );
ex.printStackTrace();
medicosCombo.setSelectedIndex( 0 );
return;
}
}
else
{
IDObject selected = (IDObject)medicosCombo.getItemAt( index );
Integer id = selected.getID();
if( id == null )
{
cpText.setText( "" );
}
else
{
Object[] medico = (Object[])medicosHash.get( id );
cpText.setText( medico[ 2 ] != null?(String)medico[ 2 ]:"" );
}
}
}
public void clear()
{
empresaText.setText( "" );
nomeText.setText( "" );
medicosCombo.setSelectedIndex( 0 );
}
public void setEnabled( boolean enable )
{
medicosCombo.setEnabled( enable );
}
}