Removes chatroom authentication window and uses the default one.

cusax-fix 4808
Damian Minkov 13 years ago
parent 6f91a87594
commit 302a49f784

@ -5,7 +5,6 @@ service.gui.SIP_COMMUNICATOR_LOGO_32x32=resources/images/logo/sc_logo_32x32.png
service.gui.SIP_COMMUNICATOR_LOGO_45x45=resources/images/logo/sc_logo_45x45.png
service.gui.SIP_COMMUNICATOR_LOGO_64x64=resources/images/logo/sc_logo_64x64.png
service.gui.SIP_COMMUNICATOR_LOGO_128x128=resources/images/logo/sc_logo_128x128.png
service.gui.AUTH_WINDOW_BACKGROUND=resources/images/impl/gui/common/passWindowBackground.png
service.gui.MENU_BACKGROUND=resources/images/impl/gui/common/menuBackground.png
service.gui.WINDOW_TITLE_BAR=resources/images/impl/gui/common/windowTitleBarBackground.png
service.gui.WINDOW_TITLE_BAR_BG=resources/images/impl/gui/common/windowTitleBar.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 131 KiB

@ -129,7 +129,6 @@ service.gui.CHAT_ROOM_REQUIRES_PASSWORD=The {0} chat room has requested a passwo
service.gui.CHAT_ROOMS=Chat rooms
service.gui.CHAT_ROOM=Chat room
service.gui.CHAT_ROOM_SUBJECT_CHANGED={0} has changed the subject to {1}
service.gui.CHAT_ROOM_REMEMBER_PASSWORD=Remember password
service.gui.CHOOSE_CONTACT=Choose contact
service.gui.CHOOSE_ACCOUNT=Please select one of the listed accounts.
service.gui.CITY=City

@ -13,7 +13,7 @@
import net.java.sip.communicator.impl.gui.main.chat.*;
import net.java.sip.communicator.impl.gui.main.chat.history.*;
import net.java.sip.communicator.impl.gui.main.chatroomslist.*;
import net.java.sip.communicator.impl.gui.main.chatroomslist.joinforms.*;
import net.java.sip.communicator.impl.gui.utils.*;
import net.java.sip.communicator.plugin.desktoputil.*;
import net.java.sip.communicator.service.gui.*;
import net.java.sip.communicator.service.protocol.*;
@ -1626,11 +1626,40 @@ protected void done()
if(AUTHENTICATION_FAILED.equals(returnCode))
{
chatRoomWrapper.removePassword();
ChatRoomAuthenticationWindow authWindow
= new ChatRoomAuthenticationWindow(chatRoomWrapper,
nickName);
AuthenticationWindowService authWindowsService
= ServiceUtils.getService(
GuiActivator.bundleContext,
AuthenticationWindowService.class);
AuthenticationWindowService.AuthenticationWindow authWindow =
authWindowsService.create(
null, null, null, false,
chatRoomWrapper.isPersistent(),
ImageLoader.getAuthenticationWindowIcon(
chatRoomWrapper.getParentProvider()
.getProtocolProvider()),
GuiActivator.getResources().getI18NString(
"service.gui.AUTHENTICATION_WINDOW_TITLE",
new String[]{chatRoomWrapper.getParentProvider()
.getName()}),
GuiActivator.getResources().getI18NString(
"service.gui.CHAT_ROOM_REQUIRES_PASSWORD",
new String[]{
chatRoomWrapper.getChatRoomName()}),
"", null, null, null);
authWindow.setVisible(true);
if (!authWindow.isCanceled())
{
GuiActivator.getUIService().getConferenceChatManager()
.joinChatRoom(
chatRoomWrapper,
nickName,
new String(authWindow.getPassword()).getBytes(),
authWindow.isRememberPassword());
}
}
else if(REGISTRATION_REQUIRED.equals(returnCode))
{
@ -1670,7 +1699,7 @@ else if(SUBSCRIPTION_ALREADY_EXISTS.equals(returnCode))
GuiActivator.getResources().getI18NString(
"service.gui.ERROR"), errorMessage).showDialog();
}
if (SUCCESS.equals(returnCode) && rememberPassword)
{
chatRoomWrapper.savePassword(new String(password));

@ -1,304 +0,0 @@
/*
* Jitsi, the OpenSource Java VoIP and Instant Messaging client.
*
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
package net.java.sip.communicator.impl.gui.main.chatroomslist.joinforms;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import net.java.sip.communicator.impl.gui.*;
import net.java.sip.communicator.impl.gui.main.chat.conference.*;
import net.java.sip.communicator.impl.gui.utils.*;
import net.java.sip.communicator.plugin.desktoputil.*;
import net.java.sip.communicator.util.skin.*;
/**
* The <tt>ChatRoomAuthenticationWindow</tt> is the the authentication window
* for chat rooms that require password.
*
* @author Yana Stamcheva
* @author Adam Netocny
*/
public class ChatRoomAuthenticationWindow
extends SIPCommFrame
implements ActionListener,
Skinnable
{
private JTextArea infoTextArea = new JTextArea();
private JLabel passwdLabel = new JLabel(
GuiActivator.getResources().getI18NString("service.gui.PASSWORD"));
private JCheckBox rememberPassword;
private JPasswordField passwdField = new JPasswordField(15);
private JButton loginButton = new JButton(
GuiActivator.getResources().getI18NString("service.gui.OK"));
private JButton cancelButton = new JButton(
GuiActivator.getResources().getI18NString("service.gui.CANCEL"));
private JPanel labelsPanel =
new TransparentPanel(new GridLayout(0, 1, 8, 8));
private JPanel textFieldsPanel =
new TransparentPanel(new GridLayout(0, 1, 8, 8));
private JPanel bottomPanel =
new TransparentPanel(new GridLayout(0, 1, 8, 8));
private JPanel mainPanel = new TransparentPanel(new BorderLayout(10, 10));
private JPanel buttonsPanel =
new TransparentPanel(new FlowLayout(FlowLayout.CENTER));
private LoginWindowBackground backgroundPanel;
private ChatRoomWrapper chatRoom;
private String nickname;
/**
* Creates an instance of the <tt>LoginWindow</tt>.
* @param chatRoom the chat room for which we're authenticating
*/
public ChatRoomAuthenticationWindow(ChatRoomWrapper chatRoom, String nickname)
{
this.chatRoom = chatRoom;
this.nickname = nickname;
ImageIcon logoImage
= new ImageIcon(chatRoom.getParentProvider().getImage());
backgroundPanel = new LoginWindowBackground(logoImage);
this.backgroundPanel.setPreferredSize(new Dimension(420, 230));
this.backgroundPanel.setLayout(new FlowLayout(FlowLayout.RIGHT));
this.backgroundPanel.setBorder(
BorderFactory.createEmptyBorder(20, 5, 5, 5));
this.getContentPane().setLayout(new BorderLayout());
this.init();
this.getContentPane().add(backgroundPanel, BorderLayout.CENTER);
this.setResizable(false);
this.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
this.setTitle(GuiActivator.getResources().getI18NString(
"service.gui.AUTHENTICATION_WINDOW_TITLE",
new String[]{chatRoom.getParentProvider().getName()}));
this.enableKeyActions();
}
/**
* Constructs the <tt>AuthenticationWindow</tt>.
*/
private void init()
{
this.infoTextArea.setOpaque(false);
this.infoTextArea.setLineWrap(true);
this.infoTextArea.setWrapStyleWord(true);
this.infoTextArea.setFont(infoTextArea.getFont().deriveFont(Font.BOLD));
this.infoTextArea.setEditable(false);
this.infoTextArea.setText(
GuiActivator.getResources().getI18NString(
"service.gui.CHAT_ROOM_REQUIRES_PASSWORD",
new String[]{chatRoom.getChatRoomName()}));
this.passwdLabel.setFont(passwdLabel.getFont().deriveFont(Font.BOLD));
this.labelsPanel.add(passwdLabel);
this.textFieldsPanel.add(passwdField);
this.rememberPassword = new JCheckBox(GuiActivator.getResources()
.getI18NString("service.gui.CHAT_ROOM_REMEMBER_PASSWORD"),
chatRoom.isPersistent());
this.bottomPanel.add(rememberPassword);
this.buttonsPanel.add(loginButton);
this.buttonsPanel.add(cancelButton);
this.bottomPanel.add(buttonsPanel);
this.mainPanel.add(infoTextArea, BorderLayout.NORTH);
this.mainPanel.add(labelsPanel, BorderLayout.WEST);
this.mainPanel.add(textFieldsPanel, BorderLayout.CENTER);
this.mainPanel.add(bottomPanel, BorderLayout.SOUTH);
this.backgroundPanel.add(mainPanel, BorderLayout.CENTER);
this.loginButton.setName("ok");
this.cancelButton.setName("cancel");
this.loginButton.setMnemonic(
GuiActivator.getResources().getI18nMnemonic("service.gui.OK"));
this.cancelButton.setMnemonic(
GuiActivator.getResources().getI18nMnemonic("service.gui.CANCEL"));
this.loginButton.addActionListener(this);
this.cancelButton.addActionListener(this);
this.getRootPane().setDefaultButton(loginButton);
this.setTransparent(true);
}
/**
* Sets transparent background to all components in the login window,
* because of the nonwhite background.
* @param transparent <code>true</code> to set a transparent background,
* <code>false</code> otherwise.
*/
private void setTransparent(boolean transparent) {
this.mainPanel.setOpaque(!transparent);
this.labelsPanel.setOpaque(!transparent);
this.textFieldsPanel.setOpaque(!transparent);
this.bottomPanel.setOpaque(!transparent);
}
/**
* Handles the <tt>ActionEvent</tt> triggered when one of the buttons is
* clicked. When "Login" button is choosen installs a new account from
* the user input and logs in.
*
* @param evt the action event that has just occurred.
*/
public void actionPerformed(ActionEvent evt)
{
JButton button = (JButton) evt.getSource();
String buttonName = button.getName();
if (buttonName.equals("ok"))
{
GuiActivator.getUIService().getConferenceChatManager()
.joinChatRoom(chatRoom, nickname,
new String(passwdField.getPassword()).getBytes(),
rememberPassword.isSelected());
}
this.dispose();
}
/**
* The <tt>LoginWindowBackground</tt> is a <tt>JPanel</tt> that overrides
* the <code>paintComponent</code> method to provide a custom background
* image for this window.
*/
private static class LoginWindowBackground extends JPanel
{
private ImageIcon bgImage;
public LoginWindowBackground(ImageIcon bgImage)
{
this.bgImage = bgImage;
}
/**
* Sets background image.
* @param bgImage Background image.
*/
public void setBgImage(ImageIcon bgImage)
{
this.bgImage = bgImage;
}
@Override
protected void paintComponent(Graphics g)
{
super.paintComponent(g);
g = g.create();
try
{
AntialiasingManager.activateAntialiasing(g);
Graphics2D g2 = (Graphics2D) g;
if (bgImage != null)
g2.drawImage(bgImage.getImage(), 30, 30, null);
g2.drawImage(ImageLoader
.getImage(ImageLoader.AUTH_WINDOW_BACKGROUND), 0, 0, this
.getWidth(), this.getHeight(), null);
}
finally
{
g.dispose();
}
}
}
/**
* Enables the actions when a key is pressed, for now
* closes the window when esc is pressed.
*/
private void enableKeyActions() {
UIAction act = new UIAction() {
public void actionPerformed(ActionEvent e) {
ChatRoomAuthenticationWindow.this.setVisible(false);
}
};
getRootPane().getActionMap().put("close", act);
InputMap imap = this.getRootPane().getInputMap(
JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
imap.put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), "close");
}
@Override
protected void close(boolean isEscaped)
{
this.cancelButton.doClick();
}
/**
* Shows this modal dialog.
*
* @param isVisible specifies whether we should be showing or hiding the
* window.
*/
@Override
public void setVisible(boolean isVisible)
{
this.pack();
super.setVisible(isVisible);
if(isVisible)
{
this.passwdField.requestFocus();
}
}
/**
* Reloads logo image.
*/
public void loadSkin()
{
ImageIcon logoImage
= new ImageIcon(chatRoom.getParentProvider().getImage());
backgroundPanel.setBgImage(logoImage);
}
}

@ -1222,12 +1222,6 @@ public class ImageLoader
public static final ImageID TOOLBAR_DRAG_ICON = new ImageID(
"service.gui.icons.TOOLBAR_DRAG_ICON");
/**
* The background image of the <tt>AuthenticationWindow</tt>.
*/
public static final ImageID AUTH_WINDOW_BACKGROUND = new ImageID(
"service.gui.AUTH_WINDOW_BACKGROUND");
/**
* The icon used to indicate a search.
*/

@ -222,7 +222,7 @@ private void init( String userName,
else
this.uinValue = new JTextField();
this.init();
this.init(isUserNameEditable);
this.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
@ -400,8 +400,9 @@ private void initIcon(ImageIcon icon)
/**
* Constructs the <tt>LoginWindow</tt>.
* @param isUserNameEditable indicates if the user name is editable
*/
private void init()
private void init(boolean isUserNameEditable)
{
String title;
@ -420,8 +421,18 @@ private void init()
new String[]{server});
String uinText;
boolean showUsernameInDialog = true;
if(usernameLabelText != null)
{
// if username is not editable and username label text is empty
// we do not want to display it
if(usernameLabelText.length() == 0
&& !isUserNameEditable)
{
showUsernameInDialog = false;
}
uinText = usernameLabelText;
}
else
uinText = DesktopUtilActivator.getResources().getI18NString(
"service.gui.IDENTIFIER");
@ -453,13 +464,17 @@ private void init()
TransparentPanel labelsPanel
= new TransparentPanel(new GridLayout(0, 1, 8, 8));
labelsPanel.add(uinLabel);
if(showUsernameInDialog)
labelsPanel.add(uinLabel);
labelsPanel.add(passwdLabel);
TransparentPanel textFieldsPanel
= new TransparentPanel(new GridLayout(0, 1, 8, 8));
textFieldsPanel.add(uinValue);
if(showUsernameInDialog)
textFieldsPanel.add(uinValue);
textFieldsPanel.add(passwdField);
JPanel southFieldsPanel = new TransparentPanel(new GridLayout(1, 2));

Loading…
Cancel
Save