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

263 lines
6.4 KiB

/*
* FichaWindow.java
*
* Created on 29 de Março de 2004, 11:50
*/
package siprp.ficha;
import siprp.*;
import java.awt.*;
import javax.swing.*;
import com.evolute.utils.metadb.*;
import com.evolute.utils.ui.*;
import com.evolute.utils.ui.search.*;
import com.evolute.utils.ui.window.*;
/**
*
* @author fpalma
*/
public class FichaWindow extends TabbedWindow
{
private UpperPanel upperPanel;
private EmpresaPanel empresaPanel;
private TrabalhadorPanel trabalhadorPanel;
private ObservacoesPanel observacoesPanel;
private ExamePanel examePanel;
private FichaDataProvider fdpProvider;
private Integer empresaID;
private Integer estabelecimentoID;
private Integer trabalhadorID;
private static int permissions[][] =
new int[][]{ { NEW_INDEX, CANCEL_INDEX, SAVE_INDEX, DELETE_INDEX } };
/** Creates a new instance of FichaWindow */
public FichaWindow()
throws Exception
{
super( new UpperPanel(), new String[]{ "Empresa/Trabalhador", "Exame" },
createPermissions( permissions ) );
setEditorManagerFactory( FichaAptidaoEditorManager.getEditorManagerFactory() );
upperPanel = (UpperPanel) getUpperPanel();
fdpProvider = ( FichaDataProvider ) FichaDataProvider.getProvider();
setupComponents();
}
private void setupComponents()
throws Exception
{
setSize( 700, 570 );
setResizable( false );
setTitle( "Ficha de Aptid\u00e3o" );
JPanel empresaTrabalhadorPanel = getTab( 0 );
JPanel exameRecomendacoesPanel = getTab( 1 );
GridBagLayout gridbag = new GridBagLayout();
empresaTrabalhadorPanel.setLayout( gridbag );
GridBagConstraints constraints = new GridBagConstraints();
constraints.insets = new Insets( 0, 1, 0, 1 );
constraints.fill = GridBagConstraints.BOTH;
constraints.weightx = 1;
constraints.gridwidth = GridBagConstraints.REMAINDER;
constraints.gridheight = 1;
constraints.weighty = 0;
empresaPanel = new EmpresaPanel();
empresaPanel.setEnabled( false );
gridbag.setConstraints( empresaPanel, constraints );
empresaTrabalhadorPanel.add( empresaPanel );
constraints.weighty = 0;
trabalhadorPanel = new TrabalhadorPanel();
gridbag.setConstraints( trabalhadorPanel, constraints );
empresaTrabalhadorPanel.add( trabalhadorPanel );
constraints.weighty = 1;
observacoesPanel = new ObservacoesPanel();
gridbag.setConstraints( observacoesPanel, constraints );
empresaTrabalhadorPanel.add( observacoesPanel );
gridbag = new GridBagLayout();
exameRecomendacoesPanel.setLayout( gridbag );
constraints = new GridBagConstraints();
constraints.insets = new Insets( 0, 1, 0, 1 );
constraints.fill = GridBagConstraints.BOTH;
constraints.weightx = 1;
constraints.gridwidth = GridBagConstraints.REMAINDER;
constraints.gridheight = 1;
constraints.weighty = 0;
constraints.weighty = 1;
examePanel = new ExamePanel();
gridbag.setConstraints( examePanel, constraints );
exameRecomendacoesPanel.add( examePanel );
}
public boolean save( int index )
{
new ProgressDialog( this, "A gravar...",
new Runnable(){
public void run()
{
}
});
StringBuffer msg = new StringBuffer();
MetaObject estabelecimento;
try
{
estabelecimento = (MetaObject)empresaPanel.save();
}
catch( ValuesException vex )
{
msg.append( vex.getMessage() );
estabelecimento = null;
}
MetaObject trabalhador;
try
{
trabalhador = (MetaObject)trabalhadorPanel.save();
}
catch( ValuesException vex )
{
msg.append( vex.getMessage() );
trabalhador = null;
}
MetaObject exame;
try
{
exame = (MetaObject)examePanel.save();
}
catch( ValuesException vex )
{
msg.append( vex.getMessage() );
exame = null;
}
if( estabelecimento == null || trabalhador == null || exame == null )
{
JOptionPane.showMessageDialog( this, msg.toString(), "Erro...", JOptionPane.ERROR_MESSAGE );
return false;
}
trabalhador.setProperty( fdpProvider.R_TRABALHADOR_ESTABELECIMENTO, estabelecimento );
trabalhador.setProperty( fdpProvider.OBSERVACOES, observacoesPanel.save() );
MetaObject medico;
try
{
medico = fdpProvider.load( fdpProvider.MEDICOS, new DBKey( new Integer(1) ) );
}
catch( Exception ex )
{
ex.printStackTrace();
return false;
}
exame.setProperty( fdpProvider.R_EXAME_MEDICO, medico );
exame.setProperty( fdpProvider.R_EXAME_TRABALHADOR, trabalhador );
try
{
exame.save();
}
catch( Exception ex )
{
DialogException.showExceptionMessage( ex, "Erro a guardar", true );
return false;
}
return true;
}
public boolean newItem( int index )
{
fdpProvider.setSearch( FichaDataProvider.SEARCH_EMPRESAS );
SearchDialog search = new SearchDialog( fdpProvider, null, true, null, true );
empresaID = ( Integer )search.getSelected();
if( empresaID == null )
{
if( search.getIsNew() )
{
clear( 0 );
return true;
}
else
{
return false;
}
}
fdpProvider.setSearch( FichaDataProvider.SEARCH_ESTABELECIMENTOS );
fdpProvider.setSearchID( FichaDataProvider.SEARCH_EMPRESAS, empresaID.intValue() );
search = new SearchDialog( fdpProvider, null, true, null, true );
estabelecimentoID = ( Integer )search.getSelected();
if( estabelecimentoID == null )
{
if( search.getIsNew() )
{
reload(0);
return true;
}
else
{
return false;
}
}
fdpProvider.setSearch( FichaDataProvider.SEARCH_TRABALHADORES );
fdpProvider.setSearchID( FichaDataProvider.SEARCH_ESTABELECIMENTOS, estabelecimentoID.intValue() );
search = new SearchDialog( fdpProvider, null, true, null, false );
trabalhadorID = ( Integer )search.getSelected();
if( trabalhadorID == null )
{
if( search.getIsNew() )
{
reload(0);
return true;
}
else
{
return false;
}
}
reload(0);
return true;
}
public boolean delete( int index )
{
return true;
}
public void reload( int index )
{
Object empresaData[] = new Object[]{ empresaID, estabelecimentoID };
empresaPanel.fill( empresaData );
trabalhadorPanel.fill( trabalhadorID );
observacoesPanel.fill( trabalhadorID );
examePanel.fill( null );
}
public void enableComponents( int index, boolean enable )
{
empresaPanel.setEnabled( enable );
trabalhadorPanel.setEnabled( enable );
observacoesPanel.setEnabled( enable );
examePanel.setEnabled( enable );
}
public void clear( int index )
{
empresaPanel.clear();
trabalhadorPanel.clear();
observacoesPanel.clear();
examePanel.clear();
}
}