ExtUI DSL

Email from Siegfried Puchbauer -

I was thinking about the ext ui plugin lately. I would like to start the plugin from the scratch, because the code is not very clean and there are many things that can be made better.

One of the main ideas is to provide a new artefact type for the ext-ui configuration of a domain class, that could look smth like:

// Ext Ui Configuration for Domainclass Book


class BookUi {


    // Configuration for the Fields of the Domainclass
    static fields = {

        title()
        author()

        description(widget: 'textarea', configOptions: [ grow: true ], filter: false)

        genre(widget: 'combo', configOptions: [ forceSelection: true ])
        releaseDate(dateFormat: 'y-m-d')

        dateCreated(dateFormat: 'y-m-d H:i:s', hidden: true, editable: false)

        lastUpdated(dateFormat: 'y-m-d H:i:s', hidden: true, editable: false)

    }

    static defaultSort = [ field: "title", dir: "asc" ]


    // I18n Messages that get parsed with ConfigSlurper

    static messages = {


        label.default = "Book"

        label.plural = "Books"


        title.label = "Title"
        author.label = "Author"

        releaseDate.label = "Release Date"
        dateCreated.label
 = "Created on"
        lastUpdated.label = "Last Update"

        genre.label = "Genre"
        genre.option."Science Fiction" = "Science Fiction"

        genre.option."Fantasy" = "Fantasy"


        lang.de {

            label.default = "Buch"
            label.plural
 = "Bücher"


            title.label = "Titel"
            author.label = "Autor"

            releaseDate.label = "Erscheinungsdatum"

dateCreated.label = "Erstellt am"
            lastUpdated.label = "Letzte Änderung"

            genre.label = "Genre"
            genre.option
."Science Fiction" = "Science Fiction"
            genre.option."Fantasy" = "Fantasie"

        }


        lang.fr {

            //..
        }


    }


    // Method for providing remote combobox lookup for domainclass associations

    def find(def queryParams) {
        return Book.findByTitleLike
("$queryParams.q%")
    }


}


class Book {


    static constraints = {
        title()

        author()
        releaseDate()

        genre( nullable: false, blank: false, inList: ['Science Fiction','Fantasy','...'] )
    }


    String title

    Author author // 1 to 1

    Date releaseDate


    String genre


    Date dateCreated
    Date lastUpdated


}

I also want to provide a fully functional one-many and many-many management interface (in a seperate tab of the edit/create dialog for each association) and the filter functionallity of the grid filter plugin (http://extjs.com/blog/2007/11/26/extended-filtering-using-the-grid-filter-plugin/).

Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.