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.
261 lines
8.0 KiB
261 lines
8.0 KiB
/*
|
|
* EstruturaProcessoPanel.java
|
|
*
|
|
* Created on March 20, 2007, 12:07 PM
|
|
*
|
|
* To change this template, choose Tools | Template Manager
|
|
* and open the template in the editor.
|
|
*/
|
|
|
|
package siprp.medicina.processo.estrutura;
|
|
|
|
import com.evolute.utils.data.IDObject;
|
|
import com.evolute.utils.data.MappableObject;
|
|
import com.evolute.utils.ui.DialogException;
|
|
import java.awt.*;
|
|
import java.text.DateFormat;
|
|
import java.util.Date;
|
|
import java.util.HashMap;
|
|
import java.util.Locale;
|
|
import java.util.Vector;
|
|
import javax.swing.*;
|
|
import javax.swing.event.TreeSelectionEvent;
|
|
import javax.swing.event.TreeSelectionListener;
|
|
import javax.swing.tree.DefaultMutableTreeNode;
|
|
import javax.swing.tree.DefaultTreeModel;
|
|
import javax.swing.tree.TreePath;
|
|
import siprp.medicina.processo.*;
|
|
import siprp.medicina.processo.data.TrabalhadoresProcessoData;
|
|
|
|
/**
|
|
*
|
|
* @author fpalma
|
|
*/
|
|
public class EstruturaProcessoPanel extends JPanel
|
|
implements TreeSelectionListener
|
|
{
|
|
protected static final DateFormat D_F = DateFormat.getDateInstance( DateFormat.SHORT, new Locale( "pt", "PT" ) );
|
|
|
|
protected JScrollPane mainScroll;
|
|
protected TrabalhadorMutableTreeNode rootNode;
|
|
protected JTree mainTree;
|
|
|
|
protected ProcessoDataProvider provider;
|
|
|
|
protected IDObject trabalhador;
|
|
protected final HashMap<Integer, TrabalhadoresProcessoData> PROCESSOS_POR_ID =
|
|
new HashMap<Integer,TrabalhadoresProcessoData>();
|
|
|
|
private final Vector<ProcessoListener> PROCESSO_LISTENERS = new Vector<ProcessoListener>();
|
|
|
|
/** Creates a new instance of EstruturaProcessoPanel */
|
|
public EstruturaProcessoPanel()
|
|
throws Exception
|
|
{
|
|
provider = ProcessoDataProvider.getProvider();
|
|
setupComponents();
|
|
setTrabalhador( new MappableObject( new Integer( 12 ), "Alexandre de Matos Monge" ) );
|
|
}
|
|
|
|
private void setupComponents()
|
|
{
|
|
mainScroll = new JScrollPane();
|
|
mainScroll.setVerticalScrollBarPolicy( JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED );
|
|
mainScroll.setHorizontalScrollBarPolicy( JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED );
|
|
// rootNode = new DefaultMutableTreeNode( new MappableObject( new Integer( 12 ), "Frederico Palma" ) );
|
|
rootNode = new TrabalhadorMutableTreeNode( new Integer( 12 ), "Frederico Palma" );
|
|
mainTree = new JTree( rootNode );
|
|
mainTree.addTreeSelectionListener( this );
|
|
mainTree.setCellRenderer( new EstruturaProcessoRenderer() );
|
|
mainScroll.setViewportView( mainTree );
|
|
setLayout( new GridLayout( 1, 1 ) );
|
|
add( mainScroll );
|
|
|
|
}
|
|
|
|
public void setTrabalhador( IDObject trabalhador )
|
|
{
|
|
clear();
|
|
if( trabalhador == null )
|
|
{
|
|
return;
|
|
}
|
|
this.trabalhador = trabalhador;
|
|
// rootNode.removeAllChildren();
|
|
// PROCESSOS_POR_ID.clear();
|
|
rootNode.setID( trabalhador.getID() );
|
|
rootNode.setDescricao( trabalhador.toString() );
|
|
DefaultMutableTreeNode nodes[] =
|
|
loadProcessos( trabalhador.getID() );
|
|
rootNode.add( new ProcessoMutableTreeNode( new Integer( -1 ), "Novo Processo..." ) );
|
|
for( int n = 0; n < nodes.length; n++ )
|
|
{
|
|
rootNode.add( nodes[ n ] );
|
|
}
|
|
int count = mainTree.getRowCount();
|
|
for( int n = count - 1; n >= 0; n-- )
|
|
{
|
|
mainTree.expandRow( n );
|
|
}
|
|
repaint();
|
|
}
|
|
|
|
protected DefaultMutableTreeNode[] loadProcessos( Integer trabalhadorID )
|
|
{
|
|
try
|
|
{
|
|
Integer ids[] = provider.getIDsProcessosByTrabalhador( trabalhadorID );
|
|
DefaultMutableTreeNode nodes[] = new DefaultMutableTreeNode[ ids.length ];
|
|
for( int n = 0; n < ids.length; n++ )
|
|
{
|
|
TrabalhadoresProcessoData processo = provider.getProcessoByID( ids[ n ] );
|
|
Date dataInicio = ( Date ) processo.get( TrabalhadoresProcessoData.DATA_INICIO );
|
|
Date dataFim = ( Date ) processo.get( TrabalhadoresProcessoData.DATA_FIM );
|
|
String codigoEstado = ( String ) processo.get( TrabalhadoresProcessoData.ESTADO );
|
|
String estado = provider.getDescricaoEstadoProcessoByCodigo( codigoEstado );
|
|
String desc = D_F.format( dataInicio );
|
|
if( dataFim != null )
|
|
{
|
|
desc += " - " + D_F.format( dataFim );
|
|
}
|
|
desc += ": " + estado;
|
|
nodes[ n ] = new ProcessoMutableTreeNode( ids[ n ], desc );
|
|
PROCESSOS_POR_ID.put( ids[ n ], processo );
|
|
}
|
|
//System.out.println( "nl: " + nodes.length );
|
|
return nodes;
|
|
}
|
|
catch( Exception ex )
|
|
{
|
|
DialogException.showExceptionMessage( ex, "Erro a carregar dados", true );
|
|
return new DefaultMutableTreeNode[ 0 ];
|
|
}
|
|
}
|
|
|
|
public void valueChanged( TreeSelectionEvent e )
|
|
{
|
|
Object components[] = e.getPath().getPath();
|
|
int tipo = ProcessoEvent.ACCAO_ESCOLHER_PROCESSO;
|
|
if( components == null || components.length == 0 ||
|
|
components[ components.length - 1 ] instanceof TrabalhadorMutableTreeNode ||
|
|
components[ components.length - 1 ] instanceof ProcessoMutableTreeNode )
|
|
{
|
|
tipo = ProcessoEvent.ACCAO_ESCOLHER_PROCESSO;
|
|
}
|
|
else if( components[ components.length - 1 ] instanceof ConsultaMutableTreeNode )
|
|
{
|
|
tipo = ProcessoEvent.ACCAO_ESCOLHER_CONSULTA;
|
|
}
|
|
else if( components[ components.length - 1 ] instanceof ECDsMutableTreeNode )
|
|
{
|
|
tipo = ProcessoEvent.ACCAO_ESCOLHER_ECDS;
|
|
}
|
|
else if( components[ components.length - 1 ] instanceof FichaAptidaoMutableTreeNode )
|
|
{
|
|
tipo = ProcessoEvent.ACCAO_ESCOLHER_FA;
|
|
}
|
|
else if( components[ components.length - 1 ] instanceof DataMutableTreeNode )
|
|
{
|
|
tipo = ProcessoEvent.ACCAO_ESCOLHER_DATA;
|
|
}
|
|
else if( components[ components.length - 1 ] instanceof ObservacoesMutableTreeNode )
|
|
{
|
|
tipo = ProcessoEvent.ACCAO_ESCOLHER_OBSERVACOES;
|
|
}
|
|
else if( components[ components.length - 1 ] instanceof MailMutableTreeNode )
|
|
{
|
|
tipo = ProcessoEvent.ACCAO_ESCOLHER_MAIL;
|
|
}
|
|
HashMap<Integer,Integer> ids = new HashMap<Integer,Integer>();
|
|
for( int n = 0; components != null && n < components.length; n++ )
|
|
{
|
|
Integer id = ( ( EstruturaProcessoMutableTreeNode ) components[ n ] ).getID();
|
|
if( components[ components.length - 1 ] instanceof ProcessoMutableTreeNode )
|
|
{
|
|
ids.put( ProcessoEvent.TIPO_PROCESSO, id );
|
|
}
|
|
else if( components[ components.length - 1 ] instanceof ConsultaMutableTreeNode )
|
|
{
|
|
ids.put( ProcessoEvent.TIPO_CONSULTA, id );
|
|
}
|
|
else if( components[ components.length - 1 ] instanceof ECDsMutableTreeNode )
|
|
{
|
|
ids.put( ProcessoEvent.TIPO_ECDS, id );
|
|
}
|
|
else if( components[ components.length - 1 ] instanceof FichaAptidaoMutableTreeNode )
|
|
{
|
|
ids.put( ProcessoEvent.TIPO_FICHA_APTIDAO, id );
|
|
}
|
|
else if( components[ components.length - 1 ] instanceof DataMutableTreeNode )
|
|
{
|
|
ids.put( ProcessoEvent.TIPO_DATA, id );
|
|
}
|
|
else if( components[ components.length - 1 ] instanceof ObservacoesMutableTreeNode )
|
|
{
|
|
ids.put( ProcessoEvent.TIPO_OBSERVACOES, id );
|
|
}
|
|
else if( components[ components.length - 1 ] instanceof MailMutableTreeNode )
|
|
{
|
|
ids.put( ProcessoEvent.TIPO_MAIL, id );
|
|
}
|
|
}
|
|
ProcessoEvent event = new ProcessoEvent( this, tipo, ids );
|
|
for( int n = 0; n < PROCESSO_LISTENERS.size(); n++ )
|
|
{
|
|
PROCESSO_LISTENERS.get( n ).processoStateChanged( event );
|
|
}
|
|
}
|
|
|
|
public TrabalhadoresProcessoData getProcessoEscolhido()
|
|
{
|
|
TreePath path = mainTree.getSelectionPath();
|
|
TrabalhadoresProcessoData processo = null;
|
|
if( path != null )
|
|
{
|
|
IDObject escolhido = ( IDObject )( ( DefaultMutableTreeNode ) path.getLastPathComponent() ).getUserObject();
|
|
if( escolhido != null )
|
|
{
|
|
processo = PROCESSOS_POR_ID.get( escolhido.getID() );
|
|
if( processo == null )
|
|
{
|
|
processo = new TrabalhadoresProcessoData();
|
|
PROCESSOS_POR_ID.put( escolhido.getID(), processo );
|
|
}
|
|
}
|
|
}
|
|
|
|
return processo;
|
|
}
|
|
|
|
public void addProcessoListener( ProcessoListener listener )
|
|
{
|
|
PROCESSO_LISTENERS.add( listener );
|
|
}
|
|
|
|
public void removeProcessoListener( ProcessoListener listener )
|
|
{
|
|
PROCESSO_LISTENERS.remove( listener );
|
|
}
|
|
|
|
public IDObject getTrabalhador()
|
|
{
|
|
return trabalhador;
|
|
}
|
|
|
|
public void reload()
|
|
{
|
|
}
|
|
|
|
public void clear()
|
|
{
|
|
mainTree.clearSelection();
|
|
mainTree.setRootVisible( true );
|
|
this.trabalhador = null;
|
|
rootNode.removeAllChildren();
|
|
PROCESSOS_POR_ID.clear();
|
|
rootNode.setID( null );
|
|
rootNode.setDescricao( "" );
|
|
( ( DefaultTreeModel ) mainTree.getModel() ).nodeStructureChanged( rootNode ) ;
|
|
}
|
|
}
|