OSDN Git Service

クラスメンバ定義順統一
authorOlyutorskii <olyutorskii@users.osdn.me>
Sat, 30 Apr 2011 11:06:02 +0000 (20:06 +0900)
committerOlyutorskii <olyutorskii@users.osdn.me>
Sat, 30 Apr 2011 11:06:02 +0000 (20:06 +0900)
48 files changed:
src/main/java/jp/sourceforge/jindolf/ActionManager.java
src/main/java/jp/sourceforge/jindolf/Anchor.java
src/main/java/jp/sourceforge/jindolf/Avatar.java
src/main/java/jp/sourceforge/jindolf/BalloonBorder.java
src/main/java/jp/sourceforge/jindolf/ClipboardAction.java
src/main/java/jp/sourceforge/jindolf/CmdOption.java
src/main/java/jp/sourceforge/jindolf/ConfigFile.java
src/main/java/jp/sourceforge/jindolf/CsvExporter.java
src/main/java/jp/sourceforge/jindolf/DaySummary.java
src/main/java/jp/sourceforge/jindolf/EnvInfo.java
src/main/java/jp/sourceforge/jindolf/FileUtils.java
src/main/java/jp/sourceforge/jindolf/FontInfo.java
src/main/java/jp/sourceforge/jindolf/FontUtils.java
src/main/java/jp/sourceforge/jindolf/GUIUtils.java
src/main/java/jp/sourceforge/jindolf/GameSummary.java
src/main/java/jp/sourceforge/jindolf/HttpUtils.java
src/main/java/jp/sourceforge/jindolf/InterVMLock.java
src/main/java/jp/sourceforge/jindolf/Jindolf.java
src/main/java/jp/sourceforge/jindolf/Land.java
src/main/java/jp/sourceforge/jindolf/LandInfoPanel.java
src/main/java/jp/sourceforge/jindolf/LandsModel.java
src/main/java/jp/sourceforge/jindolf/Monodizer.java
src/main/java/jp/sourceforge/jindolf/OptionInfo.java
src/main/java/jp/sourceforge/jindolf/Period.java
src/main/java/jp/sourceforge/jindolf/ProxyChooser.java
src/main/java/jp/sourceforge/jindolf/ProxyInfo.java
src/main/java/jp/sourceforge/jindolf/RegexPattern.java
src/main/java/jp/sourceforge/jindolf/ServerAccess.java
src/main/java/jp/sourceforge/jindolf/StringUtils.java
src/main/java/jp/sourceforge/jindolf/Talk.java
src/main/java/jp/sourceforge/jindolf/TalkDraw.java
src/main/java/jp/sourceforge/jindolf/TalkEditor.java
src/main/java/jp/sourceforge/jindolf/TallyInputStream.java
src/main/java/jp/sourceforge/jindolf/TallyOutputStream.java
src/main/java/jp/sourceforge/jindolf/TextEditor.java
src/main/java/jp/sourceforge/jindolf/Village.java
src/main/java/jp/sourceforge/jindolf/VillageDigest.java
src/main/java/jp/sourceforge/jindolf/WebIPC.java
src/main/java/jp/sourceforge/jindolf/WebIPCDialog.java
src/main/java/jp/sourceforge/jindolf/WolfBBS.java
src/main/java/jp/sourceforge/jindolf/XmlResourceResolver.java
src/main/java/jp/sourceforge/jindolf/XmlUtils.java
src/main/java/jp/sourceforge/jindolf/json/JsArray.java
src/main/java/jp/sourceforge/jindolf/json/JsBoolean.java
src/main/java/jp/sourceforge/jindolf/json/JsNumber.java
src/main/java/jp/sourceforge/jindolf/json/JsObject.java
src/main/java/jp/sourceforge/jindolf/json/JsString.java
src/main/java/jp/sourceforge/jindolf/json/Json.java

index 7f3fe5d..54450d8 100644 (file)
@@ -96,14 +96,6 @@ public class ActionManager{
     /** アクション{@value}。 */\r
     public static final String CMD_FONTSIZESEL = "FONTSIZESEL";\r
 \r
-    private static final KeyStroke KEY_F1 = KeyStroke.getKeyStroke("F1");\r
-    private static final KeyStroke KEY_F3 = KeyStroke.getKeyStroke("F3");\r
-    private static final KeyStroke KEY_SHIFT_F3 =\r
-            KeyStroke.getKeyStroke("shift F3");\r
-    private static final KeyStroke KEY_F5 = KeyStroke.getKeyStroke("F5");\r
-    private static final KeyStroke KEY_CTRL_F =\r
-            KeyStroke.getKeyStroke("ctrl F");\r
-\r
     /** WWWアイコン。 */\r
     public static final Icon ICON_WWW = GUIUtils.getWWWIcon();\r
     /** 検索アイコン。 */\r
@@ -119,6 +111,14 @@ public class ActionManager{
     /** 発言エディタアイコン。 */\r
     public static final Icon ICON_EDITOR;\r
 \r
+    private static final KeyStroke KEY_F1 = KeyStroke.getKeyStroke("F1");\r
+    private static final KeyStroke KEY_F3 = KeyStroke.getKeyStroke("F3");\r
+    private static final KeyStroke KEY_SHIFT_F3 =\r
+            KeyStroke.getKeyStroke("shift F3");\r
+    private static final KeyStroke KEY_F5 = KeyStroke.getKeyStroke("F5");\r
+    private static final KeyStroke KEY_CTRL_F =\r
+            KeyStroke.getKeyStroke("ctrl F");\r
+\r
     static{\r
         URL iconurl;\r
 \r
index 42de6dc..e2ccbd1 100644 (file)
@@ -66,6 +66,65 @@ public final class Anchor{
                                          Pattern.DOTALL);\r
     }\r
 \r
+\r
+    private final CharSequence source;\r
+    private final int startPos;\r
+    private final int endPos;\r
+    private final int day;\r
+    private final int hour;\r
+    private final int minute;\r
+    private final int talkNo;\r
+\r
+\r
+    /**\r
+     * アンカーのコンストラクタ。\r
+     * @param source アンカーが含まれる文字列\r
+     * @param startPos アンカーの始まる位置\r
+     * @param endPos アンカーの終わる位置\r
+     * @param talkNo 公開発言番号\r
+     */\r
+    private Anchor(CharSequence source, int startPos, int endPos,\r
+                    int talkNo ){\r
+        super();\r
+\r
+        if(talkNo <= 0) throw new IllegalArgumentException();\r
+\r
+        this.source = source;\r
+        this.startPos = startPos;\r
+        this.endPos = endPos;\r
+        this.day = -1;\r
+        this.hour = -1;\r
+        this.minute = -1;\r
+        this.talkNo = talkNo;\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * アンカーのコンストラクタ。\r
+     * @param source アンカーが含まれる文字列\r
+     * @param startPos アンカーの始まる位置\r
+     * @param endPos アンカーの終わる位置\r
+     * @param day 日\r
+     * @param hour 時間(0-23)\r
+     * @param minute 分(0-59)\r
+     */\r
+    private Anchor(CharSequence source, int startPos, int endPos,\r
+                    int day, int hour, int minute                 ){\r
+        super();\r
+\r
+        this.source = source;\r
+        this.startPos = startPos;\r
+        this.endPos = endPos;\r
+        this.day = day;\r
+        this.hour = hour;\r
+        this.minute = minute;\r
+        this.talkNo = -1;\r
+\r
+        return;\r
+    }\r
+\r
+\r
     /**\r
      * 与えられた範囲指定文字列からアンカーを抽出する。\r
      * @param source 検索対象文字列\r
@@ -185,62 +244,6 @@ public final class Anchor{
         return anchor;\r
     }\r
 \r
-    private final CharSequence source;\r
-    private final int startPos;\r
-    private final int endPos;\r
-    private final int day;\r
-    private final int hour;\r
-    private final int minute;\r
-    private final int talkNo;\r
-\r
-    /**\r
-     * アンカーのコンストラクタ。\r
-     * @param source アンカーが含まれる文字列\r
-     * @param startPos アンカーの始まる位置\r
-     * @param endPos アンカーの終わる位置\r
-     * @param day 日\r
-     * @param hour 時間(0-23)\r
-     * @param minute 分(0-59)\r
-     */\r
-    private Anchor(CharSequence source, int startPos, int endPos,\r
-                    int day, int hour, int minute                 ){\r
-        super();\r
-\r
-        this.source = source;\r
-        this.startPos = startPos;\r
-        this.endPos = endPos;\r
-        this.day = day;\r
-        this.hour = hour;\r
-        this.minute = minute;\r
-        this.talkNo = -1;\r
-\r
-        return;\r
-    }\r
-\r
-    /**\r
-     * アンカーのコンストラクタ。\r
-     * @param source アンカーが含まれる文字列\r
-     * @param startPos アンカーの始まる位置\r
-     * @param endPos アンカーの終わる位置\r
-     * @param talkNo 公開発言番号\r
-     */\r
-    private Anchor(CharSequence source, int startPos, int endPos,\r
-                    int talkNo ){\r
-        super();\r
-\r
-        if(talkNo <= 0) throw new IllegalArgumentException();\r
-\r
-        this.source = source;\r
-        this.startPos = startPos;\r
-        this.endPos = endPos;\r
-        this.day = -1;\r
-        this.hour = -1;\r
-        this.minute = -1;\r
-        this.talkNo = talkNo;\r
-\r
-        return;\r
-    }\r
-\r
     /**\r
      * アンカーの含まれる文字列を返す。\r
      * @return アンカーの含まれる文字列\r
index 1fa02e9..50789ff 100644 (file)
@@ -23,14 +23,14 @@ import jp.sourceforge.jindolf.corelib.PreDefAvatar;
  */\r
 public class Avatar implements Comparable<Avatar> {\r
 \r
+    /** ゲルト。 */\r
+    public static final Avatar AVATAR_GERD;\r
+\r
     private static final List<Avatar>        AVATAR_LIST;\r
     private static final Map<String, Avatar> AVATAR_MAP;\r
 \r
     private static final Pattern AVATAR_PATTERN;\r
 \r
-    /** ゲルト。 */\r
-    public static final Avatar AVATAR_GERD;\r
-\r
     static{\r
         List<PreDefAvatar>  predefs;\r
         try{\r
@@ -68,6 +68,68 @@ public class Avatar implements Comparable<Avatar> {
         assert AVATAR_GERD != null;\r
     }\r
 \r
+\r
+    private final String name;\r
+    private final String jobTitle;\r
+    private final String fullName;\r
+    private final int idNum;\r
+    private final String identifier;\r
+    private final int hashNum;\r
+\r
+\r
+    /**\r
+     * Avatarを生成する。\r
+     * @param name 名前\r
+     * @param jobTitle 職業名\r
+     * @param idNum 通し番号\r
+     * @param identifier 識別文字列\r
+     */\r
+    private Avatar(String name,\r
+                    String jobTitle,\r
+                    int idNum,\r
+                    String identifier ){\r
+        this.name = name.intern();\r
+        this.jobTitle = jobTitle.intern();\r
+        this.idNum = idNum;\r
+        this.identifier = identifier.intern();\r
+\r
+        this.fullName = (this.jobTitle + " " + this.name).intern();\r
+\r
+        this.hashNum = this.fullName.hashCode() ^ this.idNum;\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Avatarを生成する。\r
+     * @param fullName フルネーム\r
+     */\r
+    // TODO 当面は呼ばれないはず。Z国とか向け。\r
+    public Avatar(String fullName){\r
+        this.fullName = fullName.intern();\r
+        this.idNum = -1;\r
+\r
+        String[] tokens = this.fullName.split("\\p{Blank}+", 2);\r
+        if(tokens.length == 1){\r
+            this.jobTitle = null;\r
+            this.name = this.fullName;\r
+        }else if(tokens.length == 2){\r
+            this.jobTitle = tokens[0].intern();\r
+            this.name = tokens[1].intern();\r
+        }else{\r
+            this.jobTitle = null;\r
+            this.name = null;\r
+            assert false;\r
+        }\r
+\r
+        this.identifier = "???".intern();\r
+\r
+        this.hashNum = this.fullName.hashCode() ^ this.idNum;\r
+\r
+        return;\r
+    }\r
+\r
+\r
     /**\r
      * 定義済みAvatar群の生成。\r
      * @param predefs 定義済みAvatar元データ群\r
@@ -147,65 +209,6 @@ public class Avatar implements Comparable<Avatar> {
         return null;\r
     }\r
 \r
-    private final String name;\r
-    private final String jobTitle;\r
-    private final String fullName;\r
-    private final int idNum;\r
-    private final String identifier;\r
-    private final int hashNum;\r
-\r
-    /**\r
-     * Avatarを生成する。\r
-     * @param name 名前\r
-     * @param jobTitle 職業名\r
-     * @param idNum 通し番号\r
-     * @param identifier 識別文字列\r
-     */\r
-    private Avatar(String name,\r
-                    String jobTitle,\r
-                    int idNum,\r
-                    String identifier ){\r
-        this.name = name.intern();\r
-        this.jobTitle = jobTitle.intern();\r
-        this.idNum = idNum;\r
-        this.identifier = identifier.intern();\r
-\r
-        this.fullName = (this.jobTitle + " " + this.name).intern();\r
-\r
-        this.hashNum = this.fullName.hashCode() ^ this.idNum;\r
-\r
-        return;\r
-    }\r
-\r
-    /**\r
-     * Avatarを生成する。\r
-     * @param fullName フルネーム\r
-     */\r
-    // TODO 当面は呼ばれないはず。Z国とか向け。\r
-    public Avatar(String fullName){\r
-        this.fullName = fullName.intern();\r
-        this.idNum = -1;\r
-\r
-        String[] tokens = this.fullName.split("\\p{Blank}+", 2);\r
-        if(tokens.length == 1){\r
-            this.jobTitle = null;\r
-            this.name = this.fullName;\r
-        }else if(tokens.length == 2){\r
-            this.jobTitle = tokens[0].intern();\r
-            this.name = tokens[1].intern();\r
-        }else{\r
-            this.jobTitle = null;\r
-            this.name = null;\r
-            assert false;\r
-        }\r
-\r
-        this.identifier = "???".intern();\r
-\r
-        this.hashNum = this.fullName.hashCode() ^ this.idNum;\r
-\r
-        return;\r
-    }\r
-\r
     /**\r
      * フルネームを取得する。\r
      * @return フルネーム\r
index fe89428..7668827 100644 (file)
@@ -25,6 +25,16 @@ public class BalloonBorder implements Border{
 \r
     private static final int RADIUS = 5;\r
 \r
+\r
+    /**\r
+     * コンストラクタ。\r
+     */\r
+    public BalloonBorder(){\r
+        super();\r
+        return;\r
+    }\r
+\r
+\r
     /**\r
      * 隙間が透明なフキダシ装飾を任意のコンポーネントに施す。\r
      * @param inner 装飾対象のコンポーネント\r
@@ -40,14 +50,6 @@ public class BalloonBorder implements Border{
     }\r
 \r
     /**\r
-     * コンストラクタ。\r
-     */\r
-    public BalloonBorder(){\r
-        super();\r
-        return;\r
-    }\r
-\r
-    /**\r
      * {@inheritDoc}\r
      * @param comp {@inheritDoc}\r
      * @return {@inheritDoc}\r
index 189fc65..4df16e5 100644 (file)
@@ -30,6 +30,19 @@ public class ClipboardAction extends TextAction{
     /** アクション{@value}。 */\r
     public static final String ACTION_SELALL = "ACTION_SELALL";\r
 \r
+\r
+    /**\r
+     * コンストラクタ。\r
+     * @param name ポップアップメニュー名\r
+     * @param command アクションコマンド名\r
+     */\r
+    protected ClipboardAction(String name, String command){\r
+        super(name);\r
+        setActionCommand(command);\r
+        return;\r
+    }\r
+\r
+\r
     /**\r
      * 文字列をクリップボードにコピーする。\r
      * @param data 文字列\r
@@ -75,17 +88,6 @@ public class ClipboardAction extends TextAction{
     }\r
 \r
     /**\r
-     * コンストラクタ。\r
-     * @param name ポップアップメニュー名\r
-     * @param command アクションコマンド名\r
-     */\r
-    protected ClipboardAction(String name, String command){\r
-        super(name);\r
-        setActionCommand(command);\r
-        return;\r
-    }\r
-\r
-    /**\r
      * アクションコマンド名を設定する。\r
      * @param actionCommand アクションコマンド名\r
      */\r
index a7be27f..c6b3f0b 100644 (file)
@@ -42,6 +42,27 @@ public enum CmdOption{
     OPT_NOCONF("noconfdir"),\r
     ;\r
 \r
+\r
+    private final List<String> nameList = new LinkedList<String>();\r
+\r
+\r
+    /**\r
+     * コンストラクタ。\r
+     * @param names 頭のハイフンを除いたオプション名の一覧\r
+     */\r
+    private CmdOption(CharSequence ... names){\r
+        if(names == null) throw new NullPointerException();\r
+        if(names.length <= 0) throw new IllegalArgumentException();\r
+\r
+        for(CharSequence name : names){\r
+            if(name == null) throw new NullPointerException();\r
+            this.nameList.add(name.toString().intern());\r
+        }\r
+\r
+        return;\r
+    }\r
+\r
+\r
     /**\r
      * オプション名に合致するEnumを返す。\r
      * @param seq ハイフン付きオプション名\r
@@ -109,24 +130,6 @@ public enum CmdOption{
         return helpText;\r
     }\r
 \r
-    private final List<String> nameList = new LinkedList<String>();\r
-\r
-    /**\r
-     * コンストラクタ。\r
-     * @param names 頭のハイフンを除いたオプション名の一覧\r
-     */\r
-    private CmdOption(CharSequence ... names){\r
-        if(names == null) throw new NullPointerException();\r
-        if(names.length <= 0) throw new IllegalArgumentException();\r
-\r
-        for(CharSequence name : names){\r
-            if(name == null) throw new NullPointerException();\r
-            this.nameList.add(name.toString().intern());\r
-        }\r
-\r
-        return;\r
-    }\r
-\r
     /**\r
      * 頭のハイフンを除いたオプション名を返す。\r
      * オプション名が複数指定されていた場合は最初のオプション名\r
index 8162313..69ad681 100644 (file)
@@ -61,6 +61,15 @@ public final class ConfigFile{
 \r
 \r
     /**\r
+     * 隠れコンストラクタ。\r
+     */\r
+    private ConfigFile(){\r
+        super();\r
+        return;\r
+    }\r
+\r
+\r
+    /**\r
      * 設定格納ディレクトリのセットアップ。\r
      * @return 設定格納ディレクトリ\r
      */\r
@@ -492,14 +501,6 @@ public final class ConfigFile{
     }\r
 \r
     /**\r
-     * 隠れコンストラクタ。\r
-     */\r
-    private ConfigFile(){\r
-        super();\r
-        return;\r
-    }\r
-\r
-    /**\r
      * ロックエラーダイアログの表示。\r
      * 呼び出しから戻ってもまだロックオブジェクトが\r
      * ロックファイルのオーナーでない場合、\r
index 292ba6a..9c8bf41 100644 (file)
@@ -76,6 +76,16 @@ public final class CsvExporter{
     private static final JFileChooser chooser = buildChooser();\r
     // TODO staticなGUIパーツってどうなんだ…\r
 \r
+\r
+    /**\r
+     * 隠しコンストラクタ。\r
+     */\r
+    private CsvExporter(){\r
+        assert false;\r
+        throw new AssertionError();\r
+    }\r
+\r
+\r
     /**\r
      * Charsetが日本語エンコーダを持っているか確認する。\r
      * @param cs Charset\r
@@ -502,14 +512,6 @@ public final class CsvExporter{
     }\r
 \r
     /**\r
-     * 隠しコンストラクタ。\r
-     */\r
-    private CsvExporter(){\r
-        assert false;\r
-        throw new AssertionError();\r
-    }\r
-\r
-    /**\r
      * CSVファイル表示用フィルタ。\r
      * 名前が「*.csv」の通常ファイルとディレクトリのみ表示させる。\r
      * ※ 表示の可否を問うものであって、選択の可否を問うものではない。\r
index 799981b..c757951 100644 (file)
@@ -51,6 +51,7 @@ import jp.sourceforge.jindolf.corelib.TalkType;
 @SuppressWarnings("serial")\r
 public class DaySummary extends JDialog\r
         implements WindowListener, ActionListener, ItemListener{\r
+\r
     private static final String FRAMETITLE =\r
             "発言集計 - " + Jindolf.TITLE;\r
     private static final NumberFormat AVERAGE_FORM;\r
@@ -69,20 +70,6 @@ public class DaySummary extends JDialog
         AVERAGE_FORM.setMinimumFractionDigits(1);\r
     }\r
 \r
-    /**\r
-     * 初期のデータモデルを生成する。\r
-     * @return データモデル\r
-     */\r
-    private static DefaultTableModel createInitModel(){\r
-        DefaultTableModel result;\r
-        result = new DefaultTableModel();\r
-\r
-        Object[] rowHeads = {"名前", "発言回数", "平均文字列長", "最終発言"};\r
-        result.setColumnCount(rowHeads.length);\r
-        result.setColumnIdentifiers(rowHeads);\r
-\r
-        return result;\r
-    }\r
 \r
     private final DefaultTableModel tableModel;\r
     private final TableColumn avatarColumn;\r
@@ -96,6 +83,7 @@ public class DaySummary extends JDialog
     private TalkType talkFilter;\r
     private Period period;\r
 \r
+\r
     /**\r
      * コンストラクタ。\r
      * 集計結果を表示するモーダルダイアログを生成する。\r
@@ -156,6 +144,23 @@ public class DaySummary extends JDialog
         return;\r
     }\r
 \r
+\r
+    /**\r
+     * 初期のデータモデルを生成する。\r
+     * @return データモデル\r
+     */\r
+    private static DefaultTableModel createInitModel(){\r
+        DefaultTableModel result;\r
+        result = new DefaultTableModel();\r
+\r
+        Object[] rowHeads = {"名前", "発言回数", "平均文字列長", "最終発言"};\r
+        result.setColumnCount(rowHeads.length);\r
+        result.setColumnIdentifiers(rowHeads);\r
+\r
+        return result;\r
+    }\r
+\r
+\r
     /**\r
      * テーブルをクリアする。\r
      */\r
index 6633e95..07dc7de 100644 (file)
@@ -55,6 +55,15 @@ public final class EnvInfo{
         }\r
     }\r
 \r
+\r
+    /**\r
+     * 隠れコンストラクタ。\r
+     */\r
+    private EnvInfo(){\r
+        throw new AssertionError();\r
+    }\r
+\r
+\r
     /**\r
      * 可能ならシステムプロパティを読み込む。\r
      * @param key キー\r
@@ -139,11 +148,4 @@ public final class EnvInfo{
         return result.toString();\r
     }\r
 \r
-    /**\r
-     * 隠れコンストラクタ。\r
-     */\r
-    private EnvInfo(){\r
-        throw new AssertionError();\r
-    }\r
-\r
 }\r
index 345a281..b80b9dc 100644 (file)
@@ -68,6 +68,16 @@ public final class FileUtils{
         assert ! ( isMacOSXFs() && isWindowsOSFs() );\r
     }\r
 \r
+\r
+    /**\r
+     * 隠しコンストラクタ。\r
+     */\r
+    private FileUtils(){\r
+        assert false;\r
+        throw new AssertionError();\r
+    }\r
+\r
+\r
     /**\r
      * なるべく自分にだけ許可を与え自分以外には許可を与えないように\r
      * ファイル属性を操作する。\r
@@ -381,12 +391,4 @@ public final class FileUtils{
         return "<code>" + pathName + "</code>";\r
     }\r
 \r
-    /**\r
-     * 隠しコンストラクタ。\r
-     */\r
-    private FileUtils(){\r
-        assert false;\r
-        throw new AssertionError();\r
-    }\r
-\r
 }\r
index 8269ee5..c3ad341 100644 (file)
@@ -34,6 +34,48 @@ public class FontInfo{
     private static final String HASH_USEAA = "useAntiAlias";\r
     private static final String HASH_FRACTIONAL = "useFractional";\r
 \r
+\r
+    private Font font;\r
+    private FontRenderContext context;\r
+\r
+\r
+    /**\r
+     * コンストラクタ。\r
+     * デフォルトフォントとそれに適した描画属性が指定される。\r
+     */\r
+    public FontInfo(){\r
+        this(FontUtils.createDefaultSpeechFont());\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * コンストラクタ。\r
+     * 描画設定はフォント属性に応じて自動的に調整される。\r
+     * @param font フォント\r
+     * @throws NullPointerException 引数がnull\r
+     */\r
+    public FontInfo(Font font)\r
+            throws NullPointerException{\r
+        this(font, createBestContext(font));\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * コンストラクタ。\r
+     * @param font フォント\r
+     * @param context 描画設定\r
+     * @throws NullPointerException 引数がnull\r
+     */\r
+    public FontInfo(Font font, FontRenderContext context)\r
+            throws NullPointerException{\r
+        super();\r
+        if(font == null || context == null) throw new NullPointerException();\r
+        this.font = font;\r
+        this.context = context;\r
+        return;\r
+    }\r
+\r
+\r
     /**\r
      * フォントに応じた最適な描画設定を生成する。\r
      * @param font フォント\r
@@ -148,45 +190,6 @@ public class FontInfo{
         return result;\r
     }\r
 \r
-    private Font font;\r
-    private FontRenderContext context;\r
-\r
-    /**\r
-     * コンストラクタ。\r
-     * デフォルトフォントとそれに適した描画属性が指定される。\r
-     */\r
-    public FontInfo(){\r
-        this(FontUtils.createDefaultSpeechFont());\r
-        return;\r
-    }\r
-\r
-    /**\r
-     * コンストラクタ。\r
-     * 描画設定はフォント属性に応じて自動的に調整される。\r
-     * @param font フォント\r
-     * @throws NullPointerException 引数がnull\r
-     */\r
-    public FontInfo(Font font)\r
-            throws NullPointerException{\r
-        this(font, createBestContext(font));\r
-        return;\r
-    }\r
-\r
-    /**\r
-     * コンストラクタ。\r
-     * @param font フォント\r
-     * @param context 描画設定\r
-     * @throws NullPointerException 引数がnull\r
-     */\r
-    public FontInfo(Font font, FontRenderContext context)\r
-            throws NullPointerException{\r
-        super();\r
-        if(font == null || context == null) throw new NullPointerException();\r
-        this.font = font;\r
-        this.context = context;\r
-        return;\r
-    }\r
-\r
     /**\r
      * フォントを返す。\r
      * @return フォント\r
index a6b1c98..0f337b3 100644 (file)
@@ -36,6 +36,15 @@ public final class FontUtils{
     /** JIS0208:1990 チェック用。 */\r
     private static final String JPCHECK_CODE = "9Aあゑアアヴヰ┼ЖΩ峠凜熙";\r
 \r
+\r
+    /**\r
+     * 隠れコンストラクタ。\r
+     */\r
+    private FontUtils(){\r
+        assert false;\r
+    }\r
+\r
+\r
     /**\r
      * システムに存在する有効なファミリ名か判定する。\r
      * @param family フォントファミリ名。\r
@@ -148,11 +157,4 @@ public final class FontUtils{
         return font.getFamily(ROOT);\r
     }\r
 \r
-    /**\r
-     * 隠れコンストラクタ。\r
-     */\r
-    private FontUtils(){\r
-        assert false;\r
-    }\r
-\r
 }\r
index 58f7c7d..687b6ba 100644 (file)
@@ -117,6 +117,16 @@ public final class GUIUtils{
         OP_MONOIMG = new ColorConvertOp(mono, null);\r
     }\r
 \r
+\r
+    /**\r
+     * 隠れコンストラクタ。\r
+     */\r
+    private GUIUtils(){\r
+        assert false;\r
+        throw new AssertionError();\r
+    }\r
+\r
+\r
     /**\r
      * 描画品質優先の描画ヒントを返す。\r
      * @return 描画ヒント\r
@@ -386,12 +396,4 @@ public final class GUIUtils{
         return result;\r
     }\r
 \r
-    /**\r
-     * 隠れコンストラクタ。\r
-     */\r
-    private GUIUtils(){\r
-        assert false;\r
-        throw new AssertionError();\r
-    }\r
-\r
 }\r
index 7e8e45c..83a5340 100644 (file)
@@ -36,28 +36,6 @@ public class GameSummary{
     public static final Comparator<Player> COMPARATOR_CASTING =\r
             new CastingComparator();\r
 \r
-    /**\r
-     * プレイヤーのリストから役職バランス文字列を得る。\r
-     * ex) "村村占霊狂狼"\r
-     * @param players プレイヤーのリスト\r
-     * @return 役職バランス文字列\r
-     */\r
-    public static String getRoleBalanceSequence(List<Player> players){\r
-        List<GameRole> roleList = new LinkedList<GameRole>();\r
-        for(Player player : players){\r
-            GameRole role = player.getRole();\r
-            roleList.add(role);\r
-        }\r
-        Collections.sort(roleList, GameRole.getPowerBalanceComparator());\r
-\r
-        StringBuilder result = new StringBuilder();\r
-        for(GameRole role : roleList){\r
-            char ch = role.getShortName();\r
-            result.append(ch);\r
-        }\r
-\r
-        return result.toString();\r
-    }\r
 \r
     private final Map<Avatar, Player> playerMap =\r
             new HashMap<Avatar, Player>();\r
@@ -91,6 +69,7 @@ public class GameSummary{
     private long talk1stTimeMs = -1;\r
     private long talkLastTimeMs = -1;\r
 \r
+\r
     /**\r
      * コンストラクタ。\r
      * @param village 村\r
@@ -111,6 +90,30 @@ public class GameSummary{
         return;\r
     }\r
 \r
+\r
+    /**\r
+     * プレイヤーのリストから役職バランス文字列を得る。\r
+     * ex) "村村占霊狂狼"\r
+     * @param players プレイヤーのリスト\r
+     * @return 役職バランス文字列\r
+     */\r
+    public static String getRoleBalanceSequence(List<Player> players){\r
+        List<GameRole> roleList = new LinkedList<GameRole>();\r
+        for(Player player : players){\r
+            GameRole role = player.getRole();\r
+            roleList.add(role);\r
+        }\r
+        Collections.sort(roleList, GameRole.getPowerBalanceComparator());\r
+\r
+        StringBuilder result = new StringBuilder();\r
+        for(GameRole role : roleList){\r
+            char ch = role.getShortName();\r
+            result.append(ch);\r
+        }\r
+\r
+        return result.toString();\r
+    }\r
+\r
     /**\r
      * サマライズ処理。\r
      */\r
index c0459ac..57993d3 100644 (file)
@@ -45,6 +45,17 @@ public final class HttpUtils{
         SIZE_FORMAT.setGroupingUsed(true);\r
     }\r
 \r
+\r
+    /**\r
+     * 隠れコンストラクタ。\r
+     */\r
+    private HttpUtils(){\r
+        super();\r
+        assert false;\r
+        throw new AssertionError();\r
+    }\r
+\r
+\r
     /**\r
      * ネットワークのスループット報告用文字列を生成する。\r
      * @param size 転送サイズ(バイト数)\r
@@ -211,13 +222,4 @@ public final class HttpUtils{
         return charset;\r
     }\r
 \r
-    /**\r
-     * 隠れコンストラクタ。\r
-     */\r
-    private HttpUtils(){\r
-        super();\r
-        assert false;\r
-        throw new AssertionError();\r
-    }\r
-\r
 }\r
index 1b8c9e6..263f1a1 100644 (file)
@@ -33,6 +33,25 @@ public class InterVMLock{
         });\r
     }\r
 \r
+\r
+    private final File lockFile;\r
+    private boolean isFileOwner = false;\r
+    private FileOutputStream stream = null;\r
+\r
+\r
+    /**\r
+     * コンストラクタ。\r
+     * この時点ではまだロックファイルの存在は確認されない。\r
+     * @param lockFile ロックファイル\r
+     * @throws NullPointerException 引数がnull\r
+     */\r
+    public InterVMLock(File lockFile) throws NullPointerException{\r
+        if(lockFile == null) throw new NullPointerException();\r
+        this.lockFile = lockFile;\r
+        return;\r
+    }\r
+\r
+\r
     /**\r
      * 所持するロックオブジェクト一覧への登録。\r
      * @param lock 登録するロックオブジェクト\r
@@ -76,23 +95,6 @@ public class InterVMLock{
         return;\r
     }\r
 \r
-\r
-    private final File lockFile;\r
-    private boolean isFileOwner = false;\r
-    private FileOutputStream stream = null;\r
-\r
-    /**\r
-     * コンストラクタ。\r
-     * この時点ではまだロックファイルの存在は確認されない。\r
-     * @param lockFile ロックファイル\r
-     * @throws NullPointerException 引数がnull\r
-     */\r
-    public InterVMLock(File lockFile) throws NullPointerException{\r
-        if(lockFile == null) throw new NullPointerException();\r
-        this.lockFile = lockFile;\r
-        return;\r
-    }\r
-\r
     /**\r
      * ロック対象のファイルを返す。\r
      * @return ロック対象ファイル\r
index b57ac86..4edf5e1 100644 (file)
@@ -67,9 +67,6 @@ public final class Jindolf{
     public static final long EPOCHMS_LOADED;\r
 \r
 \r
-    /** バージョン定義リソース。 */\r
-    private static final String RES_VERDEF = "resources/version.properties";\r
-\r
     /** タイトル。 */\r
     public static final String TITLE;\r
     /** バージョン。 */\r
@@ -102,6 +99,9 @@ public final class Jindolf{
     private static OptionInfo option;\r
     private static AppSetting setting;\r
 \r
+    /** バージョン定義リソース。 */\r
+    private static final String RES_VERDEF = "resources/version.properties";\r
+\r
     static{\r
         SELF_KLASS   = Jindolf.class;\r
         SELF_PACKAGE = SELF_KLASS.getPackage();\r
@@ -168,6 +168,17 @@ public final class Jindolf{
         new Jindolf();\r
     }\r
 \r
+\r
+    /**\r
+     * 隠れコンストラクタ。\r
+     */\r
+    private Jindolf(){\r
+        super();\r
+        assert this.getClass() == SELF_KLASS;\r
+        return;\r
+    }\r
+\r
+\r
     /**\r
      * 起動オプション情報を返す。\r
      * @return 起動オプション情報\r
@@ -798,13 +809,4 @@ public final class Jindolf{
         return;\r
     }\r
 \r
-    /**\r
-     * 隠れコンストラクタ。\r
-     */\r
-    private Jindolf(){\r
-        super();\r
-        assert this.getClass() == SELF_KLASS;\r
-        return;\r
-    }\r
-\r
 }\r
index 393cd4c..e448a8d 100644 (file)
@@ -36,6 +36,39 @@ public class Land {
     // 古国ID\r
     private static final String ID_VANILLAWOLF = "wolf";\r
 \r
+\r
+    private final LandDef landDef;\r
+    private final ServerAccess serverAccess;\r
+    private final HtmlParser parser = new HtmlParser();\r
+    private final VillageListHandler handler = new VillageListHandler();\r
+\r
+    private final List<Village> villageList = new LinkedList<Village>();\r
+\r
+\r
+    /**\r
+     * コンストラクタ。\r
+     * @param landDef 国定義\r
+     * @throws java.lang.IllegalArgumentException 不正な国定義\r
+     */\r
+    public Land(LandDef landDef) throws IllegalArgumentException{\r
+        super();\r
+\r
+        this.landDef = landDef;\r
+\r
+        URL url;\r
+        try{\r
+            url = this.landDef.getCgiURI().toURL();\r
+        }catch(MalformedURLException e){\r
+            throw new IllegalArgumentException(e);\r
+        }\r
+        this.serverAccess = new ServerAccess(url, this.landDef.getEncoding());\r
+\r
+        this.parser.setBasicHandler(this.handler);\r
+\r
+        return;\r
+    }\r
+\r
+\r
     /**\r
      * クエリー文字列から特定キーの値を得る。\r
      * クエリーの書式例:「a=b&c=d&e=f」この場合キーcの値はd\r
@@ -112,36 +145,6 @@ public class Land {
         return villageID;\r
     }\r
 \r
-    private final LandDef landDef;\r
-    private final ServerAccess serverAccess;\r
-    private final HtmlParser parser = new HtmlParser();\r
-    private final VillageListHandler handler = new VillageListHandler();\r
-\r
-    private final List<Village> villageList = new LinkedList<Village>();\r
-\r
-    /**\r
-     * コンストラクタ。\r
-     * @param landDef 国定義\r
-     * @throws java.lang.IllegalArgumentException 不正な国定義\r
-     */\r
-    public Land(LandDef landDef) throws IllegalArgumentException{\r
-        super();\r
-\r
-        this.landDef = landDef;\r
-\r
-        URL url;\r
-        try{\r
-            url = this.landDef.getCgiURI().toURL();\r
-        }catch(MalformedURLException e){\r
-            throw new IllegalArgumentException(e);\r
-        }\r
-        this.serverAccess = new ServerAccess(url, this.landDef.getEncoding());\r
-\r
-        this.parser.setBasicHandler(this.handler);\r
-\r
-        return;\r
-    }\r
-\r
     /**\r
      * 国定義を得る。\r
      * @return 国定義\r
index 6bdc026..7ad22b6 100644 (file)
@@ -24,27 +24,6 @@ import jp.sourceforge.jindolf.corelib.LandState;
 @SuppressWarnings("serial")\r
 public class LandInfoPanel extends JPanel{\r
 \r
-    /**\r
-     * 国の状態を文字列化する。\r
-     * @param state 国状態\r
-     * @return 文字列化された国状態\r
-     */\r
-    private static String getStatusMark(LandState state){\r
-        String result;\r
-\r
-        switch(state){\r
-        case CLOSED:     result = "サービス終了";     break;\r
-        case HISTORICAL: result = "過去ログ提供のみ"; break;\r
-        case ACTIVE:     result = "稼動中";           break;\r
-        default:\r
-            assert false;\r
-            result = "";\r
-            break;\r
-        }\r
-\r
-        return result;\r
-    }\r
-\r
     private final JLabel landName       = new JLabel();\r
     private final JLabel landIdentifier = new JLabel();\r
     private final WebButton webURL      = new WebButton();\r
@@ -71,6 +50,28 @@ public class LandInfoPanel extends JPanel{
         return;\r
     }\r
 \r
+\r
+    /**\r
+     * 国の状態を文字列化する。\r
+     * @param state 国状態\r
+     * @return 文字列化された国状態\r
+     */\r
+    private static String getStatusMark(LandState state){\r
+        String result;\r
+\r
+        switch(state){\r
+        case CLOSED:     result = "サービス終了";     break;\r
+        case HISTORICAL: result = "過去ログ提供のみ"; break;\r
+        case ACTIVE:     result = "稼動中";           break;\r
+        default:\r
+            assert false;\r
+            result = "";\r
+            break;\r
+        }\r
+\r
+        return result;\r
+    }\r
+\r
     /**\r
      * 一行分レイアウトする。\r
      * @param item 項目名\r
index 46f64b6..f5774b9 100644 (file)
@@ -31,124 +31,10 @@ import org.xml.sax.SAXException;
  */\r
 public class LandsModel implements TreeModel{ // ComboBoxModelも付けるか?\r
 \r
-    /**\r
-     * 村IDで範囲指定した、村のセクション集合。国-村間の中間ツリー。\r
-     * @see javax.swing.tree.TreeModel\r
-     */\r
-    private static final class VillageSection{\r
-\r
-        /**\r
-         * 与えられた国の全ての村を、指定されたinterval間隔でセクション化する。\r
-         * @param land 国\r
-         * @param interval セクションの間隔\r
-         * @return セクションのリスト\r
-         * @throws java.lang.IllegalArgumentException intervalが正でない\r
-         */\r
-        private static List<VillageSection> getSectionList(Land land,\r
-                                                             int interval )\r
-                throws IllegalArgumentException{\r
-            if(interval <= 0){\r
-                throw new IllegalArgumentException();\r
-            }\r
-\r
-            List<Village> villageList = land.getVillageList();\r
-            Village village1st = villageList.get(0);\r
-            Village villageLast = villageList.get(villageList.size() - 1);\r
-\r
-            int startID = village1st.getVillageIDNum();\r
-            int endID = villageLast.getVillageIDNum();\r
-\r
-            List<VillageSection> result = new LinkedList<VillageSection>();\r
-\r
-            int fixedStart = startID / interval * interval;\r
-            for(int ct = fixedStart; ct <= endID; ct += interval){\r
-                VillageSection section =\r
-                        new VillageSection(land, ct, ct + interval - 1);\r
-                result.add(section);\r
-            }\r
-\r
-            return Collections.unmodifiableList(result);\r
-        }\r
-\r
-        private final int startID;\r
-        private final int endID;\r
-        private final String prefix;\r
-\r
-        private final List<Village> villageList = new LinkedList<Village>();\r
-\r
-        /**\r
-         * セクション集合を生成する。\r
-         * @param land 国\r
-         * @param startID 開始村ID\r
-         * @param endID 終了村ID\r
-         * @throws java.lang.IndexOutOfBoundsException IDの範囲指定が変\r
-         */\r
-        private VillageSection(Land land, int startID, int endID)\r
-                throws IndexOutOfBoundsException{\r
-            super();\r
-\r
-            if(startID < 0 || startID > endID){\r
-                throw new IndexOutOfBoundsException();\r
-            }\r
-\r
-            this.startID = startID;\r
-            this.endID = endID;\r
-            this.prefix = land.getLandDef().getLandPrefix();\r
-\r
-            for(Village village : land.getVillageList()){\r
-                int id = village.getVillageIDNum();\r
-                if(startID <= id && id <= endID){\r
-                    this.villageList.add(village);\r
-                }\r
-            }\r
-\r
-            return;\r
-        }\r
-\r
-        /**\r
-         * セクションに含まれる村の総数を返す。\r
-         * @return 村の総数\r
-         */\r
-        private int getVillageCount(){\r
-            return this.villageList.size();\r
-        }\r
-\r
-        /**\r
-         * セクションに含まれるindex番目の村を返す。\r
-         * @param index インデックス\r
-         * @return index番目の村\r
-         */\r
-        private Village getVillage(int index){\r
-            return this.villageList.get(index);\r
-        }\r
-\r
-        /**\r
-         * セクションにおける、指定された子(村)のインデックス位置を返す。\r
-         * @param child 子\r
-         * @return インデックス位置\r
-         */\r
-        private int getIndexOfVillage(Object child){\r
-            return this.villageList.indexOf(child);\r
-        }\r
-\r
-        /**\r
-         * セクションの文字列表記。\r
-         * JTree描画に反映される。\r
-         * @return 文字列表記\r
-         */\r
-        @Override\r
-        public String toString(){\r
-            StringBuilder result = new StringBuilder();\r
-            result.append(this.prefix).append(this.startID);\r
-            result.append(" ~ ");\r
-            result.append(this.prefix).append(this.endID);\r
-            return result.toString();\r
-        }\r
-    }\r
-\r
     private static final String ROOT = "ROOT";\r
     private static final int SECTION_INTERVAL = 100;\r
 \r
+\r
     private final List<Land> landList = new LinkedList<Land>();\r
     private final List<Land> unmodList =\r
             Collections.unmodifiableList(this.landList);\r
@@ -449,4 +335,121 @@ public class LandsModel implements TreeModel{ // ComboBoxModelも付けるか?
         throw new UnsupportedOperationException("Not supported yet.");\r
     }\r
 \r
+    /**\r
+     * 村IDで範囲指定した、村のセクション集合。国-村間の中間ツリー。\r
+     * @see javax.swing.tree.TreeModel\r
+     */\r
+    private static final class VillageSection{\r
+\r
+        private final int startID;\r
+        private final int endID;\r
+        private final String prefix;\r
+\r
+        private final List<Village> villageList = new LinkedList<Village>();\r
+\r
+\r
+        /**\r
+         * セクション集合を生成する。\r
+         * @param land 国\r
+         * @param startID 開始村ID\r
+         * @param endID 終了村ID\r
+         * @throws java.lang.IndexOutOfBoundsException IDの範囲指定が変\r
+         */\r
+        private VillageSection(Land land, int startID, int endID)\r
+                throws IndexOutOfBoundsException{\r
+            super();\r
+\r
+            if(startID < 0 || startID > endID){\r
+                throw new IndexOutOfBoundsException();\r
+            }\r
+\r
+            this.startID = startID;\r
+            this.endID = endID;\r
+            this.prefix = land.getLandDef().getLandPrefix();\r
+\r
+            for(Village village : land.getVillageList()){\r
+                int id = village.getVillageIDNum();\r
+                if(startID <= id && id <= endID){\r
+                    this.villageList.add(village);\r
+                }\r
+            }\r
+\r
+            return;\r
+        }\r
+\r
+\r
+        /**\r
+         * 与えられた国の全ての村を、指定されたinterval間隔でセクション化する。\r
+         * @param land 国\r
+         * @param interval セクションの間隔\r
+         * @return セクションのリスト\r
+         * @throws java.lang.IllegalArgumentException intervalが正でない\r
+         */\r
+        private static List<VillageSection> getSectionList(Land land,\r
+                                                             int interval )\r
+                throws IllegalArgumentException{\r
+            if(interval <= 0){\r
+                throw new IllegalArgumentException();\r
+            }\r
+\r
+            List<Village> villageList = land.getVillageList();\r
+            Village village1st = villageList.get(0);\r
+            Village villageLast = villageList.get(villageList.size() - 1);\r
+\r
+            int startID = village1st.getVillageIDNum();\r
+            int endID = villageLast.getVillageIDNum();\r
+\r
+            List<VillageSection> result = new LinkedList<VillageSection>();\r
+\r
+            int fixedStart = startID / interval * interval;\r
+            for(int ct = fixedStart; ct <= endID; ct += interval){\r
+                VillageSection section =\r
+                        new VillageSection(land, ct, ct + interval - 1);\r
+                result.add(section);\r
+            }\r
+\r
+            return Collections.unmodifiableList(result);\r
+        }\r
+\r
+        /**\r
+         * セクションに含まれる村の総数を返す。\r
+         * @return 村の総数\r
+         */\r
+        private int getVillageCount(){\r
+            return this.villageList.size();\r
+        }\r
+\r
+        /**\r
+         * セクションに含まれるindex番目の村を返す。\r
+         * @param index インデックス\r
+         * @return index番目の村\r
+         */\r
+        private Village getVillage(int index){\r
+            return this.villageList.get(index);\r
+        }\r
+\r
+        /**\r
+         * セクションにおける、指定された子(村)のインデックス位置を返す。\r
+         * @param child 子\r
+         * @return インデックス位置\r
+         */\r
+        private int getIndexOfVillage(Object child){\r
+            return this.villageList.indexOf(child);\r
+        }\r
+\r
+        /**\r
+         * セクションの文字列表記。\r
+         * JTree描画に反映される。\r
+         * @return 文字列表記\r
+         */\r
+        @Override\r
+        public String toString(){\r
+            StringBuilder result = new StringBuilder();\r
+            result.append(this.prefix).append(this.startID);\r
+            result.append(" ~ ");\r
+            result.append(this.prefix).append(this.endID);\r
+            return result.toString();\r
+        }\r
+    }\r
+\r
 }\r
index 99332f6..864e241 100644 (file)
@@ -39,6 +39,15 @@ public final class Monodizer implements PropertyChangeListener{
 \r
 \r
     /**\r
+     * 隠しコンストラクタ。\r
+     */\r
+    private Monodizer(){\r
+        super();\r
+        return;\r
+    }\r
+\r
+\r
+    /**\r
      * 等幅フォントか否か判定する。\r
      * @param font フォント\r
      * @return 等幅フォントならtrue\r
@@ -164,12 +173,4 @@ public final class Monodizer implements PropertyChangeListener{
         return;\r
     }\r
 \r
-    /**\r
-     * 隠しコンストラクタ。\r
-     */\r
-    private Monodizer(){\r
-        super();\r
-        return;\r
-    }\r
-\r
 }\r
index e24a364..ecaa8d6 100644 (file)
@@ -28,6 +28,29 @@ public class OptionInfo{
                 +"(?:(\\+|\\-)([1-9][0-9]*)(\\+|\\-)([1-9][0-9]*))?"\r
                 );\r
 \r
+\r
+    private Integer frameWidth  = null;\r
+    private Integer frameHeight = null;\r
+    private Integer frameXpos = null;\r
+    private Integer frameYpos = null;\r
+\r
+    private final List<String> invokeArgs = new LinkedList<String>();\r
+    private final List<CmdOption> optionList = new LinkedList<CmdOption>();\r
+    private final Map<CmdOption, Boolean> boolOptionMap =\r
+            new EnumMap<CmdOption, Boolean>(CmdOption.class);\r
+    private final Map<CmdOption, String> stringOptionMap =\r
+            new EnumMap<CmdOption, String>(CmdOption.class);\r
+\r
+\r
+    /**\r
+     * コンストラクタ。\r
+     */\r
+    protected OptionInfo(){\r
+        super();\r
+        return;\r
+    }\r
+\r
+\r
     /**\r
      * オプション文字列を解析する。\r
      * @param args main()に渡されるオプション文字列\r
@@ -173,26 +196,6 @@ public class OptionInfo{
     }\r
 \r
 \r
-    private Integer frameWidth  = null;\r
-    private Integer frameHeight = null;\r
-    private Integer frameXpos = null;\r
-    private Integer frameYpos = null;\r
-\r
-    private final List<String> invokeArgs = new LinkedList<String>();\r
-    private final List<CmdOption> optionList = new LinkedList<CmdOption>();\r
-    private final Map<CmdOption, Boolean> boolOptionMap =\r
-            new EnumMap<CmdOption, Boolean>(CmdOption.class);\r
-    private final Map<CmdOption, String> stringOptionMap =\r
-            new EnumMap<CmdOption, String>(CmdOption.class);\r
-\r
-    /**\r
-     * コンストラクタ。\r
-     */\r
-    protected OptionInfo(){\r
-        super();\r
-        return;\r
-    }\r
-\r
     /**\r
      * 全引数のリストを返す。\r
      * @return 全引数のリスト\r
index a88fd44..9f8e97a 100644 (file)
@@ -52,51 +52,6 @@ public class Period{
         PARSER.setTalkHandler    (HANDLER);\r
     }\r
 \r
-    /**\r
-     * Periodを更新する。Topicのリストが更新される。\r
-     * @param period 日\r
-     * @param force trueなら強制再読み込み。\r
-     * falseならまだ読み込んで無い時のみ読み込み。\r
-     * @throws IOException ネットワーク入力エラー\r
-     */\r
-    public static void parsePeriod(Period period, boolean force)\r
-            throws IOException{\r
-        if( ! force && period.hasLoaded() ) return;\r
-\r
-        Village village = period.getVillage();\r
-        Land land = village.getParentLand();\r
-        ServerAccess server = land.getServerAccess();\r
-\r
-        if(village.getState() != VillageState.PROGRESS){\r
-            period.isFullOpen = true;\r
-        }else if(period.getType() != PeriodType.PROGRESS){\r
-            period.isFullOpen = true;\r
-        }else{\r
-            period.isFullOpen = false;\r
-        }\r
-\r
-        HtmlSequence html = server.getHTMLPeriod(period);\r
-\r
-        period.topicList.clear();\r
-\r
-        boolean wasHot = period.isHot();\r
-\r
-        HANDLER.setPeriod(period);\r
-        DecodedContent content = html.getContent();\r
-        try{\r
-            PARSER.parseAutomatic(content);\r
-        }catch(HtmlParseException e){\r
-            Jindolf.logger().warn("発言抽出に失敗", e);\r
-        }\r
-\r
-        if(wasHot && ! period.isHot() ){\r
-            parsePeriod(period, true);\r
-            return;\r
-        }\r
-\r
-        return;\r
-    }\r
-\r
     private final Village homeVillage;\r
     private final PeriodType periodType;\r
     private final int day;\r
@@ -110,6 +65,7 @@ public class Period{
     private final List<Topic> unmodList =\r
             Collections.unmodifiableList(this.topicList);\r
 \r
+\r
     /**\r
      * この Period が進行中の村の最新日で、\r
      * 今まさに次々と発言が蓄積されているときは\r
@@ -118,6 +74,7 @@ public class Period{
      */\r
     private boolean isHot;\r
 \r
+\r
     /**\r
      * Periodを生成する。\r
      * この段階では発言データのロードは行われない。\r
@@ -178,6 +135,52 @@ public class Period{
         return;\r
     }\r
 \r
+\r
+    /**\r
+     * Periodを更新する。Topicのリストが更新される。\r
+     * @param period 日\r
+     * @param force trueなら強制再読み込み。\r
+     * falseならまだ読み込んで無い時のみ読み込み。\r
+     * @throws IOException ネットワーク入力エラー\r
+     */\r
+    public static void parsePeriod(Period period, boolean force)\r
+            throws IOException{\r
+        if( ! force && period.hasLoaded() ) return;\r
+\r
+        Village village = period.getVillage();\r
+        Land land = village.getParentLand();\r
+        ServerAccess server = land.getServerAccess();\r
+\r
+        if(village.getState() != VillageState.PROGRESS){\r
+            period.isFullOpen = true;\r
+        }else if(period.getType() != PeriodType.PROGRESS){\r
+            period.isFullOpen = true;\r
+        }else{\r
+            period.isFullOpen = false;\r
+        }\r
+\r
+        HtmlSequence html = server.getHTMLPeriod(period);\r
+\r
+        period.topicList.clear();\r
+\r
+        boolean wasHot = period.isHot();\r
+\r
+        HANDLER.setPeriod(period);\r
+        DecodedContent content = html.getContent();\r
+        try{\r
+            PARSER.parseAutomatic(content);\r
+        }catch(HtmlParseException e){\r
+            Jindolf.logger().warn("発言抽出に失敗", e);\r
+        }\r
+\r
+        if(wasHot && ! period.isHot() ){\r
+            parsePeriod(period, true);\r
+            return;\r
+        }\r
+\r
+        return;\r
+    }\r
+\r
     /**\r
      * 所属する村を返す。\r
      * @return 村\r
index 01de445..740eff4 100644 (file)
@@ -38,21 +38,6 @@ import javax.swing.border.Border;
 @SuppressWarnings("serial")\r
 public class ProxyChooser extends JPanel implements ItemListener{\r
 \r
-    /**\r
-     * ポート番号選択肢を生成する。\r
-     * @return ポート番号選択肢\r
-     */\r
-    private static ComboBoxModel buildPortRecommender(){\r
-        DefaultComboBoxModel model = new DefaultComboBoxModel();\r
-        model.addElement("80");\r
-        model.addElement("1080");\r
-        model.addElement("3128");\r
-        model.addElement("8000");\r
-        model.addElement("8080");\r
-        model.addElement("10080");\r
-        return model;\r
-    }\r
-\r
     private final JRadioButton isDirect =\r
             new JRadioButton("直接接続");\r
     private final JRadioButton isHttp =\r
@@ -109,6 +94,22 @@ public class ProxyChooser extends JPanel implements ItemListener{
         return;\r
     }\r
 \r
+\r
+    /**\r
+     * ポート番号選択肢を生成する。\r
+     * @return ポート番号選択肢\r
+     */\r
+    private static ComboBoxModel buildPortRecommender(){\r
+        DefaultComboBoxModel model = new DefaultComboBoxModel();\r
+        model.addElement("80");\r
+        model.addElement("1080");\r
+        model.addElement("3128");\r
+        model.addElement("8000");\r
+        model.addElement("8080");\r
+        model.addElement("10080");\r
+        return model;\r
+    }\r
+\r
     /**\r
      * レイアウトを行う。\r
      * @param content コンテナ\r
index 5a94b3b..45124b2 100644 (file)
@@ -36,63 +36,11 @@ public class ProxyInfo{
     private static final String HASH_HOST = "host";\r
     private static final String HASH_PORT = "port";\r
 \r
-    /**\r
-     * プロクシ設定をJSON形式にエンコードする。\r
-     * @param proxyInfo プロクシ設定\r
-     * @return JSON object\r
-     */\r
-    public static JsObject buildJson(ProxyInfo proxyInfo){\r
-        JsPair type = new JsPair(HASH_TYPE, proxyInfo.getType().name());\r
-        JsPair host = new JsPair(HASH_HOST, proxyInfo.getHostName());\r
-        JsPair port = new JsPair(HASH_PORT, proxyInfo.getPort());\r
-\r
-        JsObject result = new JsObject();\r
-        result.putPair(type);\r
-        result.putPair(host);\r
-        result.putPair(port);\r
-\r
-        return result;\r
-    }\r
-\r
-    /**\r
-     * JSONからのプロクシ設定復元。\r
-     * @param obj JSON object\r
-     * @return 復元されたプロクシ設定。\r
-     */\r
-    public static ProxyInfo decodeJson(JsObject obj){\r
-        JsValue value;\r
-\r
-        Proxy.Type type = Proxy.Type.DIRECT;\r
-        value = obj.getValue(HASH_TYPE);\r
-        if(value instanceof JsString){\r
-            JsString string = (JsString) value;\r
-            try{\r
-                type = Enum.valueOf(Proxy.Type.class, string.toRawString());\r
-            }catch(IllegalArgumentException e){\r
-                // NOTHING\r
-            }\r
-        }\r
-\r
-        String host = "0.0.0.0";\r
-        value = obj.getValue(HASH_HOST);\r
-        if(value instanceof JsString){\r
-            JsString string = (JsString) value;\r
-            host = string.toRawString();\r
-        }\r
-\r
-        int port = 0;\r
-        value = obj.getValue(HASH_PORT);\r
-        if(value instanceof JsNumber){\r
-            JsNumber number = (JsNumber) value;\r
-            port = number.intValue();\r
-        }\r
-\r
-        return new ProxyInfo(type, host, port);\r
-    }\r
 \r
     private final Proxy proxy;\r
     private final InetSocketAddress inetAddr;\r
 \r
+\r
     /**\r
      * コンストラクタ。\r
      * 直接接続プロクシが暗黙に指定される。\r
@@ -157,6 +105,61 @@ public class ProxyInfo{
         return;\r
     }\r
 \r
+\r
+    /**\r
+     * プロクシ設定をJSON形式にエンコードする。\r
+     * @param proxyInfo プロクシ設定\r
+     * @return JSON object\r
+     */\r
+    public static JsObject buildJson(ProxyInfo proxyInfo){\r
+        JsPair type = new JsPair(HASH_TYPE, proxyInfo.getType().name());\r
+        JsPair host = new JsPair(HASH_HOST, proxyInfo.getHostName());\r
+        JsPair port = new JsPair(HASH_PORT, proxyInfo.getPort());\r
+\r
+        JsObject result = new JsObject();\r
+        result.putPair(type);\r
+        result.putPair(host);\r
+        result.putPair(port);\r
+\r
+        return result;\r
+    }\r
+\r
+    /**\r
+     * JSONからのプロクシ設定復元。\r
+     * @param obj JSON object\r
+     * @return 復元されたプロクシ設定。\r
+     */\r
+    public static ProxyInfo decodeJson(JsObject obj){\r
+        JsValue value;\r
+\r
+        Proxy.Type type = Proxy.Type.DIRECT;\r
+        value = obj.getValue(HASH_TYPE);\r
+        if(value instanceof JsString){\r
+            JsString string = (JsString) value;\r
+            try{\r
+                type = Enum.valueOf(Proxy.Type.class, string.toRawString());\r
+            }catch(IllegalArgumentException e){\r
+                // NOTHING\r
+            }\r
+        }\r
+\r
+        String host = "0.0.0.0";\r
+        value = obj.getValue(HASH_HOST);\r
+        if(value instanceof JsString){\r
+            JsString string = (JsString) value;\r
+            host = string.toRawString();\r
+        }\r
+\r
+        int port = 0;\r
+        value = obj.getValue(HASH_PORT);\r
+        if(value instanceof JsNumber){\r
+            JsNumber number = (JsNumber) value;\r
+            port = number.intValue();\r
+        }\r
+\r
+        return new ProxyInfo(type, host, port);\r
+    }\r
+\r
     /**\r
      * {@inheritDoc}\r
      * @param obj {@inheritDoc}\r
index d5b8329..e88bd8a 100644 (file)
@@ -27,6 +27,78 @@ public class RegexPattern{
     private static final String REGEX_CHAR = ".?+*\\$(|)[]{}^-&";\r
 \r
 \r
+    private final String editSource;\r
+    private final boolean isRegex;\r
+    private final Pattern pattern;\r
+    private final String comment;\r
+\r
+\r
+    /**\r
+     * コンストラクタ。\r
+     *\r
+     * @param editSource リテラル文字列または正規表現\r
+     * @param isRegex 指定文字列が正規表現ならtrue。リテラルならfalse\r
+     * @param flag 正規表現フラグ\r
+     * @param comment コメント\r
+     * @throws java.util.regex.PatternSyntaxException 正規表現がおかしい\r
+     */\r
+    public RegexPattern(String editSource,\r
+                        boolean isRegex,\r
+                        int flag,\r
+                        String comment)\r
+            throws PatternSyntaxException{\r
+        super();\r
+        if(editSource == null) throw new NullPointerException();\r
+\r
+        this.isRegex    = isRegex;\r
+        if(comment != null) this.comment = comment;\r
+        else                this.comment = "";\r
+\r
+        String regexExpr;\r
+        if(this.isRegex){\r
+            this.editSource = editSource;\r
+            regexExpr = this.editSource;\r
+        }else{\r
+            String newSource = "";\r
+            regexExpr = "";\r
+\r
+            String[] tokens = editSource.split(REGEX_DELIM);\r
+            for(String token : tokens){\r
+                if(token == null || token.length() <= 0) continue;\r
+\r
+                if(newSource.length() <= 0) newSource  =       token;\r
+                else                        newSource += " " + token;\r
+\r
+                String quoted = "(?:" + quote(token) + ")";\r
+                if(regexExpr.length() <= 0) regexExpr  =       quoted;\r
+                else                        regexExpr += "|" + quoted;\r
+            }\r
+\r
+            this.editSource = newSource;\r
+        }\r
+\r
+        this.pattern = Pattern.compile(regexExpr, flag);\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * コンストラクタ。\r
+     *\r
+     * @param editSource リテラル文字列または正規表現\r
+     * @param isRegex 指定文字列が正規表現ならtrue。リテラルならfalse\r
+     * @param flag 正規表現フラグ\r
+     * @throws java.util.regex.PatternSyntaxException 正規表現がおかしい\r
+     */\r
+    public RegexPattern(String editSource,\r
+                        boolean isRegex,\r
+                        int flag )\r
+            throws PatternSyntaxException{\r
+        this(editSource, isRegex, flag, " ");\r
+        return;\r
+    }\r
+\r
+\r
     /**\r
      * 正規表現とまぎらわしい字を含むか判定する。\r
      * @param seq 文字列\r
@@ -142,76 +214,6 @@ public class RegexPattern{
     }\r
 \r
 \r
-    private final String editSource;\r
-    private final boolean isRegex;\r
-    private final Pattern pattern;\r
-    private final String comment;\r
-\r
-    /**\r
-     * コンストラクタ。\r
-     *\r
-     * @param editSource リテラル文字列または正規表現\r
-     * @param isRegex 指定文字列が正規表現ならtrue。リテラルならfalse\r
-     * @param flag 正規表現フラグ\r
-     * @param comment コメント\r
-     * @throws java.util.regex.PatternSyntaxException 正規表現がおかしい\r
-     */\r
-    public RegexPattern(String editSource,\r
-                        boolean isRegex,\r
-                        int flag,\r
-                        String comment)\r
-            throws PatternSyntaxException{\r
-        super();\r
-        if(editSource == null) throw new NullPointerException();\r
-\r
-        this.isRegex    = isRegex;\r
-        if(comment != null) this.comment = comment;\r
-        else                this.comment = "";\r
-\r
-        String regexExpr;\r
-        if(this.isRegex){\r
-            this.editSource = editSource;\r
-            regexExpr = this.editSource;\r
-        }else{\r
-            String newSource = "";\r
-            regexExpr = "";\r
-\r
-            String[] tokens = editSource.split(REGEX_DELIM);\r
-            for(String token : tokens){\r
-                if(token == null || token.length() <= 0) continue;\r
-\r
-                if(newSource.length() <= 0) newSource  =       token;\r
-                else                        newSource += " " + token;\r
-\r
-                String quoted = "(?:" + quote(token) + ")";\r
-                if(regexExpr.length() <= 0) regexExpr  =       quoted;\r
-                else                        regexExpr += "|" + quoted;\r
-            }\r
-\r
-            this.editSource = newSource;\r
-        }\r
-\r
-        this.pattern = Pattern.compile(regexExpr, flag);\r
-\r
-        return;\r
-    }\r
-\r
-    /**\r
-     * コンストラクタ。\r
-     *\r
-     * @param editSource リテラル文字列または正規表現\r
-     * @param isRegex 指定文字列が正規表現ならtrue。リテラルならfalse\r
-     * @param flag 正規表現フラグ\r
-     * @throws java.util.regex.PatternSyntaxException 正規表現がおかしい\r
-     */\r
-    public RegexPattern(String editSource,\r
-                        boolean isRegex,\r
-                        int flag )\r
-            throws PatternSyntaxException{\r
-        this(editSource, isRegex, flag, " ");\r
-        return;\r
-    }\r
-\r
     /**\r
      * 元の入力文字列を返す。\r
      * @return 入力文字列\r
index 5ab8569..302617c 100644 (file)
@@ -47,6 +47,30 @@ public class ServerAccess{
         IMAGE_CACHE = Collections.synchronizedMap(cache);\r
     }\r
 \r
+\r
+    private final URL baseURL;\r
+    private final Charset charset;\r
+    private Proxy proxy = Proxy.NO_PROXY;\r
+    private long lastServerMs;\r
+    private long lastLocalMs;\r
+    private long lastSystemMs;\r
+    private AccountCookie cookieAuth = null;\r
+    private String encodedUserID = null;\r
+\r
+\r
+    /**\r
+     * 人狼BBSサーバとの接続管理を生成する。\r
+     * この時点ではまだ通信は行われない。\r
+     * @param baseURL 国別のベースURL\r
+     * @param charset 国のCharset\r
+     */\r
+    public ServerAccess(URL baseURL, Charset charset){\r
+        this.baseURL = baseURL;\r
+        this.charset = charset;\r
+        return;\r
+    }\r
+\r
+\r
     /**\r
      * 画像キャッシュを検索する。\r
      * @param key キー\r
@@ -123,27 +147,6 @@ public class ServerAccess{
         return formEncode(new String(formData));\r
     }\r
 \r
-    private final URL baseURL;\r
-    private final Charset charset;\r
-    private Proxy proxy = Proxy.NO_PROXY;\r
-    private long lastServerMs;\r
-    private long lastLocalMs;\r
-    private long lastSystemMs;\r
-    private AccountCookie cookieAuth = null;\r
-    private String encodedUserID = null;\r
-\r
-    /**\r
-     * 人狼BBSサーバとの接続管理を生成する。\r
-     * この時点ではまだ通信は行われない。\r
-     * @param baseURL 国別のベースURL\r
-     * @param charset 国のCharset\r
-     */\r
-    public ServerAccess(URL baseURL, Charset charset){\r
-        this.baseURL = baseURL;\r
-        this.charset = charset;\r
-        return;\r
-    }\r
-\r
     /**\r
      * HTTP-Proxyを返す。\r
      * @return HTTP-Proxy\r
index 0d479cf..0715d47 100644 (file)
@@ -16,6 +16,17 @@ public final class StringUtils{
 \r
     private static final int SUPLEN = 5;\r
 \r
+\r
+    /**\r
+     * ダミーコンストラクタ。\r
+     */\r
+    private StringUtils(){\r
+        super();\r
+        assert false;\r
+        throw new AssertionError();\r
+    }\r
+\r
+\r
     /**\r
      * 正規表現にマッチした領域を数値化する。\r
      * @param seq 文字列\r
@@ -167,15 +178,6 @@ public final class StringUtils{
         return result;\r
     }\r
 \r
-    /**\r
-     * ダミーコンストラクタ。\r
-     */\r
-    private StringUtils(){\r
-        super();\r
-        assert false;\r
-        throw new AssertionError();\r
-    }\r
-\r
     // TODO 文字エンコーダ・デコーダ処理の一本化。\r
     // TODO 文字エンコーダ・デコーダのカスタム化。「~」対策など。\r
 }\r
index 0b5ccf1..4eec88d 100644 (file)
@@ -14,25 +14,6 @@ import jp.sourceforge.jindolf.corelib.TalkType;
  */\r
 public class Talk implements Topic{\r
 \r
-    /**\r
-     * 会話種別から色名への変換を行う。\r
-     * @param type 会話種別\r
-     * @return 色名\r
-     */\r
-    public static String encodeColorName(TalkType type){\r
-        String result;\r
-\r
-        switch(type){\r
-        case PUBLIC:   result = "白"; break;\r
-        case PRIVATE:  result = "灰"; break;\r
-        case WOLFONLY: result = "赤"; break;\r
-        case GRAVE:    result = "青"; break;\r
-        default: assert false; return null;\r
-        }\r
-\r
-        return result;\r
-    }\r
-\r
     private final Period homePeriod;\r
     private final TalkType talkType;\r
     private final Avatar avatar;\r
@@ -44,6 +25,7 @@ public class Talk implements Topic{
     private final int charNum;\r
     private int count = -1;\r
 \r
+\r
     /**\r
      * Talkの生成。\r
      * @param homePeriod 発言元Period\r
@@ -87,6 +69,26 @@ public class Talk implements Topic{
         return;\r
     }\r
 \r
+\r
+    /**\r
+     * 会話種別から色名への変換を行う。\r
+     * @param type 会話種別\r
+     * @return 色名\r
+     */\r
+    public static String encodeColorName(TalkType type){\r
+        String result;\r
+\r
+        switch(type){\r
+        case PUBLIC:   result = "白"; break;\r
+        case PRIVATE:  result = "灰"; break;\r
+        case WOLFONLY: result = "赤"; break;\r
+        case GRAVE:    result = "青"; break;\r
+        default: assert false; return null;\r
+        }\r
+\r
+        return result;\r
+    }\r
+\r
     /**\r
      * 発言が交わされたPeriodを返す。\r
      * @return Period\r
index e5992d8..65ca023 100644 (file)
@@ -74,6 +74,61 @@ public class TalkDraw extends AbstractTextRow{
         SQUARE_PRIVATE  = createSquareImage(COLOR_PRIVATE);\r
     }\r
 \r
+\r
+    private final Talk talk;\r
+    private Anchor showingAnchor;\r
+\r
+    private final GlyphDraw caption;\r
+    private BufferedImage faceImage;\r
+    private final GlyphDraw dialog;\r
+    private final List<AnchorDraw> anchorTalks = new LinkedList<AnchorDraw>();\r
+    private Point imageOrigin;\r
+    private Point dialogOrigin;\r
+    private Point tipOrigin;\r
+    private int baloonWidth;\r
+    private int baloonHeight;\r
+\r
+    private FontInfo anchorFontInfo;\r
+    private DialogPref dialogPref;\r
+\r
+\r
+    /**\r
+     * コンストラクタ。\r
+     * @param talk 一発言\r
+     */\r
+    public TalkDraw(Talk talk){\r
+        this(talk, new DialogPref(), FontInfo.DEFAULT_FONTINFO);\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * コンストラクタ。\r
+     * @param talk 一発言\r
+     * @param dialogPref 発言表示設定\r
+     * @param fontInfo フォント設定\r
+     */\r
+    public TalkDraw(Talk talk, DialogPref dialogPref, FontInfo fontInfo){\r
+        super(fontInfo);\r
+\r
+        this.talk = talk;\r
+        this.anchorFontInfo = deriveAnchorFontInfo(this.fontInfo);\r
+        this.dialogPref = dialogPref;\r
+\r
+        this.faceImage = getFaceImage();\r
+        this.caption = new GlyphDraw(getCaptionString(), this.fontInfo);\r
+        this.dialog  = new GlyphDraw(this.talk.getDialog(), this.fontInfo);\r
+\r
+        setColorDesign();\r
+\r
+        Period period = this.talk.getPeriod();\r
+        List<Anchor> anchorList = Anchor.getAnchorList(this.talk.getDialog(),\r
+                                                       period.getDay() );\r
+        this.dialog.setAnchorSet(anchorList);\r
+\r
+        return;\r
+    }\r
+\r
+\r
     /**\r
      * 指定した色で描画したクサビイメージを取得する。\r
      * @param color 色\r
@@ -178,58 +233,6 @@ public class TalkDraw extends AbstractTextRow{
         return result;\r
     }\r
 \r
-    private final Talk talk;\r
-    private Anchor showingAnchor;\r
-\r
-    private final GlyphDraw caption;\r
-    private BufferedImage faceImage;\r
-    private final GlyphDraw dialog;\r
-    private final List<AnchorDraw> anchorTalks = new LinkedList<AnchorDraw>();\r
-    private Point imageOrigin;\r
-    private Point dialogOrigin;\r
-    private Point tipOrigin;\r
-    private int baloonWidth;\r
-    private int baloonHeight;\r
-\r
-    private FontInfo anchorFontInfo;\r
-    private DialogPref dialogPref;\r
-\r
-    /**\r
-     * コンストラクタ。\r
-     * @param talk 一発言\r
-     */\r
-    public TalkDraw(Talk talk){\r
-        this(talk, new DialogPref(), FontInfo.DEFAULT_FONTINFO);\r
-        return;\r
-    }\r
-\r
-    /**\r
-     * コンストラクタ。\r
-     * @param talk 一発言\r
-     * @param dialogPref 発言表示設定\r
-     * @param fontInfo フォント設定\r
-     */\r
-    public TalkDraw(Talk talk, DialogPref dialogPref, FontInfo fontInfo){\r
-        super(fontInfo);\r
-\r
-        this.talk = talk;\r
-        this.anchorFontInfo = deriveAnchorFontInfo(this.fontInfo);\r
-        this.dialogPref = dialogPref;\r
-\r
-        this.faceImage = getFaceImage();\r
-        this.caption = new GlyphDraw(getCaptionString(), this.fontInfo);\r
-        this.dialog  = new GlyphDraw(this.talk.getDialog(), this.fontInfo);\r
-\r
-        setColorDesign();\r
-\r
-        Period period = this.talk.getPeriod();\r
-        List<Anchor> anchorList = Anchor.getAnchorList(this.talk.getDialog(),\r
-                                                       period.getDay() );\r
-        this.dialog.setAnchorSet(anchorList);\r
-\r
-        return;\r
-    }\r
-\r
     /**\r
      * 配色を設定する。\r
      */\r
index d34477d..4bee555 100644 (file)
@@ -47,32 +47,6 @@ public class TalkEditor
 \r
     private static final Color COLOR_ACTIVATED = Color.GRAY;\r
 \r
-    /**\r
-     * 指定された文字列の指定された位置から、\r
-     * 最大何文字まで1発言におさめる事ができるか判定する。\r
-     * @param source 検査対象\r
-     * @param start 検査開始位置\r
-     * @return 1発言に納めていい長さ。\r
-     */\r
-    public static int choplimit(CharSequence source, int start){\r
-        int length = source.length();\r
-        if(start >= length) return 0;\r
-\r
-        int chars = 0;\r
-        int lines = 0;\r
-\r
-        for(int pos = start; pos < length; pos++){\r
-            chars++;\r
-            if(chars >= MAX_CHARS) break;\r
-            char ch = source.charAt(pos);\r
-            if(ch == '\n'){\r
-                lines++;\r
-                if(lines >= MAX_LINES) break;\r
-            }\r
-        }\r
-\r
-        return chars;\r
-    }\r
 \r
     private final PlainDocument document = new PlainDocument();\r
 \r
@@ -86,6 +60,7 @@ public class TalkEditor
 \r
     private Font textFont;\r
 \r
+\r
     /**\r
      * コンストラクタ。\r
      * 通し番号は0が指定される。\r
@@ -128,6 +103,34 @@ public class TalkEditor
         return;\r
     }\r
 \r
+\r
+    /**\r
+     * 指定された文字列の指定された位置から、\r
+     * 最大何文字まで1発言におさめる事ができるか判定する。\r
+     * @param source 検査対象\r
+     * @param start 検査開始位置\r
+     * @return 1発言に納めていい長さ。\r
+     */\r
+    public static int choplimit(CharSequence source, int start){\r
+        int length = source.length();\r
+        if(start >= length) return 0;\r
+\r
+        int chars = 0;\r
+        int lines = 0;\r
+\r
+        for(int pos = start; pos < length; pos++){\r
+            chars++;\r
+            if(chars >= MAX_CHARS) break;\r
+            char ch = source.charAt(pos);\r
+            if(ch == '\n'){\r
+                lines++;\r
+                if(lines >= MAX_LINES) break;\r
+            }\r
+        }\r
+\r
+        return chars;\r
+    }\r
+\r
     /**\r
      * レイアウトを行う。\r
      */\r
index 57d4819..9bfd2b8 100644 (file)
@@ -20,16 +20,6 @@ public class TallyInputStream extends InputStream{
 \r
     private static final int BUFSIZE = 2 * 1024;\r
 \r
-    /**\r
-     * HTTPコネクションから入力ストリームを得る。\r
-     * @param conn HTTPコネクション\r
-     * @return 入力ストリーム\r
-     * @throws java.io.IOException 入出力エラー\r
-     */\r
-    public static InputStream getInputStream(HttpURLConnection conn)\r
-            throws IOException{\r
-        return new TallyInputStream(conn);\r
-    }\r
 \r
     private final HttpURLConnection conn;\r
     private final InputStream in;\r
@@ -37,6 +27,7 @@ public class TallyInputStream extends InputStream{
     private long nanoLap;\r
     private boolean hasClosed;\r
 \r
+\r
     /**\r
      * コンストラクタ。\r
      * @param conn HTTPコネクション\r
@@ -59,6 +50,18 @@ public class TallyInputStream extends InputStream{
         return;\r
     }\r
 \r
+\r
+    /**\r
+     * HTTPコネクションから入力ストリームを得る。\r
+     * @param conn HTTPコネクション\r
+     * @return 入力ストリーム\r
+     * @throws java.io.IOException 入出力エラー\r
+     */\r
+    public static InputStream getInputStream(HttpURLConnection conn)\r
+            throws IOException{\r
+        return new TallyInputStream(conn);\r
+    }\r
+\r
     /**\r
      * 読み込みバイト数を返す。\r
      * @return 読み込みバイト数。\r
index 826c7ef..4aa45c5 100644 (file)
@@ -19,22 +19,13 @@ public class TallyOutputStream extends OutputStream{
 \r
     private static final int BUFSIZE = 512;\r
 \r
-    /**\r
-     * HTTPコネクションから出力ストリームを得る。\r
-     * @param conn HTTPコネクション\r
-     * @return 出力ストリーム\r
-     * @throws java.io.IOException 入出力エラー\r
-     */\r
-    public static OutputStream getOutputStream(HttpURLConnection conn)\r
-            throws IOException{\r
-        return new TallyOutputStream(conn);\r
-    }\r
 \r
     private final HttpURLConnection conn;\r
     private final OutputStream out;\r
     private long counter;\r
     private long nanoLap;\r
 \r
+\r
     /**\r
      * コンストラクタ。\r
      * @param conn HTTPコネクション\r
@@ -56,6 +47,18 @@ public class TallyOutputStream extends OutputStream{
         return;\r
     }\r
 \r
+\r
+    /**\r
+     * HTTPコネクションから出力ストリームを得る。\r
+     * @param conn HTTPコネクション\r
+     * @return 出力ストリーム\r
+     * @throws java.io.IOException 入出力エラー\r
+     */\r
+    public static OutputStream getOutputStream(HttpURLConnection conn)\r
+            throws IOException{\r
+        return new TallyOutputStream(conn);\r
+    }\r
+\r
     /**\r
      * 書き込みバイト数を返す。\r
      * @return 書き込みバイト数。\r
index d40f0a7..2378b43 100644 (file)
@@ -157,6 +157,14 @@ public class TextEditor extends JTextArea
     private class CustomFilter extends DocumentFilter{\r
 \r
         /**\r
+         * コンストラクタ。\r
+         */\r
+        public CustomFilter(){\r
+            super();\r
+            return;\r
+        }\r
+\r
+        /**\r
          * 入力禁止文字の判定。\r
          * @param ch 検査対象文字\r
          * @return 入力禁止ならfalse。ただしIME操作中は必ずtrue。\r
@@ -201,14 +209,6 @@ public class TextEditor extends JTextArea
         }\r
 \r
         /**\r
-         * コンストラクタ。\r
-         */\r
-        public CustomFilter(){\r
-            super();\r
-            return;\r
-        }\r
-\r
-        /**\r
          * {@inheritDoc}\r
          * @param fb {@inheritDoc}\r
          * @param offset {@inheritDoc}\r
index b9b87ed..0e75352 100644 (file)
@@ -79,44 +79,6 @@ public class Village implements Comparable<Village> {
         PARSER.setTalkHandler    (HANDLER);\r
     }\r
 \r
-    /**\r
-     * 村同士を比較するためのComparatorを返す。\r
-     * @return Comparatorインスタンス\r
-     */\r
-    public static Comparator<Village> comparator(){\r
-        return VILLAGE_COMPARATOR;\r
-    }\r
-\r
-    /**\r
-     * 人狼BBSサーバからPeriod一覧情報が含まれたHTMLを取得し、\r
-     * Periodリストを更新する。\r
-     * @param village 村\r
-     * @throws java.io.IOException ネットワーク入出力の異常\r
-     */\r
-    public static synchronized void updateVillage(Village village)\r
-            throws IOException{\r
-        Land land = village.getParentLand();\r
-        LandDef landDef = land.getLandDef();\r
-        LandState landState = landDef.getLandState();\r
-        ServerAccess server = land.getServerAccess();\r
-\r
-        HtmlSequence html;\r
-        if(landState == LandState.ACTIVE){\r
-            html = server.getHTMLBoneHead(village);\r
-        }else{\r
-            html = server.getHTMLVillage(village);\r
-        }\r
-\r
-        DecodedContent content = html.getContent();\r
-        HANDLER.setVillage(village);\r
-        try{\r
-            PARSER.parseAutomatic(content);\r
-        }catch(HtmlParseException e){\r
-            Jindolf.logger().warn("村の状態が不明", e);\r
-        }\r
-\r
-        return;\r
-    }\r
 \r
     private final Land parentLand;\r
     private final String villageID;\r
@@ -148,6 +110,7 @@ public class Village implements Comparable<Village> {
     private final Map<Avatar, BufferedImage> bodyMonoImageMap =\r
             new HashMap<Avatar, BufferedImage>();\r
 \r
+\r
     /**\r
      * Villageを生成する。\r
      * @param parentLand Villageの所属する国\r
@@ -166,6 +129,46 @@ public class Village implements Comparable<Village> {
         return;\r
     }\r
 \r
+\r
+    /**\r
+     * 村同士を比較するためのComparatorを返す。\r
+     * @return Comparatorインスタンス\r
+     */\r
+    public static Comparator<Village> comparator(){\r
+        return VILLAGE_COMPARATOR;\r
+    }\r
+\r
+    /**\r
+     * 人狼BBSサーバからPeriod一覧情報が含まれたHTMLを取得し、\r
+     * Periodリストを更新する。\r
+     * @param village 村\r
+     * @throws java.io.IOException ネットワーク入出力の異常\r
+     */\r
+    public static synchronized void updateVillage(Village village)\r
+            throws IOException{\r
+        Land land = village.getParentLand();\r
+        LandDef landDef = land.getLandDef();\r
+        LandState landState = landDef.getLandState();\r
+        ServerAccess server = land.getServerAccess();\r
+\r
+        HtmlSequence html;\r
+        if(landState == LandState.ACTIVE){\r
+            html = server.getHTMLBoneHead(village);\r
+        }else{\r
+            html = server.getHTMLVillage(village);\r
+        }\r
+\r
+        DecodedContent content = html.getContent();\r
+        HANDLER.setVillage(village);\r
+        try{\r
+            PARSER.parseAutomatic(content);\r
+        }catch(HtmlParseException e){\r
+            Jindolf.logger().warn("村の状態が不明", e);\r
+        }\r
+\r
+        return;\r
+    }\r
+\r
     /**\r
      * 所属する国を返す。\r
      * @return 村の所属する国(Land)\r
index f477999..71f50cc 100644 (file)
@@ -57,96 +57,6 @@ public class VillageDigest
             "村のダイジェスト - " + Jindolf.TITLE;\r
     private static final String ITEMDELIM = " : ";\r
 \r
-    /**\r
-     * キャプション付き項目をコンテナに追加。\r
-     * @param container コンテナ\r
-     * @param caption 項目キャプション名\r
-     * @param delimiter デリミタ文字\r
-     * @param item 項目アイテム\r
-     */\r
-    private static void addCaptionedItem(Container container,\r
-                                           CharSequence caption,\r
-                                           CharSequence delimiter,\r
-                                           Object item ){\r
-        LayoutManager layout = container.getLayout();\r
-        if( ! (layout instanceof GridBagLayout) ){\r
-            throw new IllegalArgumentException();\r
-        }\r
-\r
-        JLabel captionLabel   = new JLabel(caption.toString());\r
-        JLabel delimiterLabel = new JLabel(delimiter.toString());\r
-        JComponent itemComp;\r
-        if(item instanceof JComponent){\r
-            itemComp = (JComponent) item;\r
-        }else{\r
-            itemComp = new JLabel(item.toString());\r
-        }\r
-\r
-        GridBagConstraints constraints = new GridBagConstraints();\r
-\r
-        constraints.weightx = 0.0;\r
-        constraints.weighty = 0.0;\r
-        constraints.fill    = GridBagConstraints.NONE;\r
-        constraints.insets  = new Insets(2, 2, 2, 2);\r
-\r
-        constraints.gridwidth = 1;\r
-        constraints.anchor    = GridBagConstraints.NORTHEAST;\r
-        container.add(captionLabel, constraints);\r
-        container.add(delimiterLabel, constraints);\r
-\r
-        constraints.weightx = 1.0;\r
-        constraints.gridwidth = GridBagConstraints.REMAINDER;\r
-        constraints.anchor    = GridBagConstraints.NORTHWEST;\r
-        container.add(itemComp, constraints);\r
-\r
-        return;\r
-    }\r
-\r
-    /**\r
-     * キャプション付き項目をコンテナに追加。\r
-     * @param container コンテナ\r
-     * @param caption 項目キャプション名\r
-     * @param item 項目アイテム\r
-     */\r
-    private static void addCaptionedItem(Container container,\r
-                                           CharSequence caption,\r
-                                           Object item ){\r
-        addCaptionedItem(container, caption, ITEMDELIM, item);\r
-        return;\r
-    }\r
-\r
-    /**\r
-     * レイアウトの最後に詰め物をする。\r
-     * @param container コンテナ\r
-     */\r
-    private static void addFatPad(Container container){\r
-        LayoutManager layout = container.getLayout();\r
-        if( ! (layout instanceof GridBagLayout) ){\r
-            throw new IllegalArgumentException();\r
-        }\r
-\r
-        JComponent pad = new JPanel();\r
-\r
-        GridBagConstraints constraints = new GridBagConstraints();\r
-        constraints.weightx = 1.0;\r
-        constraints.weighty = 1.0;\r
-        constraints.fill    = GridBagConstraints.BOTH;\r
-        constraints.gridwidth = GridBagConstraints.REMAINDER;\r
-        container.add(pad, constraints);\r
-\r
-        return;\r
-    }\r
-\r
-    /**\r
-     * GridBagLayoutでレイアウトする空コンポーネントを生成する。\r
-     * @return 空コンポーネント\r
-     */\r
-    private static JComponent createGridBagComponent(){\r
-        JComponent result = new JPanel();\r
-        LayoutManager layout = new GridBagLayout();\r
-        result.setLayout(layout);\r
-        return result;\r
-    }\r
 \r
     private final JComponent summaryPanel = buildSummaryPanel();\r
 \r
@@ -186,6 +96,7 @@ public class VillageDigest
 \r
     private GameSummary gameSummary;\r
 \r
+\r
     /**\r
      * コンストラクタ。\r
      * @param owner 親フレーム\r
@@ -252,6 +163,98 @@ public class VillageDigest
         return;\r
     }\r
 \r
+\r
+    /**\r
+     * キャプション付き項目をコンテナに追加。\r
+     * @param container コンテナ\r
+     * @param caption 項目キャプション名\r
+     * @param delimiter デリミタ文字\r
+     * @param item 項目アイテム\r
+     */\r
+    private static void addCaptionedItem(Container container,\r
+                                           CharSequence caption,\r
+                                           CharSequence delimiter,\r
+                                           Object item ){\r
+        LayoutManager layout = container.getLayout();\r
+        if( ! (layout instanceof GridBagLayout) ){\r
+            throw new IllegalArgumentException();\r
+        }\r
+\r
+        JLabel captionLabel   = new JLabel(caption.toString());\r
+        JLabel delimiterLabel = new JLabel(delimiter.toString());\r
+        JComponent itemComp;\r
+        if(item instanceof JComponent){\r
+            itemComp = (JComponent) item;\r
+        }else{\r
+            itemComp = new JLabel(item.toString());\r
+        }\r
+\r
+        GridBagConstraints constraints = new GridBagConstraints();\r
+\r
+        constraints.weightx = 0.0;\r
+        constraints.weighty = 0.0;\r
+        constraints.fill    = GridBagConstraints.NONE;\r
+        constraints.insets  = new Insets(2, 2, 2, 2);\r
+\r
+        constraints.gridwidth = 1;\r
+        constraints.anchor    = GridBagConstraints.NORTHEAST;\r
+        container.add(captionLabel, constraints);\r
+        container.add(delimiterLabel, constraints);\r
+\r
+        constraints.weightx = 1.0;\r
+        constraints.gridwidth = GridBagConstraints.REMAINDER;\r
+        constraints.anchor    = GridBagConstraints.NORTHWEST;\r
+        container.add(itemComp, constraints);\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * キャプション付き項目をコンテナに追加。\r
+     * @param container コンテナ\r
+     * @param caption 項目キャプション名\r
+     * @param item 項目アイテム\r
+     */\r
+    private static void addCaptionedItem(Container container,\r
+                                           CharSequence caption,\r
+                                           Object item ){\r
+        addCaptionedItem(container, caption, ITEMDELIM, item);\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * レイアウトの最後に詰め物をする。\r
+     * @param container コンテナ\r
+     */\r
+    private static void addFatPad(Container container){\r
+        LayoutManager layout = container.getLayout();\r
+        if( ! (layout instanceof GridBagLayout) ){\r
+            throw new IllegalArgumentException();\r
+        }\r
+\r
+        JComponent pad = new JPanel();\r
+\r
+        GridBagConstraints constraints = new GridBagConstraints();\r
+        constraints.weightx = 1.0;\r
+        constraints.weighty = 1.0;\r
+        constraints.fill    = GridBagConstraints.BOTH;\r
+        constraints.gridwidth = GridBagConstraints.REMAINDER;\r
+        container.add(pad, constraints);\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * GridBagLayoutでレイアウトする空コンポーネントを生成する。\r
+     * @return 空コンポーネント\r
+     */\r
+    private static JComponent createGridBagComponent(){\r
+        JComponent result = new JPanel();\r
+        LayoutManager layout = new GridBagLayout();\r
+        result.setLayout(layout);\r
+        return result;\r
+    }\r
+\r
     /**\r
      * 村サマリ画面の生成。\r
      * @return 村サマリ画面\r
index 11bcb96..6f5a01e 100644 (file)
@@ -47,6 +47,45 @@ public final class WebIPC{
         BROWSE_ENUM = getEnumMember(DESKTOP_ACTION_KLASS, "BROWSE");\r
     }\r
 \r
+\r
+    private final Object desktop;\r
+\r
+\r
+    /**\r
+     * 見えないコンストラクタ。\r
+     * @throws HeadlessException GUI環境が未接続\r
+     * @throws UnsupportedOperationException 未サポート\r
+     */\r
+    private WebIPC()\r
+            throws HeadlessException,\r
+                   UnsupportedOperationException {\r
+        super();\r
+\r
+        try{\r
+            this.desktop = METHOD_GETDESKTOP.invoke(null, (Object[]) null);\r
+        }catch(InvocationTargetException e){\r
+            Throwable targetException = e.getTargetException();\r
+\r
+            if(targetException instanceof RuntimeException){\r
+                throw (RuntimeException) targetException;\r
+            }\r
+            if(targetException instanceof Error){\r
+                throw (Error) targetException;\r
+            }\r
+\r
+            AssertionError thw = new AssertionError();\r
+            thw.initCause(e);\r
+            throw thw;\r
+        }catch(IllegalAccessException e){\r
+            AssertionError thw = new AssertionError();\r
+            thw.initCause(e);\r
+            throw thw;\r
+        }\r
+\r
+        return;\r
+    }\r
+\r
+\r
     /**\r
      * クラス名からClassインスタンスを探す。\r
      * @param klassName クラス名\r
@@ -197,42 +236,6 @@ public final class WebIPC{
         return webIPC;\r
     }\r
 \r
-    private final Object desktop;\r
-\r
-    /**\r
-     * 見えないコンストラクタ。\r
-     * @throws HeadlessException GUI環境が未接続\r
-     * @throws UnsupportedOperationException 未サポート\r
-     */\r
-    private WebIPC()\r
-            throws HeadlessException,\r
-                   UnsupportedOperationException {\r
-        super();\r
-\r
-        try{\r
-            this.desktop = METHOD_GETDESKTOP.invoke(null, (Object[]) null);\r
-        }catch(InvocationTargetException e){\r
-            Throwable targetException = e.getTargetException();\r
-\r
-            if(targetException instanceof RuntimeException){\r
-                throw (RuntimeException) targetException;\r
-            }\r
-            if(targetException instanceof Error){\r
-                throw (Error) targetException;\r
-            }\r
-\r
-            AssertionError thw = new AssertionError();\r
-            thw.initCause(e);\r
-            throw thw;\r
-        }catch(IllegalAccessException e){\r
-            AssertionError thw = new AssertionError();\r
-            thw.initCause(e);\r
-            throw thw;\r
-        }\r
-\r
-        return;\r
-    }\r
-\r
     /**\r
      * Webブラウザに任意のURIを表示させる。\r
      * ※参照: java.awt.Desktopのbrowse(java.net.URI)\r
index d07ed7b..6f8b563 100644 (file)
@@ -47,42 +47,6 @@ public class WebIPCDialog
     private static final String FRAMETITLE =\r
             "URLへのアクセス確認 - " + Jindolf.TITLE;\r
 \r
-    /**\r
-     * Webブラウザ起動用のモーダルダイアログを表示する。\r
-     * @param owner オーナーフレーム\r
-     * @param url URL文字列\r
-     */\r
-    public static void showDialog(Frame owner, String url){\r
-        WebIPCDialog dialog = new WebIPCDialog(owner);\r
-\r
-        dialog.setUrlText(url);\r
-        dialog.pack();\r
-        dialog.setLocationRelativeTo(owner);\r
-        dialog.setVisible(true);\r
-\r
-        return;\r
-    }\r
-\r
-    /**\r
-     * 有効なURIか判定する。\r
-     * @param uri URI\r
-     * @return 有効ならtrue\r
-     */\r
-    private static boolean isValidURI(URI uri){\r
-        if(uri == null) return false;\r
-\r
-        if( ! uri.isAbsolute() ) return false;\r
-\r
-        String scheme = uri.getScheme();\r
-        if(scheme == null) return false;\r
-        if(   ! scheme.equalsIgnoreCase("http")\r
-           && ! scheme.equalsIgnoreCase("https") ) return false;\r
-\r
-        String host = uri.getHost();\r
-        if(host == null) return false;\r
-\r
-        return true;\r
-    }\r
 \r
     private final String warnMessage;\r
 \r
@@ -103,6 +67,7 @@ public class WebIPCDialog
 \r
     private URI uri;\r
 \r
+\r
     /**\r
      * コンストラクタ。\r
      * @param owner オーナーフレーム\r
@@ -176,6 +141,44 @@ public class WebIPCDialog
         return;\r
     }\r
 \r
+\r
+    /**\r
+     * Webブラウザ起動用のモーダルダイアログを表示する。\r
+     * @param owner オーナーフレーム\r
+     * @param url URL文字列\r
+     */\r
+    public static void showDialog(Frame owner, String url){\r
+        WebIPCDialog dialog = new WebIPCDialog(owner);\r
+\r
+        dialog.setUrlText(url);\r
+        dialog.pack();\r
+        dialog.setLocationRelativeTo(owner);\r
+        dialog.setVisible(true);\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * 有効なURIか判定する。\r
+     * @param uri URI\r
+     * @return 有効ならtrue\r
+     */\r
+    private static boolean isValidURI(URI uri){\r
+        if(uri == null) return false;\r
+\r
+        if( ! uri.isAbsolute() ) return false;\r
+\r
+        String scheme = uri.getScheme();\r
+        if(scheme == null) return false;\r
+        if(   ! scheme.equalsIgnoreCase("http")\r
+           && ! scheme.equalsIgnoreCase("https") ) return false;\r
+\r
+        String host = uri.getHost();\r
+        if(host == null) return false;\r
+\r
+        return true;\r
+    }\r
+\r
     /**\r
      * レイアウトを行う。\r
      * @param container レイアウトコンテナ\r
index fcdc5a3..f113b12 100644 (file)
@@ -35,6 +35,9 @@ import jp.sourceforge.jindolf.corelib.GameRole;
  */\r
 public final class WolfBBS{\r
 \r
+    /** PukiWikiコメント行。 */\r
+    public static final String COMMENTLINE;\r
+\r
     private static final String WIKICHAR = "#&[]()<>+-*:|~/,'%?";\r
     private static final Pattern WIKINAME_PATTERN =\r
             Pattern.compile("[A-Z][a-z]+([A-Z])[a-z]+");\r
@@ -45,9 +48,6 @@ public final class WolfBBS{
     private static final List<FaceIconSet> FACEICONSET_LIST =\r
             new LinkedList<FaceIconSet>();\r
 \r
-    /** PukiWikiコメント行。 */\r
-    public static final String COMMENTLINE;\r
-\r
     private static final Charset CHARSET_EUC = Charset.forName("EUC-JP");\r
 \r
     private static final String WOLFBBS_URL = "http://wolfbbs.jp/";\r
@@ -64,6 +64,16 @@ public final class WolfBBS{
         COMMENTLINE = wikicomment.toString();\r
     }\r
 \r
+\r
+    /**\r
+     * 隠しコンストラクタ。\r
+     */\r
+    private WolfBBS(){\r
+        assert false;\r
+        throw new AssertionError();\r
+    }\r
+\r
+\r
     /**\r
      * アイコンセットのロード。\r
      */\r
@@ -505,12 +515,4 @@ public final class WolfBBS{
         return result;\r
     }\r
 \r
-    /**\r
-     * 隠しコンストラクタ。\r
-     */\r
-    private WolfBBS(){\r
-        assert false;\r
-        throw new AssertionError();\r
-    }\r
-\r
 }\r
index 4218830..bf3aa02 100644 (file)
@@ -32,6 +32,19 @@ public class XmlResourceResolver
 \r
     private static final URI EMPTY_URI = URI.create("");\r
 \r
+\r
+    private final Map<URI, URI> uriMap = XmlResource.RESOLVE_MAP;\r
+\r
+\r
+    /**\r
+     * コンストラクタ。\r
+     */\r
+    public XmlResourceResolver(){\r
+        super();\r
+        return;\r
+    }\r
+\r
+\r
     /**\r
      * 絶対URIと相対URIを合成したURIを返す。\r
      * 正規化も行われる。\r
@@ -78,16 +91,6 @@ public class XmlResourceResolver
         return input;\r
     }\r
 \r
-    private final Map<URI, URI> uriMap = XmlResource.RESOLVE_MAP;\r
-\r
-    /**\r
-     * コンストラクタ。\r
-     */\r
-    public XmlResourceResolver(){\r
-        super();\r
-        return;\r
-    }\r
-\r
     /**\r
      * 変換後のリソースの入力ストリームを得る。\r
      * @param originalURI オリジナルURI\r
index 93e4e63..45939ea 100644 (file)
@@ -33,6 +33,16 @@ public final class XmlUtils{
     private static final XmlResourceResolver RESOLVER =\r
             new XmlResourceResolver();\r
 \r
+\r
+    /**\r
+     * 隠しコンストラクタ。\r
+     */\r
+    private XmlUtils(){\r
+        super();\r
+        return;\r
+    }\r
+\r
+\r
     /**\r
      * リゾルバ経由でリソースにアクセスし、\r
      * 共通スキーマによるバリデーションを行うためのDocumentBuilderを生成する。\r
@@ -101,14 +111,6 @@ public final class XmlUtils{
     }\r
 \r
     /**\r
-     * 隠しコンストラクタ。\r
-     */\r
-    private XmlUtils(){\r
-        super();\r
-        return;\r
-    }\r
-\r
-    /**\r
      * スキーマ検証用の厳密なエラーハンドラ。\r
      */\r
     public static class StrictHandler implements ErrorHandler{\r
index 19b9c23..98501ec 100644 (file)
@@ -21,6 +21,19 @@ public class JsArray
         extends AbstractJsValue\r
         implements Iterable<JsValue> {\r
 \r
+    private final List<JsValue> valueList = new ArrayList<JsValue>();\r
+    private boolean changed = false;\r
+\r
+\r
+    /**\r
+     * コンストラクタ。\r
+     */\r
+    public JsArray(){\r
+        super();\r
+        return;\r
+    }\r
+\r
+\r
     /**\r
      * JSON Arrayを文字ストリームからパースする。\r
      * @param reader 文字入力\r
@@ -65,18 +78,6 @@ public class JsArray
     }\r
 \r
 \r
-    private final List<JsValue> valueList = new ArrayList<JsValue>();\r
-    private boolean changed = false;\r
-\r
-\r
-    /**\r
-     * コンストラクタ。\r
-     */\r
-    public JsArray(){\r
-        super();\r
-        return;\r
-    }\r
-\r
     /**\r
      * JSON Valueを追加する。\r
      * @param value JSON Value\r
index ab8cbea..45d5efa 100644 (file)
@@ -19,15 +19,6 @@ public final class JsBoolean
     /** 偽。 */\r
     public static final JsBoolean FALSE = new JsBoolean();\r
 \r
-    /**\r
-     * boolean値から真偽Valueを返す。\r
-     * @param bool boolean値\r
-     * @return TRUEかFALSE\r
-     */\r
-    public static JsBoolean valueOf(boolean bool){\r
-        if(bool) return TRUE;\r
-        return FALSE;\r
-    }\r
 \r
     /**\r
      * コンストラクタ。\r
@@ -38,6 +29,17 @@ public final class JsBoolean
         return;\r
     }\r
 \r
+\r
+    /**\r
+     * boolean値から真偽Valueを返す。\r
+     * @param bool boolean値\r
+     * @return TRUEかFALSE\r
+     */\r
+    public static JsBoolean valueOf(boolean bool){\r
+        if(bool) return TRUE;\r
+        return FALSE;\r
+    }\r
+\r
     /**\r
      * boolean値を返す。\r
      * @return boolean値\r
index 32948b0..8613f7f 100644 (file)
@@ -20,6 +20,60 @@ public class JsNumber
         extends AbstractJsValue\r
         implements Comparable<JsNumber> {\r
 \r
+    private BigDecimal decimal;\r
+\r
+\r
+    /**\r
+     * コンストラクタ。\r
+     * @param val 初期数値\r
+     */\r
+    public JsNumber(long val){\r
+        this(BigDecimal.valueOf(val));\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * コンストラクタ。\r
+     * @param val 初期数値\r
+     */\r
+    public JsNumber(double val){\r
+        this(BigDecimal.valueOf(val));\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * コンストラクタ。\r
+     * @param val 初期数値\r
+     */\r
+    public JsNumber(BigInteger val){\r
+        this(new BigDecimal(val));\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * コンストラクタ。\r
+     * 書式はjava.math.BigDecinal#BigDecimal(String)に準ずる。\r
+     * @param val 初期数値の文字列表記\r
+     * @throws NumberFormatException 不正な数値表記\r
+     */\r
+    public JsNumber(CharSequence val) throws NumberFormatException{\r
+        this(new BigDecimal(val.toString()));\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * コンストラクタ。\r
+     * @param val 初期数値\r
+     * @throws NullPointerException 引数がnull\r
+     */\r
+    public JsNumber(BigDecimal val) throws NullPointerException{\r
+        super();\r
+        if(val == null) throw new NullPointerException();\r
+        this.decimal = val;\r
+        return;\r
+    }\r
+\r
+\r
     /**\r
      * 文字ストリームから符号付きの数字並びを読み込む。\r
      * +符号は読み飛ばされる。\r
@@ -183,58 +237,6 @@ public class JsNumber
         return result;\r
     }\r
 \r
-    private BigDecimal decimal;\r
-\r
-    /**\r
-     * コンストラクタ。\r
-     * @param val 初期数値\r
-     */\r
-    public JsNumber(long val){\r
-        this(BigDecimal.valueOf(val));\r
-        return;\r
-    }\r
-\r
-    /**\r
-     * コンストラクタ。\r
-     * @param val 初期数値\r
-     */\r
-    public JsNumber(double val){\r
-        this(BigDecimal.valueOf(val));\r
-        return;\r
-    }\r
-\r
-    /**\r
-     * コンストラクタ。\r
-     * @param val 初期数値\r
-     */\r
-    public JsNumber(BigInteger val){\r
-        this(new BigDecimal(val));\r
-        return;\r
-    }\r
-\r
-    /**\r
-     * コンストラクタ。\r
-     * 書式はjava.math.BigDecinal#BigDecimal(String)に準ずる。\r
-     * @param val 初期数値の文字列表記\r
-     * @throws NumberFormatException 不正な数値表記\r
-     */\r
-    public JsNumber(CharSequence val) throws NumberFormatException{\r
-        this(new BigDecimal(val.toString()));\r
-        return;\r
-    }\r
-\r
-    /**\r
-     * コンストラクタ。\r
-     * @param val 初期数値\r
-     * @throws NullPointerException 引数がnull\r
-     */\r
-    public JsNumber(BigDecimal val) throws NullPointerException{\r
-        super();\r
-        if(val == null) throw new NullPointerException();\r
-        this.decimal = val;\r
-        return;\r
-    }\r
-\r
     /**\r
      * BigDecimal型の数値を返す。\r
      * @return BigDecimal型数値\r
index 3186ece..4c96492 100644 (file)
@@ -22,6 +22,20 @@ public class JsObject
         extends AbstractJsValue\r
         implements Iterable<JsPair> {\r
 \r
+    private final Map<String, JsValue> valueMap =\r
+            new TreeMap<String, JsValue>();\r
+    private boolean changed = false;\r
+\r
+\r
+    /**\r
+     * コンストラクタ。\r
+     */\r
+    public JsObject(){\r
+        super();\r
+        return;\r
+    }\r
+\r
+\r
     /**\r
      * JSON Objectを文字ストリームからパースする。\r
      * @param reader 文字入力\r
@@ -76,19 +90,6 @@ public class JsObject
     }\r
 \r
 \r
-    private final Map<String, JsValue> valueMap =\r
-            new TreeMap<String, JsValue>();\r
-    private boolean changed = false;\r
-\r
-\r
-    /**\r
-     * コンストラクタ。\r
-     */\r
-    public JsObject(){\r
-        super();\r
-        return;\r
-    }\r
-\r
     /**\r
      * 名前とValueからpairを登録する。\r
      * @param name 名前\r
index 09184bf..9f25782 100644 (file)
@@ -16,6 +16,34 @@ public class JsString
         extends AbstractJsValue\r
         implements CharSequence, Comparable<JsString> {\r
 \r
+    private final String text;\r
+\r
+\r
+    /**\r
+     * コンストラクタ。\r
+     * 空文字が設定される。\r
+     */\r
+    public JsString(){\r
+        this(null);\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * コンストラクタ。\r
+     * 引数はJSON書式ではない。\r
+     * @param seq 文字列。nullなら空文字が設定される。\r
+     */\r
+    public JsString(CharSequence seq){\r
+        super();\r
+        if(seq == null){\r
+            this.text = "";\r
+        }else{\r
+            this.text = seq.toString();\r
+        }\r
+        return;\r
+    }\r
+\r
+\r
     /**\r
      * FFFF形式4桁で16進エスケープされた文字列を読み、\r
      * 1文字にデコードする。\r
@@ -147,32 +175,6 @@ public class JsString
         return;\r
     }\r
 \r
-    private final String text;\r
-\r
-    /**\r
-     * コンストラクタ。\r
-     * 空文字が設定される。\r
-     */\r
-    public JsString(){\r
-        this(null);\r
-        return;\r
-    }\r
-\r
-    /**\r
-     * コンストラクタ。\r
-     * 引数はJSON書式ではない。\r
-     * @param seq 文字列。nullなら空文字が設定される。\r
-     */\r
-    public JsString(CharSequence seq){\r
-        super();\r
-        if(seq == null){\r
-            this.text = "";\r
-        }else{\r
-            this.text = seq.toString();\r
-        }\r
-        return;\r
-    }\r
-\r
     /**\r
      * {@inheritDoc}\r
      * @param index {@inheritDoc}\r
index 6a19d93..aaa2913 100644 (file)
@@ -16,6 +16,15 @@ import java.io.Reader;
 public final class Json{\r
 \r
     /**\r
+     * 隠しコンストラクタ。\r
+     */\r
+    private Json(){\r
+        assert false;\r
+        throw new AssertionError();\r
+    }\r
+\r
+\r
+    /**\r
      * JSON最上位構造から文字出力を開始する。\r
      * @param appout 出力先\r
      * @param value JSONのObjectかArray\r
@@ -182,12 +191,4 @@ public final class Json{
         throw new JsParseException();\r
     }\r
 \r
-    /**\r
-     * 隠しコンストラクタ。\r
-     */\r
-    private Json(){\r
-        assert false;\r
-        throw new AssertionError();\r
-    }\r
-\r
 }\r