/* * 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.date.*; import com.evolute.utils.metadb.*; import com.evolute.utils.ui.*; import com.evolute.utils.ui.panel.*; import siprp.*; import siprp.data.*; import siprp.importer.*; /** * * @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 TrabalhadorData 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( TrabalhadorData.NOME, nomeText ); components.putComponent( TrabalhadorData.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() == 1 ) { return "m"; } return "f"; } public void clear() { sexoPanel.clear(); } public void setEnabled( boolean enable ) { sexoPanel.setEnabled( enable ); } } ); components.putComponent( TrabalhadorData.DATA_NASCIMENTO, dataNascimentoPanel ); components.putComponent( TrabalhadorData.NACIONALIDADE, nacionalidadeText ); components.putComponent( TrabalhadorData.NUMERO_MECANOGRAFICO, numeroMecanograficoText ); components.putComponent( TrabalhadorData.DATA_ADMISSAO, dataAdmissaoPanel ); components.putComponent( TrabalhadorData.CATEGORIA, categoriaText ); components.putComponent( TrabalhadorData.LOCAL_TRABALHO, localText ); components.putComponent( TrabalhadorData.FUNCAO_PROPOSTA, funcaoText ); components.putComponent( TrabalhadorData.DATA_ADMISSAO_FUNCAO, dataAdmissaoFuncaoPanel ); components.putDummy( TrabalhadorData.DATA_DEMISSAO ); components.putDummy( TrabalhadorData.OBSERVACOES ); components.putDummy( TrabalhadorData.OBSERVACOES_GESTAO ); components.putDummy( TrabalhadorData.PERFIL ); components.putDummy( TrabalhadorData.ESTABELECIMENTO ); // components.putComponent( FichaDataProvider.T_TRABALHADORES + "." + FichaDataProvider.NOME, nomeText ); // components.putComponent( FichaDataProvider.T_TRABALHADORES + "." + FichaDataProvider.DATA_NASCIMENTO, dataNascimentoPanel ); // components.putComponent( FichaDataProvider.T_TRABALHADORES + "." + FichaDataProvider.NACIONALIDADE, nacionalidadeText ); // components.putComponent( FichaDataProvider.T_TRABALHADORES + "." + FichaDataProvider.NUMERO_MECANOGRAFICO, numeroMecanograficoText ); // components.putComponent( FichaDataProvider.T_TRABALHADORES + "." + FichaDataProvider.DATA_ADMISSAO, dataAdmissaoPanel ); // components.putComponent( FichaDataProvider.T_TRABALHADORES + "." + FichaDataProvider.CATEGORIA, categoriaText ); // components.putComponent( FichaDataProvider.T_TRABALHADORES + "." + FichaDataProvider.LOCAL_TRABALHO, localText ); // components.putComponent( FichaDataProvider.T_TRABALHADORES + "." + FichaDataProvider.FUNCAO_PROPOSTA, funcaoText ); // components.putComponent( FichaDataProvider.T_TRABALHADORES + "." + FichaDataProvider.DATA_ADMISSAO_FUNCAO, dataAdmissaoFuncaoPanel ); // components.putDummy( FichaDataProvider.T_TRABALHADORES + "." + FichaDataProvider.ESTABELECIMENTO_ID ); // components.putDummy( FichaDataProvider.T_TRABALHADORES + "." + FichaDataProvider.OBSERVACOES ); // components.putComponent( FichaDataProvider.T_TRABALHADORES + "." + FichaDataProvider.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() == 1 ) // { // 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 = ( TrabalhadorData ) TrabalhadorData.load( TrabalhadorData.class, trabalhadorID ); String names[] = trabalhador.getFieldNames(); ComponentController.fill( names, trabalhador.getHashData(), components ); // trabalhador = provider.load( FichaDataProvider.TRABALHADORES, new DBKey( trabalhadorID ) ); // DBField fields[] = FichaDataProvider.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( FichaDataProvider.TRABALHADORES ); trabalhador = new TrabalhadorData(); } // DBField fields[] = FichaDataProvider.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 ) ); // } String names[] = trabalhador.getFieldNames(); Hashtable hash = new Hashtable(); ComponentController.save( names, hash, components ); trabalhador.setHashData( hash ); // if( ((String)trabalhador.getProperty( FichaDataProvider.NOME )).trim().length() == 0 ) if( ((String)trabalhador.get( TrabalhadorData.NOME )).trim().length() == 0 ) { msg.append( "O trabalhador tem de ter nome\n" ); hasMsg = true; } // if( trabalhador.getProperty( FichaDataProvider.SEXO ) == null ) if( trabalhador.get( TrabalhadorData.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 ); trabalhador = null; } public void setEnabled( boolean enable ) { String names[] = (String[])components.keySet().toArray( new String[0] ); ComponentController.setEnabled( names, enable, components ); } public void setData( Hashtable data ) { String nome = (String)data.get( Importer.NOME ); if( nome != null && nome.trim().length() > 0 ) { nomeText.setText( nome ); } String sexo = (String)data.get( Importer.SEXO ); if( sexo != null && sexo.trim().length() > 0 ) { Integer sexoInt; if( sexo.trim().toLowerCase().charAt(0) == 'f' ) { sexoInt = new Integer( 2 ); } else { sexoInt = new Integer( 1 ); } sexoPanel.fill( sexoInt ); } String nacionalidade = (String)data.get( Importer.NACIONALIDADE ); if( nacionalidade != null && nacionalidade.trim().length() > 0 ) { nacionalidadeText.setText( nacionalidade ); } String dataNascimento = (String)data.get( Importer.DATA_NASCIMENTO ); if( dataNascimento != null ) { dataNascimentoPanel.setDate( DateUtils.guessDate( dataNascimento ) ); } String numeroMecanografico = (String)data.get( Importer.NUMERO_MECANOGRAFICO ); if( numeroMecanografico != null && numeroMecanografico.trim().length() > 0 ) { numeroMecanograficoText.setText( numeroMecanografico ); } String dataAdmissao = (String)data.get( Importer.DATA_ADMISSAO ); if( dataAdmissao != null ) { dataAdmissaoPanel.setDate( DateUtils.guessDate( dataAdmissao ) ); } String categoria = (String)data.get( Importer.CATEGORIA ); if( categoria != null && categoria.trim().length() > 0 ) { categoriaText.setText( categoria ); } String localTrabalho = (String)data.get( Importer.LOCAL_TRABALHO ); if( localTrabalho != null && localTrabalho.trim().length() > 0 ) { localText.setText( localTrabalho ); } String funcao = (String)data.get( Importer.FUNCAO ); if( funcao != null && funcao.trim().length() > 0 ) { funcaoText.setText( funcao ); } String dataAdmissaoFuncao = (String)data.get( Importer.DATA_ADMISSAO_FUNCAO ); if( dataAdmissaoFuncao != null ) { dataAdmissaoFuncaoPanel.setDate( DateUtils.guessDate( dataAdmissaoFuncao ) ); } } }