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/TrabalhadorPanel.java

321 lines
9.7 KiB

/*
* TrabalhadorPanel.java
*
* Created on 29 de Março de 2004, 11:55
*/
package siprp.ficha;
import java.awt.*;
import javax.swing.*;
import java.util.*;
import com.evolute.utils.data.*;
import com.evolute.utils.dataui.*;
import com.evolute.utils.metadb.*;
import com.evolute.utils.ui.*;
import com.evolute.utils.ui.panel.*;
import siprp.*;
/**
*
* @author fpalma
*/
public class TrabalhadorPanel extends JPanel
implements ControllableComponent
{
private JTextField nomeText;
private RadioButtonFixedPanel sexoPanel;
private JCalendarPanel dataNascimentoPanel;
private JTextField nacionalidadeText;
private JTextField numeroMecanograficoText;
private JCalendarPanel dataAdmissaoPanel;
private JTextField categoriaText;
private JTextField localText;
private JTextField funcaoText;
private JCalendarPanel dataAdmissaoFuncaoPanel;
private ComponentsHashtable components;
private FichaDataProvider provider;
private MetaObject trabalhador;
/** Creates a new instance of TrabalhadorPanel */
public TrabalhadorPanel()
throws Exception
{
provider = (FichaDataProvider)FichaDataProvider.getProvider();
setupComponents();
setupComponentsHashtable();
}
private void setupComponents()
{
setBorder( BorderFactory.createTitledBorder(
BorderFactory.createEtchedBorder(),
"Trabalhador" ) );
JLabel nomeLabel = new JLabel( "Nome" );
nomeText = new JTextField();
JLabel sexoLabel = new JLabel( "Sexo" );
sexoPanel =
new RadioButtonFixedPanel(
new IDObject[]{ new MappableObject( new Integer( 1 ), "M" ),
new MappableObject( new Integer( 2 ), "F" ) },
1, 2, RadioButtonPanel.ORIENTATION_HORIZONTAL, false );
JLabel dataNascimentoLabel = new JLabel( "Data de Nascimento" );
dataNascimentoPanel = new JCalendarPanel( null );
JLabel nacionalidadeLabel = new JLabel( "Nacionalidade" );
nacionalidadeText = new JTextField();
JLabel numeroMecanograficoLabel = new JLabel( "N\u00famero Mecanogr\u00e1fico/outro" );
numeroMecanograficoText = new JTextField();
JLabel dataAdmissaoLabel = new JLabel( "Data de Admiss\u00e3o" );
dataAdmissaoPanel = new JCalendarPanel( null );
JLabel categoriaLabel = new JLabel( "Categoria Profissional" );
categoriaText = new JTextField();
JLabel localLabel = new JLabel( "Local de Trabalho" );
localText = new JTextField();
JLabel funcaoLabel = new JLabel( "Fun\u00e7\u00e3o proposta" );
funcaoText = new JTextField();
JLabel dataAdmissaoFuncaoLabel = new JLabel( "Data de Admiss\u00e3o na Fun\u00e7\u00e3o" );
dataAdmissaoFuncaoPanel = new JCalendarPanel( null );
GridBagLayout gridbag = new GridBagLayout();
setLayout( gridbag );
GridBagConstraints constraints = new GridBagConstraints();
constraints.insets = new Insets( 0, 1, 0, 1 );
constraints.fill = GridBagConstraints.HORIZONTAL;
constraints.weighty = 0;
constraints.gridheight = 1;
constraints.gridwidth = 1;
constraints.weightx = 0;
gridbag.setConstraints( nomeLabel, constraints );
add( nomeLabel );
constraints.weightx = 1;
constraints.gridwidth = 3;
gridbag.setConstraints( nomeText, constraints );
add( nomeText );
constraints.gridwidth = 1;
constraints.weightx = 0;
gridbag.setConstraints( sexoLabel, constraints );
add( sexoLabel );
constraints.weightx = 0;
//constraints.gridwidth = 1;
constraints.gridwidth = GridBagConstraints.REMAINDER;
gridbag.setConstraints( sexoPanel, constraints );
add( sexoPanel );
constraints.weightx = 0;
constraints.gridwidth = 2;
gridbag.setConstraints( nacionalidadeLabel, constraints );
add( nacionalidadeLabel );
constraints.weightx = 0.5;
constraints.gridwidth = 1;
gridbag.setConstraints( nacionalidadeText, constraints );
add( nacionalidadeText );
constraints.weightx = 0;
constraints.gridwidth = 1;
gridbag.setConstraints( dataNascimentoLabel, constraints );
add( dataNascimentoLabel );
constraints.weightx = 0.5;
constraints.gridwidth = GridBagConstraints.REMAINDER;
gridbag.setConstraints( dataNascimentoPanel, constraints );
add( dataNascimentoPanel );
constraints.weightx = 0;
constraints.gridwidth = 2;
gridbag.setConstraints( numeroMecanograficoLabel, constraints );
add( numeroMecanograficoLabel );
constraints.weightx = 0.5;
constraints.gridwidth = 1;
gridbag.setConstraints( numeroMecanograficoText, constraints );
add( numeroMecanograficoText );
constraints.weightx = 0;
constraints.gridwidth = 1;
gridbag.setConstraints( dataAdmissaoLabel, constraints );
add( dataAdmissaoLabel );
constraints.weightx = 0.5;
constraints.gridwidth = GridBagConstraints.REMAINDER;
gridbag.setConstraints( dataAdmissaoPanel, constraints );
add( dataAdmissaoPanel );
constraints.weightx = 0;
constraints.gridwidth = 2;
gridbag.setConstraints( categoriaLabel, constraints );
add( categoriaLabel );
constraints.weightx = 0.5;
constraints.gridwidth = 1;
gridbag.setConstraints( categoriaText, constraints );
add( categoriaText );
constraints.weightx = 0;
gridbag.setConstraints( localLabel, constraints );
add( localLabel );
constraints.weightx = 0.5;
constraints.gridwidth = GridBagConstraints.REMAINDER;
gridbag.setConstraints( localText, constraints );
add( localText );
constraints.weightx = 0;
constraints.gridwidth = 2;
gridbag.setConstraints( funcaoLabel, constraints );
add( funcaoLabel );
constraints.weightx = 0.5;
constraints.gridwidth = 1;
gridbag.setConstraints( funcaoText, constraints );
add( funcaoText );
constraints.weightx = 0;
constraints.gridwidth = 1;
gridbag.setConstraints( dataAdmissaoFuncaoLabel, constraints );
add( dataAdmissaoFuncaoLabel );
constraints.weightx = 0.5;
constraints.gridwidth = GridBagConstraints.REMAINDER;
gridbag.setConstraints( dataAdmissaoFuncaoPanel, constraints );
add( dataAdmissaoFuncaoPanel );
}
private void setupComponentsHashtable()
{
components = new ComponentsHashtable();
components.putComponent( provider.T_TRABALHADORES + "." + provider.NOME, nomeText );
components.putComponent( provider.T_TRABALHADORES + "." + provider.DATA_NASCIMENTO, dataNascimentoPanel );
components.putComponent( provider.T_TRABALHADORES + "." + provider.NACIONALIDADE, nacionalidadeText );
components.putComponent( provider.T_TRABALHADORES + "." + provider.NUMERO_MECANOGRAFICO, numeroMecanograficoText );
components.putComponent( provider.T_TRABALHADORES + "." + provider.DATA_ADMISSAO, dataAdmissaoPanel );
components.putComponent( provider.T_TRABALHADORES + "." + provider.CATEGORIA, categoriaText );
components.putComponent( provider.T_TRABALHADORES + "." + provider.LOCAL_TRABALHO, localText );
components.putComponent( provider.T_TRABALHADORES + "." + provider.FUNCAO_PROPOSTA, funcaoText );
components.putComponent( provider.T_TRABALHADORES + "." + provider.DATA_ADMISSAO_FUNCAO, dataAdmissaoFuncaoPanel );
components.putDummy( provider.T_TRABALHADORES + "." + provider.ESTABELECIMENTO_ID );
components.putDummy( provider.T_TRABALHADORES + "." + provider.OBSERVACOES );
components.putComponent( provider.T_TRABALHADORES + "." + provider.SEXO,
new ControllableComponent()
{
public void fill( Object value )
{
if( value != null && value.equals( "f" ) )
{
sexoPanel.fill( new Integer(2) );
}
else
{
sexoPanel.fill( new Integer(1) );
}
}
public Object save()
{
Integer id = (Integer)sexoPanel.save();
if( id != null && id.intValue() == 2 )
{
return "m";
}
return "f";
}
public void clear()
{
sexoPanel.clear();
}
public void setEnabled( boolean enable )
{
sexoPanel.setEnabled( enable );
}
} );
}
public void fill(Object value)
{
clear();
trabalhador = null;
if( value != null )
{
Integer trabalhadorID = (Integer)value;
if( trabalhadorID != null )
{
try
{
trabalhador = provider.load( provider.TRABALHADORES, new DBKey( trabalhadorID ) );
DBField fields[] = provider.TRABALHADORES.getInsertFields();
String trabalhadorFields[] = new String[ fields.length ];
Hashtable data = new Hashtable();
for( int i = 0; i < trabalhadorFields.length; ++i )
{
trabalhadorFields[ i ] = fields[ i ].FULL_NAME;
Object fieldValue = trabalhador.getProperty( trabalhadorFields[ i ] );
if( fieldValue != null )
{
data.put( trabalhadorFields[ i ], fieldValue );
}
}
ComponentController.fill( trabalhadorFields, data, components );
}
catch( Exception ex )
{
DialogException.showExceptionMessage( ex, "Erro a carregar os dados do trabalhador", true );
}
}
}
}
public Object save()
{
try
{
if( trabalhador == null )
{
trabalhador = provider.createObject( provider.TRABALHADORES );
}
DBField fields[] = provider.TRABALHADORES.getInsertFields();
String trabalhadorFields[] = new String[ fields.length ];
for( int i = 0; i < trabalhadorFields.length; ++i )
{
trabalhadorFields[ i ] = fields[ i ].FULL_NAME;
}
Hashtable hash = new Hashtable();
ComponentController.save( trabalhadorFields, hash, components );
Enumeration enum = hash.keys();
while( enum.hasMoreElements() )
{
String name = ( String )enum.nextElement();
trabalhador.setProperty( name, hash.get( name ) );
}
return trabalhador;
}
catch( Exception ex )
{
ex.printStackTrace();
}
return null;
}
public void clear()
{
String names[] = (String[])components.keySet().toArray( new String[0] );
ComponentController.clear( names, components );
}
public void setEnabled( boolean enable )
{
String names[] = (String[])components.keySet().toArray( new String[0] );
ComponentController.setEnabled( names, enable, components );
}
}