From 302a49f784d55e0fab2c98efc2effb211497e949 Mon Sep 17 00:00:00 2001 From: Damian Minkov Date: Mon, 26 Aug 2013 12:35:27 +0300 Subject: [PATCH] Removes chatroom authentication window and uses the default one. --- resources/images/images.properties | 1 - .../impl/gui/common/passWindowBackground.png | Bin 27405 -> 0 bytes .../common/src/passworsWindowBackground.svg | 3019 ----------------- resources/languages/resources.properties | 1 - .../conference/ConferenceChatManager.java | 39 +- .../ChatRoomAuthenticationWindow.java | 304 -- .../impl/gui/utils/ImageLoader.java | 6 - .../desktoputil/AuthenticationWindow.java | 23 +- 8 files changed, 53 insertions(+), 3340 deletions(-) delete mode 100644 resources/images/impl/gui/common/passWindowBackground.png delete mode 100644 resources/images/impl/gui/common/src/passworsWindowBackground.svg delete mode 100644 src/net/java/sip/communicator/impl/gui/main/chatroomslist/joinforms/ChatRoomAuthenticationWindow.java diff --git a/resources/images/images.properties b/resources/images/images.properties index a7ea9efa1..845549752 100644 --- a/resources/images/images.properties +++ b/resources/images/images.properties @@ -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 diff --git a/resources/images/impl/gui/common/passWindowBackground.png b/resources/images/impl/gui/common/passWindowBackground.png deleted file mode 100644 index 54aa6bf1441692f99765431925d528aceea0a940..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27405 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 - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/resources/languages/resources.properties b/resources/languages/resources.properties index b632cb892..601863d19 100644 --- a/resources/languages/resources.properties +++ b/resources/languages/resources.properties @@ -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 diff --git a/src/net/java/sip/communicator/impl/gui/main/chat/conference/ConferenceChatManager.java b/src/net/java/sip/communicator/impl/gui/main/chat/conference/ConferenceChatManager.java index b5b0fa15e..8440a0133 100644 --- a/src/net/java/sip/communicator/impl/gui/main/chat/conference/ConferenceChatManager.java +++ b/src/net/java/sip/communicator/impl/gui/main/chat/conference/ConferenceChatManager.java @@ -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)); diff --git a/src/net/java/sip/communicator/impl/gui/main/chatroomslist/joinforms/ChatRoomAuthenticationWindow.java b/src/net/java/sip/communicator/impl/gui/main/chatroomslist/joinforms/ChatRoomAuthenticationWindow.java deleted file mode 100644 index f400b5be1..000000000 --- a/src/net/java/sip/communicator/impl/gui/main/chatroomslist/joinforms/ChatRoomAuthenticationWindow.java +++ /dev/null @@ -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 ChatRoomAuthenticationWindow 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 LoginWindow. - * @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 AuthenticationWindow. - */ - 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 true to set a transparent background, - * false otherwise. - */ - private void setTransparent(boolean transparent) { - this.mainPanel.setOpaque(!transparent); - this.labelsPanel.setOpaque(!transparent); - this.textFieldsPanel.setOpaque(!transparent); - this.bottomPanel.setOpaque(!transparent); - - } - - /** - * Handles the ActionEvent 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 LoginWindowBackground is a JPanel that overrides - * the paintComponent 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); - } -} diff --git a/src/net/java/sip/communicator/impl/gui/utils/ImageLoader.java b/src/net/java/sip/communicator/impl/gui/utils/ImageLoader.java index a65f133b9..cbb4780a4 100644 --- a/src/net/java/sip/communicator/impl/gui/utils/ImageLoader.java +++ b/src/net/java/sip/communicator/impl/gui/utils/ImageLoader.java @@ -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 AuthenticationWindow. - */ - public static final ImageID AUTH_WINDOW_BACKGROUND = new ImageID( - "service.gui.AUTH_WINDOW_BACKGROUND"); - /** * The icon used to indicate a search. */ diff --git a/src/net/java/sip/communicator/plugin/desktoputil/AuthenticationWindow.java b/src/net/java/sip/communicator/plugin/desktoputil/AuthenticationWindow.java index fa457373d..265c44d43 100644 --- a/src/net/java/sip/communicator/plugin/desktoputil/AuthenticationWindow.java +++ b/src/net/java/sip/communicator/plugin/desktoputil/AuthenticationWindow.java @@ -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 LoginWindow. + * @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));