forked from Coded/SIPRP
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.
337 lines
10 KiB
337 lines
10 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()
|
|
{
|
|
StringBuffer msg = new StringBuffer();
|
|
boolean hasMsg = false;
|
|
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 ) );
|
|
}
|
|
if( ((String)trabalhador.getProperty( provider.NOME )).trim().length() == 0 )
|
|
{
|
|
msg.append( "O trabalhador tem de ter nome\n" );
|
|
hasMsg = true;
|
|
}
|
|
if( trabalhador.getProperty( provider.SEXO ) == null )
|
|
{
|
|
msg.append( "O trabalhador tem de ter um sexo definido\n" );
|
|
hasMsg = true;
|
|
}
|
|
}
|
|
catch( Exception ex )
|
|
{
|
|
ex.printStackTrace();
|
|
return null;
|
|
}
|
|
if( hasMsg )
|
|
{
|
|
throw new ValuesException( msg.toString() );
|
|
}
|
|
return trabalhador;
|
|
}
|
|
|
|
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 );
|
|
}
|
|
}
|