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.
687 lines
20 KiB
687 lines
20 KiB
/*
|
|
* MedicinaWindow.java
|
|
*
|
|
* Created on 17 de Janeiro de 2006, 19:43
|
|
*
|
|
* To change this template, choose Tools | Options and locate the template under
|
|
* the Source Creation and Management node. Right-click the template and choose
|
|
* Open. You can then make changes to the template in the Source Editor.
|
|
*/
|
|
|
|
package siprp.medicina;
|
|
|
|
import java.awt.*;
|
|
import java.awt.event.*;
|
|
import javax.swing.*;
|
|
import javax.swing.event.*;
|
|
import java.text.*;
|
|
import java.util.*;
|
|
|
|
import com.evolute.utils.*;
|
|
import com.evolute.utils.arrays.*;
|
|
import com.evolute.utils.data.*;
|
|
import com.evolute.utils.jdo.*;
|
|
import com.evolute.utils.ui.*;
|
|
import com.evolute.utils.ui.panel.*;
|
|
import com.evolute.utils.ui.search.*;
|
|
import com.evolute.utils.ui.text.*;
|
|
import com.evolute.utils.ui.window.*;
|
|
|
|
import siprp.*;
|
|
import siprp.clientes.*;
|
|
import siprp.data.*;
|
|
/**
|
|
*
|
|
* @author fpalma
|
|
*/
|
|
public class MedicinaWindow extends TabbedWindow
|
|
implements ActionListener, ListSelectionListener
|
|
{
|
|
private static int iPermissionArray[][] =
|
|
new int[][]{ {},
|
|
{ NEW_INDEX, EDIT_INDEX, SAVE_INDEX, DELETE_INDEX, CANCEL_INDEX },
|
|
{ NEW_INDEX, EDIT_INDEX, SAVE_INDEX, DELETE_INDEX, CANCEL_INDEX } };
|
|
|
|
private static final int TAB_CONSULTA = 0;
|
|
private static final int TAB_EXAME = 1;
|
|
|
|
private static final int INDEX_MAIN = 0;
|
|
private static final int INDEX_CONSULTA = 1;
|
|
private static final int INDEX_EXAME = 2;
|
|
|
|
private static final String tabNames[] =
|
|
new String[]{ "Consultas", "Exames" };
|
|
|
|
private static final DateFormat DATE_FORMAT =
|
|
DateFormat.getDateInstance( DateFormat.SHORT, new Locale( "PT", "pt" ) );
|
|
|
|
protected MedicinaDataProvider provider;
|
|
protected FichaDataProvider fichaProvider;
|
|
protected JDOProvider JDO;
|
|
protected SIPRPTracker tracker;
|
|
|
|
protected MedicinaUpperPanel upperPanel;
|
|
protected MarcacaoConsultaPanel marcacaoConsultaPanel;
|
|
protected TableEditorPanel marcacaoConsultaEditorPanel;
|
|
protected MarcacaoExamePanel marcacaoExamePanel;
|
|
protected TableEditorPanel marcacaoExameEditorPanel;
|
|
protected CheckBoxPanel detalhesExamePanel;
|
|
|
|
protected Integer empresaID;
|
|
protected String empresa;
|
|
protected Integer estabelecimentoID;
|
|
protected String estabelecimento;
|
|
protected Integer trabalhadorID;
|
|
protected TrabalhadorData trabalhador;
|
|
protected boolean estado[] = new boolean[]{ false, false };
|
|
|
|
/** Creates a new instance of MedicinaWindow */
|
|
public MedicinaWindow()
|
|
throws Exception
|
|
{
|
|
super( new MedicinaUpperPanel(), tabNames, 0.7, createPermissions( iPermissionArray ) );
|
|
upperPanel = ( MedicinaUpperPanel ) getUpperPanel();
|
|
provider = ( MedicinaDataProvider ) MedicinaDataProvider.getProvider();
|
|
fichaProvider = ( FichaDataProvider ) FichaDataProvider.getProvider();
|
|
JDO = ( JDOProvider ) Singleton.getInstance( Singleton.DEFAULT_JDO_PROVIDER );
|
|
setupComponents();
|
|
setExtendedState(getExtendedState() | MAXIMIZED_BOTH);
|
|
}
|
|
|
|
private void setupComponents()
|
|
throws Exception
|
|
{
|
|
setTitle( "Medicina" );
|
|
setupConsultaComponents();
|
|
setupExameComponents();
|
|
upperPanel.addListSelectionListener( this );
|
|
}
|
|
|
|
private void setupConsultaComponents()
|
|
{
|
|
JPanel panel = getTab( TAB_CONSULTA );
|
|
|
|
panel.setBorder(
|
|
BorderFactory.createTitledBorder(
|
|
BorderFactory.createEtchedBorder(), "Consultas" ) );
|
|
|
|
changeGroupName( INDEX_CONSULTA, "Consultas" );
|
|
setActionName( INDEX_CONSULTA, NEW_INDEX, "Nova" );
|
|
setActionTooltip( INDEX_CONSULTA, NEW_INDEX, "Nova" );
|
|
JPanel toolbar = getToolbarPanel( INDEX_CONSULTA );
|
|
|
|
GridBagLayout gridbag = new GridBagLayout();
|
|
GridBagConstraints constraints = new GridBagConstraints();
|
|
panel.setLayout( gridbag );
|
|
constraints.insets = new Insets( 2, 2, 2, 2 );
|
|
constraints.fill = GridBagConstraints.BOTH;
|
|
constraints.gridwidth = GridBagConstraints.REMAINDER;
|
|
constraints.weightx = 1.0;
|
|
|
|
gridbag.setConstraints( toolbar, constraints );
|
|
panel.add( toolbar );
|
|
|
|
constraints.gridheight = 1;
|
|
constraints.weighty = 1.0;
|
|
try
|
|
{
|
|
marcacaoConsultaEditorPanel =
|
|
new TableEditorPanel( new String[]{ "Data",
|
|
"Estado" },
|
|
new int[]{0,2}, new int[]{0,0},
|
|
0.0, 1.0, new Dimension( 350, 100 ) );
|
|
marcacaoConsultaPanel = new MarcacaoConsultaPanel();
|
|
new CopyPasteHandler( marcacaoConsultaPanel.getObservacoesText() );
|
|
marcacaoConsultaEditorPanel.addComponent( marcacaoConsultaPanel,
|
|
new int[]{0,2}, new int[]{1,2},
|
|
1.0, 1.0 );
|
|
marcacaoConsultaEditorPanel.addListSelectionListener( new ListSelectionListener(){
|
|
public void valueChanged(javax.swing.event.ListSelectionEvent listSelectionEvent)
|
|
{
|
|
if( marcacaoConsultaEditorPanel.getID() != null )
|
|
{
|
|
reload(INDEX_CONSULTA);
|
|
select(INDEX_CONSULTA);
|
|
}
|
|
else
|
|
{
|
|
clear( INDEX_CONSULTA );
|
|
}
|
|
}
|
|
});
|
|
}catch( Exception ex )
|
|
{
|
|
DialogException.showException( ex );
|
|
return;
|
|
}
|
|
gridbag.setConstraints( marcacaoConsultaEditorPanel, constraints );
|
|
panel.add( marcacaoConsultaEditorPanel );
|
|
marcacaoConsultaPanel.getEmailButton().addActionListener( this );
|
|
}
|
|
|
|
private void setupExameComponents()
|
|
{
|
|
JPanel panel = getTab( TAB_EXAME );
|
|
|
|
panel.setBorder(
|
|
BorderFactory.createTitledBorder(
|
|
BorderFactory.createEtchedBorder(), "Exames" ) );
|
|
|
|
changeGroupName( INDEX_EXAME, "Exames" );
|
|
JPanel toolbar = getToolbarPanel( INDEX_EXAME );
|
|
|
|
GridBagLayout gridbag = new GridBagLayout();
|
|
GridBagConstraints constraints = new GridBagConstraints();
|
|
panel.setLayout( gridbag );
|
|
constraints.insets = new Insets( 2, 2, 2, 2 );
|
|
constraints.fill = GridBagConstraints.BOTH;
|
|
constraints.gridwidth = GridBagConstraints.REMAINDER;
|
|
constraints.weightx = 1.0;
|
|
|
|
gridbag.setConstraints( toolbar, constraints );
|
|
panel.add( toolbar );
|
|
|
|
constraints.gridheight = 1;
|
|
constraints.weighty = 1.0;
|
|
try
|
|
{
|
|
marcacaoExameEditorPanel =
|
|
new TableEditorPanel( new String[]{ "Data",
|
|
"Estado" },
|
|
new int[]{0,2}, new int[]{0,0},
|
|
0.0, 1.0, new Dimension( 350, 100 ) );
|
|
marcacaoExamePanel = new MarcacaoExamePanel();
|
|
new CopyPasteHandler( marcacaoExamePanel.getObservacoesText() );
|
|
marcacaoExameEditorPanel.addComponent( marcacaoExamePanel,
|
|
new int[]{0,2}, new int[]{1,2},
|
|
1.0, 1.0 );
|
|
marcacaoExameEditorPanel.addListSelectionListener( new ListSelectionListener(){
|
|
public void valueChanged(javax.swing.event.ListSelectionEvent listSelectionEvent)
|
|
{
|
|
if( marcacaoExameEditorPanel.getID() != null )
|
|
{
|
|
reload(INDEX_EXAME);
|
|
select(INDEX_EXAME);
|
|
}
|
|
else
|
|
{
|
|
clear( INDEX_EXAME );
|
|
}
|
|
}
|
|
});
|
|
}catch( Exception ex )
|
|
{
|
|
DialogException.showException( ex );
|
|
return;
|
|
}
|
|
gridbag.setConstraints( marcacaoExameEditorPanel, constraints );
|
|
panel.add( marcacaoExameEditorPanel );
|
|
marcacaoExamePanel.getEmailButton().addActionListener( this );
|
|
}
|
|
|
|
public boolean save(int index)
|
|
{
|
|
Date data;
|
|
switch( index )
|
|
{
|
|
case INDEX_EXAME:
|
|
MarcacaoTrabalhadorData exame = ( MarcacaoTrabalhadorData ) marcacaoExamePanel.save();
|
|
data = ( Date ) exame.get( MarcacaoTrabalhadorData.DATA );
|
|
if( data == null )
|
|
{
|
|
JOptionPane.showMessageDialog( this, "Tem de preencher uma data para os exames.",
|
|
"Erro", JOptionPane.ERROR_MESSAGE );
|
|
return false;
|
|
}
|
|
exame.set( MarcacaoTrabalhadorData.TIPO,
|
|
new Integer( Marcacao.TIPO_MARCACAO_TRABALHADOR_EXAMES ) );
|
|
exame.set( MarcacaoTrabalhadorData.TRABALHADOR, trabalhador );
|
|
try
|
|
{
|
|
exame.set( MarcacaoTrabalhadorData.REALIZADA,
|
|
( ( Integer )exame.get( MarcacaoTrabalhadorData.ESTADO ) ).intValue() ==
|
|
provider.ESTADO_REALIZADO ? "y" : "n" );
|
|
exame.save();
|
|
Integer exameID = ( Integer ) exame.get( MarcacaoTrabalhadorData.ID );
|
|
Integer detalhesRealizados[] = detalhesExamePanel.getSelected();
|
|
provider.setDetalhesRealziadosForMarcacao( exameID, detalhesRealizados );
|
|
}
|
|
catch( Exception ex )
|
|
{
|
|
DialogException.showExceptionMessage( ex, "Erro a gravar", true );
|
|
return false;
|
|
}
|
|
|
|
break;
|
|
|
|
case INDEX_CONSULTA:
|
|
MarcacaoTrabalhadorData consulta = ( MarcacaoTrabalhadorData ) marcacaoConsultaPanel.save();
|
|
data = ( Date ) consulta.get( MarcacaoTrabalhadorData.DATA );
|
|
if( data == null )
|
|
{
|
|
JOptionPane.showMessageDialog( this, "Tem de preencher uma data para a consulta.",
|
|
"Erro", JOptionPane.ERROR_MESSAGE );
|
|
return false;
|
|
}
|
|
consulta.set( MarcacaoTrabalhadorData.TIPO,
|
|
new Integer( Marcacao.TIPO_MARCACAO_TRABALHADOR_CONSULTA ) );
|
|
consulta.set( MarcacaoTrabalhadorData.TRABALHADOR, trabalhador );
|
|
try
|
|
{
|
|
consulta.set( MarcacaoTrabalhadorData.REALIZADA,
|
|
( ( Integer )consulta.get( MarcacaoTrabalhadorData.ESTADO ) ).intValue() ==
|
|
provider.ESTADO_REALIZADO ? "y" : "n" );
|
|
consulta.save();
|
|
}
|
|
catch( Exception ex )
|
|
{
|
|
DialogException.showExceptionMessage( ex, "Erro a gravar", true );
|
|
return false;
|
|
}
|
|
break;
|
|
}
|
|
reload( INDEX_MAIN );
|
|
return true;
|
|
}
|
|
|
|
public boolean delete(int index)
|
|
{
|
|
int option = JOptionPane.showConfirmDialog( this, "Tem a certeza que quer apagar a marca\u00e7\u00e3o?",
|
|
"Apagar", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE );
|
|
if( option == 0 )
|
|
{
|
|
switch( index )
|
|
{
|
|
case INDEX_CONSULTA:
|
|
MarcacaoTrabalhadorData consulta = ( MarcacaoTrabalhadorData ) marcacaoConsultaPanel.save();
|
|
try
|
|
{
|
|
consulta.delete();
|
|
}
|
|
catch( Exception ex )
|
|
{
|
|
DialogException.showExceptionMessage( ex, "Erro a apagar.", true );
|
|
return false;
|
|
}
|
|
break;
|
|
|
|
case INDEX_EXAME:
|
|
MarcacaoTrabalhadorData exame = ( MarcacaoTrabalhadorData ) marcacaoExamePanel.save();
|
|
try
|
|
{
|
|
exame.delete();
|
|
}
|
|
catch( Exception ex )
|
|
{
|
|
DialogException.showExceptionMessage( ex, "Erro a apagar.", true );
|
|
return false;
|
|
}
|
|
break;
|
|
}
|
|
reload( INDEX_MAIN );
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public void clear(int index)
|
|
{
|
|
switch( index )
|
|
{
|
|
case INDEX_MAIN:
|
|
empresaID = null;
|
|
empresa = null;
|
|
estabelecimentoID = null;
|
|
estabelecimento = null;
|
|
trabalhadorID = null;
|
|
trabalhador = null;
|
|
upperPanel.clear();
|
|
marcacaoExameEditorPanel.clear();
|
|
marcacaoConsultaEditorPanel.clear();
|
|
// marcacaoExamePanel.getDetalhesPanel().removeAll();
|
|
detalhesExamePanel = null;
|
|
break;
|
|
|
|
case INDEX_CONSULTA:
|
|
marcacaoConsultaPanel.clear();
|
|
marcacaoConsultaPanel.getEmailButton().setText( "Enviar email" );
|
|
break;
|
|
|
|
case INDEX_EXAME:
|
|
marcacaoExamePanel.clear();
|
|
marcacaoExamePanel.getEmailButton().setText( "Enviar email" );
|
|
if( detalhesExamePanel != null )
|
|
{
|
|
detalhesExamePanel.clear();
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
public void enableComponents(int index, boolean enable)
|
|
{
|
|
switch( index )
|
|
{
|
|
case INDEX_MAIN:
|
|
|
|
break;
|
|
|
|
case INDEX_EXAME:
|
|
marcacaoExamePanel.setEnabled( enable );
|
|
marcacaoExamePanel.getEmailButton().setEnabled( enable );
|
|
if( detalhesExamePanel != null )
|
|
{
|
|
detalhesExamePanel.setEnabled( enable );
|
|
}
|
|
upperPanel.setEnabled( !enable );
|
|
estado[ 0 ] = enable;
|
|
break;
|
|
|
|
case INDEX_CONSULTA:
|
|
marcacaoConsultaPanel.setEnabled( enable );
|
|
marcacaoConsultaPanel.getEmailButton().setEnabled( enable );
|
|
upperPanel.setEnabled( !enable );
|
|
estado[ 1 ] = enable;
|
|
break;
|
|
}
|
|
if( tracker != null )
|
|
{
|
|
tracker.getAvisosPanel().setEnabled( (!estado[ 0 ]) && (!estado[1]),
|
|
AvisoConstants.TIPO_TRABALHADOR );
|
|
}
|
|
}
|
|
|
|
// public boolean searchByName()
|
|
// {
|
|
// fichaProvider.setSearch( FichaDataProvider.SEARCH_EMPRESAS );
|
|
// SearchDialog search;
|
|
//
|
|
// search = new SearchDialog( fichaProvider, null, false, null, true );
|
|
// empresaID = ( Integer )search.getSelected();
|
|
//
|
|
// if( empresaID == null )
|
|
// {
|
|
// return false;
|
|
// }
|
|
//
|
|
// fichaProvider.setSearch( FichaDataProvider.SEARCH_ESTABELECIMENTOS );
|
|
// fichaProvider.setSearchID( FichaDataProvider.SEARCH_EMPRESAS, empresaID.intValue() );
|
|
//
|
|
// search = new SearchDialog( fichaProvider, null, false, null, true );
|
|
// estabelecimentoID = ( Integer )search.getSelected();
|
|
//
|
|
// if( estabelecimentoID == null )
|
|
// {
|
|
// return false;
|
|
// }
|
|
//
|
|
// fichaProvider.setSearch( FichaDataProvider.SEARCH_TRABALHADORES );
|
|
// fichaProvider.setSearchID( FichaDataProvider.SEARCH_ESTABELECIMENTOS, estabelecimentoID.intValue() );
|
|
// search = new SearchDialog( fichaProvider, null, false, null, true );
|
|
// trabalhadorID = ( Integer )search.getSelected();
|
|
//
|
|
// if( trabalhadorID == null )
|
|
// {
|
|
// return false;
|
|
// }
|
|
// reload(0);
|
|
// return true;
|
|
// }
|
|
|
|
protected void enableSelect( int index, boolean select )
|
|
{
|
|
switch( index )
|
|
{
|
|
case INDEX_EXAME:
|
|
marcacaoExameEditorPanel.setEnabled( select );
|
|
break;
|
|
|
|
case INDEX_CONSULTA:
|
|
marcacaoConsultaEditorPanel.setEnabled( select );
|
|
break;
|
|
}
|
|
}
|
|
|
|
public void reload( int index )
|
|
{
|
|
switch( index )
|
|
{
|
|
case INDEX_MAIN:
|
|
try
|
|
{
|
|
String nomes[] =
|
|
provider.getEmpresaEstabelecimento( empresaID, estabelecimentoID );
|
|
empresa = nomes[ 0 ];
|
|
estabelecimento = nomes[ 1 ];
|
|
trabalhador = ( TrabalhadorData ) JDO.load( TrabalhadorData.class, trabalhadorID );
|
|
// upperPanel.getEmpresaText().setText( empresa );
|
|
// upperPanel.getEstabelecimentoText().setText( estabelecimento );
|
|
// upperPanel.getTrabalhadorText().setText( ( String ) trabalhador.get( TrabalhadorData.NOME ) );
|
|
IDObject detalhesExame[] = provider.getDetalhesValidosTrabalhador( empresaID, trabalhadorID );
|
|
detalhesExamePanel = new CheckBoxPanel( detalhesExame );
|
|
JPanel detalhesExameOuterPanel = marcacaoExamePanel.getDetalhesPanel();
|
|
detalhesExameOuterPanel.setLayout( new GridLayout( 1, 1 ) );
|
|
detalhesExameOuterPanel.removeAll();
|
|
detalhesExameOuterPanel.add( detalhesExamePanel );
|
|
detalhesExameOuterPanel.validate();
|
|
Object examesTrabalhador[][] = provider.getExamesTrabalhador( trabalhadorID );
|
|
Object consultasTrabalhador[][] = provider.getConsultasTrabalhador( trabalhadorID );
|
|
if( examesTrabalhador.length > 0 )
|
|
{
|
|
marcacaoExameEditorPanel.setData( new Object2DArray( examesTrabalhador ) );
|
|
}
|
|
else
|
|
{
|
|
marcacaoExameEditorPanel.clear();
|
|
}
|
|
if( consultasTrabalhador.length > 0 )
|
|
{
|
|
marcacaoConsultaEditorPanel.setData( new Object2DArray( consultasTrabalhador ) );
|
|
}
|
|
else
|
|
{
|
|
marcacaoConsultaEditorPanel.clear();
|
|
}
|
|
}
|
|
catch( Exception ex )
|
|
{
|
|
DialogException.showExceptionMessage( ex, "Erro a carregar os dados.", true );
|
|
}
|
|
break;
|
|
|
|
case INDEX_EXAME:
|
|
Integer exameID = marcacaoExameEditorPanel.getID();
|
|
if( exameID == null )
|
|
{
|
|
return;
|
|
}
|
|
try
|
|
{
|
|
MarcacaoTrabalhadorData exame =
|
|
( MarcacaoTrabalhadorData ) JDO.load( MarcacaoTrabalhadorData.class, exameID );
|
|
marcacaoExamePanel.fill( exame );
|
|
Date dataEmailExame = ( Date ) exame.get( MarcacaoTrabalhadorData.DATA_EMAIL );
|
|
if( dataEmailExame != null )
|
|
{
|
|
marcacaoExamePanel.getEmailButton().setText( "Enviar email (" + DATE_FORMAT.format( dataEmailExame ) + ")" );
|
|
}
|
|
else
|
|
{
|
|
marcacaoExamePanel.getEmailButton().setText( "Enviar email" );
|
|
}
|
|
Integer detalhesRealizados[] = provider.getDetalhesRealizadosForMarcacao( exameID );
|
|
detalhesExamePanel.setSelected( detalhesRealizados );
|
|
}
|
|
catch( Exception ex )
|
|
{
|
|
DialogException.showExceptionMessage( ex, "Erro a carregar os dados do exame.", true );
|
|
}
|
|
break;
|
|
|
|
case INDEX_CONSULTA:
|
|
Integer consultaID = marcacaoConsultaEditorPanel.getID();
|
|
if( consultaID == null )
|
|
{
|
|
return;
|
|
}
|
|
try
|
|
{
|
|
MarcacaoTrabalhadorData consulta =
|
|
( MarcacaoTrabalhadorData ) JDO.load( MarcacaoTrabalhadorData.class, consultaID );
|
|
marcacaoConsultaPanel.fill( consulta );
|
|
Date dataEmailConsulta = ( Date ) consulta.get( MarcacaoTrabalhadorData.DATA_EMAIL );
|
|
if( dataEmailConsulta != null )
|
|
{
|
|
marcacaoConsultaPanel.getEmailButton().setText( "Enviar email (" + DATE_FORMAT.format( dataEmailConsulta ) + ")" );
|
|
}
|
|
else
|
|
{
|
|
marcacaoConsultaPanel.getEmailButton().setText( "Enviar email" );
|
|
}
|
|
}
|
|
catch( Exception ex )
|
|
{
|
|
DialogException.showExceptionMessage( ex, "Erro a carregar os dados da consulta.", true );
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
public void actionPerformed( ActionEvent e )
|
|
{
|
|
Object source = e.getSource();
|
|
if( source.equals( marcacaoExamePanel.getEmailButton() ) )
|
|
{
|
|
enviarEmailExame();
|
|
}
|
|
else if( source.equals( marcacaoConsultaPanel.getEmailButton() ) )
|
|
{
|
|
enviarEmailConsulta();
|
|
}
|
|
}
|
|
|
|
protected void enviarEmailConsulta()
|
|
{
|
|
MarcacaoTrabalhadorData consulta = ( MarcacaoTrabalhadorData ) marcacaoConsultaPanel.save();
|
|
|
|
String subject = ( String ) Singleton.getInstance( SingletonConstants.SUBJECT_CONSULTA );
|
|
String texto = ( String ) Singleton.getInstance( SingletonConstants.LETTER_CONSULTA );
|
|
|
|
Date today = new Date();
|
|
marcacaoConsultaPanel.getEmailButton().setText( "Enviar email (" + DATE_FORMAT.format( today ) + ")" );
|
|
|
|
try
|
|
{
|
|
enviarEmail( subject, texto, ( Date )consulta.get( MarcacaoTrabalhadorData.DATA ) );
|
|
consulta.set( Marcacao.DATA_EMAIL, today );
|
|
}
|
|
catch( Exception ex )
|
|
{
|
|
DialogException.showExceptionMessage( ex, "Erro a enviar mail", true );
|
|
}
|
|
}
|
|
|
|
protected void enviarEmailExame()
|
|
{
|
|
MarcacaoTrabalhadorData exame = ( MarcacaoTrabalhadorData ) marcacaoExamePanel.save();
|
|
|
|
String subject = ( String ) Singleton.getInstance( SingletonConstants.SUBJECT_EXAMES );
|
|
String texto = ( String ) Singleton.getInstance( SingletonConstants.LETTER_EXAMES );
|
|
|
|
Date today = new Date();
|
|
marcacaoExamePanel.getEmailButton().setText( "Enviar email (" + DATE_FORMAT.format( today ) + ")" );
|
|
|
|
try
|
|
{
|
|
enviarEmail( subject, texto, ( Date )exame.get( MarcacaoTrabalhadorData.DATA ) );
|
|
exame.set( Marcacao.DATA_EMAIL, today );
|
|
}
|
|
catch( Exception ex )
|
|
{
|
|
DialogException.showExceptionMessage( ex, "Erro a enviar mail", true );
|
|
}
|
|
}
|
|
|
|
protected void enviarEmail( String subject, String texto, Date data )
|
|
throws Exception
|
|
{
|
|
String nome = ( String ) trabalhador.get( TrabalhadorData.NOME );
|
|
String dataStr = DATE_FORMAT.format( data );
|
|
|
|
subject = subject.replaceAll( CompanyDataLoader.NOME, nome );
|
|
texto = texto.replaceAll( CompanyDataLoader.DATA, dataStr );
|
|
texto = texto.replaceAll( CompanyDataLoader.NOME, nome );
|
|
|
|
EstabelecimentoData estabelecimento =
|
|
( EstabelecimentoData ) JDO.load( EstabelecimentoData.class, estabelecimentoID );
|
|
ContactoData contacto = ( ContactoData )estabelecimento.get( EstabelecimentoData.CONTACTO );
|
|
String mail = "";
|
|
if( contacto != null )
|
|
{
|
|
mail = ( String )contacto.get( ContactoData.EMAIL );
|
|
}
|
|
|
|
if( System.getProperty( "os.name" ).startsWith( "Windows" ) )
|
|
{
|
|
mail = mail.replaceAll( " ", "%20" );
|
|
subject = subject.replaceAll( " ", "%20" );
|
|
texto = texto.replaceAll( " ", "%20" );
|
|
Process proc = Runtime.getRuntime().exec( "cmd.exe /c start mailto:\"" + mail
|
|
+ "?subject=" + subject + "&body="
|
|
|
|
+ texto
|
|
);
|
|
}
|
|
else
|
|
{
|
|
mail = mail.replaceAll( " ", "%20" );
|
|
subject = subject.replaceAll( " ", "%20" );
|
|
texto = texto.replaceAll( " ", "%20" );
|
|
|
|
Process proc = Runtime.getRuntime().exec( new String[]{ "/usr/bin/open", "/Applications/Mail.app", "mailto:" + mail
|
|
+ "?subject=" + subject + "&body="
|
|
+ texto } );
|
|
}
|
|
}
|
|
|
|
public void valueChanged( ListSelectionEvent e )
|
|
{
|
|
Object source = e.getSource();
|
|
if( source.equals( upperPanel ) )
|
|
{
|
|
Integer ids[] = ( Integer [] ) upperPanel.save();
|
|
empresaID = ids[ 0 ];
|
|
estabelecimentoID = ids[ 1 ];
|
|
trabalhadorID = ids[ 2 ];
|
|
if( ids[ 2 ] == null )
|
|
{
|
|
clear( INDEX_MAIN );
|
|
unselect( INDEX_MAIN );
|
|
}
|
|
else
|
|
{
|
|
reload( INDEX_MAIN );
|
|
select( INDEX_MAIN );
|
|
}
|
|
}
|
|
}
|
|
|
|
public void setEmpresaAndEstabelecimentoAndTrabalhador( Integer empresaID, Integer estabelecimentoID, Integer trabalhadorID )
|
|
{
|
|
if( upperPanel.editing )
|
|
{
|
|
JOptionPane.showMessageDialog( this, "Esta janela est\u00e1 em edi\u00e7\u00e3o.", "Erro...",
|
|
JOptionPane.ERROR_MESSAGE );
|
|
}
|
|
else
|
|
{
|
|
upperPanel.fill( new Integer[]{ empresaID, estabelecimentoID, trabalhadorID } );
|
|
}
|
|
}
|
|
|
|
public void setTracker( SIPRPTracker tracker )
|
|
{
|
|
this.tracker = tracker;
|
|
}
|
|
}
|