X-Git-Url: http://git.osdn.net/view?p=jindolf%2FJindolf.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fjp%2Fsfjp%2Fjindolf%2Fconfig%2FCmdOption.java;fp=src%2Fmain%2Fjava%2Fjp%2Fsfjp%2Fjindolf%2Fconfig%2FCmdOption.java;h=ddc59c72ea9da8a4af049a327dfbd5c0c891712e;hp=0000000000000000000000000000000000000000;hb=d12d773cc29e5ca5efbb5ad879e9e5b373e4c67d;hpb=b966d5371220218dd8744c2c7d806c6d52836438 diff --git a/src/main/java/jp/sfjp/jindolf/config/CmdOption.java b/src/main/java/jp/sfjp/jindolf/config/CmdOption.java new file mode 100644 index 0000000..ddc59c7 --- /dev/null +++ b/src/main/java/jp/sfjp/jindolf/config/CmdOption.java @@ -0,0 +1,141 @@ +/* + * command line options + * + * License : The MIT License + * Copyright(c) 2009 olyutorskii + */ + +package jp.sfjp.jindolf.config; + +import java.util.Arrays; +import java.util.Collection; +import java.util.EnumSet; +import java.util.List; +import jp.sfjp.jindolf.ResourceManager; + +/** + * コマンドラインオプションの列挙。 + */ +public enum CmdOption { + + /** ヘルプ。 */ + OPT_HELP("-help", "-h", "--help", "-?"), + /** 版数表示。 */ + OPT_VERSION("-version"), + /** UI文字制御。 */ + OPT_BOLDMETAL("-boldMetal"), + /** ウィンドウ位置指定。 */ + OPT_GEOMETRY("-geometry"), + /** 実行環境出力。 */ + OPT_VMINFO("-vminfo"), + /** コンソールログ。 */ + OPT_CONSOLELOG("-consolelog"), + /** フォント指定。 */ + OPT_INITFONT("-initfont"), + /** アンチエイリアス。 */ + OPT_ANTIALIAS("-antialias"), + /** サブピクセル制御。 */ + OPT_FRACTIONAL("-fractional"), + /** 設定格納ディレクトリ指定。 */ + OPT_CONFDIR("-confdir"), + /** 設定格納ディレクトリ不使用。 */ + OPT_NOCONF("-noconfdir"), + ; + + + private static final Collection OPTS_INDEPENDENT = + EnumSet.of( + OPT_HELP, + OPT_VERSION, + OPT_VMINFO, + OPT_BOLDMETAL, + OPT_CONSOLELOG, + OPT_NOCONF + ); + private static final Collection OPTS_BOOLEAN = + EnumSet.of( + OPT_ANTIALIAS, + OPT_FRACTIONAL + ); + + private static final String RES_HELPTEXT = "resources/help.txt"; + + + private final List nameList; + + + /** + * コンストラクタ。 + * @param names オプション名の一覧 + */ + private CmdOption(String ... names){ + assert names.length > 0; + this.nameList = Arrays.asList(names); + return; + } + + + /** + * ヘルプメッセージ(オプションの説明)を返す。 + * @return ヘルプメッセージ + */ + public static String getHelpText(){ + String helpText = ResourceManager.getTextFile(RES_HELPTEXT); + return helpText; + } + + /** + * オプション名に合致するEnumを返す。 + * @param arg 個別のコマンドライン引数 + * @return 合致したEnum。どれとも合致しなければnull + */ + public static CmdOption parseCmdOption(String arg){ + for(CmdOption option : values()){ + if(option.matches(arg)) return option; + } + return null; + } + + /** + * 任意のオプション文字列がこのオプションに合致するか判定する。 + * @param option ハイフンの付いたオプション文字列 + * @return 合致すればtrue + */ + public boolean matches(String option){ + for(String name : this.nameList){ + if(option.equals(name)) return true; + } + + return false; + } + + /** + * 単体で意味をなすオプションか判定する。 + * @return 単体で意味をなすならtrue + */ + public boolean isIndepOption(){ + if(OPTS_INDEPENDENT.contains(this)) return true; + return false; + } + + /** + * 真偽指定を一つ必要とするオプションか判定する。 + * @return 真偽指定を一つ必要とするオプションならtrue + */ + public boolean isBooleanOption(){ + if(OPTS_BOOLEAN.contains(this)) return true; + return false; + } + + /** + * オプション名を返す。 + * オプション別名が複数指定されている場合は最初のオプション名 + * @return オプション名 + */ + @Override + public String toString(){ + String result = this.nameList.get(0); + return result; + } + +}