4 * License : The MIT License
5 * Copyright(c) 2010 MikuToga Partners
8 package jp.sfjp.mikutoga.pmd.model;
10 import java.util.Collections;
12 import java.util.TreeMap;
15 * インデックス化されたトゥーンファイル構成。
16 * 既存のトゥーンファイル構成と異なるトゥーンファイル名を用いることが可能。
17 * <h1>デフォルトのトゥーンファイル構成。</h1>
26 public class ToonMap {
28 /** カスタムトゥーンファイルの総数。 */
29 public static final int MAX_CUSTOM_TOON = 10;
31 private static final Map<Integer, String> DEF_TOONMAP;
33 private static final int IDX_SP = 0xff; // 特殊トゥーンのインデックス
36 Map<Integer, String> map = new TreeMap<Integer, String>();
39 map.put(idx++, "toon01.bmp");
40 map.put(idx++, "toon02.bmp");
41 map.put(idx++, "toon03.bmp");
42 map.put(idx++, "toon04.bmp");
43 map.put(idx++, "toon05.bmp");
44 map.put(idx++, "toon06.bmp");
45 map.put(idx++, "toon07.bmp");
46 map.put(idx++, "toon08.bmp");
47 map.put(idx++, "toon09.bmp");
48 map.put(idx++, "toon10.bmp");
49 map.put(IDX_SP, "toon0.bmp");
51 assert idx == MAX_CUSTOM_TOON;
53 DEF_TOONMAP = Collections.unmodifiableMap(map);
55 assert DEF_TOONMAP.size() == MAX_CUSTOM_TOON + 1;
59 private final Map<Integer, String> toonDefMap =
60 new TreeMap<Integer, String>(DEF_TOONMAP);
73 * 指定したインデックス値に対応したトゥーンファイル名を返す。
75 * @return トゥーンファイル名。該当するものがなければnull
77 public String getIndexedToon(int idx){
78 String result = this.toonDefMap.get(idx);
83 * 指定したインデックス値にトゥーンファイル名を設定する。
85 * @param toonFileName トゥーンフィル名
86 * @throws NullPointerException トゥーンファイル名がnull
88 public void setIndexedToon(int idx, String toonFileName)
89 throws NullPointerException{
90 if(toonFileName == null) throw new NullPointerException();
91 this.toonDefMap.put(idx, toonFileName);
97 * デフォルトのトゥーンファイル構成と等しいか判定する。
100 public boolean isDefaultMap(){
101 boolean result = this.toonDefMap.equals(DEF_TOONMAP);
106 * 指定インデックスのトゥーンファイル名がデフォルトと等しいか判定する。
108 * @return デフォルトと等しければtrue。
110 public boolean isDefaultToon(int idx){
111 String thisToon = this.toonDefMap.get(idx);
112 if(thisToon == null) return false;
114 String defToon = DEF_TOONMAP.get(idx);
116 boolean result = thisToon.equals(defToon);
122 * このトゥーンファイル構成をデフォルト構成内容でリセットする。
124 public void resetDefaultMap(){
125 this.toonDefMap.clear();
126 this.toonDefMap.putAll(DEF_TOONMAP);
131 * 指定インデックスのトゥーンファイル名を
132 * デフォルトのトゥーンファイル名にリセットする。
135 public void resetIndexedToon(int idx){
136 String toonFile = DEF_TOONMAP.get(idx);
137 this.toonDefMap.put(idx, toonFile);
143 * @return {@inheritDoc}
146 public String toString(){
147 StringBuilder result = new StringBuilder();
149 boolean dumped = false;
150 for(Map.Entry<Integer, String> entry : this.toonDefMap.entrySet()){
151 Integer idx = entry.getKey();
152 String toonFile = entry.getValue();
154 if(dumped) result.append(", ");
155 result.append('(').append(idx).append(')');
156 result.append(toonFile);
160 return result.toString();