開発続き

GW中に色々あったとはいえ、無事に開発再開。
現状、こんな感じのソースコードを書くと、ファイルの一覧表示&フィルタによる行選択表示ができるようになった。

@Title("ListFilter ver1.0")
@BorderLayout
@North(Class=JTextField.class, binding=Main.SearchText)
@Center(Class=JList.class, scrolls=true, binding=Main.ListContents)
@Menu({"File[Open,---,Exit]"})
@ContextValues({Main.SearchText, Main.FileContents, Main.ListContents})
public class Main {
    public static final String SearchText = "SearchText";
    public static final String FileContents = "FileContents";
    public static final String ListContents = "ListContents";
    
    /**
     * 「ファイル#ファイルを開く」メニューを定義する.
     * 選択されたファイルを読み込み、各行から構成されるリストを、「ApplicationContext#FileList」に固定する。
     * @param file 選択されたファイル
     * @return 読み込んだファイルの内容
     */
    @Action(name="File.Open", action=AskOpenFileCommand.class, nullcancel_pre=true, binding=FileContents, nullcancel_post=true)
    public List<String> openFile( @Resource(CommandContextImpl.KEY_RESULT) File file ){
        return IOUtils.readLines(file);
    }
    
    /**
     * 読み込んだファイルの内容もしくは検索条件が変化したときに呼び出される処理.
     * 新しい検索結果を、「ApplicaitonContext#ListContents」に固定する。
     * @param list 読み込んでいるファイルの内容
     * @param text 検索対象の文字列
     * @return 検索結果
     */
    @ContextChangeHandler(name={FileContents, SearchText}, binding=ListContents)
    public List<String> search( @Resource(FileContents) List<String> filedata, @Resource(SearchText) String text ){
        return CollectionUtils.filter(filedata, text);
    }
    
    public static void main( String[] args ){
        LogUtils.DEBUG_TO_INFO = true;
        LogUtils.setLogWriterBuilder(new StdOutLogWriterBuilder());
        SwingUtils.setupSingleWindowApplicationWithAnnotation(Main.class);
    }
    
}

まだ無駄が多いけど、基本的な動作はするようになったから、次からは色々書いて機能拡充を目指す。