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/clientes/UserPanel.java

233 lines
5.6 KiB

/*
* UserPanel.java
*
* Created on 8 de Novembro de 2004, 17:03
*/
package siprp.clientes;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import com.evolute.utils.ui.*;
import com.evolute.utils.ui.text.*;
/**
*
* @author fpalma
*/
public class UserPanel extends JPanel
implements DocumentListener, FocusListener, ActionListener
{
private UserDataProvider provider;
private JTextField userNameText;
private JTextField passwordText;
private JButton applyButton;
private JButton cancelButton;
private boolean passwordEdited = false;
private boolean hasPassword = false;
private boolean error = false;
private Integer empresaID;
// public static void main( String args[] )
// {
// JFrame frame = new JFrame();
// frame.setSize( 300, 200 );
// frame.getContentPane().setLayout( new GridLayout( 1, 1 ) );
// frame.getContentPane().add( new UserPanel() );
// frame.show();
// }
/** Creates a new instance of UserPanel */
public UserPanel()
throws Exception
{
provider = ( UserDataProvider ) UserDataProvider.getProvider();
setupComponents();
}
private void setupComponents()
{
JLabel userNameLabel = new JLabel( "Utilizador" );
userNameText = new JTextField();
JLabel passwordLabel = new JLabel( "Senha" );
passwordText = new JTextField();
applyButton = new JButton( "Actualizar" );
cancelButton = new JButton( "Cancelar" );
userNameText.setPreferredSize( new Dimension( 200, 20 ) );
passwordText.setPreferredSize( new Dimension( 200, 20 ) );
passwordText.setText( "<N\u00e3o Definida>" );
GridBagLayout gridbag = new GridBagLayout();
setLayout( gridbag );
GridBagConstraints constraints = new GridBagConstraints();
constraints.insets = new Insets( 1, 1, 1, 1 );
constraints.fill = GridBagConstraints.HORIZONTAL;
constraints.weighty = 0;
constraints.gridheight = 1;
constraints.weightx = 1;
constraints.gridwidth = GridBagConstraints.REMAINDER;
gridbag.setConstraints( userNameLabel, constraints );
gridbag.setConstraints( passwordLabel, constraints );
gridbag.setConstraints( userNameText, constraints );
gridbag.setConstraints( passwordText, constraints );
JPanel buttonPanel = new JPanel();
gridbag.setConstraints( buttonPanel, constraints );
add( userNameLabel );
add( userNameText );
add( passwordLabel );
add( passwordText );
add( buttonPanel );
buttonPanel.setLayout( new FlowLayout( FlowLayout.RIGHT ) );
buttonPanel.add( applyButton );
buttonPanel.add( cancelButton );
passwordText.addFocusListener( this );
passwordText.getDocument().addDocumentListener( this );
applyButton.addActionListener( this );
cancelButton.addActionListener( this );
new CopyPasteHandler( userNameText );
new CopyPasteHandler( passwordText );
}
public void changedUpdate(javax.swing.event.DocumentEvent documentEvent)
{
passwordEdited = true;
}
public void insertUpdate(javax.swing.event.DocumentEvent documentEvent)
{
passwordEdited = true;
}
public void removeUpdate(javax.swing.event.DocumentEvent documentEvent)
{
passwordEdited = true;
}
public void focusGained(java.awt.event.FocusEvent focusEvent)
{
if( !passwordEdited )
{
passwordText.getDocument().removeDocumentListener( this );
passwordText.setText( "" );
passwordText.getDocument().addDocumentListener( this );
}
}
public void focusLost(java.awt.event.FocusEvent focusEvent)
{
}
public void actionPerformed(java.awt.event.ActionEvent actionEvent)
{
try
{
Object source = actionEvent.getSource();
if( applyButton.equals( source ) )
{
if( save() )
{
hasPassword = true;
}
refresh();
}
else if( cancelButton.equals( source ) )
{
reload();
refresh();
}
}
catch( Exception ex )
{
DialogException.showExceptionMessage( ex, "Erro na liga\u00e7\u00e3o \u00e0 Base de Dados WEB", true );
}
}
private void refresh()
{
passwordText.getDocument().removeDocumentListener( this );
if( !passwordEdited )
{
if( hasPassword )
{
passwordText.setText( "<Definida>" );
}
else
{
passwordText.setText( "<N\u00e3o Definida>" );
}
}
passwordText.getDocument().addDocumentListener( this );
}
public void setEmpresaID( Integer empresaID )
{
try
{
userNameText.setText( "" );
passwordText.setText( "" );
passwordEdited = false;
hasPassword = false;
this.empresaID = empresaID;
// if( empresaID == null )
// {
// return;
// }
reload();
refresh();
error = false;
}
catch( Exception ex )
{
DialogException.showExceptionMessage( ex, "Erro na liga\u00e7\u00e3o \u00e0 Base de Dados WEB", true );
userNameText.setText( "Erro na liga\u00e7\u00e3o" );
setEnabled( false );
error = true;
}
}
private boolean save()
throws Exception
{
if( !provider.checkNewName( userNameText.getText(), empresaID ) )
{
JOptionPane.showMessageDialog( null, "O Utilizador " + userNameText.getText() + " j\u00e1 est\u00e1 em uso por outra entidade." );
return false;
}
provider.saveUser( userNameText.getText(), passwordText.getText(), empresaID, !hasPassword );
passwordEdited = false;
return true;
}
private boolean reload()
throws Exception
{
String userName = provider.getUserName( empresaID );
if( userName != null )
{
userNameText.setText( userName );
hasPassword = true;
}
passwordEdited = false;
return true;
}
public void setEnabled( boolean enable )
{
userNameText.setEnabled( enable && !error );
passwordText.setEnabled( enable && !error );
applyButton.setEnabled( enable && !error );
cancelButton.setEnabled( enable && !error );
}
}