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.
		
		
		
		
		
			
		
			
				
					
					
						
							255 lines
						
					
					
						
							7.7 KiB
						
					
					
				
			
		
		
	
	
							255 lines
						
					
					
						
							7.7 KiB
						
					
					
				| /*
 | |
|  * ProcessoUpperPanel.java
 | |
|  *
 | |
|  * Created on February 1, 2006, 6:48 PM
 | |
|  *
 | |
|  * To change this template, choose Tools | Template Manager
 | |
|  * and open the template in the editor.
 | |
|  */
 | |
| 
 | |
| package siprp.medicina.processo;
 | |
| 
 | |
| import java.awt.*;
 | |
| import javax.swing.*;
 | |
| import javax.swing.event.*;
 | |
| import java.util.*;
 | |
| import com.evolute.utils.dataui.*;
 | |
| import com.evolute.utils.tables.*;
 | |
| import com.evolute.utils.ui.*;
 | |
| import siprp.medicina.MedicinaDataProvider;
 | |
| 
 | |
| /**
 | |
|  *
 | |
|  * @author fpalma
 | |
|  */
 | |
| public class ProcessoUpperPanel extends JPanel
 | |
| 		implements ListSelectionListener, ControllableComponent
 | |
| {
 | |
| 	protected BaseTable empresasTable;
 | |
| 	protected VectorTableModel empresasModel;
 | |
| 	protected BaseTable estabelecimentosTable;
 | |
| 	protected VectorTableModel estabelecimentosModel;
 | |
| 	protected BaseTable trabalhadoresTable;
 | |
| 	protected VectorTableModel trabalhadoresModel;
 | |
| 	
 | |
| 	protected MedicinaDataProvider provider;
 | |
| 	
 | |
| 	protected final Vector listeners;
 | |
| 	
 | |
| 	protected boolean editing = false;
 | |
| 	
 | |
| 	/**
 | |
| 	 * Creates a new instance of ProcessoUpperPanel
 | |
| 	 */
 | |
| 	public ProcessoUpperPanel()
 | |
| 		throws Exception
 | |
| 	{
 | |
| 		provider = ( MedicinaDataProvider ) MedicinaDataProvider.getProvider();
 | |
| 		listeners = new Vector();
 | |
| 		setupComponents();
 | |
| 	}
 | |
| 	
 | |
| 	private void setupComponents()
 | |
| 		throws Exception
 | |
| 	{
 | |
| 		empresasModel = new VectorTableModel( new String[]{ "empresas" } );
 | |
| 		empresasTable = new BaseTable( empresasModel );
 | |
| 		empresasTable.setSelectionMode( ListSelectionModel.SINGLE_SELECTION );
 | |
| 		empresasTable.setNonResizableNorReordable();
 | |
| 		JScrollPane empresasScroll = 
 | |
| 				new JScrollPane( empresasTable, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
 | |
| 									JScrollPane.HORIZONTAL_SCROLLBAR_NEVER );
 | |
| 		empresasTable.getSelectionModel().addListSelectionListener( this );
 | |
| 		estabelecimentosModel = new VectorTableModel( new String[]{ "estabelecimentos" } );
 | |
| 		estabelecimentosTable = new BaseTable( estabelecimentosModel );
 | |
| 		estabelecimentosTable.setSelectionMode( ListSelectionModel.SINGLE_SELECTION );
 | |
| 		estabelecimentosTable.setNonResizableNorReordable();
 | |
| 		JScrollPane estabelecimentosScroll = 
 | |
| 				new JScrollPane( estabelecimentosTable, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
 | |
| 									JScrollPane.HORIZONTAL_SCROLLBAR_NEVER );
 | |
| 		estabelecimentosTable.getSelectionModel().addListSelectionListener( this );
 | |
| 		trabalhadoresModel = new VectorTableModel( new String[]{ "trabalhadores" } );
 | |
| 		trabalhadoresTable = new BaseTable( trabalhadoresModel );
 | |
| 		trabalhadoresTable.setSelectionMode( ListSelectionModel.SINGLE_SELECTION );
 | |
| 		trabalhadoresTable.setNonResizableNorReordable();
 | |
| 		JScrollPane trabalhadoresScroll = 
 | |
| 				new JScrollPane( trabalhadoresTable, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
 | |
| 									JScrollPane.HORIZONTAL_SCROLLBAR_NEVER );
 | |
| 		trabalhadoresTable.getSelectionModel().addListSelectionListener( this );
 | |
| 		
 | |
| 		GridBagLayout gridbag = new GridBagLayout();
 | |
| 		setLayout( gridbag );
 | |
| 		GridBagConstraints constraints = new GridBagConstraints();
 | |
| 		constraints.insets = new Insets( 1, 1, 1, 1 );
 | |
| 		constraints.fill = GridBagConstraints.BOTH;
 | |
| 		constraints.gridwidth = 1;
 | |
| 		constraints.gridheight = 1;
 | |
| 		constraints.weightx = 0.3;
 | |
| 		constraints.weighty = 1;
 | |
| 		
 | |
| 		gridbag.setConstraints( empresasScroll, constraints );
 | |
| 		
 | |
| 		gridbag.setConstraints( estabelecimentosScroll, constraints );
 | |
| 		
 | |
| 		constraints.weightx = 0.4;
 | |
| 		constraints.gridheight = GridBagConstraints.REMAINDER;
 | |
| 		gridbag.setConstraints( trabalhadoresScroll, constraints );
 | |
| 		
 | |
| 		add( empresasScroll );
 | |
| 		add( estabelecimentosScroll );
 | |
| 		add( trabalhadoresScroll );
 | |
| 		
 | |
| 		ColumnizedMappable empresas[] = provider.getAllEmpresas();
 | |
| 		Vector values = empresasModel.getValues();
 | |
| 		values.addAll( Arrays.asList( empresas ) );
 | |
| 		empresasModel.setValues( values );
 | |
| 	}
 | |
| 	
 | |
| 	public void valueChanged( ListSelectionEvent e )
 | |
| 	{
 | |
| 		Object source = e.getSource();
 | |
| 		if( e.getValueIsAdjusting() )
 | |
| 		{
 | |
| 			return;
 | |
| 		}
 | |
| 		if( source.equals( empresasTable.getSelectionModel() ) )
 | |
| 		{
 | |
| 			carregarEstabelecimentos();
 | |
| 		}
 | |
| 		else if( source.equals( estabelecimentosTable.getSelectionModel() ) )
 | |
| 		{
 | |
| 			carregarTrabalhadores();
 | |
| 		}
 | |
| 		else if( source.equals( trabalhadoresTable.getSelectionModel() ) )
 | |
| 		{
 | |
| 			notifyListeners( e );
 | |
| 		}
 | |
| 	}
 | |
| 	
 | |
| 	protected void carregarEstabelecimentos()
 | |
| 	{
 | |
| 		estabelecimentosTable.clearSelection();
 | |
| 		int selected = empresasTable.getSelectedRow();
 | |
| 		estabelecimentosModel.clearAll();
 | |
| 		if( selected > -1 )
 | |
| 		{
 | |
| 			try
 | |
| 			{
 | |
| 				Integer empresaID = ( ( ColumnizedMappable ) empresasModel.getRowAt( selected ) ).getID();
 | |
| 				ColumnizedMappable estabelecimentos[] = provider.getAllEstabelecimentosForEmpresa( empresaID);
 | |
| 				Vector values = estabelecimentosModel.getValues();
 | |
| 				values.addAll( Arrays.asList( estabelecimentos ) );
 | |
| 				estabelecimentosModel.setValues( values );
 | |
| 			}
 | |
| 			catch( Exception ex )
 | |
| 			{
 | |
| 				DialogException.showExceptionMessage( ex, "Erro a carregar os estabelecimentos.", true );
 | |
| 				estabelecimentosModel.clearAll();
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| 	
 | |
| 	protected void carregarTrabalhadores()
 | |
| 	{
 | |
| 		trabalhadoresTable.clearSelection();
 | |
| 		int selected = estabelecimentosTable.getSelectedRow();
 | |
| 		trabalhadoresModel.clearAll();
 | |
| 		if( selected > -1 )
 | |
| 		{
 | |
| 			try
 | |
| 			{
 | |
| 				Integer estabelecimentoID = ( ( ColumnizedMappable ) estabelecimentosModel.getRowAt( selected ) ).getID();
 | |
| 				ColumnizedMappable trabalhadores[] = provider.getAllTrabalhadoresForEstabelecimento( estabelecimentoID );
 | |
| 				Vector values = trabalhadoresModel.getValues();
 | |
| 				values.addAll( Arrays.asList( trabalhadores ) );
 | |
| 				trabalhadoresModel.setValues( values );
 | |
| 			}
 | |
| 			catch( Exception ex )
 | |
| 			{
 | |
| 				DialogException.showExceptionMessage( ex, "Erro a carregar trabalhadores.", true );
 | |
| 				trabalhadoresModel.clearAll();
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| 	
 | |
| 	protected void notifyListeners( ListSelectionEvent e )
 | |
| 	{
 | |
| 		for( int n = 0; n < listeners.size(); n++ )
 | |
| 		{
 | |
| 			ListSelectionEvent event = 
 | |
| 					new ListSelectionEvent( this, e.getFirstIndex(), e.getLastIndex(), e.getValueIsAdjusting() );
 | |
| 			( ( ListSelectionListener ) listeners.elementAt( n ) ).valueChanged( event );
 | |
| 		}
 | |
| 	}
 | |
| 	
 | |
| 	public void addListSelectionListener( ListSelectionListener listener )
 | |
| 	{
 | |
| 		listeners.add( listener );
 | |
| 	}
 | |
| 	
 | |
| 	public void removeSelectionListener( ListSelectionListener listener )
 | |
| 	{
 | |
| 		listeners.remove( listener );
 | |
| 	}
 | |
| 	
 | |
| 	public void clear()
 | |
| 	{
 | |
| //		empresasTable.clearSelection();
 | |
| 	}
 | |
| 	
 | |
| 	public void fill( Object value )
 | |
| 	{
 | |
| 		if( value == null )
 | |
| 		{
 | |
| 			clear();
 | |
| 		}
 | |
| 		Integer ids[] = ( Integer [] ) value;
 | |
| 		for( int n = 0; n < empresasTable.getRowCount(); n++ )
 | |
| 		{
 | |
| 			if( ( ( ColumnizedMappable ) empresasModel.getRowAt( n ) ).getID().equals( ids[ 0 ] ) )
 | |
| 			{
 | |
| 				empresasTable.setRowSelectionInterval( n, n );
 | |
| 				break;
 | |
| 			}
 | |
| 		}
 | |
| 		
 | |
| 		for( int n = 0; n < estabelecimentosTable.getRowCount(); n++ )
 | |
| 		{
 | |
| 			if( ( ( ColumnizedMappable ) estabelecimentosModel.getRowAt( n ) ).getID().equals( ids[ 1 ] ) )
 | |
| 			{
 | |
| 				estabelecimentosTable.setRowSelectionInterval( n, n );
 | |
| 				break;
 | |
| 			}
 | |
| 		}
 | |
| 		
 | |
| 		for( int n = 0; n < trabalhadoresTable.getRowCount(); n++ )
 | |
| 		{
 | |
| 			if( ( ( ColumnizedMappable ) trabalhadoresModel.getRowAt( n ) ).getID().equals( ids[ 2 ] ) )
 | |
| 			{
 | |
| 				trabalhadoresTable.setRowSelectionInterval( n, n );
 | |
| 				break;
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| 	
 | |
| 	public Object save()
 | |
| 	{
 | |
| 		int empresaSelected = empresasTable.getSelectedRow();
 | |
| 		int estabelecimentoSelected = estabelecimentosTable.getSelectedRow();
 | |
| 		int trabalhadorSelected = trabalhadoresTable.getSelectedRow();
 | |
| 		return new Integer[]{
 | |
| 				empresaSelected == -1 ? null : ( ( ColumnizedMappable ) empresasModel.getRowAt( empresaSelected ) ).getID(),
 | |
| 				estabelecimentoSelected == -1 ? null : ( ( ColumnizedMappable ) estabelecimentosModel.getRowAt( estabelecimentoSelected ) ).getID(),
 | |
| 				trabalhadorSelected == -1 ? null : ( ( ColumnizedMappable ) trabalhadoresModel.getRowAt( trabalhadorSelected ) ).getID()
 | |
| 			};
 | |
| 	}
 | |
| 	
 | |
| 	public void setEnabled( boolean enable )
 | |
| 	{
 | |
| 		editing = !enable;
 | |
| 		empresasTable.setEnabled( enable );
 | |
| 		estabelecimentosTable.setEnabled( enable );
 | |
| 		trabalhadoresTable.setEnabled( enable );
 | |
| 	}
 | |
| }
 |