/* * 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 } }; /** 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(); upperPanel.owner = this; 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 medico; try { medico = (MetaObject)upperPanel.save(); } catch( ValuesException vex ) { msg.append( vex.getMessage() ); medico = null; } 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 || medico == 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() ); 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; Integer oldID = empresaID; // if( empresaID != null ) // { // try // { // MetaObject empresa = fdpProvider.load( fdpProvider.EMPRESAS, new DBKey( empresaID ) ); // String designacao = (String) empresa.getProperty( fdpProvider.DESIGNACAO_SOCIAL ); // search = new SearchDialog( fdpProvider, null, true, new Object[]{ empresaID, designacao }, false ); // } // catch( Exception ex ) // { // search = new SearchDialog( fdpProvider, null, true, null, true ); // } // } // else // { // search = new SearchDialog( fdpProvider, null, true, null, true ); // } search = new SearchDialog( fdpProvider, null, true, null, true ); empresaID = ( Integer )search.getSelected(); if( empresaID == null ) { if( search.getIsNew() ) { estabelecimentoID = null; trabalhadorID = null; clear( 0 ); return true; } else { return false; } } fdpProvider.setSearch( FichaDataProvider.SEARCH_ESTABELECIMENTOS ); fdpProvider.setSearchID( FichaDataProvider.SEARCH_EMPRESAS, empresaID.intValue() ); // if( oldID != null && oldID.equals( empresaID ) && estabelecimentoID != null ) // { // try // { // MetaObject estabelecimento = fdpProvider.load( fdpProvider.ESTABELECIMENTOS, new DBKey( estabelecimentoID ) ); // String nome = (String) estabelecimento.getProperty( fdpProvider.NOME ); // search = new SearchDialog( fdpProvider, null, true, new Object[]{ estabelecimentoID, nome }, false ); // } // catch( Exception ex ) // { // search = new SearchDialog( fdpProvider, null, true, null, true ); // } // } // else // { // search = new SearchDialog( fdpProvider, null, true, null, true ); // } search = new SearchDialog( fdpProvider, null, true, null, true ); estabelecimentoID = ( Integer )search.getSelected(); if( estabelecimentoID == null ) { if( search.getIsNew() ) { trabalhadorID = null; 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, true ); 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 ) { Integer upperData[] = new Integer[]{ empresaID, estabelecimentoID, trabalhadorID }; upperPanel.fill( upperData ); 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 ) { upperPanel.setEnabled( enable ); empresaPanel.setEnabled( enable ); trabalhadorPanel.setEnabled( enable ); observacoesPanel.setEnabled( enable ); examePanel.setEnabled( enable ); } public void clear( int index ) { upperPanel.clear(); empresaPanel.clear(); trabalhadorPanel.clear(); observacoesPanel.clear(); examePanel.clear(); } }