4 * License : The MIT License
5 * Copyright(c) 2011 olyutorskii
8 package jp.sfjp.jindolf;
10 import java.text.MessageFormat;
11 import java.util.Properties;
14 * バージョンその他アプリに関する各種情報。
16 public final class VerInfo {
19 public static final String TITLE;
21 public static final String VERSION;
23 public static final String AUTHOR;
25 public static final String COPYRIGHT;
27 public static final String LICENSE;
29 public static final String CONTACT;
31 public static final String INCEPTION;
33 public static final String COMMENT;
35 public static final String ID;
37 private static final String RES_VERDEF = "resources/version.properties";
39 private static final String PFX_TITLE = "pkg-title.";
40 private static final String PFX_VERSION = "pkg-version.";
41 private static final String PFX_AUTHOR = "pkg-author.";
42 private static final String PFX_LICENSE = "pkg-license.";
43 private static final String PFX_CONTACT = "pkg-contact.";
44 private static final String PFX_INCEPTION = "pkg-inception.";
45 private static final String PFX_COMMENT = "pkg-comment.";
48 Properties verProp = ResourceManager.getProperties(RES_VERDEF);
49 if(verProp == null) verProp = new Properties();
51 TITLE = getPackageInfo(verProp, PFX_TITLE, "Jindolf");
52 VERSION = getPackageInfo(verProp, PFX_VERSION, "0.0.1");
53 AUTHOR = getPackageInfo(verProp, PFX_AUTHOR, "nobody");
54 LICENSE = getPackageInfo(verProp, PFX_LICENSE, "Unknown");
55 CONTACT = getPackageInfo(verProp, PFX_CONTACT, "Where?");
56 INCEPTION = getPackageInfo(verProp, PFX_INCEPTION, "2008");
57 COMMENT = getPackageInfo(verProp, PFX_COMMENT, "");
59 COPYRIGHT = MessageFormat.format(
60 "Copyright(c) {0} {1}",
63 ID = MessageFormat.format(
64 "{0} Ver.{1} {2} ({3})",
65 TITLE, VERSION, COPYRIGHT, LICENSE );
78 * プロパティからルートパッケージのパッケージ情報を取得する。
82 * @param defValue 見つからなかった場合のデフォルト値
85 static String getPackageInfo(Properties prop,
88 String result = getPackageInfo(prop, prefix,
89 ResourceManager.DEF_ROOT_PACKAGE,
95 * プロパティからパッケージに紐づけられたパッケージ情報を取得する。
100 * @param defValue 見つからなかった場合のデフォルト値
103 static String getPackageInfo(Properties prop,
107 String propKeyName = prefix + pkg.getName();
108 String result = prop.getProperty(propKeyName, defValue);
110 // ignore Maven macro filtering
111 if(isMavenMacro(result)){
119 * 文字列がMavenのマクロフィルタ置換子でありうるか判定する。
121 * <p>「${」で始まり「}」で終わる文字列を置換子とみなす。
123 * <p>マクロ展開結果がさらに偶然引っかかった場合はあきらめる。
126 * @return 置換子でありうるならtrue
128 public static boolean isMavenMacro(String text){
129 if(text.startsWith("$" + "{") && text.endsWith("}")){
138 * <p>各ウィンドウタイトルには、他のアプリとの区別のため
141 * @param base タイトル基本部
142 * @return アプリ名が付加されたウィンドウタイトル。
144 public static String getFrameTitle(String base){
145 StringBuilder result = new StringBuilder();
148 result.append(base).append("\u0020-\u0020");
150 result.append(TITLE);
152 String message = result.toString();
157 * About画面用メッセージを生成する。
158 * @return About画面用メッセージ
160 public static String getAboutMessage(){
161 StringBuilder result = new StringBuilder();
163 result.append(MessageFormat.format(
164 "{0}\u0020\u0020\u0020Version {1}\n"
168 TITLE, VERSION, COPYRIGHT, LICENSE, CONTACT )
171 if(COMMENT.length() > 0){
172 result.append('\n').append(COMMENT);
175 String message = result.toString();