SPARK-1285

Server Messages display rework

if you like the "old ways" go to default.properties and put
BROADCAST_IN_CHATWINDOW = true


git-svn-id: http://svn.igniterealtime.org/svn/repos/spark/trunk@12255 b35dd754-fafc-0310-a699-88a17e54d16e
This commit is contained in:
Wolf Posdorfer
2011-04-18 10:50:56 +00:00
committed by wolf.posdorfer
parent 3acb6feba4
commit c39a4e7f46
6 changed files with 128 additions and 44 deletions

View File

@ -66,6 +66,7 @@ public class Default {
public static final String DEINSTALL_PLUGINS_DISABLED = "DEINSTALL_PLUGINS_DISABLED";
public static final String ADVANCED_DISABLED = "ADVANCED_DISABLED";
public static final String HELP_USER_GUIDE = "HELP_USER_GUIDE";
public static final String BROADCAST_IN_CHATWINDOW = "BROADCAST_IN_CHATWINDOW";
static ClassLoader cl = SparkRes.class.getClassLoader();

View File

@ -36,6 +36,7 @@ import java.util.ResourceBundle;
public class SparkRes {
private static PropertyResourceBundle prb;
public static final String ALERT = "ALERT";
public static final String NOTE_EDIT_16x16 = "NOTE_EDIT_16x16";
public static final String MAGICIAN_IMAGE = "MAGICIAN_IMAGE";
public static final String IM_AWAY = "IM_AWAY";

View File

@ -106,10 +106,14 @@ DEINSTALL_PLUGINS_DISABLED =
######### Color + LookandFeel ###########
#################################################
# by Default Server-Broadcast get their own JFrame containing the Message
# also HTML tags like <b> <i> <u> can be used
# if you want server broadcasts handled like every other message including transcripts
# set this to true
BROADCAST_IN_CHATWINDOW = false
# Disable Look&Feel change || "true" = disabled , anything else = enabled
# By Default the user can Change his Look&Feel in the Preferences Menu,
#if you dont want this then set it to true
# if you dont want this then set it to true
# Preferences -> Appearence -> Customization Tab
LOOK_AND_FEEL_DISABLED =
# Disable if you dont want Users to be able to Change the Textcolors in the Preference Menu

View File

@ -158,6 +158,7 @@ SERVER_UNAVAILABLE = Can't connect to server: invalid name or server not reachab
UNRECOVERABLE_ERROR = Invalid username or password.
#Chat Window Images
ALERT = images/alert.png

View File

@ -19,6 +19,36 @@
*/
package org.jivesoftware.sparkimpl.plugin.alerts;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.SwingUtilities;
import org.jivesoftware.resource.Default;
import org.jivesoftware.resource.Res;
import org.jivesoftware.resource.SparkRes;
import org.jivesoftware.smack.PacketListener;
@ -51,27 +81,6 @@ import org.jivesoftware.spark.util.ResourceUtils;
import org.jivesoftware.spark.util.log.Log;
import org.jivesoftware.sparkimpl.plugin.manager.Enterprise;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.BorderFactory;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.SwingUtilities;
/**
* Handles broadcasts from server and allows for roster wide broadcasts.
*/
@ -109,9 +118,9 @@ public class BroadcastPlugin extends SparkTabHandler implements Plugin, PacketLi
startConversationtMenu.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ContactList contactList = SparkManager.getWorkspace().getContactList();
Collection selectedUsers = contactList.getSelectedUsers();
Collection<ContactItem> selectedUsers = contactList.getSelectedUsers();
String selectedUser = "";
Iterator selectedUsersIterator = selectedUsers.iterator();
Iterator<ContactItem> selectedUsersIterator = selectedUsers.iterator();
if (selectedUsersIterator.hasNext()) {
ContactItem contactItem = (ContactItem)selectedUsersIterator.next();
selectedUser = contactItem.getJID();
@ -140,7 +149,9 @@ public class BroadcastPlugin extends SparkTabHandler implements Plugin, PacketLi
if (component instanceof ContactGroup) {
final ContactGroup group = (ContactGroup)component;
Action broadcastMessageAction = new AbstractAction() {
public void actionPerformed(ActionEvent e) {
private static final long serialVersionUID = -6411248110270296726L;
public void actionPerformed(ActionEvent e) {
broadcastToGroup(group);
}
};
@ -267,25 +278,14 @@ public class BroadcastPlugin extends SparkTabHandler implements Plugin, PacketLi
toaster.setBorder(BorderFactory.createBevelBorder(0));
if (!from.contains("@")) {
ChatManager chatManager = SparkManager.getChatManager();
ChatContainer container = chatManager.getChatContainer();
if (!from.contains("@")) {
if (Default.getBoolean(Default.BROADCAST_IN_CHATWINDOW)) {
broadcastInChat(message);
} else {
broadcastWithPanel(message);
}
ChatRoomImpl chatRoom;
try {
chatRoom = (ChatRoomImpl)container.getChatRoom(from);
}
catch (ChatRoomNotFoundException e) {
chatRoom = new ChatRoomImpl("serveralert@" + from, Res.getString("broadcast"), Res.getString("administrator"));
chatRoom.getBottomPanel().setVisible(false);
chatRoom.getToolBar().setVisible(false);
SparkManager.getChatManager().getChatContainer().addChatRoom(chatRoom);
}
chatRoom.insertMessage(message);
broadcastRooms.add(chatRoom);
}
}
else if (message.getFrom() != null) {
String jid = StringUtils.parseBareAddress(from);
String nickname = SparkManager.getUserManager().getUserNicknameFromJID(jid);
@ -380,4 +380,81 @@ public class BroadcastPlugin extends SparkTabHandler implements Plugin, PacketLi
return false;
}
/**
* Displays the Serverbroadcast like all other messages
* in its on chatcontainer with transcript history
* @param message
* @param from
*/
private void broadcastInChat(Message message)
{
String from = message.getFrom() != null ? message.getFrom() : "";
ChatManager chatManager = SparkManager.getChatManager();
ChatContainer container = chatManager.getChatContainer();
ChatRoomImpl chatRoom;
try {
chatRoom = (ChatRoomImpl)container.getChatRoom(from);
}
catch (ChatRoomNotFoundException e) {
chatRoom = new ChatRoomImpl("serveralert@" + from, Res.getString("broadcast"), Res.getString("administrator"));
chatRoom.getBottomPanel().setVisible(false);
chatRoom.getToolBar().setVisible(false);
SparkManager.getChatManager().getChatContainer().addChatRoom(chatRoom);
}
chatRoom.insertMessage(message);
broadcastRooms.add(chatRoom);
}
/**
* Displays a Serverbroadcast within a JFrame<br>
* Messages can contain html-tags
* @param message
*/
private void broadcastWithPanel(Message message) {
String title = Res.getString("message.broadcast.from",
Res.getString("administrator"));
final JFrame alert = new JFrame(title);
alert.setLayout(new GridBagLayout());
alert.setIconImage(SparkRes.getImageIcon(SparkRes.MAIN_IMAGE)
.getImage());
String msg = "<html><body>" + message.getBody().replace("\n", "<br>")
+ "</body></html>";
JLabel icon = new JLabel(SparkRes.getImageIcon(SparkRes.ALERT));
JLabel alertlabel = new JLabel(msg);
JButton close = new JButton(Res.getString("close"));
close.addActionListener(new AbstractAction() {
private static final long serialVersionUID = -3822361866008590946L;
@Override
public void actionPerformed(ActionEvent e) {
alert.setVisible(false);
alert.dispose();
}
});
alert.add(icon,new GridBagConstraints(0,0, 1, 1, 0.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5,5,5,5), 0, 0));
alert.add(alertlabel, new GridBagConstraints(1,0, 1, 1, 1.0, 1.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(5,5,5,5), 0, 0));
alert.add(close, new GridBagConstraints(1,1, 1, 1, 0.0, 0.0, GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(5,5,5,5), 0, 0));
alert.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
alert.setVisible(true);
alert.setMinimumSize(new Dimension(340, 200));
alert.pack();
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
int x = (dim.width - alert.getSize().width) / 2;
int y = (dim.height - alert.getSize().height) / 2;
alert.setLocation(x, y);
alert.toFront();
alert.requestFocus();
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB