OSDN Git Service

スタートアップ処理の改善
[jindolf/Jindolf.git] / src / main / java / jp / sfjp / jindolf / glyph / FontListModel.java
index f7c27f3..9f03099 100644 (file)
@@ -16,7 +16,7 @@ import javax.swing.AbstractListModel;
  * フォントファミリ名一覧表示用リストのデータモデル。
  * <p>環境によってはフォントリストを完成させるのに
  * 数千msかかる場合があるので、その対策として非同期に一覧を読み込む。
- * <p>実際のリスト作成は裏で走るタスクにより行われ、
+ * <p>実際のリスト作成はEDTにより行われ、
  * リスト完成の暁にはEDTによりリスナに通知される。
  * 一般的なリストモデルと同様、
  * 基本的にスレッド間競合の問題はEDTで解決すること。
@@ -24,65 +24,26 @@ import javax.swing.AbstractListModel;
 @SuppressWarnings("serial")
 public class FontListModel extends AbstractListModel {
 
-    private final List<String> familyList = new LinkedList<String>();
+    private static final FontEnv DEFAULT_FONTENV = FontEnv.DEFAULT;
 
-    private volatile boolean hasDone = false;
+    private final List<String> familyList = new LinkedList<String>();
 
     /**
      * コンストラクタ。
-     * <p>ã\82³ã\83³ã\82¹ã\83\88ã\83©ã\82¯ã\82¿å®\8cäº\86ã\81¨å\90\8cæ\99\82ã\81«ã\83ªã\82¹ã\83\88ç\94\9fæ\88\90ã\82¿ã\82¹ã\82¯ã\81\8cè£\8fで走り始める。
+     * <p>ã\83ªã\82¹ã\83\88å\9f\8bã\82\81ã\82¿ã\82¹ã\82¯ã\81\8cEDTで走り始める。
      */
     public FontListModel(){
         super();
 
-        Runnable task = createFillTask();
-        startTask(task);
-
-        return;
-    }
-
-    /**
-     * フォントリスト埋めタスクを生成する。
-     * @return タスク
-     */
-    private Runnable createFillTask(){
-        Runnable task = new Runnable(){
-            /** {@inheritDoc} */
-            @Override
-            @SuppressWarnings("CallToThreadYield")
-            public void run(){
-                Thread.yield();
-                fillModel();
-            }
-        };
-
-        return task;
-    }
-
-    /**
-     * フォントファミリ名リストを設定する。
-     * @param familyNames フォントファミリ名のリスト
-     * @return リストの要素数
-     */
-    private int fillList(List<String> familyNames){
-        this.familyList.addAll(familyNames);
-        this.hasDone = true;
-        int size = this.familyList.size();
-        return size;
-    }
-
-    /**
-     * フォントリストを収集しモデルに反映させる。
-     */
-    private void fillModel(){
-        final List<String> fontList = FontUtils.createFontList();
-
         // スレッド間競合を避けるため、ここより先の処理はEDT任せ。
         EventQueue.invokeLater(new Runnable(){
             /** {@inheritDoc} */
             @Override
             public void run(){
-                int size = fillList(fontList);
+                List<String> fontList = DEFAULT_FONTENV.getFontFamilyList();
+                FontListModel model = FontListModel.this;
+                model.familyList.addAll(fontList);
+                int size = model.familyList.size();
                 if(size <= 0) return;
 
                 int begin = 0;
@@ -97,24 +58,6 @@ public class FontListModel extends AbstractListModel {
     }
 
     /**
-     * フォントリスト埋めタスクを起動する。
-     * @param task タスク
-     */
-    private void startTask(Runnable task){
-        Thread thread = new Thread(task);
-        thread.start();
-        return;
-    }
-
-    /**
-     * モデルが完成済みか否か判定する。
-     * @return モデルが完成していればtrue
-     */
-    public boolean hasCompleted(){
-        return this.hasDone;
-    }
-
-    /**
      * {@inheritDoc}
      * @param index {@inheritDoc}
      * @return {@inheritDoc}