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.
SIPRP/trunk/siprp/ficha/MedicoEditor.java

253 lines
6.6 KiB

/*
* MedicoEditor.java
*
* Created on 10 de Abril de 2004, 20:50
*/
package siprp.ficha;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.util.*;
import com.evolute.utils.metadb.*;
import com.evolute.utils.tables.*;
import com.evolute.utils.ui.*;
import siprp.*;
/**
*
* @author Administrator
*/
public class MedicoEditor extends CustomJDialog
implements ActionListener, ListSelectionListener
{
private FichaDataProvider provider;
private BaseTable table;
private VectorTableModel model;
private JButton okButton;
private JButton cancelarButton;
private JButton novoButton;
private JTextField nomeText;
private JTextField numeroText;
private Integer id;
private boolean isNew = false;
/** Creates a new instance of MedicoEditor */
public MedicoEditor( JFrame owner )
throws Exception
{
super( owner, true );
provider = (FichaDataProvider)FichaDataProvider.getProvider();
setupComponents();
}
private void setupComponents()
throws Exception
{
setSize( 600, 300 );
setResizable( false );
setTitle( "Criar/Editar M\u00e9dico" );
centerSuper();
model = new VectorTableModel( new String[]{ "Nome", "NC" } );
table = new BaseTable( model );
table.setSelectionMode( ListSelectionModel.SINGLE_SELECTION );
JScrollPane scp = new JScrollPane();
scp.setMinimumSize( new Dimension( 300, 200 ) );
scp.setMaximumSize( new Dimension( 300, 200 ) );
scp.setPreferredSize( new Dimension( 300, 200 ) );
scp.setSize( new Dimension( 300, 200 ) );
scp.setViewportView( table );
scp.setHorizontalScrollBarPolicy( JScrollPane.HORIZONTAL_SCROLLBAR_NEVER );
scp.setVerticalScrollBarPolicy( JScrollPane.VERTICAL_SCROLLBAR_ALWAYS );
table.fixColumnWidth( 0, 200 );
table.setNonResizableNorReordable();
table.getSelectionModel().addListSelectionListener( this );
Object obj[][] = provider.getAllMedicos();
Vector medicos = new Vector();
for( int n = 0; n < obj.length; n++ )
{
medicos.add( new MedicoColumnizedObject( (Integer)obj[n][0],
(String)obj[n][1],
(String)obj[n][2] ) );
}
model.setValues( medicos );
okButton = new JButton( "OK" );
cancelarButton = new JButton( "Cancelar" );
novoButton = new JButton( "Novo" );
okButton.addActionListener( this );
cancelarButton.addActionListener( this );
novoButton.addActionListener( this );
nomeText = new JTextField();
nomeText.setEnabled( false );
numeroText = new JTextField();
numeroText.setEnabled( false );
GridBagLayout gridbag = new GridBagLayout();
getContentPane().setLayout( gridbag );
GridBagConstraints constraints = new GridBagConstraints();
constraints.insets = new Insets( 1, 1, 1, 1 );
constraints.fill = GridBagConstraints.BOTH;
constraints.weighty = 1;
constraints.weightx = 1;
constraints.gridwidth = GridBagConstraints.REMAINDER;
constraints.gridheight = 1;
JPanel upperPanel = new JPanel();
upperPanel.setLayout( new GridLayout( 1, 2 ) );
upperPanel.add( scp );
JPanel textPanel = new JPanel();
upperPanel.add( textPanel );
gridbag.setConstraints( upperPanel, constraints );
getContentPane().add( upperPanel );
constraints.fill = GridBagConstraints.HORIZONTAL;
constraints.weighty = 0;
constraints.weightx = 0.3;
constraints.gridwidth = 1;
constraints.gridheight = GridBagConstraints.REMAINDER;;
gridbag.setConstraints( novoButton, constraints );
getContentPane().add( novoButton );
gridbag.setConstraints( okButton, constraints );
getContentPane().add( okButton );
constraints.gridwidth = GridBagConstraints.REMAINDER;
gridbag.setConstraints( cancelarButton, constraints );
getContentPane().add( cancelarButton );
gridbag = new GridBagLayout();
textPanel.setLayout( gridbag );
constraints.weighty = 0;
constraints.weightx = 1;
constraints.gridwidth = GridBagConstraints.REMAINDER;
constraints.gridheight = 1;
JLabel nomeLabel = new JLabel( "Nome" );
gridbag.setConstraints( nomeLabel, constraints );
textPanel.add( nomeLabel );
gridbag.setConstraints( nomeText, constraints );
textPanel.add( nomeText );
JLabel numeroLabel = new JLabel( "N\u00famero" );
gridbag.setConstraints( numeroLabel, constraints );
textPanel.add( numeroLabel );
gridbag.setConstraints( numeroText, constraints );
textPanel.add( numeroText );
constraints.weighty = 1;
constraints.gridheight = GridBagConstraints.REMAINDER;;
JPanel pad = new JPanel();
gridbag.setConstraints( pad, constraints );
textPanel.add( pad );
}
public void actionPerformed( ActionEvent e )
{
if( e.getSource().equals( okButton ) )
{
if( save() )
{
close();
}
}
else if( e.getSource().equals( cancelarButton ) )
{
close();
}
if( e.getSource().equals( novoButton ) )
{
table.getSelectionModel().removeListSelectionListener( this );
nomeText.setText( "" );
numeroText.setText( "" );
nomeText.setEnabled( true );
numeroText.setEnabled( true );
id = null;
isNew = true;
}
}
public void valueChanged(javax.swing.event.ListSelectionEvent listSelectionEvent)
{
int selected = table.getSelectedRow();
if( selected == -1 )
{
return;
}
MedicoColumnizedObject row = (MedicoColumnizedObject)model.getRowAt( selected );
id = row.getID();
String nome = (String) row.getValue( 0 );
String numero = (String) row.getValue( 1 );
nomeText.setText( nome );
numeroText.setText( numero );
nomeText.setEnabled( true );
numeroText.setEnabled( true );
}
private void close()
{
setVisible( false );
dispose();
}
public boolean getIsNew()
{
return isNew;
}
public Integer getID()
{
return id;
}
private boolean save()
{
String nome = nomeText.getText().trim();
String numero = numeroText.getText().trim();
if( nome.length() == 0 )
{
JOptionPane.showMessageDialog( this, "O Nome n\u00e3o pode ser vazio.", "Erro...",
JOptionPane.ERROR_MESSAGE );
return false;
}
try
{
MetaObject medico;
if( id != null )
{
medico = provider.load( provider.MEDICOS, new DBKey( id ) );
}
else
{
medico = provider.createObject( provider.MEDICOS );
}
medico.setProperty( provider.NOME, nome );
medico.setProperty( provider.NUMERO_CEDULA, numero );
medico.save();
if( id == null )
{
DBKey key = medico.getPrimaryKeyValue();
DBField fields[] = provider.MEDICOS.getPrimaryKey();
id = new Integer( ((Number)key.getFieldValue( fields[ 0 ] )).intValue() );
}
}
catch( Exception ex )
{
JOptionPane.showMessageDialog( this, "Erro a gravar...", "Erro...",
JOptionPane.ERROR_MESSAGE );
return false;
}
return true;
}
}