• R/O
  • HTTP
  • SSH
  • HTTPS

Jindolf: Commit

Jindolfプロジェクトは、CGIゲーム「人狼BBS」を快適にプレイするための専用クライアントを製作するために発足したオープンソースプロジェクトです。


Commit MetaInfo

Revisiond6e76f74d49077cc27d1751c5ecacfbc351fe647 (tree)
Time2020-04-25 13:44:19
AuthorOlyutorskii <olyutorskii@user...>
CommiterOlyutorskii

Log Message

speed up Village node drawing.

Change Summary

Incremental Difference

--- a/src/main/java/jp/sfjp/jindolf/data/LandsTreeModel.java
+++ b/src/main/java/jp/sfjp/jindolf/data/LandsTreeModel.java
@@ -7,6 +7,7 @@
77
88 package jp.sfjp.jindolf.data;
99
10+import java.text.MessageFormat;
1011 import java.util.ArrayList;
1112 import java.util.Collections;
1213 import java.util.HashMap;
@@ -24,6 +25,8 @@ import jp.sourceforge.jindolf.corelib.LandDef;
2425 * {@link javax.swing.JTree}のモデルとして国一覧と村一覧を管理。
2526 *
2627 * <p>ツリー階層は ROOT - 国 - 範囲セクション - 村 の4階層。
28+ *
29+ * <p>昇順/降順の切り替えをサポート。
2730 */
2831 public class LandsTreeModel implements TreeModel{
2932
@@ -413,24 +416,31 @@ public class LandsTreeModel implements TreeModel{
413416 */
414417 private static final class VillageSection{
415418
416- private final String prefix;
419+ private static final String FORM_NODE =
420+ "{0}{1,number,#} ~ {0}{2,number,#}";
421+ private static final String FORM_NODE_G =
422+ "{0}{1,number,#000} ~ {0}{2,number,#000}";
423+
424+
417425 private final int startId;
418426 private final int endId;
419427
428+ private final String text;
429+
420430 private final List<Village> villageList;
421431
422432
423433 /**
424434 * セクション集合を生成する。
425435 *
426- * @param pfx 国名プレフィクス
436+ * @param prefix 国名プレフィクス
427437 * @param startId 区間開始村ID
428438 * @param endId 区間終了村ID
429439 * @param spanList 村の区間リスト
430440 * @throws java.lang.IndexOutOfBoundsException IDの範囲指定が変
431441 */
432442 VillageSection(
433- String pfx, int startId, int endId, List<Village> spanList)
443+ String prefix, int startId, int endId, List<Village> spanList)
434444 throws IndexOutOfBoundsException{
435445 super();
436446
@@ -438,10 +448,15 @@ public class LandsTreeModel implements TreeModel{
438448 throw new IndexOutOfBoundsException();
439449 }
440450
441- this.prefix = pfx;
442451 this.startId = startId;
443452 this.endId = endId;
444453
454+ String format;
455+ if("G".equals(prefix)) format = FORM_NODE_G;
456+ else format = FORM_NODE;
457+ this.text = MessageFormat.format(
458+ format, prefix, this.startId, this.endId);
459+
445460 List<Village> newList = new ArrayList<>(spanList);
446461 this.villageList = Collections.unmodifiableList(newList);
447462
@@ -493,11 +508,7 @@ public class LandsTreeModel implements TreeModel{
493508 */
494509 @Override
495510 public String toString(){
496- StringBuilder result = new StringBuilder();
497- result.append(this.prefix).append(this.startId);
498- result.append(" ~ ");
499- result.append(this.prefix).append(this.endId);
500- return result.toString();
511+ return this.text;
501512 }
502513
503514 }
Show on old repository browser