Pull to refresh

Comments 9

Я, к сожалению, с Groovy еще не знаком. Но спасибо за ссылку, судя по всему итак довольно простые вещи сделали еще проще.

А вобще мне было интересно, в какой-то степени чисто для себя, рутину создания системы меню, которая сильно загрязняет код, превратить в приятное занятие не требующее больших усилий, как в имплементации, так и в поддержке :)
Есть еще XUL, я, правдам не знаю можно ли на его основе свинг лепить
Если бы через XML еще и Action-ы привязывались к пунктам меню, то было бы намного полезней, а так мы получаем меню, которое ничего не делает. Попробуйте добавить в XML имя класса Action-а и создавать его в рантайме через рефлекшн, с последующей привязкой к пункту меню.
Для упрощения примера я не добавил геттер для JMenuItem, но в целом можно его добавить в XMLMenuParser и через него вешать ActionListener:
public JMenuItem getMenuItem(String name) {
        return (JMenuItem)xmlMenuHandler.getMenuMap().get(name);
}

//Использование
xmlParser.getMenuItem("shortcut").addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    System.exit(0);
                }
            });


Просто тут была цель упрощения самого процесса создания меню. Хотя вы подкинули интересную идею для работы непосредственно с Action элементами, обязательно поэкспериментирую.
между делом… посмотрите на библиотеку XStream. Она предлагает элегантное решение для генерирования xml по объекту и построению объекта по xml. Возможно, она сможет упростить вам жизнь и избавит от многострочного парсера.
Мне кажется в yaml это выглядит изящнее:
JFrame(title=frame.title, iconImage=images/system-lock-screen.png):
    - JMenuBar:
        - JMenu(name=fileMenu,text=menu.file):
            - JMenuItem(name=newMenu, text="New file", onAction=onFileNew)
            - JMenuItem(name=openMenu, text="Open File", onAction=onFileOpen)
            - JSeparator()
            - JMenuItem(name=exitMenu, text="Exit", onAction=exit)

и читать проще чем xml

Реализовано здесь:
code.google.com/p/javabuilders/
там еще много вкусного
Спасибо за ссылку. Интересная альтернатива, почитаю на досуге.
Only those users with full accounts are able to leave comments. Log in, please.