📄 addfrienddialog.java
字号:
/*
* @(#)AddFriendDialog.java
*
* Copyright (c) 2002, Jang-Ho Hwang
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* 3. Neither the name of the Jang-Ho Hwang nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* $Id: AddFriendDialog.java,v 1.3 2002/03/16 19:31:39 xrath Exp $
*/
package rath.jmsn.ui;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import rath.msnm.MSNMessenger;
import rath.msnm.event.MsnAdapter;
import rath.jmsn.ToolBox;
import rath.jmsn.util.Msg;
/**
* 模备 殿废窍绰 促捞倔肺弊
*
* @author Jang-Ho Hwang, rath@linuxkorea.co.kr
* @version $Id: AddFriendDialog.java,v 1.3 2002/03/16 19:31:39 xrath Exp $
*/
public class AddFriendDialog extends DefaultDialog implements ToolBox, ActionListener
{
private MSNMessenger msnm = null;
private JTextField emailField = null;
private JButton addButton, cancelButton;
private JLabel commentLabel = null;
private JProgressBar progress = null;
private Timer timer = null;
private MsnAdapter baseAdapter = new Adapter();
public AddFriendDialog( Frame owner, MSNMessenger msnm )
{
super( owner );
setTitle( Msg.get("title.adduser") );
this.msnm = msnm;
this.msnm.addMsnListener( baseAdapter );
createComponents();
}
private class Adapter extends MsnAdapter
{
public void addFailed( int err )
{
String msg = null;
switch( err )
{
case 210:
msg = Msg.get("add.fail.overflow");
break;
case 215:
msg = Msg.get("add.fail.exist");
break;
case 205:
case 208:
msg = Msg.get("add.fail.unknown-user");
break;
}
enableAll(msg);
}
public void buddyListModified()
{
String email = emailField.getText().trim();
enableAll( Msg.get("add.ok", email) );
}
}
private void createComponents()
{
setSize( 420, 160 );
JPanel panel = (JPanel)getContentPane();
JPanel mainPanel = new JPanel();
JLabel label = new JLabel(Msg.get("add.email"));
label.setFont( FONT );
emailField = new JTextField(20);
emailField.setFont( FONT );
emailField.addActionListener( this );
mainPanel.add( label, "West" );
mainPanel.add( emailField, "Center" );
FlowLayout fl = new FlowLayout();
JPanel centerPanel = new JPanel(fl);
centerPanel.add( mainPanel );
commentLabel = new JLabel(Msg.get("add.email.detail"));
commentLabel.setBorder( BorderFactory.createEtchedBorder() );
commentLabel.setPreferredSize( new Dimension(getSize().width-20, 24) );
commentLabel.setFont( FONT );
progress = new JProgressBar( 1, 15 );
progress.setPreferredSize( new Dimension( getSize().width-20, 16 ) );
timer = new Timer( 50, new ActionListener() {
public void actionPerformed( ActionEvent e )
{
progress.setValue( progress.getValue()+1 );
}
});
fl.setAlignment( FlowLayout.LEADING );
centerPanel.add( progress );
centerPanel.add( commentLabel );
JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.CENTER, 15, 5));
addButton = new JButton(Msg.get("button.add"));
addButton.setFont( FONT );
addButton.setMnemonic( 'A' );
addButton.addActionListener( this );
cancelButton = new JButton(Msg.get("button.cancel"));
cancelButton.setFont( FONT );
cancelButton.addActionListener( this );
buttonPanel.add( addButton );
buttonPanel.add( cancelButton );
panel.add( centerPanel, "Center" );
panel.add( buttonPanel, "South" );
}
public void actionPerformed( ActionEvent e )
{
Object src = e.getSource();
if( src==cancelButton )
{
dispose();
}
else
if( src==emailField || src==addButton )
{
String email = emailField.getText().trim();
if( email.length()==0 )
{
emailField.requestFocus();
return;
}
processAdd( email );
}
}
protected void disableAll()
{
SwingUtilities.invokeLater( new Runnable() {
public void run()
{
emailField.setEnabled( false );
addButton.setEnabled( false );
cancelButton.setEnabled( false );
progress.setValue( 0 );
timer.start();
}
});
}
protected void enableAll( final String msg )
{
SwingUtilities.invokeLater( new Runnable() {
public void run()
{
commentLabel.setText( msg );
emailField.setEnabled( true );
addButton.setEnabled( true );
cancelButton.setEnabled( true );
timer.stop();
progress.setValue( 100 );
}
});
}
protected void processAdd( String email )
{
try
{
disableAll();
msnm.addFriend( email );
}
catch( Exception e )
{
}
}
public void dispose()
{
msnm.removeMsnListener( baseAdapter );
super.dispose();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -