diff --git a/src/pt/jkaiui/manager/ChatManager.java b/src/pt/jkaiui/manager/ChatManager.java index 55b09b3..6c2058b 100644 --- a/src/pt/jkaiui/manager/ChatManager.java +++ b/src/pt/jkaiui/manager/ChatManager.java @@ -5,44 +5,29 @@ */ package pt.jkaiui.manager; +import java.awt.Component; +import java.io.File; +import java.net.URL; import java.text.DateFormat; -import java.util.logging.Logger; -import javax.sound.sampled.AudioFormat; -import javax.sound.sampled.AudioInputStream; -import javax.sound.sampled.AudioSystem; -import javax.sound.sampled.Clip; -import javax.sound.sampled.DataLine; -import javax.swing.ImageIcon; -import javax.swing.JTabbedPane; import java.util.*; +import java.util.logging.Level; +import java.util.logging.Logger; import java.util.regex.Matcher; import java.util.regex.Pattern; -import java.net.URL; -import java.io.File; +import javax.sound.sampled.*; import javax.swing.AbstractListModel; - +import javax.swing.ImageIcon; +import javax.swing.JTabbedPane; import pt.jkaiui.JKaiUI; -import pt.jkaiui.core.ChatMessage; -import pt.jkaiui.core.InMessage; -import pt.jkaiui.core.KaiString; -import pt.jkaiui.core.OutMessage; -import pt.jkaiui.core.User; -import pt.jkaiui.core.Arena; -import pt.jkaiui.core.messages.ArenaPMOut; -import pt.jkaiui.core.messages.ChatOut; -import pt.jkaiui.core.messages.PMOut; -import pt.jkaiui.core.messages.ContactOnline; -import pt.jkaiui.core.messages.ContactOffline; +import pt.jkaiui.core.KaiConfig.ConfigTag; +import static pt.jkaiui.core.KaiConfig.ConfigTag.*; +import pt.jkaiui.core.*; +import pt.jkaiui.core.messages.*; import pt.jkaiui.tools.log.ConfigLog; import pt.jkaiui.ui.ChatPanel; -import pt.jkaiui.ui.modes.MessengerModeListModel; -import pt.jkaiui.core.Diags; -import pt.jkaiui.core.messages.KaiVectorOut; -import static pt.jkaiui.core.KaiConfig.ConfigTag.*; -import pt.jkaiui.core.KaiConfig.ConfigTag; -import pt.jkaiui.core.messages.CreateVectorOut; import pt.jkaiui.ui.KaiSettingsPanel; -import java.awt.Component; +import pt.jkaiui.ui.modes.MessengerModeListModel; +import pt.jkaiui.ui.tools.Say; /** * @@ -209,18 +194,18 @@ private void processInMessage(InMessage msg) { // get general arena panel = (ChatPanel) chatsTable.get(GENERAL_CHAT); - //チャットで音を鳴らす + //繝√Ε繝繝医〒髻ウ繧帝ウエ繧峨☆ if (JKaiUI.getConfig().getConfigBoolean(PLAYMESSAGESOUND) && !msg.getUser().getUser().equalsIgnoreCase("kai orbital mesh") && (JKaiUI.getConfig().getConfigBoolean(ChatSound))) { playMessageSound(SoundKinds.Chat); } - //フレンドの発言時に音をならすように変更 + //繝輔Ξ繝ウ繝峨ョ逋コ險譎ゅ↓髻ウ繧偵↑繧峨☆繧医≧縺ォ螟画峩 if (JKaiUI.getConfig().getConfigBoolean(PLAYMESSAGESOUND) && (JKaiUI.getConfig().getConfigBoolean(FriendChatSound)) && (userIsFriend(msg.getUser()))) { playMessageSound(SoundKinds.FriendChat); } - //モデの発言時に音をならすように変更 + //繝「繝縺ョ逋コ險譎ゅ↓髻ウ繧偵↑繧峨☆繧医≧縺ォ螟画峩 if (JKaiUI.getConfig().getConfigBoolean(PLAYMESSAGESOUND) && (JKaiUI.getConfig().getConfigBoolean(ModeratorChatSound)) && (msg.getUser().isModerator())) { @@ -231,21 +216,21 @@ private void processInMessage(InMessage msg) { panel = getOrCreatePanel(msg.getUser().getUser()); - //PMがきたとき音をならすように変更 + //PM縺後″縺溘→縺埼浹繧偵↑繧峨☆繧医≧縺ォ螟画峩 if (JKaiUI.getConfig().getConfigBoolean(PLAYMESSAGESOUND) && (JKaiUI.getConfig().getConfigBoolean(FriendPMSound)) && (userIsFriend(msg.getUser()))) { playMessageSound(SoundKinds.FriendPM); } - //ArenaPMがきたとき音をならすように変更 + //ArenaPM縺後″縺溘→縺埼浹繧偵↑繧峨☆繧医≧縺ォ螟画峩 if (JKaiUI.getConfig().getConfigBoolean(PLAYMESSAGESOUND) && (JKaiUI.getConfig().getConfigBoolean(ArenaPMSound)) && (!userIsFriend(msg.getUser()))) { playMessageSound(SoundKinds.ArenaPM); } /* - //受信の場合はいつでも機能on - //PM受信の場合 + //蜿嶺ソ。縺ョ蝣エ蜷医ッ縺縺、縺ァ繧よゥ溯スon + //PM蜿嶺ソ。縺ョ蝣エ蜷 try { msg.setMessage(HtmlUnicodedecode(msg.getMessage(), 10)); } catch (Exception e) { @@ -262,6 +247,7 @@ private void processInMessage(InMessage msg) { panel.write(formatInMessage(msg)); // panel.write(msg.getMessage()); + Say.speakString(msg.getMessage()); // Notify if not selected enableIconIfSelected(panel); @@ -286,7 +272,7 @@ private void processOutMessage(OutMessage msg) { msg.setMessage(texttmp); } - //チャット送信時に音を鳴らす + //繝√Ε繝繝磯∽ソ。譎ゅ↓髻ウ繧帝ウエ繧峨☆ if (JKaiUI.getConfig().getConfigBoolean(PLAYMESSAGESOUND) && (JKaiUI.getConfig().getConfigBoolean(SendSound))) { playMessageSound(SoundKinds.Send); @@ -302,7 +288,7 @@ private void processOutMessage(OutMessage msg) { ChatOut chat = new ChatOut(); chat.setMessage(new KaiString(msg.getMessage())); - JKaiUI.getManager().getExecuter().execute(chat); + ActionExecuter.execute(chat); } else if (msg.getType() == ChatMessage.PRIVATE_MESSAGE) { @@ -313,7 +299,7 @@ private void processOutMessage(OutMessage msg) { /* if (JKaiUI.getConfig().isHtmlUnicode()) { try { - //PMの場合、HTMLエンコードをする + //PM縺ョ蝣エ蜷医?TML繧ィ繝ウ繧ウ繝シ繝峨r縺吶k msg.setMessage(HtmlUnicodeencode(msg.getMessage(), 10)); } catch (Exception e) { System.out.println("processOutMessage:"+e); @@ -327,19 +313,19 @@ private void processOutMessage(OutMessage msg) { arenaPmOut.setUser(new KaiString(msg.getUser().getUser())); arenaPmOut.setMessage(new KaiString(msg.getMessage())); - JKaiUI.getManager().getExecuter().execute(arenaPmOut); + ActionExecuter.execute(arenaPmOut); } else { // PM pmOut.setUser(new KaiString(msg.getUser().getUser())); pmOut.setMessage(new KaiString(msg.getMessage())); - JKaiUI.getManager().getExecuter().execute(pmOut); + ActionExecuter.execute(pmOut); } /* if (JKaiUI.getConfig().isHtmlUnicode()) { try { - //PMの場合、HTMLデコードをする + //PM縺ョ蝣エ蜷医?TML繝繧ウ繝シ繝峨r縺吶k msg.setMessage(HtmlUnicodedecode(msg.getMessage(), 10)); } catch (Exception e) { System.out.println("processOutMessage:" + e); @@ -355,6 +341,7 @@ private void processOutMessage(OutMessage msg) { } panel.write(formatOutMessage(msg)); + Say.speakString(msg.getMessage()); } private String formatOutMessage(OutMessage msg) { @@ -378,7 +365,7 @@ private String formatMessage(String user, String color, String msg) { msgtmp = matcher.replaceAll("$0"); /* - //html解析 問題あり + //html隗」譫 蝠城。後≠繧 Pattern p = Pattern.compile("(http|https):([^\\x00-\\x20()\"<>\\x7F-\\xFF])*", Pattern.CASE_INSENSITIVE); Matcher m = p.matcher(msgtmp); @@ -387,21 +374,21 @@ private String formatMessage(String user, String color, String msg) { // System.out.println(m.group()); String tmp = m.group(); String tmp2 = m.group().replaceAll("\\?", "\\\\?"); - msgtmp = msgtmp.replaceFirst(tmp2, "" + tmp + "");//あとから同じドメインのアドレスが出てきた場合にうまくいかない + msgtmp = msgtmp.replaceFirst(tmp2, "" + tmp + "");//縺ゅ→縺九i蜷後§繝峨Γ繧、繝ウ縺ョ繧「繝峨Ξ繧ケ縺悟コ縺ヲ縺阪◆蝣エ蜷医↓縺縺セ縺上>縺九↑縺 } // System.out.println(msgtmp); * */ - //userにリンクを追加 リンクをクリックするとチャット入力画面に出せる - //https://sites.google.com/site/yuuakron/dummy/はダミーアドレス - user = "" + user + ""; + //user縺ォ繝ェ繝ウ繧ッ繧定ソス蜉縲繝ェ繝ウ繧ッ繧偵け繝ェ繝繧ッ縺吶k縺ィ繝√Ε繝繝亥・蜉帷判髱「縺ォ蜃コ縺帙k + //https://sites.google.com/site/yuuakron/dummy/縺ッ繝繝溘シ繧「繝峨Ξ繧ケ + String userstr = "" + user + ""; String out = ""; switch (JKaiUI.getConfig().getConfigInt(ChatDisplayStyle)) { case 0: //JKaiUI - out = "
" + user + " | ";
+ out = "
-- " + friend.getUser().decode() + " is logged in" + " ");
}
- //フレンドのログイン時に音を鳴らす
+ //繝輔Ξ繝ウ繝峨ョ繝ュ繧ー繧、繝ウ譎ゅ↓髻ウ繧帝ウエ繧峨☆
if (JKaiUI.getConfig().getConfigBoolean(PLAYMESSAGESOUND)
&& (JKaiUI.getConfig().getConfigBoolean(FriendOnlineSound))) {
playMessageSound(ChatManager.SoundKinds.FriendOnline);
@@ -776,26 +748,7 @@ public void logoutFriend(ContactOffline friend) {
// ChatPanel panel = (ChatPanel) chatsTable.get(GENERAL_CHAT);
// panel.write(" -- " + friend.getUser().decode() + " is logged out" + " ");
-
-/*
- MessengerModeListModel listmodel = (MessengerModeListModel) JKaiUI.getMessengerMode().getListModel();
-
- //最初は表示、2回目以降はエスタ状態なら表示しない
- for (int i = 0; i < listmodel.size(); i++) {
- Object obj = listmodel.getElementAt(i);
- if (obj instanceof User) {
- User user = (User) obj;
- if(user.getName().equals(friend.getUser().decode())){
- System.out.println(user.getPing());
- if (user.getPing() == 0) {
- user.setPing(-1);
- }else if(user.getPing() < 0){
- return;
- }
- }
- }
- }
-*/
+
Object[] panels = chatsTable.values().toArray();
// ChatPanel panel = (ChatPanel) chatsTable.get(GENERAL_CHAT);
for(int i=0;i < panels.length;i++){
@@ -849,7 +802,7 @@ public synchronized String previouschathistory() {
if (chathistory.size() > 0) {
if (0 <= chathistoryindex && chathistory.size() > chathistoryindex) {
chathistoryindex--;
- return (String) chathistory.get(chathistoryindex + 1);//現在値を送信
+ return (String) chathistory.get(chathistoryindex + 1);//迴セ蝨ィ蛟、繧帝∽ソ。
}else if(chathistory.size() == chathistoryindex){
chathistoryindex--;
}else {
@@ -868,12 +821,12 @@ private String JKaiUIcommand(String text) {
if (tmp[0].matches("^%(.*)")) {
//System.out.println(m.group(1));
if (tmp[0].equalsIgnoreCase("%send")) {
- //コマンドの送信
+ //繧ウ繝槭Φ繝峨ョ騾∽ソ。
return JKaiUICommands(text.replaceFirst("%send\\s+", ""));
}else if(tmp[0].equalsIgnoreCase("%ask")){
return text;
}else {
- //コマンドを表示
+ //繧ウ繝槭Φ繝峨r陦ィ遉コ
// ChatPanel panel = (ChatPanel) chatsTable.get(GENERAL_CHAT);
ChatPanel panel = (ChatPanel)JKaiUI.getMainUI().jTabbedPane.getSelectedComponent();
@@ -885,7 +838,7 @@ private String JKaiUIcommand(String text) {
return null;
}
}
- //通常のテキスト
+ //騾壼クク縺ョ繝繧ュ繧ケ繝
return text;
}
@@ -898,7 +851,7 @@ private String JKaiUIAskcommand(InMessage msg) {
ChatPanel panel = (ChatPanel)JKaiUI.getMainUI().jTabbedPane.getSelectedComponent();
panel.write(" -- " + " Received an ask comamnd from "+ msg.getUser() +" Command:" + msg.getMessage() + " ");
- //コマンドの送信
+ //繧ウ繝槭Φ繝峨ョ騾∽ソ。
String sendtext = JKaiUIAskCommands(msg.getMessage().replaceFirst("%ask\\s+", ""));
if (sendtext != null) {
@@ -922,7 +875,7 @@ private String JKaiUIAskcommand(InMessage msg) {
return null;
}
}
- //通常のテキスト
+ //騾壼クク縺ョ繝繧ュ繧ケ繝
return msg.getMessage();
}
@@ -952,27 +905,27 @@ private String JKaiUICommands(String text) {
//create private arena
//create
- //create description maxplayernum password
- //create description maxplayernum (no pass)
- //create description (maxplayernum=4) (no pass)
+ //create description縲maxplayernum password
+ //create description縲maxplayernum縲(no pass)
+ //create description縲(maxplayernum=4)縲シno passシ
if (tmp[0].equalsIgnoreCase("create")) {
String description = "";
String password = "";
- int maxPlayers = 4;
+ int maxPlayers;
String maxPlayersString = "";
if (tmp.length == 1) {
//create
JKaiUI.getArenaMode().clickcreateArenaButton();
} else if (tmp.length == 2) {
- //create description (maxplayernum=4) (no pass)
+ //create description縲(maxplayernum=4)縲シno passシ
description = tmp[1];
} else if (tmp.length == 3) {
- //create description maxplayernum (no pass)
+ //create description縲maxplayernum縲(no pass)
description = tmp[1];
maxPlayersString = tmp[2];
} else if (tmp.length == 4) {
- //create description maxplayernum password
+ //create description縲maxplayernum password
description = tmp[1];
maxPlayersString = tmp[2];
password = tmp[3];
@@ -984,7 +937,7 @@ private String JKaiUICommands(String text) {
error = java.util.ResourceBundle.getBundle("pt/jkaiui/ui/Bundle").getString("MSG_InvalidMaxPlayers");
}
- maxPlayers = Integer.parseInt(maxPlayersString.length() > 0 ? maxPlayersString : "0");
+ maxPlayers = Integer.parseInt(maxPlayersString.length() > 0 ? maxPlayersString : "4");
if (!description.matches("^.{0,20}$")) {
@@ -1005,7 +958,7 @@ private String JKaiUICommands(String text) {
out.setPassword(new KaiString(password));
out.setMaxPlayers(maxPlayers);
- JKaiUI.getManager().getExecuter().execute(out);
+ ActionExecuter.execute(out);
return "create arena";
}
@@ -1083,7 +1036,7 @@ private String JKaiUICommands(String text) {
Pattern p2 = Pattern.compile("^#([0-9]+)");
Matcher m2 = p2.matcher(tmp[1]);
- Arena arena = new Arena();
+ Arena arena;
if (m2.matches()) {
if (Integer.parseInt(m2.group(1)) > 0) {
Vector BookmarkVector = JKaiUI.getMainUI().bookmarkVector;
@@ -1092,13 +1045,13 @@ private String JKaiUICommands(String text) {
if (JKaiUI.CURRENT_MODE != JKaiUI.ARENA_MODE) {
JKaiUI.getMainUI().jButtonArenaMode.doClick();
}
- JKaiUI.getManager().enterArena(arena);
+ Manager.enterArena(arena);
}
}
return null;
}
- //pm フレ#1
+ //pm 繝輔Ξ#1
if (tmp[0].equalsIgnoreCase("pm")) {
Pattern p2 = Pattern.compile("^#([0-9]+)");
@@ -1167,7 +1120,7 @@ private String JKaiUICommands(String text) {
return null;
}
- //help コマンド一覧 コマンド説明
+ //help 繧ウ繝槭Φ繝我ク隕ァ縲繧ウ繝槭Φ繝芽ェャ譏
if (tmp[0].equalsIgnoreCase("help")) {
String commands = "send ver help show phrase emoti setconfig config diag go gofull arenapm follow pm bookmark "
+ "chatreset chatlock cahtunlock logwindow exit connect disconnect messengermode arenamode diagmode "
@@ -1188,7 +1141,8 @@ private String JKaiUICommands(String text) {
Object obj = listmodel.getElementAt(i);
if (obj instanceof User) {
User user = (User) obj;
- str.append(user.getUser() + " ");
+ str.append(user.getUser());
+ str.append(" ");
}
}
@@ -1202,7 +1156,8 @@ private String JKaiUICommands(String text) {
Object obj = listmodel.getElementAt(i);
if (obj instanceof User) {
User user = (User) obj;
- str.append(user.getUser()+" ");
+ str.append(user.getUser());
+ str.append(" ");
}
}
@@ -1216,7 +1171,10 @@ private String JKaiUICommands(String text) {
Object obj = listmodel.getElementAt(i);
if (obj instanceof Arena) {
Arena arena = (Arena) obj;
- str.append(arena.getVector() + ":" + arena.getDescription() + " ");
+ str.append(arena.getVector());
+ str.append(":");
+ str.append(arena.getDescription());
+ str.append(" ");
}
}
@@ -1256,7 +1214,7 @@ private String JKaiUICommands(String text) {
Pattern p2 = Pattern.compile("^#([0-9]+)");
Matcher m2 = p2.matcher(tmp[1]);
- String emot = "";
+ String emot;
if (m2.matches()) {
if (Integer.parseInt(m2.group(1)) > 0) {
@@ -1273,7 +1231,7 @@ private String JKaiUICommands(String text) {
return null;
}
- //setconfig コマンド名 設定値
+ //setconfig 繧ウ繝槭Φ繝牙錐縲險ュ螳壼、
if (tmp[0].equalsIgnoreCase("setconfig")) {
if (tmp.length > 2) {
try {
@@ -1282,7 +1240,7 @@ private String JKaiUICommands(String text) {
System.out.println("error nothing config:" + e);
}
try {
- String str = text.replaceFirst(tmp[0]+"\\s+", "").replaceFirst(tmp[1]+"\\s+", "");//3番目以降の値を取り出す
+ String str = text.replaceFirst(tmp[0]+"\\s+", "").replaceFirst(tmp[1]+"\\s+", "");//3逡ェ逶ョ莉・髯阪ョ蛟、繧貞叙繧雁コ縺
JKaiUI.getConfig().loadtoFileConfig(tmp[1] + ":" + str);
JKaiUI.getConfig().saveConfig();
@@ -1310,7 +1268,7 @@ private String JKaiUICommands(String text) {
Pattern p2 = Pattern.compile("^#([0-9]+)");
Matcher m2 = p2.matcher(tmp[1]);
- String texttmp = text.replaceFirst(tmp[0]+"\\s+", "");//2番目以降の値を取り出す
+ String texttmp = text.replaceFirst(tmp[0]+"\\s+", "");//2逡ェ逶ョ莉・髯阪ョ蛟、繧貞叙繧雁コ縺
if (tmp[1].equalsIgnoreCase("parent")) {
JKaiUI.getArenaMode().clickgoBackButton();
@@ -1362,7 +1320,7 @@ private String copydiaginfo(String kinds){
String textbuf = "";
if (kinds.equalsIgnoreCase("all")) {
- StringBuffer strbuf = new StringBuffer("Diags infomation \n\n");//保存する設定情報
+ StringBuilder strbuf = new StringBuilder("Diags infomation \n\n");//菫晏ュ倥☆繧玖ィュ螳壽ュ蝣ア
strbuf.append(copydiaginfo("server"));
strbuf.append(copydiaginfo("network"));
@@ -1373,12 +1331,12 @@ private String copydiaginfo(String kinds){
}
if (kinds.equalsIgnoreCase("server")) {
Diags diags = (Diags) model.get(0);
- textbuf = new String("OrbServer: " + diags.getValue1());
+ textbuf = "OrbServer: " + diags.getValue1();
}
if (kinds.equalsIgnoreCase("network")) {
Diags diags = (Diags) model.get(1);
// textbuf = new String("Network: " + diags.getValue1() +" "+ diags.getValue2());
- textbuf = new String("Network: " + diags.getValue2());
+ textbuf = "Network: " + diags.getValue2();
}
// if (m.group(2).equalsIgnoreCase("ipport")) {
@@ -1387,31 +1345,31 @@ private String copydiaginfo(String kinds){
// }
if (kinds.equalsIgnoreCase("reachable")) {
Diags diags = (Diags) model.get(1);
- textbuf = new String("Network: " + diags.getValue2());
+ textbuf = "Network: " + diags.getValue2();
}
if (kinds.equalsIgnoreCase("hardware")) {
Diags diags = (Diags) model.get(2);
- textbuf = new String("Hardware: " + diags.getValue1() + " " + diags.getValue2());
+ textbuf = "Hardware: " + diags.getValue1() + " " + diags.getValue2();
}
if (kinds.equalsIgnoreCase("nic")) {
Diags diags = (Diags) model.get(2);
- textbuf = new String("Hardware: " + diags.getValue1());
+ textbuf = "Hardware: " + diags.getValue1();
}
if (kinds.equalsIgnoreCase("lib")) {
Diags diags = (Diags) model.get(2);
- textbuf = new String("Hardware: " + diags.getValue2());
+ textbuf = "Hardware: " + diags.getValue2();
}
if (kinds.equalsIgnoreCase("engine")) {
Diags diags = (Diags) model.get(3);
- textbuf = new String("Engine: " + diags.getValue1() + " " + diags.getValue2());
+ textbuf = "Engine: " + diags.getValue1() + " " + diags.getValue2();
}
if (kinds.equalsIgnoreCase("ver")) {
Diags diags = (Diags) model.get(3);
- textbuf = new String("Engine: " + diags.getValue1());
+ textbuf = "Engine: " + diags.getValue1();
}
if (kinds.equalsIgnoreCase("platform")) {
Diags diags = (Diags) model.get(3);
- textbuf = new String("Engine: " + diags.getValue2());
+ textbuf = "Engine: " + diags.getValue2();
}
return textbuf;
}
diff --git a/src/pt/jkaiui/ui/tools/CommandExecuter.java b/src/pt/jkaiui/ui/tools/CommandExecuter.java
new file mode 100644
index 0000000..5b9cc7d
--- /dev/null
+++ b/src/pt/jkaiui/ui/tools/CommandExecuter.java
@@ -0,0 +1,94 @@
+package pt.jkaiui.ui.tools;
+
+/*
+ * To change this template, choose Tools | Templates and open the template in
+ * the editor.
+ */
+import java.io.*;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ *
+ * @author yuuakron
+ */
+public class CommandExecuter implements Runnable {
+
+ private StringWriter strWriter;
+ private PrintWriter pwriter;
+ private BufferedReader buffReader;
+
+ public CommandExecuter() {
+ }
+
+ private String doExec(List |