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.

721 lines
23 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package siprp.higiene.relatorio;
import static com.evolute.utils.strings.UnicodeLatin1Map.aacute;
import static com.evolute.utils.strings.UnicodeLatin1Map.atilde;
import static com.evolute.utils.strings.UnicodeLatin1Map.ccedil;
import static com.evolute.utils.strings.UnicodeLatin1Map.eacute;
import static com.evolute.utils.strings.UnicodeLatin1Map.iacute;
import static com.evolute.utils.strings.UnicodeLatin1Map.oacute;
import static com.evolute.utils.strings.UnicodeLatin1Map.otilde;
import info.clearthought.layout.TableLayout;
import info.clearthought.layout.TableLayoutConstraints;
import java.awt.Component;
import java.awt.Cursor;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.EventObject;
import java.util.List;
import java.util.Vector;
import javax.swing.BorderFactory;
import javax.swing.ButtonGroup;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTabbedPane;
import javax.swing.JTextField;
import javax.swing.event.CaretEvent;
import javax.swing.event.CaretListener;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import leaf.data.Validator;
import leaf.ui.LeafButton;
import leaf.ui.LeafDialog;
import leaf.ui.LeafIconButton;
import leaf.ui.LeafTextAreaEditor;
import siprp.database.cayenne.objects.Estabelecimentos;
import siprp.database.cayenne.objects.HsEmailEstabelecimento;
import siprp.database.cayenne.objects.HsRelatorio;
import siprp.database.cayenne.objects.MarcacoesEstabelecimento;
import siprp.database.cayenne.objects.MarcacoesTecnicosHst;
import siprp.higiene.gestao.equipamentos.AdicionarEquipamentosPanel;
import siprp.higiene.relatorio.print.RelatorioPDFCreator;
import siprp.logic.HigieneSegurancaLogic;
import siprp.medicina.processo.mail.MailDialog;
import siprp.planoactuacao.print.PlanoActuacaoPDFCreator;
import com.evolute.utils.ui.calendar.JCalendarPanel;
public class PanelRelatorio extends JPanel implements CaretListener, ChangeListener, ActionListener
{
private static final long serialVersionUID = 1L;
private static final int MAX_NOME_ESTABELECIMENTO_ON_FILENAME = 10;
private static final String DEFAULT_FUNCIONARIOS_TEXT = "A empresa supracitada possui ? funcionários, sendo que ? destes exercem actividades na zona de produtos frescos.";
private static final String ICON_NAME_SAVE = "siprp/higiene/gestao/riscos/save.png";
private static final String ICON_NAME_REVERT = "siprp/higiene/gestao/riscos/revert.png";
private static final String ICON_NAME_SUBMIT = "siprp/higiene/relatorio/submit.png";
private static final String ICON_NAME_PDF = "siprp/higiene/relatorio/adobe_reader.png";
private static final String ICON_NAME_UNDO = "siprp/higiene/relatorio/revert.png";
private final JCalendarPanel dataRelatorio = new JCalendarPanel( null );
private final JRadioButton radioInicial = new JRadioButton( "Inicial" );
private final JRadioButton radioPeriodica = new JRadioButton( "Peri" + oacute + "dica" );
private final JTextField fieldTecnico = new JTextField();
private final JPanel panelAcompanhantes = new JPanel();
private final JTextField fieldNome1 = new JTextField();
private final JTextField fieldNome2 = new JTextField();
private final JTextField fieldFuncao1 = new JTextField();
private final JTextField fieldFuncao2 = new JTextField();
private final LeafIconButton buttonSave = LeafIconButton.createButton( ICON_NAME_SAVE );
private final LeafIconButton buttonRevertText = LeafIconButton.createButton( ICON_NAME_REVERT );
private final LeafIconButton buttonSubmit = LeafIconButton.createButton( "Submeter", ICON_NAME_SUBMIT );
private final LeafIconButton buttonPdfPlano = LeafIconButton.createButton( "Plano de actua" + ccedil + atilde + "o", ICON_NAME_PDF );
private final LeafIconButton buttonPdfRelatorio = LeafIconButton.createButton( "Relat" + oacute + "rio", ICON_NAME_PDF );
private final LeafButton buttonRevertPlano = LeafIconButton.createButton( "Recarregar", ICON_NAME_UNDO );
private final JTabbedPane tabsRelatorio = new JTabbedPane();
private final AdicionarEquipamentosPanel panelEquipamentos = new AdicionarEquipamentosPanel();
private final LeafTextAreaEditor panelFuncionarios = new LeafTextAreaEditor( new Validator<String>()
{
@Override
public boolean isValid( String text )
{
return !DEFAULT_FUNCIONARIOS_TEXT.equals( text );
}
});
private final JTabbedPane tabsPlanoActuacao = new JTabbedPane();
private final PlanoActuacaoPanel panelPlano = new PlanoActuacaoPanel();
private final RelatorioLegislacaoPanel panelLegislacao = new RelatorioLegislacaoPanel();
private final RelatorioNormalizacaoPanel panelNormalizacao = new RelatorioNormalizacaoPanel();
ButtonGroup bg = new ButtonGroup();
private HsRelatorio relatorio = null;
public PanelRelatorio()
{
setupListeners();
startupComponents();
startupLayout();
placeComponents();
}
private void startupComponents()
{
dataRelatorio.setPreferredSize( new Dimension( 150, 0 ) );
panelEquipamentos.setPreferredSize( new Dimension( 400, 0 ) );
bg.add( radioInicial );
bg.add( radioPeriodica );
panelAcompanhantes.setBorder( BorderFactory.createTitledBorder( "Pessoas que acompanharam" ) );
tabsRelatorio.addTab( "Funcion" + aacute + "rios", panelFuncionarios );
tabsRelatorio.addTab( "Equipamentos de medi"+ccedil+atilde+"o", panelEquipamentos );
tabsPlanoActuacao.addTab( "Plano de actua" + ccedil + atilde + "o", panelPlano );
tabsPlanoActuacao.addTab( "Legisla" + ccedil + atilde + "o", panelLegislacao );
tabsPlanoActuacao.addTab( "Normaliza" + ccedil + atilde + "o", panelNormalizacao );
buttonSave.setToolTipText( "Guardar" );
buttonRevertText.setToolTipText( "Reverter" );
buttonRevertPlano.setToolTipText( "Carregar dados do estabelecimento" );
}
private void startupLayout()
{
TableLayout layout = new TableLayout( new double[] {
TableLayout.MINIMUM, TableLayout.MINIMUM, TableLayout.MINIMUM, TableLayout.PREFERRED, TableLayout.FILL, TableLayout.MINIMUM, TableLayout.MINIMUM, TableLayout.PREFERRED
}, new double[] {
TableLayout.MINIMUM, TableLayout.MINIMUM, TableLayout.MINIMUM, TableLayout.MINIMUM, TableLayout.FILL
} );
layout.setVGap( 5 );
layout.setHGap( 5 );
setLayout( layout );
layout = new TableLayout( new double[] {
TableLayout.MINIMUM, TableLayout.FILL, TableLayout.MINIMUM, TableLayout.FILL
}, new double[] {
TableLayout.MINIMUM, TableLayout.MINIMUM
} );
layout.setVGap( 5 );
layout.setHGap( 5 );
panelAcompanhantes.setLayout( layout );
}
private void placeComponents()
{
panelAcompanhantes.add( new JLabel( "Nome" ), new TableLayoutConstraints( 0, 0 ) );
panelAcompanhantes.add( fieldNome1, new TableLayoutConstraints( 1, 0 ) );
panelAcompanhantes.add( new JLabel( "Fun" + ccedil + atilde + "o" ), new TableLayoutConstraints( 2, 0 ) );
panelAcompanhantes.add( fieldFuncao1, new TableLayoutConstraints( 3, 0 ) );
panelAcompanhantes.add( new JLabel( "Nome" ), new TableLayoutConstraints( 0, 1 ) );
panelAcompanhantes.add( fieldNome2, new TableLayoutConstraints( 1, 1 ) );
panelAcompanhantes.add( new JLabel( "Fun" + ccedil + atilde + "o" ), new TableLayoutConstraints( 2, 1 ) );
panelAcompanhantes.add( fieldFuncao2, new TableLayoutConstraints( 3, 1 ) );
TableLayout layout = new TableLayout( new double[] {
TableLayout.MINIMUM, TableLayout.MINIMUM, TableLayout.FILL, TableLayout.MINIMUM, TableLayout.MINIMUM, TableLayout.MINIMUM, TableLayout.MINIMUM
}, new double[] {
TableLayout.MINIMUM
} );
layout.setVGap( 5 );
layout.setHGap( 5 );
JPanel panel = new JPanel();
panel.setLayout( layout );
panel.add( buttonSave, new TableLayoutConstraints( 0, 0 ) );
panel.add( buttonRevertText, new TableLayoutConstraints( 1, 0 ) );
panel.add( buttonPdfRelatorio, new TableLayoutConstraints( 3, 0 ) );
panel.add( buttonPdfPlano, new TableLayoutConstraints( 4, 0 ) );
panel.add( buttonRevertPlano, new TableLayoutConstraints( 5, 0 ) );
panel.add( buttonSubmit, new TableLayoutConstraints( 6, 0 ) );
add( panel, new TableLayoutConstraints( 0, 0, 7, 0 ) );
add( new JLabel( "Data do relat" + oacute + "rio" ), new TableLayoutConstraints( 0, 1, 2, 1 ) );
add( dataRelatorio, new TableLayoutConstraints( 3, 1 ) );
JLabel labelAvaliacao = new JLabel( "Avalia" + ccedil + atilde + "o" );
labelAvaliacao.setHorizontalAlignment( JLabel.RIGHT );
add( labelAvaliacao , new TableLayoutConstraints( 4, 1 ) );
add( radioInicial, new TableLayoutConstraints( 5, 1 ) );
add( radioPeriodica, new TableLayoutConstraints( 6, 1 ) );
add( new JLabel( "T" + eacute + "cnico Superior de H.S." ), new TableLayoutConstraints( 0, 2, 2, 2 ) );
add( fieldTecnico, new TableLayoutConstraints( 3, 2, 6, 2 ) );
add( tabsRelatorio, new TableLayoutConstraints( 7, 1, 7, 3 ) );
add( panelAcompanhantes, new TableLayoutConstraints( 0, 3, 6, 3 ) );
add( tabsPlanoActuacao, new TableLayoutConstraints( 0, 4, 7, 4 ) );
}
private void setupListeners()
{
fieldFuncao1.addCaretListener( this );
fieldFuncao2.addCaretListener( this );
fieldNome1.addCaretListener( this );
fieldNome2.addCaretListener( this );
dataRelatorio.addChangeListener( this );
radioInicial.addActionListener( this );
radioPeriodica.addActionListener( this );
buttonSave.addActionListener( new ActionListener()
{
@Override
public void actionPerformed( ActionEvent e )
{
save();
}
} );
buttonRevertText.addActionListener( new ActionListener()
{
@Override
public void actionPerformed( ActionEvent e )
{
revert();
}
} );
buttonSubmit.addActionListener( new ActionListener()
{
@Override
public void actionPerformed( ActionEvent e )
{
if( isValidEmail() || JOptionPane.OK_OPTION == JOptionPane.showConfirmDialog(null, "Emails n" + atilde + "o preenchidos para este estabelecimento!\nContinuar?", "Aviso", JOptionPane.YES_NO_OPTION ) )
{
if( isValidPlano() && confirmSubmit() )
{
submit();
}
}
}
} );
buttonPdfPlano.addActionListener( new ActionListener()
{
@Override
public void actionPerformed( ActionEvent e )
{
pdf(true);
}
} );
buttonPdfRelatorio.addActionListener( new ActionListener()
{
@Override
public void actionPerformed( ActionEvent e )
{
pdf(false);
}
} );
buttonRevertPlano.addActionListener( new ActionListener()
{
@Override
public void actionPerformed( ActionEvent e )
{
revert(true);
}
} );
panelFuncionarios.addPropertyChangeListener( LeafTextAreaEditor.ACTION_SAVE, new PropertyChangeListener()
{
@Override
public void propertyChange( PropertyChangeEvent evt )
{
try
{
String text = (String) evt.getNewValue();
if( text != null && relatorio != null )
{
text = text.trim();
if( text.length() == 0 )
{
text = null;
}
else if( text.equals( DEFAULT_FUNCIONARIOS_TEXT ) )
{
text = null;
}
}
relatorio.setFuncionarios( text );
relatorio.save();
}
catch( Exception e )
{
LeafDialog.error( e );
}
}
} );
}
protected void revert( boolean ask )
{
if( relatorio != null )
{
try
{
setCursor( new Cursor( Cursor.WAIT_CURSOR ) );
int ret = ask == false ? JOptionPane.YES_OPTION : JOptionPane.showConfirmDialog( this, "Todas as altera" + ccedil + otilde + "es ao plano de actua" + ccedil + atilde + "o ser" + atilde + "o perdidas\nTem a certeza?","Carregar dados do estabelecimento",JOptionPane.YES_NO_OPTION);
if( JOptionPane.YES_OPTION == ret )
{
HigieneSegurancaLogic.reverterRelatorio(relatorio);
setRelatorio( relatorio, false );
}
}
finally
{
setCursor( new Cursor( Cursor.DEFAULT_CURSOR ) );
}
}
}
private boolean isValidEmail()
{
boolean result = false;
List<HsEmailEstabelecimento> emails = relatorio.getToHsMarcacoesEstabelecimento().getToEstabelecimentos().getHsEmailEstabelecimento();
result = emails != null && emails.size() > 0;
return result;
}
private boolean isValidPlano()
{
boolean result = false;
result = panelPlano.isValidPlano();
if( !result )
{
JOptionPane.showMessageDialog( null, "Todos os riscos devem ser preenchidos antes da submiss"+ atilde + "o do plano de actua" + ccedil + atilde+ "o!", "Erro", JOptionPane.ERROR_MESSAGE, null );
}
return result;
}
private boolean confirmSubmit()
{
return JOptionPane.OK_OPTION == JOptionPane.showConfirmDialog( this, "Ao submeter o Plano de Actua"+ccedil+atilde+"o n"+atilde+"o ser"+aacute+" mais poss"+iacute+"vel alter"+aacute+"-lo. Deseja continuar?" );
}
private void submit()
{
try
{
setCursor(new Cursor(Cursor.WAIT_CURSOR));
if( relatorio != null )
{
if( sendMail( relatorio ) )
{
refresh();
relatorio.setIsSubmetido( new Date() );
relatorio.save();
setRelatorio( relatorio, false );
}
}
}
catch( Exception e )
{
LeafDialog.error(e);
}
finally
{
setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
}
}
private boolean confirmDelete( File file )
{
boolean result = false;
result = JOptionPane.OK_OPTION == JOptionPane.showConfirmDialog( this, "Ficheiro j" + aacute + " existente, deseja substituir?", "Aviso", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null );
return result;
}
private void pdf(boolean plano)
{
try
{
setCursor( new Cursor(Cursor.WAIT_CURSOR) );
byte [] pdf = null;
if( plano )
{
PlanoActuacaoPDFCreator creator = new PlanoActuacaoPDFCreator();
pdf = creator.createPDF( relatorio.getId(), false );
}
else
{
RelatorioPDFCreator creator = new RelatorioPDFCreator();
pdf = creator.createPDF( relatorio.getId() );
}
printToFile( pdf );
}
catch( Exception e )
{
LeafDialog.error( e );
}
finally
{
setCursor( new Cursor(Cursor.DEFAULT_CURSOR) );
}
}
private void printToFile( byte [] pdf ) throws IOException
{
if( pdf != null )
{
JFileChooser fileChooser = new JFileChooser( );
if( fileChooser.showSaveDialog( this ) == JFileChooser.APPROVE_OPTION )
{
File file = fileChooser.getSelectedFile();
String path = file.getAbsolutePath();
if( !path.toUpperCase().endsWith( ".PDF" ) )
{
path += ".pdf";
file = new File( path );
}
if( file != null )
{
if( file.exists() && confirmDelete( file ) )
{
file.delete();
}
FileOutputStream a = new FileOutputStream(file);
a.write( pdf );
a.close();
}
}
}
}
private JFrame getFrame( )
{
Component comp = this;
JFrame frame = null;
while( comp != null )
{
if( comp.getParent() instanceof RelatorioHigieneSegurancaWindow )
{
frame = (RelatorioHigieneSegurancaWindow) comp.getParent();
break;
}
comp = comp.getParent();
}
return frame;
}
private boolean sendMail( HsRelatorio relatorio ) throws Exception
{
boolean result = false;
List<HsEmailEstabelecimento> rels = relatorio.getToHsMarcacoesEstabelecimento().getToEstabelecimentos().getHsEmailEstabelecimento();
String to = "";
for( HsEmailEstabelecimento rel : rels )
{
to += rel.getToHsEmail().getEmail() + ",";
}
if(to.endsWith( "," ))
{
to = to.substring( 0, to.length() - 1 );
}
if( to.length() > 0 )
{
String nomeEstabelecimento = relatorio.getToHsMarcacoesEstabelecimento().getToEstabelecimentos().getNome();
MarcacoesTecnicosHst tecnico = relatorio.getToHsMarcacoesEstabelecimento().getToMarcacoesTecnicosHst();
String nomeTecnico = tecnico == null ? "" : tecnico.getNome();
Date dataVisita = relatorio.getToHsMarcacoesEstabelecimento().getData();
String dataVisitaString = new SimpleDateFormat("dd/MM/yyyy").format( dataVisita );
String subject = "Relatório da Avaliação de Riscos Laborais e Plano de Actuação de " + nomeEstabelecimento + " - auditoria de " + dataVisitaString;
String body = "<html>Exmos. Senhores" +
"<br>" +
"<br>" +
"<br>" +
"Junto enviamos o relatório de avaliação de riscos laborais e " +
"respectivo plano de actuação da auditoria realizada no dia " +
dataVisitaString +
" ao vosso estabelecimento de(o) " +
nomeEstabelecimento +
". Aconselhamos que tenham em conta as não conformidades indicadas " +
"nestes documentos e que preencham o plano de actuação por forma a " +
"auxiliar-vos na planificação das medidas correctivas e para poderem " +
"apresentá-los em caso de inspecção da ACT Autoridade para as Condições do Trabalho." +
"<br>" +
"<br>" +
"<br>" +
"Caso pretendam o nosso apoio ou necessitem de qualquer esclarecimento, contactem-nos, por favor, através do telefone (+351) 213 504 540." +
"<br>" +
"<br>" +
"<br>" +
"Com os melhores cumprimentos, " +
"<br>" +
"<br>" +
"<br>" +
nomeTecnico +
"<br>" +
"SIPRP - Sociedade Ibérica de Prevenção de Riscos Profissionais " +
"<br>" +
"Atrium Saldanha - Praça Duque de Saldanha, 1 - 9º G - 1050-094 Lisboa " +
"<br>" +
"Telefone: (+351) 213 504 540 " +
"<br>" +
"Fax: (+351) 213 504 549 " +
"<br>" +
"E-mail: geral@siprp.pt " +
"<br>" +
"URL: www.siprp.com " +
"<br>" +
"<br>" +
"<br>" +
"Esta é uma mensagem gerada automaticamente pelo nosso sistema, por favor não responda.</html>";
MailDialog md = new MailDialog( getFrame(), to, "", subject, body, getRelatoriosTemp(relatorio) );
result = md.wasSent();
}
return result;
}
private String getShortNameForEstabelecimento( Estabelecimentos estabelecimento )
{
String result = null;
String nome = estabelecimento.getNomePlain();
if( nome != null )
{
result = nome.trim();
if( result.length() > MAX_NOME_ESTABELECIMENTO_ON_FILENAME )
{
String [] tokens = result.split( " " );
if( tokens != null && tokens.length > 2 )
{
result = "";
for ( String token : tokens )
{
result += token == null ? "" : token;
}
}
}
}
return result;
}
private Vector<File> getRelatoriosTemp(HsRelatorio relatorio)
{
Vector<File> result = new Vector<File>();
try
{
byte[] relatorioPDF = new RelatorioPDFCreator().createPDF( relatorio.getId() );
byte[] planoPDF = new PlanoActuacaoPDFCreator().createPDF( relatorio.getId(), false );
if( relatorioPDF != null )
{
String data = relatorio.getToHsMarcacoesEstabelecimento().getDataRelatorio() == null ? "" : HsRelatorio.DATE_FORMAT.format( relatorio.getData().toString() );
String estabelecimento = getShortNameForEstabelecimento(relatorio.getToHsMarcacoesEstabelecimento().getToEstabelecimentos());
File relat = File.createTempFile("Relatorio - " + estabelecimento + " - " + data, ".pdf");
if( relat != null )
{
FileOutputStream fos = new FileOutputStream(relat);
fos.write(relatorioPDF);
fos.close();
result.add( relat );
}
}
if( planoPDF != null )
{
String data = relatorio.getToHsMarcacoesEstabelecimento().getDataRelatorio() == null ? "" : relatorio.getData().toString();
String estabelecimento = relatorio.getToHsMarcacoesEstabelecimento().getToEstabelecimentos().getNomePlain();
File plan = File.createTempFile("Plano de actuacao - " + estabelecimento + " - " + data, ".pdf");
if( plan != null )
{
FileOutputStream fos = new FileOutputStream(plan);
fos.write(planoPDF);
fos.close();
result.add( plan );
}
}
}
catch ( Exception e )
{
LeafDialog.error( e );
}
return result;
}
private void save()
{
try
{
if( relatorio != null )
{
relatorio.setData( dataRelatorio.getDate() );
relatorio.setAvaliacaoInicial( radioInicial.isSelected() );
}
relatorio.setAcompanhante1( fieldNome1.getText() );
relatorio.setAcompanhante2( fieldNome2.getText() );
relatorio.setFuncaoAcompanhante1(fieldFuncao1.getText());
relatorio.setFuncaoAcompanhante2(fieldFuncao2.getText());
relatorio.save();
refresh();
buttonRevertText.setEnabled( false );
buttonSave.setEnabled( false );
} catch( Exception e )
{
LeafDialog.error(e);
}
}
private void revert()
{
refresh();
buttonRevertText.setEnabled( false );
buttonSave.setEnabled( false );
}
private void refresh()
{
dataRelatorio.setDate( relatorio == null ? null : relatorio.getData() );
if( relatorio == null || relatorio.getAvaliacaoInicial() == null )
{
bg.clearSelection();
}
else
{
radioInicial.setSelected( relatorio.getAvaliacaoInicial() );
radioPeriodica.setSelected( !relatorio.getAvaliacaoInicial() );
}
String tecnicoName = null;
if(relatorio != null)
{
MarcacoesEstabelecimento marcacao = relatorio.getToHsMarcacoesEstabelecimento();
if( marcacao != null )
{
MarcacoesTecnicosHst tecnico = marcacao.getToMarcacoesTecnicosHst();
if( tecnico != null )
{
tecnicoName = tecnico.getNome();
}
}
}
fieldTecnico.setText( tecnicoName );
fieldNome1.setText( relatorio == null ? null : relatorio.getAcompanhante1() );
fieldNome2.setText( relatorio == null ? null : relatorio.getAcompanhante2() );
fieldFuncao1.setText( relatorio == null ? null : relatorio.getFuncaoAcompanhante1() );
fieldFuncao2.setText( relatorio == null ? null : relatorio.getFuncaoAcompanhante2() );
}
private void setEnabled()
{
boolean enabled = relatorio != null && relatorio.getIsSubmetido() == null;
dataRelatorio.setEnabled( enabled );
radioInicial.setEnabled( enabled );;
radioPeriodica.setEnabled( enabled );
fieldTecnico.setEnabled( false );
fieldNome1.setEnabled( enabled );
fieldNome2.setEnabled( enabled );
fieldFuncao1.setEnabled( enabled );
fieldFuncao2.setEnabled( enabled );
buttonSubmit.setEnabled( enabled );
buttonPdfPlano.setEnabled( relatorio != null );
buttonPdfRelatorio.setEnabled( relatorio != null );
buttonRevertPlano.setEnabled( enabled );
panelFuncionarios.setEnabled( enabled );
}
public void setRelatorio( HsRelatorio relatorio,boolean create )
{
this.relatorio = relatorio;
buttonSave.setEnabled( false );
buttonRevertText.setEnabled( false );
panelEquipamentos.setRelatorio( relatorio );
panelPlano.setRelatorio( relatorio );
panelLegislacao.setRelatorio( relatorio );
panelNormalizacao.setRelatorio( relatorio );
panelFuncionarios.setValue( relatorio == null ? null : ( relatorio.getFuncionarios() == null ? DEFAULT_FUNCIONARIOS_TEXT : relatorio.getFuncionarios() ) );
if( create )
{
this.revert(false);
}
refresh();
setEnabled();
}
private void updated( EventObject e )
{
Object source = e.getSource();
if( source instanceof Component )
{
if( ( (Component) source).isEnabled() )
{
buttonSave.setEnabled( true );
buttonRevertText.setEnabled( true );
}
}
}
@Override
public void caretUpdate( CaretEvent e )
{
updated(e);
}
@Override
public void stateChanged( ChangeEvent e )
{
updated(e);
}
@Override
public void actionPerformed( ActionEvent e )
{
updated(e);
}
}