/* * 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.TreePath; import siprp.medicina.processo.*; import siprp.medicina.processo.data.MarcacoesProcessoData; /** * * @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 DefaultMutableTreeNode rootNode; protected JTree mainTree; protected ProcessoDataProvider provider; protected IDObject trabalhador; protected final HashMap PROCESSOS_POR_ID = new HashMap(); private final Vector PROCESSO_LISTENERS = new Vector(); /** 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 ) { // this.trabalhador = trabalhador; // rootNode.removeAllChildren(); // PROCESSOS_POR_ID.clear(); // rootNode.setUserObject( trabalhador ); // DefaultMutableTreeNode nodes[] = // loadProcessos( trabalhador.getID() ); // rootNode.add( new DefaultMutableTreeNode( new MappableObject( 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 ); // } ProcessoMutableTreeNode p1 = new ProcessoMutableTreeNode( new Integer( 1 ), "Ocasional" ); rootNode.add( p1 ); ECDsMutableTreeNode e1 = new ECDsMutableTreeNode( new Integer( 2 ), "ECDs" ); p1.add( e1 ); DataMutableTreeNode d1 = new DataMutableTreeNode( new Integer( 8 ), "2006/01/01" ); e1.add( d1 ); ObservacoesMutableTreeNode o1 = new ObservacoesMutableTreeNode( new Integer( 16 ), "N\u00e3o apareceu" ); d1.add( o1 ); MailMutableTreeNode m1 = new MailMutableTreeNode( new Integer( 35 ), "teste@123.com" ); d1.add( m1 ); DataMutableTreeNode d2 = new DataMutableTreeNode( new Integer( 8 ), "2006/04/01" ); e1.add( d2 ); MailMutableTreeNode m2 = new MailMutableTreeNode( new Integer( 35 ), "teste@123.com" ); d2.add( m2 ); ConsultaMutableTreeNode c1 = new ConsultaMutableTreeNode( new Integer( 2 ), "Consulta" ); p1.add( c1 ); DataMutableTreeNode d3 = new DataMutableTreeNode( new Integer( 8 ), "2006/05/01" ); c1.add( d3 ); MailMutableTreeNode m3 = new MailMutableTreeNode( new Integer( 35 ), "teste@123.com" ); c1.add( m3 ); FichaAptidaoMutableTreeNode f1 = new FichaAptidaoMutableTreeNode( new Integer( 1 ), "Ficha de Aptid\u00e3o - Apto" ); p1.add( f1 ); 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++ ) { MarcacoesProcessoData processo = provider.getProcessoByID( ids[ n ] ); Date dataInicio = ( Date ) processo.get( MarcacoesProcessoData.DATA_INICIO ); Date dataFim = ( Date ) processo.get( MarcacoesProcessoData.DATA_FIM ); String codigoEstado = ( String ) processo.get( MarcacoesProcessoData.ESTADO ); String estado = provider.getDescricaoEstadoProcessoByCodigo( codigoEstado ); String desc = D_F.format( dataInicio ); if( dataFim != null ) { desc += " - " + D_F.format( dataFim ); } desc += ": " + estado; IDObject processoObject = new MappableObject( ids[ n ], desc ); nodes[ n ] = new DefaultMutableTreeNode( processoObject ); PROCESSOS_POR_ID.put( ids[ n ], processo ); } return nodes; } catch( Exception ex ) { DialogException.showExceptionMessage( ex, "Erro a carregar dados", true ); return new DefaultMutableTreeNode[ 0 ]; } } public void valueChanged(TreeSelectionEvent e) { } public MarcacoesProcessoData getProcessoEscolhido() { TreePath path = mainTree.getSelectionPath(); MarcacoesProcessoData 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 MarcacoesProcessoData(); PROCESSOS_POR_ID.put( escolhido.getID(), processo ); } } } return processo; } public void addProcessoListener( ProcessoListener listener ) { PROCESSO_LISTENERS.add( listener ); } }