ログ解析ツールの開発にあたり、現在、こんな感じでアプリを開発できるようにしている。

@BorderLayout
@North(Class=JTextField.class, binding=Main.SearchText)
@South(Class=JList.class, scrolls=true, binding=Main.ListContents)
public class Main extends JFrame {
    public static final String SearchText = "SearchText";
    public static final String FileContents = "FileContents";
    public static final String ListContents = "ListContents";
    
    @Action(menu="File.Open", action=AskOpenFileCommand.class, binding=FileContents)
    public List<String> openFile( File file ){
        return IOUtils.readLines(file, Charset.defaultCharset());
    }
    
    @ContextChangeAction(name={FileContents, SearchText}, binding=ListContents)
    public List<String> search( @Resource(FileContents) List<String> filedata, @Resource(SearchText) String text ){
        return CollectionUtils.filter(filedata, text);
    }
}

これを、
java Execute Main
と実行すると、GUIでのgrepができる感じのアプリケーションが起動できるようにしたい。