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.
497 lines
16 KiB
497 lines
16 KiB
package siprp.medicina.processo.ui;
|
|
|
|
import static siprp.medicina.processo.logic.MedicinaProcessoLogic.APAGAR_CONSULTA;
|
|
import static siprp.medicina.processo.logic.MedicinaProcessoLogic.APAGAR_CONSULTA_MARCACAO;
|
|
import static siprp.medicina.processo.logic.MedicinaProcessoLogic.APAGAR_EXAME_MARCACAO;
|
|
import static siprp.medicina.processo.logic.MedicinaProcessoLogic.APAGAR_PROCESSO;
|
|
import static siprp.medicina.processo.logic.MedicinaProcessoLogic.CREATE_CONSULTA;
|
|
import static siprp.medicina.processo.logic.MedicinaProcessoLogic.CREATE_CONSULTA_MARCACAO;
|
|
import static siprp.medicina.processo.logic.MedicinaProcessoLogic.CREATE_CONSULTA_MARCACAO_EMAIL;
|
|
import static siprp.medicina.processo.logic.MedicinaProcessoLogic.CREATE_CONSULTA_MARCACAO_OBSERVACOES;
|
|
import static siprp.medicina.processo.logic.MedicinaProcessoLogic.CREATE_EXAME;
|
|
import static siprp.medicina.processo.logic.MedicinaProcessoLogic.CREATE_EXAME_MARCACAO;
|
|
import static siprp.medicina.processo.logic.MedicinaProcessoLogic.CREATE_EXAME_MARCACAO_EMAIL;
|
|
import static siprp.medicina.processo.logic.MedicinaProcessoLogic.CREATE_EXAME_MARCACAO_OBSERVACOES;
|
|
import static siprp.medicina.processo.logic.MedicinaProcessoLogic.CREATE_FICHA;
|
|
import static siprp.medicina.processo.logic.MedicinaProcessoLogic.CREATE_PROCESSO;
|
|
import static siprp.medicina.processo.logic.MedicinaProcessoLogic.LOAD_TRABALHADOR;
|
|
import static siprp.medicina.processo.logic.MedicinaProcessoLogic.REFRESH;
|
|
import static siprp.medicina.processo.logic.MedicinaProcessoLogic.SELECT_TREE_NODE;
|
|
import info.clearthought.layout.TableLayout;
|
|
import info.clearthought.layout.TableLayoutConstraints;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.HashMap;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
|
|
import javax.swing.BorderFactory;
|
|
import javax.swing.JPanel;
|
|
import javax.swing.JScrollPane;
|
|
import javax.swing.JTree;
|
|
import javax.swing.tree.DefaultMutableTreeNode;
|
|
import javax.swing.tree.DefaultTreeModel;
|
|
import javax.swing.tree.TreePath;
|
|
|
|
import leaf.ui.LeafWindow;
|
|
import leaf.ui.LeafLogic.LeafUIActionBinding;
|
|
import leaf.ui.LeafWindow.ActionActivation;
|
|
import siprp.data.outer.TrabalhadoresConsultasData;
|
|
import siprp.data.outer.TrabalhadoresConsultasDatasData;
|
|
import siprp.data.outer.TrabalhadoresConsultasDatasEmailsData;
|
|
import siprp.data.outer.TrabalhadoresConsultasDatasObservacoesData;
|
|
import siprp.data.outer.TrabalhadoresData;
|
|
import siprp.data.outer.TrabalhadoresEcdsData;
|
|
import siprp.data.outer.TrabalhadoresEcdsDatasData;
|
|
import siprp.data.outer.TrabalhadoresEcdsDatasEmailsData;
|
|
import siprp.data.outer.TrabalhadoresEcdsDatasObservacoesData;
|
|
import siprp.data.outer.TrabalhadoresFichasAptidaoData;
|
|
import siprp.data.outer.TrabalhadoresProcessoData;
|
|
import siprp.medicina.processo.ProcessoDataProvider;
|
|
import siprp.medicina.processo.estrutura.ConsultaMutableTreeNode;
|
|
import siprp.medicina.processo.estrutura.DataMutableTreeNode;
|
|
import siprp.medicina.processo.estrutura.ECDsMutableTreeNode;
|
|
import siprp.medicina.processo.estrutura.EstruturaProcessoRenderer;
|
|
import siprp.medicina.processo.estrutura.FichaAptidaoMutableTreeNode;
|
|
import siprp.medicina.processo.estrutura.MailMutableTreeNode;
|
|
import siprp.medicina.processo.estrutura.ObservacoesMutableTreeNode;
|
|
import siprp.medicina.processo.estrutura.ProcessoMutableTreeNode;
|
|
import siprp.medicina.processo.estrutura.TrabalhadorMutableTreeNode;
|
|
|
|
import com.evolute.entity.evo.EvoDataObject;
|
|
|
|
public class ProcessoTreePanel extends JPanel
|
|
{
|
|
private static final long serialVersionUID = 1L;
|
|
|
|
private final LeafWindow parentWindow;
|
|
|
|
private final JScrollPane mainScroll = new JScrollPane();;
|
|
|
|
protected TrabalhadorMutableTreeNode rootNode;
|
|
|
|
private final Map<EvoDataObject, DefaultMutableTreeNode> nodeByObject = new HashMap<EvoDataObject, DefaultMutableTreeNode>();
|
|
|
|
@ActionActivation(onSelect = SELECT_TREE_NODE, onChange = "")
|
|
public JTree mainTree;
|
|
|
|
protected ProcessoDataProvider provider;
|
|
|
|
public ProcessoTreePanel(LeafWindow parentWindow)
|
|
{
|
|
super();
|
|
this.parentWindow = parentWindow;
|
|
try
|
|
{
|
|
provider = ProcessoDataProvider.getProvider();
|
|
|
|
} catch( Exception e )
|
|
{
|
|
provider = null;
|
|
e.printStackTrace();
|
|
}
|
|
setupLayout();
|
|
setupComponents();
|
|
placeComponents();
|
|
}
|
|
|
|
private void setupLayout()
|
|
{
|
|
double[] cols = new double[] {
|
|
TableLayout.FILL
|
|
};
|
|
double[] rows = new double[] {
|
|
TableLayout.FILL
|
|
};
|
|
TableLayout layout = new TableLayout( cols, rows );
|
|
this.setLayout( layout );
|
|
}
|
|
|
|
private void setupComponents()
|
|
{
|
|
this.setBorder( BorderFactory.createTitledBorder( BorderFactory.createEtchedBorder(), "Processos" ) );
|
|
mainScroll.setVerticalScrollBarPolicy( JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED );
|
|
mainScroll.setHorizontalScrollBarPolicy( JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED );
|
|
rootNode = new TrabalhadorMutableTreeNode( "" );
|
|
mainTree = new JTree( rootNode );
|
|
mainTree.setExpandsSelectedPaths( true );
|
|
mainTree.setCellRenderer( new EstruturaProcessoRenderer() );
|
|
mainScroll.setViewportView( mainTree );
|
|
}
|
|
|
|
private void placeComponents()
|
|
{
|
|
this.add( mainScroll, new TableLayoutConstraints( 0, 0 ) );
|
|
}
|
|
|
|
@LeafUIActionBinding(action = LOAD_TRABALHADOR)
|
|
public void setTrabalhador( TrabalhadoresData trabalhador )
|
|
{
|
|
clear();
|
|
if( trabalhador == null )
|
|
{
|
|
return;
|
|
}
|
|
rootNode.setUserObject( trabalhador );
|
|
List<DefaultMutableTreeNode> nodes = loadProcessos( trabalhador );
|
|
for( DefaultMutableTreeNode node : nodes )
|
|
{
|
|
addNodeTo( node, rootNode );
|
|
}
|
|
((DefaultTreeModel) mainTree.getModel()).nodeStructureChanged( rootNode );
|
|
int count = mainTree.getRowCount();
|
|
for( int n = count - 1; n >= 0; n-- )
|
|
{
|
|
mainTree.expandRow( n );
|
|
}
|
|
}
|
|
|
|
@LeafUIActionBinding(action = CREATE_PROCESSO)
|
|
public void createProcessoNode( TrabalhadoresProcessoData processo )
|
|
{
|
|
if( processo != null )
|
|
{
|
|
ProcessoMutableTreeNode node = new ProcessoMutableTreeNode( processo );
|
|
addAndRefresh( node, rootNode );
|
|
}
|
|
}
|
|
|
|
@LeafUIActionBinding(action = CREATE_FICHA)
|
|
public void createFichaNode()
|
|
{
|
|
// if( ficha != null )
|
|
// {
|
|
// FichaAptidaoMutableTreeNode node = new FichaAptidaoMutableTreeNode(
|
|
// ficha );
|
|
// DefaultMutableTreeNode parentNode = nodeByObject.get(
|
|
// ficha.getToTrabalhadoresProcesso() );
|
|
// addAndRefresh( node, parentNode );
|
|
// }
|
|
}
|
|
|
|
@LeafUIActionBinding(action = APAGAR_PROCESSO)
|
|
public void apagarProcessoNode( TrabalhadoresProcessoData processo )
|
|
{
|
|
if( processo != null )
|
|
{
|
|
for( int i = 0; i < rootNode.getChildCount(); ++i )
|
|
{
|
|
DefaultMutableTreeNode node = (DefaultMutableTreeNode) rootNode.getChildAt( i );
|
|
|
|
if( processo.equals( node.getUserObject() ) )
|
|
{
|
|
removeNode( node );
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
@LeafUIActionBinding(action = APAGAR_CONSULTA)
|
|
public void apagarConsultaNode( TrabalhadoresConsultasData consulta )
|
|
{
|
|
if( consulta != null )
|
|
{
|
|
DefaultMutableTreeNode node = nodeByObject.get( consulta );
|
|
if( node != null )
|
|
{
|
|
removeNode( node );
|
|
}
|
|
}
|
|
}
|
|
|
|
@LeafUIActionBinding(action = APAGAR_CONSULTA_MARCACAO)
|
|
public void apagarConsultaMarcacaoNode( TrabalhadoresConsultasDatasData consulta )
|
|
{
|
|
if( consulta != null )
|
|
{
|
|
DefaultMutableTreeNode node = nodeByObject.get( consulta );
|
|
if( node != null )
|
|
{
|
|
removeNode( node );
|
|
}
|
|
}
|
|
}
|
|
|
|
@LeafUIActionBinding(action = APAGAR_EXAME_MARCACAO)
|
|
public void apagarExameMarcacaoNode( TrabalhadoresEcdsDatasData exame )
|
|
{
|
|
if( exame != null )
|
|
{
|
|
DefaultMutableTreeNode node = nodeByObject.get( exame );
|
|
if( node != null )
|
|
{
|
|
removeNode( node );
|
|
}
|
|
}
|
|
}
|
|
|
|
@LeafUIActionBinding(action = CREATE_CONSULTA)
|
|
public void createConsultaNode( TrabalhadoresConsultasData consulta )
|
|
{
|
|
if( consulta != null )
|
|
{
|
|
DefaultMutableTreeNode parentNode = nodeByObject.get( consulta.toProcesso_id() );
|
|
ConsultaMutableTreeNode node = new ConsultaMutableTreeNode( consulta );
|
|
node.setData( consulta.getData() );
|
|
addAndRefresh( node, parentNode );
|
|
}
|
|
}
|
|
|
|
@LeafUIActionBinding(action = CREATE_CONSULTA_MARCACAO)
|
|
public void createConsultaMarcacaoNode( TrabalhadoresConsultasDatasData marcacao )
|
|
{
|
|
if( marcacao != null )
|
|
{
|
|
DefaultMutableTreeNode parentNode = nodeByObject.get( marcacao.toTrabalhadores_consultas_id() );
|
|
DataMutableTreeNode node = new DataMutableTreeNode( marcacao );
|
|
addAndRefresh( node, parentNode );
|
|
}
|
|
}
|
|
|
|
@LeafUIActionBinding(action = CREATE_CONSULTA_MARCACAO_EMAIL)
|
|
public void createConsultaMarcacaoEmailNode( TrabalhadoresConsultasDatasEmailsData email )
|
|
{
|
|
if( email != null )
|
|
{
|
|
DefaultMutableTreeNode parentNode = nodeByObject.get( email.toTrabalhadores_consultas_datas_id() );
|
|
MailMutableTreeNode node = new MailMutableTreeNode( email );
|
|
addAndRefresh( node, parentNode );
|
|
}
|
|
}
|
|
|
|
@LeafUIActionBinding(action = CREATE_CONSULTA_MARCACAO_OBSERVACOES)
|
|
public void createConsultaMarcacaoObservacoesNode( TrabalhadoresConsultasDatasObservacoesData observacoes )
|
|
{
|
|
if( observacoes != null )
|
|
{
|
|
DefaultMutableTreeNode parentNode = nodeByObject.get( observacoes.toTrabalhadores_consultas_datas_id() );
|
|
ObservacoesMutableTreeNode node = new ObservacoesMutableTreeNode( observacoes );
|
|
addNodeTo( node, parentNode );
|
|
((DefaultTreeModel) mainTree.getModel()).nodeStructureChanged( parentNode );
|
|
mainTree.setSelectionPath( new TreePath( node.getPath() ) );
|
|
}
|
|
}
|
|
|
|
@LeafUIActionBinding(action = CREATE_EXAME)
|
|
public void createExameNode( TrabalhadoresEcdsData exame )
|
|
{
|
|
if( exame != null )
|
|
{
|
|
DefaultMutableTreeNode parentNode = nodeByObject.get( exame.toProcesso_id() );
|
|
ECDsMutableTreeNode node = new ECDsMutableTreeNode( exame );
|
|
node.setData( exame.getData() );
|
|
addAndRefresh( node, parentNode );
|
|
}
|
|
}
|
|
|
|
@LeafUIActionBinding(action = CREATE_EXAME_MARCACAO)
|
|
public void createExameMarcacaoNode( TrabalhadoresEcdsDatasData marcacao )
|
|
{
|
|
if( marcacao != null )
|
|
{
|
|
DefaultMutableTreeNode parentNode = nodeByObject.get( marcacao.toTrabalhadores_ecds_id() );
|
|
DataMutableTreeNode node = new DataMutableTreeNode( marcacao );
|
|
addAndRefresh( node, parentNode );
|
|
}
|
|
}
|
|
|
|
@LeafUIActionBinding(action = CREATE_EXAME_MARCACAO_EMAIL)
|
|
public void createExameMarcacaoEmailNode( TrabalhadoresEcdsDatasEmailsData email )
|
|
{
|
|
if( email != null )
|
|
{
|
|
DefaultMutableTreeNode parentNode = nodeByObject.get( email.toTrabalhadores_ecds_datas_id() );
|
|
MailMutableTreeNode node = new MailMutableTreeNode( email );
|
|
addAndRefresh( node, parentNode );
|
|
}
|
|
}
|
|
|
|
@LeafUIActionBinding(action = CREATE_EXAME_MARCACAO_OBSERVACOES)
|
|
public void createConsultaMarcacaoObservacoesNode( TrabalhadoresEcdsDatasObservacoesData observacoes )
|
|
{
|
|
if( observacoes != null )
|
|
{
|
|
DefaultMutableTreeNode parentNode = nodeByObject.get( observacoes.toTrabalhadores_ecds_datas_id() );
|
|
ObservacoesMutableTreeNode node = new ObservacoesMutableTreeNode( observacoes );
|
|
addNodeTo( node, parentNode );
|
|
((DefaultTreeModel) mainTree.getModel()).nodeStructureChanged( parentNode );
|
|
mainTree.setSelectionPath( new TreePath( node.getPath() ) );
|
|
}
|
|
}
|
|
|
|
@LeafUIActionBinding(action = REFRESH)
|
|
public void refresh()
|
|
{
|
|
DefaultMutableTreeNode selected = getSelectedNode();
|
|
if( selected != null )
|
|
{
|
|
// ((DefaultTreeModel) mainTree.getModel()).nodeStructureChanged(
|
|
// rootNode );
|
|
mainTree.setSelectionPath( new TreePath( rootNode.getPath() ) );
|
|
mainTree.setSelectionPath( new TreePath( selected.getPath() ) );
|
|
}
|
|
revalidate();
|
|
repaint();
|
|
}
|
|
|
|
protected List<DefaultMutableTreeNode> loadProcessos( TrabalhadoresData trabalhador )
|
|
{
|
|
List<DefaultMutableTreeNode> result = new ArrayList<DefaultMutableTreeNode>();
|
|
List<TrabalhadoresProcessoData> processos = trabalhador.fromTrabalhadoresProcesso_trabalhador_id();
|
|
for( TrabalhadoresProcessoData trabalhadoresProcesso : processos )
|
|
{
|
|
result.add( loadProcesso( trabalhadoresProcesso ) );
|
|
}
|
|
return result;
|
|
}
|
|
|
|
private ProcessoMutableTreeNode loadProcesso( TrabalhadoresProcessoData processo )
|
|
{
|
|
ProcessoMutableTreeNode node = new ProcessoMutableTreeNode( processo );
|
|
node.removeAllChildren();
|
|
for( TrabalhadoresConsultasData current : processo.fromTrabalhadoresConsultas_processo_id() )
|
|
{
|
|
addNodeTo( loadConsulta( current ), node );
|
|
}
|
|
for( TrabalhadoresEcdsData current : processo.fromTrabalhadoresEcds_processo_id() )
|
|
{
|
|
addNodeTo( loadExame( current ), node );
|
|
}
|
|
|
|
List<TrabalhadoresFichasAptidaoData> fichas = processo.fromTrabalhadoresFichasAptidao_processo_id();
|
|
if( fichas != null )
|
|
{
|
|
TrabalhadoresFichasAptidaoData ficha = null;
|
|
for( TrabalhadoresFichasAptidaoData currentFicha : fichas )
|
|
{
|
|
if( ficha == null || ficha.getId() < currentFicha.getId() )
|
|
{
|
|
ficha = currentFicha;
|
|
}
|
|
}
|
|
if( ficha != null )
|
|
{
|
|
addNodeTo( loadFicha( ficha ), node );
|
|
}
|
|
}
|
|
return node;
|
|
}
|
|
|
|
private FichaAptidaoMutableTreeNode loadFicha( TrabalhadoresFichasAptidaoData ficha )
|
|
{
|
|
FichaAptidaoMutableTreeNode result = new FichaAptidaoMutableTreeNode( ficha );
|
|
return result;
|
|
}
|
|
|
|
private ECDsMutableTreeNode loadExame( TrabalhadoresEcdsData exame )
|
|
{
|
|
ECDsMutableTreeNode node = new ECDsMutableTreeNode( exame );
|
|
node.setData( exame.getData() );
|
|
node.removeAllChildren();
|
|
List<TrabalhadoresEcdsDatasData> marcacoes = exame.fromTrabalhadoresEcdsDatas_trabalhadores_ecds_id();
|
|
for( TrabalhadoresEcdsDatasData marcacao : marcacoes )
|
|
{
|
|
addNodeTo( loadExameMarcacao( marcacao ), node );
|
|
}
|
|
return node;
|
|
}
|
|
|
|
private DataMutableTreeNode loadExameMarcacao( TrabalhadoresEcdsDatasData marcacao )
|
|
{
|
|
DataMutableTreeNode node = new DataMutableTreeNode( marcacao );
|
|
for( TrabalhadoresEcdsDatasEmailsData email : marcacao.fromTrabalhadoresEcdsDatasEmails_trabalhadores_ecds_datas_id() )
|
|
{
|
|
addNodeTo( new MailMutableTreeNode( email ), node );
|
|
}
|
|
for( TrabalhadoresEcdsDatasObservacoesData observacoes : marcacao.fromTrabalhadoresEcdsDatasObservacoes_trabalhadores_ecds_datas_id() )
|
|
{
|
|
addNodeTo( new ObservacoesMutableTreeNode( observacoes ), node );
|
|
}
|
|
return node;
|
|
}
|
|
|
|
private ConsultaMutableTreeNode loadConsulta( TrabalhadoresConsultasData consulta )
|
|
{
|
|
ConsultaMutableTreeNode node = new ConsultaMutableTreeNode( consulta );
|
|
node.setData( consulta.getData() );
|
|
node.removeAllChildren();
|
|
List<TrabalhadoresConsultasDatasData> marcacoes = consulta.fromTrabalhadoresConsultasDatas_trabalhadores_consultas_id();
|
|
for( TrabalhadoresConsultasDatasData marcacao : marcacoes )
|
|
{
|
|
addNodeTo( loadMarcacao( marcacao ), node );
|
|
}
|
|
return node;
|
|
}
|
|
|
|
private DataMutableTreeNode loadMarcacao( TrabalhadoresConsultasDatasData marcacao )
|
|
{
|
|
DataMutableTreeNode node = new DataMutableTreeNode( marcacao );
|
|
for( TrabalhadoresConsultasDatasEmailsData email : marcacao.fromTrabalhadoresConsultasDatasEmails_trabalhadores_consultas_datas_id() )
|
|
{
|
|
addNodeTo( new MailMutableTreeNode( email ), node );
|
|
}
|
|
for( TrabalhadoresConsultasDatasObservacoesData observacoes : marcacao.fromTrabalhadoresConsultasDatasObservacoes_trabalhadores_consultas_datas_id() )
|
|
{
|
|
addNodeTo( new ObservacoesMutableTreeNode( observacoes ), node );
|
|
}
|
|
return node;
|
|
}
|
|
|
|
private void addNodeTo( DefaultMutableTreeNode node, DefaultMutableTreeNode to )
|
|
{
|
|
if( node.getUserObject() != null && node.getUserObject() instanceof EvoDataObject )
|
|
{
|
|
nodeByObject.put( (EvoDataObject) node.getUserObject(), node );
|
|
}
|
|
to.add( node );
|
|
}
|
|
|
|
private void addAndRefresh( DefaultMutableTreeNode node, DefaultMutableTreeNode parentNode )
|
|
{
|
|
addNodeTo( node, parentNode );
|
|
refresh( node, parentNode );
|
|
}
|
|
|
|
private void removeNode( DefaultMutableTreeNode node )
|
|
{
|
|
if( node != null )
|
|
{
|
|
DefaultMutableTreeNode parent = (DefaultMutableTreeNode) node.getParent();
|
|
if( parent == null )
|
|
{
|
|
parent = rootNode;
|
|
}
|
|
node.removeFromParent();
|
|
nodeByObject.remove( node.getUserObject() );
|
|
refresh( parent, rootNode );
|
|
}
|
|
}
|
|
|
|
private void refresh( DefaultMutableTreeNode newSelection, DefaultMutableTreeNode parentNode )
|
|
{
|
|
((DefaultTreeModel) mainTree.getModel()).nodeStructureChanged( parentNode );
|
|
mainTree.setSelectionPath( new TreePath( newSelection.getPath() ) );
|
|
}
|
|
|
|
private DefaultMutableTreeNode getSelectedNode()
|
|
{
|
|
DefaultMutableTreeNode result = null;
|
|
Object[] nodes = mainTree.getSelectionPath() == null ? null : mainTree.getSelectionPath().getPath();
|
|
if( nodes != null && nodes.length > 0 && nodes[nodes.length - 1] instanceof DefaultMutableTreeNode )
|
|
{
|
|
result = (DefaultMutableTreeNode) nodes[nodes.length - 1];
|
|
}
|
|
return result;
|
|
}
|
|
|
|
public void clear()
|
|
{
|
|
rootNode.setUserObject( "" );
|
|
mainTree.clearSelection();
|
|
mainTree.setRootVisible( true );
|
|
rootNode.removeAllChildren();
|
|
((DefaultTreeModel) mainTree.getModel()).nodeStructureChanged( rootNode );
|
|
}
|
|
}
|