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.
		
		
		
		
		
			
		
			
				
					
					
						
							451 lines
						
					
					
						
							14 KiB
						
					
					
				
			
		
		
	
	
							451 lines
						
					
					
						
							14 KiB
						
					
					
				| /*
 | |
|  * EstabelecimentoPanel.java
 | |
|  *
 | |
|  * Created on 14 de Maio de 2004, 12:21
 | |
|  */
 | |
| 
 | |
| package siprp.clientes;
 | |
| 
 | |
| import java.awt.*;
 | |
| import java.awt.event.*;
 | |
| import javax.swing.*;
 | |
| import javax.swing.event.*;
 | |
| import java.util.*;
 | |
| 
 | |
| import com.evolute.utils.*;
 | |
| import com.evolute.utils.data.*;
 | |
| import com.evolute.utils.dataui.*;
 | |
| import com.evolute.utils.documents.*;
 | |
| import com.evolute.utils.jdo.*;
 | |
| import com.evolute.utils.tables.*;
 | |
| import com.evolute.utils.ui.*;
 | |
| import com.evolute.utils.ui.text.*;
 | |
| 
 | |
| import siprp.*;
 | |
| import siprp.data.*;
 | |
| /**
 | |
|  *
 | |
|  * @author  fpalma
 | |
|  */
 | |
| public class EstabelecimentoPanel extends JPanel
 | |
| 	implements ControllableComponent, ListSelectionListener, ActionListener
 | |
| {
 | |
| 	public static int disables = 0;
 | |
| 	
 | |
| 	private JDOProvider JDO;
 | |
| 	
 | |
| 	private EstabelecimentoData estabelecimento;
 | |
| 	private ComponentsHashtable components;
 | |
| 	
 | |
| 	private EmpresaData empresa;
 | |
| 	
 | |
| 	private JTable estabelecimentosTable;	
 | |
| 	private JPanel toolbarPanel;
 | |
| 	
 | |
| 	private JTextField designacaoText;
 | |
| 	private JTextField moradaText;
 | |
| 	private JTextField localText;
 | |
| 	private JTextField codigoPostalText;
 | |
| 	private ContactoPanel contactoPanel;
 | |
| 	private JTextArea historicoText;
 | |
| 	private JButton marcacoesButton;
 | |
| 	
 | |
| 	private JPanel historicoPanel;
 | |
| 	private JPanel listaHistoricoPanel;
 | |
| 	private BaseTable historicoTable;
 | |
| 	private HistoricoEstabelecimentoPanel edicaoHistoricoPanel;
 | |
| 	private CardLayout historicoCardLayout;
 | |
| 		
 | |
| //	private MarcacaoPanel marcacaoPanel;
 | |
| 	private SIPRPTracker tracker;
 | |
| 	
 | |
| 	private boolean lastEnable = false;
 | |
| 
 | |
| 	/** Creates a new instance of EstabelecimentoPanel */
 | |
| 	public EstabelecimentoPanel( JPanel toolbarPanel, JTextField designacaoText, JTable estabelecimentosTable )
 | |
| 	{
 | |
| 		this.toolbarPanel = toolbarPanel;
 | |
| 		this.designacaoText = designacaoText;
 | |
| 		this.estabelecimentosTable = estabelecimentosTable;
 | |
| 		JDO = ( JDOProvider ) Singleton.getInstance( Singleton.DEFAULT_JDO_PROVIDER );
 | |
| 		setupComponents();
 | |
| 		setupComponentsHashtable();
 | |
| 	}
 | |
| 	
 | |
| 	private void setupComponents()
 | |
| 	{
 | |
| 		JPanel dadosEstabelecimentoPanel = new JPanel();
 | |
| 		JLabel designacaoLabel = new JLabel( "Designa\u00e7\u00e3o" );
 | |
| 		//designacaoText = new JTextField();
 | |
| 		JLabel moradaLabel = new JLabel( "Morada" );
 | |
| 		moradaText = new JTextField();
 | |
| 		JLabel codigoPostalLabel = new JLabel( "C\u00f3digo Postal" );
 | |
| 		codigoPostalText = new JTextField();
 | |
| 		codigoPostalText.setDocument( new MaximumLengthDocument( 8 ) );
 | |
| 		JLabel localLabel = new JLabel( "Local" );
 | |
| 		localText = new JTextField();
 | |
| 		contactoPanel = new ContactoPanel();
 | |
| 		contactoPanel.setBorder( BorderFactory.createTitledBorder( 
 | |
| 									BorderFactory.createEtchedBorder(),
 | |
| 									"Contacto" ) );
 | |
| 		marcacoesButton = new JButton( "Marca\u00e7\u00f5es" );
 | |
| 		marcacoesButton.addActionListener( this );
 | |
| 		JPanel pad;
 | |
| 		historicoText = new JTextArea();
 | |
| 		new CopyPasteHandler( historicoText );
 | |
| 		historicoText.setLineWrap( true );
 | |
| 		historicoText.setWrapStyleWord( true );
 | |
| 		JScrollPane observacoesScp = new JScrollPane( historicoText, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, 
 | |
| 													JScrollPane.HORIZONTAL_SCROLLBAR_NEVER );
 | |
| 		observacoesScp.setBorder( BorderFactory.createTitledBorder( 
 | |
| 									BorderFactory.createEtchedBorder(), "Observa\u00e7\u00f5es" ) );
 | |
| 		historicoPanel = new JPanel();
 | |
| 		historicoPanel.setBorder( BorderFactory.createTitledBorder( 
 | |
| 									BorderFactory.createEtchedBorder(), "Hist\u00f3rico" ) );
 | |
| //		marcacaoPanel = new MarcacaoPanel( true, "Realizada", "Relat\u00f3rio", Marcacao.TIPO_MARCACAO_ESTABELECIMENTO );
 | |
| //		marcacaoPanel.setCalendarDialogOrientation( JCalendarDialog.ABOVE, JCalendarDialog.LEFT );
 | |
| //		marcacaoPanel.setBorder( BorderFactory.createTitledBorder( 
 | |
| //									BorderFactory.createEtchedBorder(),
 | |
| //									"Visita" ) );
 | |
| 		
 | |
| 		GridBagLayout gridbag = new GridBagLayout();
 | |
| 		dadosEstabelecimentoPanel.setLayout( gridbag );
 | |
| 		GridBagConstraints constraints = new GridBagConstraints();
 | |
| 		constraints.insets = new Insets( 1, 1, 1, 1 );
 | |
| 		constraints.fill = GridBagConstraints.HORIZONTAL;
 | |
| 		constraints.gridheight = 1;
 | |
| 		constraints.weighty = 0;
 | |
| 		
 | |
| 		constraints.weightx = 1;
 | |
| 		constraints.gridwidth = GridBagConstraints.REMAINDER;
 | |
| 		gridbag.setConstraints( toolbarPanel, constraints );
 | |
| 		dadosEstabelecimentoPanel.add( toolbarPanel );
 | |
| 		
 | |
| 		constraints.fill = GridBagConstraints.HORIZONTAL;
 | |
| 		constraints.weighty = 1;
 | |
| 		pad = new JPanel();
 | |
| 		gridbag.setConstraints( pad, constraints );
 | |
| 		dadosEstabelecimentoPanel.add( pad );
 | |
| 		constraints.fill = GridBagConstraints.HORIZONTAL;
 | |
| 		constraints.weighty = 0;
 | |
| 		
 | |
| 		constraints.weightx = 0;
 | |
| 		constraints.gridwidth = 1;
 | |
| 		gridbag.setConstraints( moradaLabel, constraints );
 | |
| 		dadosEstabelecimentoPanel.add( moradaLabel );
 | |
| 		
 | |
| 		constraints.weightx = 1;
 | |
| 		constraints.gridwidth = GridBagConstraints.REMAINDER;
 | |
| 		gridbag.setConstraints( moradaText, constraints );
 | |
| 		dadosEstabelecimentoPanel.add( moradaText );
 | |
| 		
 | |
| 		constraints.weightx = 0;
 | |
| 		constraints.gridwidth = 1;
 | |
| 		gridbag.setConstraints( codigoPostalLabel, constraints );
 | |
| 		dadosEstabelecimentoPanel.add( codigoPostalLabel );
 | |
| 		
 | |
| 		constraints.weightx = 0.3;
 | |
| 		constraints.gridwidth = 1;
 | |
| 		gridbag.setConstraints( codigoPostalText, constraints );
 | |
| 		dadosEstabelecimentoPanel.add( codigoPostalText );
 | |
| 		
 | |
| 		constraints.weightx = 0.7;
 | |
| 		constraints.gridwidth = GridBagConstraints.REMAINDER;		
 | |
| 		pad = new JPanel();
 | |
| 		gridbag.setConstraints( pad, constraints );
 | |
| 		dadosEstabelecimentoPanel.add( pad );
 | |
| 		
 | |
| 		constraints.weightx = 0;
 | |
| 		constraints.gridwidth = 1;
 | |
| 		gridbag.setConstraints( localLabel, constraints );
 | |
| 		dadosEstabelecimentoPanel.add( localLabel );
 | |
| 		
 | |
| 		constraints.weightx = 1;
 | |
| 		constraints.gridwidth = GridBagConstraints.REMAINDER;
 | |
| 		gridbag.setConstraints( localText, constraints );
 | |
| 		dadosEstabelecimentoPanel.add( localText );
 | |
| 		
 | |
| 		constraints.weightx = 1;
 | |
| 		constraints.gridwidth = GridBagConstraints.REMAINDER;
 | |
| 		gridbag.setConstraints( marcacoesButton, constraints );
 | |
| 		dadosEstabelecimentoPanel.add( marcacoesButton );
 | |
| 		
 | |
| 		constraints.weightx = 1;
 | |
| 		constraints.gridwidth = GridBagConstraints.REMAINDER;
 | |
| 		gridbag.setConstraints( contactoPanel, constraints );
 | |
| 		
 | |
| 		gridbag = new GridBagLayout();
 | |
| 		setLayout( gridbag );
 | |
| 		constraints.fill = GridBagConstraints.BOTH;
 | |
| 		constraints.weighty = 0;
 | |
| 		constraints.gridheight = 1;
 | |
| 		constraints.weightx = 0.5;
 | |
| 		constraints.gridwidth = 1;
 | |
| 		gridbag.setConstraints( dadosEstabelecimentoPanel, constraints );
 | |
| 		constraints.gridwidth = GridBagConstraints.REMAINDER;
 | |
| 		gridbag.setConstraints( contactoPanel, constraints );
 | |
| 		constraints.weightx = 0.5;
 | |
| 		constraints.weighty = 1;
 | |
| 		constraints.gridwidth = 1;
 | |
| 		constraints.gridheight = GridBagConstraints.REMAINDER;
 | |
| 		gridbag.setConstraints( historicoPanel, constraints );
 | |
| 		constraints.weightx = 0.5;
 | |
| 		constraints.weighty = 1;
 | |
| 		constraints.gridheight = GridBagConstraints.REMAINDER;
 | |
| 		constraints.gridwidth = GridBagConstraints.REMAINDER;
 | |
| 		gridbag.setConstraints( observacoesScp, constraints );
 | |
| 		add( dadosEstabelecimentoPanel );
 | |
| 		add( contactoPanel );
 | |
| 		add( historicoPanel );
 | |
| 		add( observacoesScp );
 | |
| 		
 | |
| 		listaHistoricoPanel = new JPanel();
 | |
| 		listaHistoricoPanel.setLayout( new GridLayout( 1, 1 ) );
 | |
| 		VectorTableModel marcacoesModel = new VectorTableModel( new String[]{ "Data", "Texto" } );
 | |
| 		historicoTable = new BaseTable( marcacoesModel );
 | |
| 		historicoTable.setToolTipColumn( 1 );
 | |
| 		historicoTable.fixColumnWidth( 0, 150 );
 | |
| 		historicoTable.setNonResizableNorReordable();
 | |
| 		JScrollPane listaHistoricoScp = new JScrollPane( historicoTable, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, 
 | |
| 													JScrollPane.HORIZONTAL_SCROLLBAR_NEVER );
 | |
| 		listaHistoricoPanel.add( listaHistoricoScp );
 | |
| 		
 | |
| 		historicoCardLayout = new CardLayout();
 | |
| 		edicaoHistoricoPanel = new HistoricoEstabelecimentoPanel( this );
 | |
| 		historicoPanel.setLayout( historicoCardLayout );
 | |
| 		historicoPanel.add( HistoricoEstabelecimentoPanel.LIST_PANEL, listaHistoricoPanel );
 | |
| 		historicoPanel.add( HistoricoEstabelecimentoPanel.EDIT_PANEL, edicaoHistoricoPanel );
 | |
| 		
 | |
| 		historicoTable.getSelectionModel().addListSelectionListener( new ListSelectionListener(){
 | |
| 			public void valueChanged( ListSelectionEvent e )
 | |
| 			{
 | |
| 				int selected = historicoTable.getSelectedRow();
 | |
| 				if( selected == -1 || e.getValueIsAdjusting() )
 | |
| 				{
 | |
| 					return;
 | |
| 				}
 | |
| 				Object row = ( (VectorTableModel)historicoTable.getModel() ).getRowAt( selected );
 | |
| 				historicoTable.clearSelection();
 | |
| 				edicaoHistoricoPanel.setEstabelecimento( estabelecimento );
 | |
| 				if( row != null && row instanceof HistoricoEstabelecimentoData )
 | |
| 				{
 | |
| 					edicaoHistoricoPanel.fill( row );
 | |
| 				}
 | |
| 				else
 | |
| 				{
 | |
| 					edicaoHistoricoPanel.fill( null );
 | |
| 				}
 | |
| 				historicoCardLayout.show( historicoPanel, HistoricoEstabelecimentoPanel.EDIT_PANEL );
 | |
| 			}
 | |
| 		} );
 | |
| 		
 | |
| 		new CopyPasteHandler( designacaoText );
 | |
| 		new CopyPasteHandler( moradaText );
 | |
| 		new CopyPasteHandler( localText );
 | |
| 		new CopyPasteHandler( codigoPostalText );
 | |
| 	}
 | |
| 	
 | |
| 	private void setupComponentsHashtable()
 | |
| 	{
 | |
| 		components = new ComponentsHashtable();
 | |
| 		components.putComponent( EstabelecimentoData.NOME, designacaoText );
 | |
| 		components.putComponent( EstabelecimentoData.MORADA, moradaText );
 | |
| 		components.putComponent( EstabelecimentoData.LOCALIDADE, localText );
 | |
| 		components.putComponent( EstabelecimentoData.CODIGO_POSTAL, codigoPostalText );
 | |
| 		components.putComponent( EstabelecimentoData.CONTACTO, contactoPanel );
 | |
| //		components.putComponent( EstabelecimentoData.HISTORICO, historicoText );
 | |
| 		components.putComponent( EstabelecimentoData.HISTORICO, historicoText );
 | |
| 		components.putDummy( EstabelecimentoData.EMPRESA );
 | |
| 		components.putDummy( EstabelecimentoData.NOME_PLAIN );
 | |
| //		components.putDummy( EstabelecimentoData.INACTIVO );
 | |
| 	}
 | |
| 	
 | |
| 	public void clear()
 | |
| 	{
 | |
| 		String names[] = (String[])components.keySet().toArray( new String[0] );
 | |
| 		ComponentController.clear( names, components );
 | |
| 		clearHistorico();
 | |
| 		estabelecimento = null;
 | |
| 	}
 | |
| 	
 | |
| 	public void fill(Object value)
 | |
| 	{
 | |
| 		clear();
 | |
| 		estabelecimento = ( EstabelecimentoData ) value;
 | |
| //		marcacaoPanel.setEnabled( estabelecimento != null );
 | |
| //		marcacaoPanel.fill( estabelecimento );
 | |
| 		if( estabelecimento == null )
 | |
| 		{
 | |
| 			estabelecimentosTable.clearSelection();
 | |
| 			return;
 | |
| 		}
 | |
| 		String names[] = estabelecimento.getFieldNames();
 | |
| 		ComponentController.fill( names, estabelecimento.getHashData(), components );
 | |
| 		reloadHistorico();
 | |
| 	}
 | |
| 	
 | |
| 	public Object save()
 | |
| 	{
 | |
| 		if( estabelecimento == null )
 | |
| 		{
 | |
| 			estabelecimento = new EstabelecimentoData();
 | |
| 		}
 | |
| 			
 | |
| 		String names[] = estabelecimento.getFieldNames();
 | |
| 		Hashtable hash = new Hashtable();
 | |
| 		ComponentController.save( names, hash, components );
 | |
| 		estabelecimento.setHashData( hash );
 | |
| 		estabelecimento.set( EstabelecimentoData.EMPRESA, empresa );
 | |
| 		return estabelecimento;
 | |
| 	}
 | |
| 	
 | |
| 	public void postSave()
 | |
| 	{
 | |
| 		int selected = estabelecimentosTable.getSelectedRow();
 | |
| 		if( estabelecimento != null )
 | |
| 		{
 | |
| 			IDObject obj = new MappableObject( (Integer) estabelecimento.get( EstabelecimentoData.ID ), estabelecimento.get( EstabelecimentoData.NOME ) );
 | |
| 			VectorTableModel model = (VectorTableModel)estabelecimentosTable.getModel();
 | |
| 			if( selected == -1 )
 | |
| 			{
 | |
| 				model.insertRowAt( obj, estabelecimentosTable.getRowCount() );
 | |
| 				estabelecimentosTable.setRowSelectionInterval( estabelecimentosTable.getRowCount() - 1, estabelecimentosTable.getRowCount() - 1 );
 | |
| 			}
 | |
| 			else
 | |
| 			{
 | |
| 				model.removeRowAt( selected );
 | |
| 				model.insertRowAt( obj, selected );
 | |
| 				estabelecimentosTable.setRowSelectionInterval( selected, selected );
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| 	
 | |
| 	public void setEnabled( boolean enable )
 | |
| 	{
 | |
| 		super.setEnabled( enable );
 | |
| 		String names[] = (String[])components.keySet().toArray( new String[0] );
 | |
| 		ComponentController.setEnabled( names, enable, components );
 | |
| 		if( enable != lastEnable )
 | |
| 		{
 | |
| 			if( enable )
 | |
| 			{
 | |
| 				disables++;
 | |
| 			}
 | |
| 			else
 | |
| 			{
 | |
| 				disables--; 
 | |
| 			}
 | |
| 			lastEnable = enable;
 | |
| 		}
 | |
| 		estabelecimentosTable.setEnabled( disables == 0 );
 | |
| //		if( estabelecimento == null )
 | |
| //		{
 | |
| //			marcacaoPanel.setEnabled( false );
 | |
| //		}
 | |
| 	}
 | |
| 	
 | |
| 	public void valueChanged( ListSelectionEvent e )
 | |
| 	{
 | |
| 		Object source = e.getSource();
 | |
| 		if( source instanceof EmpresaPanel )
 | |
| 		{
 | |
| 			Integer id = ( ( EmpresaPanel ) source ).getSelectedEstabelecimento();
 | |
| 			if( id != null )
 | |
| 			{
 | |
| 				try
 | |
| 				{
 | |
| 					EstabelecimentoData estab = ( EstabelecimentoData ) JDO.load( EstabelecimentoData.class, id );
 | |
| 					fill( estab );
 | |
| 				}
 | |
| 				catch( Exception ex )
 | |
| 				{
 | |
| 					DialogException.showExceptionMessage( ex, "Erro a carregar o estabelecimento", true );
 | |
| 					clear();
 | |
| 				}
 | |
| 			}
 | |
| 			else
 | |
| 			{
 | |
| 				clear();
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| 	
 | |
| 	public void reload()
 | |
| 	{
 | |
| 		fill( estabelecimento );
 | |
| 	}
 | |
| 	
 | |
| 	public void setEmpresa( EmpresaData empresa )
 | |
| 	{
 | |
| 		this.empresa = empresa;
 | |
| 	}
 | |
| 	
 | |
| 	protected void reloadHistorico()
 | |
| 	{
 | |
| 		try
 | |
| 		{
 | |
| 			Collection historicoCollection =
 | |
| 				JDO.listLoad( HistoricoEstabelecimento.class, new Object[]{ estabelecimento.get( EstabelecimentoData.ID ) },
 | |
| 								new String []{ "estabelecimento.id" }, new String[]{ "data descending" } );
 | |
| 			Vector historico = new Vector();
 | |
| 			historico.add( new ColumnizedObject(){
 | |
| 				public Object getValue( int col )
 | |
| 				{
 | |
| 					switch( col )
 | |
| 					{
 | |
| 						case 0:
 | |
| 							return "";
 | |
| 						case 1:
 | |
| 							return "NOVO EVENTO...";
 | |
| 					}
 | |
| 					return null;
 | |
| 				}
 | |
| 			} );
 | |
| 			if( historicoCollection != null )
 | |
| 			{
 | |
| 				historico.addAll( historicoCollection );
 | |
| 			}
 | |
| 			historicoTable.clearSelection();
 | |
| 			( (VectorTableModel) historicoTable.getModel() ).setValues( historico );
 | |
| 		}
 | |
| 		catch( Exception ex )
 | |
| 		{
 | |
| 			DialogException.showExceptionMessage( ex, "Erro a carregar as Marca\u00e7\u00f5es", true );
 | |
| 		}
 | |
| 		showHistorico();
 | |
| 	}
 | |
| 	
 | |
| 	protected void showHistorico()
 | |
| 	{
 | |
| 		historicoCardLayout.show( historicoPanel, HistoricoEstabelecimentoPanel.LIST_PANEL );
 | |
| 	}
 | |
| 	
 | |
| 	protected void clearHistorico()
 | |
| 	{
 | |
| 		( (VectorTableModel) historicoTable.getModel() ).clearAll();
 | |
| 	}
 | |
| 	
 | |
| 	public void actionPerformed( ActionEvent e )
 | |
| 	{
 | |
| 		Object source = e.getSource();
 | |
| 		if( source.equals( marcacoesButton ) )
 | |
| 		{
 | |
| 			if( empresa == null || estabelecimento == null )
 | |
| 			{
 | |
| 				return;
 | |
| 			}
 | |
| 			else
 | |
| 			{
 | |
| 				tracker.getHigieneWindow().setVisible( true );
 | |
| 				tracker.getHigieneWindow().setEmpresaAndEstabelecimento( (Integer) empresa.get( EmpresaData.ID ),
 | |
| 																( Integer ) estabelecimento.get( EstabelecimentoData.ID ) );
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| 	
 | |
| 	public void setTracker( SIPRPTracker tracker )
 | |
| 	{
 | |
| 		this.tracker = tracker;
 | |
| 	}
 | |
| }
 |