diff --git a/Mage.Client/src/main/java/mage/client/chat/ChatPanel.java b/Mage.Client/src/main/java/mage/client/chat/ChatPanel.java index 8350f476cd5..d67c3f1a063 100644 --- a/Mage.Client/src/main/java/mage/client/chat/ChatPanel.java +++ b/Mage.Client/src/main/java/mage/client/chat/ChatPanel.java @@ -118,19 +118,6 @@ public class ChatPanel extends javax.swing.JPanel { DEFAULT, GAME, TABLES, TOURNAMENT } private boolean startMessageDone = false; -// /** -// * Maps message colors to {@link Color}. -// */ -// private static final Map colorMap = new EnumMap<>(MessageColor.class); -// -// static { -// colorMap.put(MessageColor.BLACK, Color.black); -// colorMap.put(MessageColor.GREEN, Color.green); -// colorMap.put(MessageColor.ORANGE, Color.orange); -// colorMap.put(MessageColor.BLUE, Color.blue); -// colorMap.put(MessageColor.RED, Color.red); -// colorMap.put(MessageColor.YELLOW, Color.YELLOW); -// } /** * Creates new form ChatPanel @@ -243,11 +230,9 @@ public class ChatPanel extends javax.swing.JPanel { if (username != null && !username.isEmpty()) { text.append(getColoredText(userColor, username + userSeparator)); } - text.append(getColoredText(textColor, ManaSymbols.replaceSymbolsWithHTML(message, ManaSymbols.Type.PAY) + "\n")); + text.append(getColoredText(textColor, ManaSymbols.replaceSymbolsWithHTML(message, ManaSymbols.Type.PAY) + "
")); - this.txtConversation.setEditable(true); this.txtConversation.append(text.toString()); - this.txtConversation.setEditable(false); } private String getColoredText(String color, String text) { diff --git a/Mage.Client/src/main/java/mage/client/components/ColorPane.java b/Mage.Client/src/main/java/mage/client/components/ColorPane.java index e684dbb5479..0c0ff506aa4 100644 --- a/Mage.Client/src/main/java/mage/client/components/ColorPane.java +++ b/Mage.Client/src/main/java/mage/client/components/ColorPane.java @@ -38,9 +38,13 @@ public class ColorPane extends JTextPane { public void append(String s) { try { + setEditable(true); kit.insertHTML(doc, doc.getLength(), s, 0, 0, null); + int len = getDocument().getLength(); + setCaretPosition(len); + setEditable(false); -// setEditable(true); +// // // StyleContext sc = StyleContext.getDefaultStyleContext(); // AttributeSet aset = sc.addAttribute(SimpleAttributeSet.EMPTY, StyleConstants.Foreground, color); @@ -51,7 +55,7 @@ public class ColorPane extends JTextPane { // setCharacterAttributes(aset, false); // replaceSelection(s); // -// setEditable(false); +// } catch (Exception e) { e.printStackTrace(); } diff --git a/Mage.Client/src/main/java/mage/client/remote/CallbackClientImpl.java b/Mage.Client/src/main/java/mage/client/remote/CallbackClientImpl.java index 02277a155e4..6f32b7ae884 100644 --- a/Mage.Client/src/main/java/mage/client/remote/CallbackClientImpl.java +++ b/Mage.Client/src/main/java/mage/client/remote/CallbackClientImpl.java @@ -377,17 +377,17 @@ public class CallbackClientImpl implements CallbackClient { .append("
F5 - Skip to next end step of opponent's turn but stop on declare attackers/blockers and something on the stack") .append("
F9 - Skip everything until your next turn") .append("
F3 - Undo F4/F5/F9").toString(), - null, MessageType.USER_INFO, ChatMessage.MessageColor.ORANGE); + null, MessageType.USER_INFO, ChatMessage.MessageColor.BLUE); break; case TOURNAMENT: usedPanel.receiveMessage("", new StringBuilder("On this panel you can see the players, their state and the results of the games of the tournament. Also you can chat with the competitors of the tournament.").toString(), - null, MessageType.USER_INFO, ChatMessage.MessageColor.ORANGE); + null, MessageType.USER_INFO, ChatMessage.MessageColor.BLUE); break; case TABLES: usedPanel.receiveMessage("", new StringBuilder("Download card images by using the \"Images\" menu to the top right .") .append("
Download icons and symbols by using the \"Symbols\" menu to the top right.") .append("
\\list - Show a list of available chat commands.").toString(), - null, MessageType.USER_INFO, ChatMessage.MessageColor.ORANGE); + null, MessageType.USER_INFO, ChatMessage.MessageColor.BLUE); break; } diff --git a/Mage.Server/pom.xml b/Mage.Server/pom.xml index 382150d9f8b..20f28dbd8af 100644 --- a/Mage.Server/pom.xml +++ b/Mage.Server/pom.xml @@ -19,6 +19,11 @@ mage ${mage-version} + + org.apache.commons + commons-lang3 + 3.3.2 + ${project.groupId} mage-common diff --git a/Mage.Server/src/main/java/mage/server/ChatManager.java b/Mage.Server/src/main/java/mage/server/ChatManager.java index 1d7bd7c9550..db3004bbc33 100644 --- a/Mage.Server/src/main/java/mage/server/ChatManager.java +++ b/Mage.Server/src/main/java/mage/server/ChatManager.java @@ -141,21 +141,21 @@ public class ChatManager { User userTo = UserManager.getInstance().findUser(userToName); if (userTo != null) { if (!chatSessions.get(chatId).broadcastWhisperToUser(user, userTo, rest)) { - message += new StringBuilder("\nUser ").append(userToName).append(" not found").toString(); + message += new StringBuilder("
User ").append(userToName).append(" not found").toString(); chatSessions.get(chatId).broadcastInfoToUser(user,message); } } else { - message += new StringBuilder("\nUser ").append(userToName).append(" not found").toString(); + message += new StringBuilder("
User ").append(userToName).append(" not found").toString(); chatSessions.get(chatId).broadcastInfoToUser(user,message); } return true; } } if (command.equals("L") || command.equals("LIST")) { - message += new StringBuilder("\nList of commands:") - .append("\n\\info - set a info text to your player") - .append("\n\\list - Show a list of commands") - .append("\n\\whisper - whisper to the player with the given name").toString(); + message += new StringBuilder("
List of commands:") + .append("
\\info [text] - set a info text to your player") + .append("
\\list - Show a list of commands") + .append("
\\whisper [player name] [text] - whisper to the player with the given name").toString(); chatSessions.get(chatId).broadcastInfoToUser(user,message); return true; } diff --git a/Mage.Server/src/main/java/mage/server/ChatSession.java b/Mage.Server/src/main/java/mage/server/ChatSession.java index 7051942c199..3b12848b979 100644 --- a/Mage.Server/src/main/java/mage/server/ChatSession.java +++ b/Mage.Server/src/main/java/mage/server/ChatSession.java @@ -118,7 +118,7 @@ public class ChatSession { public boolean broadcastInfoToUser(User toUser, String message) { if (clients.containsKey(toUser.getId())) { - toUser.fireCallback(new ClientCallback("chatMessage", chatId, new ChatMessage(null, message, timeFormatter.format(new Date()), MessageColor.ORANGE, MessageType.USER_INFO, null))); + toUser.fireCallback(new ClientCallback("chatMessage", chatId, new ChatMessage(null, message, timeFormatter.format(new Date()), MessageColor.BLUE, MessageType.USER_INFO, null))); return true; } return false; diff --git a/Mage.Server/src/main/java/mage/server/MageServerImpl.java b/Mage.Server/src/main/java/mage/server/MageServerImpl.java index eaeb5a2538f..da76da21be4 100644 --- a/Mage.Server/src/main/java/mage/server/MageServerImpl.java +++ b/Mage.Server/src/main/java/mage/server/MageServerImpl.java @@ -28,12 +28,20 @@ package mage.server; +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; +import java.util.UUID; +import java.util.concurrent.ExecutorService; import mage.MageException; import mage.cards.decks.DeckCardLists; import mage.cards.repository.CardInfo; import mage.cards.repository.CardRepository; import mage.cards.repository.ExpansionInfo; import mage.cards.repository.ExpansionRepository; +import mage.constants.ManaType; +import mage.constants.PlayerAction; +import mage.constants.TableState; import mage.game.GameException; import mage.game.Table; import mage.game.match.MatchOptions; @@ -46,7 +54,13 @@ import mage.interfaces.callback.ClientCallback; import mage.remote.MageVersionException; import mage.server.draft.CubeFactory; import mage.server.draft.DraftManager; -import mage.server.game.*; +import mage.server.game.DeckValidatorFactory; +import mage.server.game.GameFactory; +import mage.server.game.GameManager; +import mage.server.game.GamesRoom; +import mage.server.game.GamesRoomManager; +import mage.server.game.PlayerFactory; +import mage.server.game.ReplayManager; import mage.server.services.LogKeys; import mage.server.services.impl.FeedbackServiceImpl; import mage.server.services.impl.LogServiceImpl; @@ -55,20 +69,24 @@ import mage.server.tournament.TournamentManager; import mage.server.util.ConfigSettings; import mage.server.util.ServerMessagesUtil; import mage.server.util.ThreadExecutor; -import mage.utils.*; -import mage.view.*; +import mage.utils.ActionWithBooleanResult; +import mage.utils.ActionWithNullNegativeResult; +import mage.utils.ActionWithTableViewResult; +import mage.utils.CompressUtil; +import mage.utils.MageVersion; +import mage.view.ChatMessage; import mage.view.ChatMessage.MessageColor; +import mage.view.DraftPickView; +import mage.view.GameView; +import mage.view.MatchView; +import mage.view.RoomUsersView; +import mage.view.TableView; +import mage.view.TournamentView; +import mage.view.UserDataView; +import mage.view.UserView; +import org.apache.commons.lang3.StringEscapeUtils; import org.apache.log4j.Logger; -import java.util.ArrayList; -import java.util.List; -import java.util.Locale; -import java.util.UUID; -import java.util.concurrent.ExecutorService; -import mage.constants.ManaType; -import mage.constants.PlayerAction; -import mage.constants.TableState; - /** * * @author BetaSteward_at_googlemail.com, noxx @@ -408,7 +426,7 @@ public class MageServerImpl implements MageServer { new Runnable() { @Override public void run() { - ChatManager.getInstance().broadcast(chatId, userName, message, MessageColor.BLUE); + ChatManager.getInstance().broadcast(chatId, userName, StringEscapeUtils.escapeHtml4(message), MessageColor.BLUE); } } );