/**
* コマンドラインオプション情報。
- * public static void main()の引数から展開される。
+ *
+ * <p>public static void main()の引数から展開される。
*/
public class OptionInfo{
/**
* 文字列が可変引数のいずれかと英字大小無視で等しいか判定する。
*
- * <p>※ JRE1.6のString#equalsIgnoreCase の代替も兼ねる。
- *
* @param text 文字列
* @param names 文字列の可変引数
* @return 等しい物があればtrue
*/
private static boolean equalsIgnoreCase(String text, String ... names){
for(String name : names){
- if(text.compareToIgnoreCase(name) == 0) return true;
+ if(text.equalsIgnoreCase(name)) return true;
}
return false;
}
/**
* 真偽二値をとるオプション解析の下請け。
+ *
* @param info オプション情報格納先
* @param option オプション種別
* @param optTxt オプション名文字列
/**
* 引数付きオプションを解析する。
+ *
* @param info オプション情報
* @param optTxt オプション文字列
* @param option オプション種別
/**
* オプション文字列を解析する。
+ *
* @param args main()に渡されるオプション文字列
* @return 解析済みのオプション情報。
* @throws IllegalArgumentException 構文エラー
/**
* 全引数のリストを返す。
+ *
* @return 全引数のリスト
*/
public List<String> getInvokeArgList(){
/**
* オプションが指定されていたか否か判定する。
+ *
* @param option オプション
* @return 指定されていたらtrue
*/
/**
* 真偽値をとるオプション値を返す。
- * 複数回指定された場合は最後の値。
+ *
+ * <p>複数回指定された場合は最後の値。
+ *
* @param option オプション
* @return 真偽値。オプション指定がなかった場合はnull
* @throws IllegalArgumentException 真偽値を取るオプションではない。
/**
* 文字列引数をとるオプション値を返す。
- * 複数回指定された場合は最後の値。
+ *
+ * <p>複数回指定された場合は最後の値。
+ *
* @param option オプション
* @return 文字列。オプション指定がなかった場合はnull
*/
/**
* 排他的オプションのいずれかが指定されたか判定する。
- * 後から指定された方が有効となる。
+ *
+ * <p>後から指定された方が有効となる。
+ *
* @param options 排他的オプション群
* @return いずれかのオプション。どれも指定されなければnull
*/
/**
* 初期のフレーム幅を返す。
+ *
* @return 初期のフレーム幅。オプション指定されてなければnull
*/
public Integer initialFrameWidth(){
/**
* 初期のフレーム高を返す。
+ *
* @return 初期のフレーム高。オプション指定されてなければnull
*/
public Integer initialFrameHeight(){
/**
* 初期のフレーム位置のX座標を返す。
+ *
* @return 初期のフレーム位置のX座標。オプション指定されてなければnull
*/
public Integer initialFrameXpos(){
/**
* 初期のフレーム位置のY座標を返す。
+ *
* @return 初期のフレーム位置のY座標。オプション指定されてなければnull
*/
public Integer initialFrameYpos(){
* <li>任意の文字列を表示可能な全フォントを列挙すること
* </ul>
*
- * <p>
- * この二つをバックグラウンドで非同期に収集する。
- * </p>
+ * <p>この二つをバックグラウンドで非同期に収集する。
*
- * <p>
- * 各種フォント環境収集メソッドの遅さをカバーするのが実装目的。
- * </p>
+ * <p>各種フォント環境収集メソッドの遅さをカバーするのが実装目的。
*/
public class FontEnv {
*/
public static final FontEnv DEFAULT;
- /** {@link java.awt.Font#DIALOG} 代替品。 */
- private static final String FAMILY_DIALOG = "Dialog";
-
/** フォントファミリ選択肢。 */
private static final String[] INIT_FAMILY_NAMES = {
"Hiragino Kaku Gothic Pro", // for MacOS X
/** JIS X0208:1990 表示確認用文字列。 */
private static final String JPCHECK_CODE = "あ凜熙峠ゑアアヴヰ┼ЖΩ9A";
- /** {@link java.util.Locale#ROOT} 代替品。 */
- private static final Locale LOCALE_ROOT = new Locale("", "", "");
-
private static final int POOL_SZ = 2;
private static final int STRIDE = 15;
/**
* コンストラクタ。
- * 完了と同時に裏でフォント情報収集タスクが走る。
+ *
+ * <p>完了と同時に裏でフォント情報収集タスクが走る。
+ *
* @param proveChars 表示判定用文字列
* @param fontFamilyList フォント候補
* @throws NullPointerException 引数がnull
/**
* コンストラクタ。
- * 完了と同時に裏でフォント情報収集タスクが走る。
+ *
+ * <p>完了と同時に裏でフォント情報収集タスクが走る。
+ *
* @param proveChars 表示判定用文字列
* @param fontFamilyList フォント候補
* @throws NullPointerException 引数がnull
/**
* システムに存在する有効なファミリ名か判定する。
+ *
* @param familyName フォントファミリ名。
* @return 存在する有効なファミリ名ならtrue
*/
int size = 1;
Font dummyFont = new Font(familyName, style, size);
- String dummyFamilyName = dummyFont.getFamily(LOCALE_ROOT);
+ String dummyFamilyName = dummyFont.getFamily(Locale.ROOT);
if(dummyFamilyName.equals(familyName)) return true;
String dummyLocalFamilyName = dummyFont.getFamily();
/**
* 複数の候補から利用可能なフォントを一つ選び、生成する。
- * 候補から適当なファミリが見つからなかったら"Dialog"が選択される。
+ *
+ * <p>候補から適当なファミリが見つからなかったら"Dialog"が選択される。
+ *
* @param fontList フォントファミリ名候補
* @return フォント
*/
protected static String availableFontFamily(Iterable<String> fontList){
- String defaultFamilyName = FAMILY_DIALOG;
+ String defaultFamilyName = Font.DIALOG;
for(String familyName : fontList){
if(isValidFamilyName(familyName)){
defaultFamilyName = familyName;
/**
* フォントファミリー名のリストを返す。
+ *
* @return フォントファミリー名のリスト
* @throws IllegalStateException 収集タスクに異常が発生
*/
try{
result = this.listLoadFuture.get();
- }catch(ExecutionException e){
- throw new IllegalStateException(e);
- }catch(InterruptedException e){
+ }catch(ExecutionException | InterruptedException e){
throw new IllegalStateException(e);
}
/**
* 利用可能なフォントファミリ名を返す。
+ *
* @return フォントファミリー名
* @throws IllegalStateException 収集タスクに異常が発生
*/
try{
result = this.fontSelectFuture.get();
- }catch(ExecutionException e){
- throw new IllegalStateException(e);
- }catch(InterruptedException e){
+ }catch(ExecutionException | InterruptedException e){
throw new IllegalStateException(e);
}
/**
* {@inheritDoc}
+ *
* @return {@inheritDoc}
*/
@Override
/**
* {@inheritDoc}
+ *
* @return {@inheritDoc}
*/
@Override
/** デフォルトのフォントスタイル。 */
public static final int DEF_STYLE = 0x00 | Font.PLAIN;
- /** {@link java.util.Locale#ROOT}代替品。 */
- private static final Locale LOCALE_ROOT = new Locale("", "", "");
/** MSリコー系日本語ベクトルフォント下限ポイントサイズ。 */
private static final int MS_VEC_LIMIT = 24;
/** 二重引用符。 */
/**
* コンストラクタ。
- * デフォルトフォントとそれに適した描画属性が指定される。
+ *
+ * <p>デフォルトフォントとそれに適した描画属性が指定される。
*/
public FontInfo(){
this((Font) null, (FontRenderContext) null);
/**
* コンストラクタ。
+ *
* @param font フォント
* @param context 描画設定
*/
* @return 見当が付けばtrue
*/
protected static boolean isMsRicohJpFont(Font font){
- String rootFamilyName = font.getFamily(LOCALE_ROOT);
+ String rootFamilyName = font.getFamily(Locale.ROOT);
if(rootFamilyName.startsWith("MS")){
if(rootFamilyName.contains("Gothic")) return true;
if(rootFamilyName.contains("Mincho")) return true;
/**
* ファミリ名を返す。
+ *
* @return ファミリ名
*/
private String getFamilyName(){
/**
* フォントを返す。
+ *
* @return フォント
*/
public Font getFont(){
/**
* 描画属性を返す。
+ *
* @return 描画属性
*/
public FontRenderContext getFontRenderContext(){
/**
* アンチエイリアス機能を使うか判定する。
+ *
* @return アンチエイリアス機能を使うならtrue
*/
public boolean isAntiAliased(){
/**
* サブピクセル精度を使うか判定する。
+ *
* @return サブピクセル精度を使うならtrue
*/
public boolean usesFractionalMetrics(){
/**
* フォントの最大寸法を返す。
+ *
* @return 最大寸法
* @see java.awt.Font#getMaxCharBounds(FontRenderContext)
*/
/**
* フォントのみ異なる設定を派生させる。
+ *
* @param newFont 新フォント
* @return 新設定
*/
/**
* 描画属性のみ異なる設定を派生させる。
+ *
* @param newContext 新描画設定
* @return 新設定
*/
/**
* 描画属性のみ異なる設定を派生させる。
+ *
* @param isAntiAliases アンチエイリアス設定
* @param useFractional サブピクセル精度設定
* @return 新設定
/**
* 文字列からグリフ集合を生成する。
+ *
* @param iterator 文字列
* @return グリフ集合
*/
/**
* ロケール中立なフォントファミリ名を返す。
- * JRE1.5対策
+ *
+ * <p>JRE1.5対策
+ *
* @return ファミリ名
* @see Font#getFamily(Locale)
*/
public String getRootFamilyName(){
Font thisFont = getFont();
- String result = thisFont.getFamily(LOCALE_ROOT);
+ String result = thisFont.getFamily(Locale.ROOT);
return result;
}
/**
* Font#decode()用の名前を返す。
- * 空白が含まれる場合は二重引用符で囲まれる。
+ *
+ * <p>空白が含まれる場合は二重引用符で囲まれる。
+ *
* @return {@link java.awt.Font#decode(String)}用の名前
* @see java.awt.Font#decode(String)
*/
/**
* {@inheritDoc}
+ *
* @param obj {@inheritDoc}
* @return {@inheritDoc}
*/
/**
* {@inheritDoc}
+ *
* @return {@inheritDoc}
*/
@Override
/**
* Swingコンポーネントのフォント等幅化。
- * L&F変更にも対処。
+ *
+ * <p>L&F変更にも対処。
*/
public final class Monodizer implements PropertyChangeListener{
public static final String PROPNAME_FONT = "font";
/** L&F変更時のプロパティ名。 */
public static final String PROPNAME_UI = "UI";
- /** Font.MONOSPACED代替品。 */
- public static final String FAMILY_MONO = "Monospaced";
private static final Map<TextAttribute, String> TEXTATTR_MONO =
- Collections.singletonMap(TextAttribute.FAMILY, FAMILY_MONO);
+ Collections.singletonMap(TextAttribute.FAMILY, Font.MONOSPACED);
private static final Monodizer CHANGER = new Monodizer();
/**
* 等幅フォントか否か判定する。
+ *
* @param font フォント
* @return 等幅フォントならtrue
*/
if( ! (attr instanceof String) ) return false;
String family = (String) attr;
- if(family.equals(FAMILY_MONO)) return true;
+ if(family.equals(Font.MONOSPACED)) return true;
return false;
}
/**
* 任意のフォントの等幅化を行う。
- * 等幅以外の属性は可能な限り保持する。
+ *
+ * <p>等幅以外の属性は可能な限り保持する。
+ *
* @param font 任意のフォント
* @return 等幅フォント
*/
/**
* 任意のコンポーネントをフォント等幅化する。
- * L&F変更に対処するためのリスナ組み込みも行われる。
+ *
+ * <p>L&F変更に対処するためのリスナ組み込みも行われる。
+ *
* @param comp コンポーネント
*/
public static void monodize(JComponent comp){
/**
* コンポーネントに微修正を加える。
+ *
* @param comp コンポーネント
*/
private static void modifyComponent(JComponent comp){
/**
* テキストコンポーネントへの微修正を行う。
+ *
* @param textComp テキストコンポーネント
*/
private static void modifyTextComponent(JTextComponent textComp){
/**
* コンボボックスのエディタを等幅化する。
+ *
* @param comboBox コンボボックス
*/
private static void modifyComboBox(JComboBox<?> comboBox){
/**
* フォント変更イベントの受信。
+ *
* @param event フォント変更イベント
*/
@Override