At 09:13 AM 3/22/2002 -0800, Michael Cummings wrote: >Stephen Adkins <[EMAIL PROTECTED]> wrote: .... >> I agree in general that the UI's may need to be >> tremendously >> different for different user agents. However, at >> some logical >> level in the application design, they will be the >> same. > >And that's where I'm going from. I admit freely that >even if my idea pans out, it won't be as robust as >coding directly for one of the gui types out there. >But they do all have the basics in common, and that's >what I want to work from. My idea (not sure if I >explained it too clearly before) is to be able to have >a very pluggable application so that at a single >switch you can demo in a variety of interface types. >Maybe I'm being a little naive here - hence my desire >to play a little on my own for a while. > >Thanks for the feedback, and if you can send me any >"mulling" information about how to fit this into the >P5EE framework I'd appreciate it (just not willing to >commit myself before I can at least get a basic proof >of concept together).
Hi, These are my thoughts on how to do this, building on P5EEx::Blue. Imagine three user agents: web browser, WAP phone, and Gtk application. (I don't know too much about WAP, but I imagine that it is similar to HTTP.) We would have three types of Contexts. P5EEx::Blue::Context::CGI - simple context of app from web browser P5EEx::Blue::Context::Modperl - better context of app from web browser P5EEx::Blue::Context::WAP - context of app from WAP phone P5EEx::Blue::Context::Gtk - context of Gtk app The P5EEx::Blue::P5EE->context() method is responsible to sense the environment in which it is invoked and determine which Context class to instantiate. The specific Context decides where and how to get Config information and what is the default Widget to begin with. Your application is simply a widget. That widget is made up of other widgets. The demo reporting application I have started is simply an AppFrame HTML widget. Based on events processed by the AppFrame widget, it decides which other widgets to display within it. The following Widgets exist in some degree of completion. Widget Widget::HTML Widget::HTML::AppFrame Widget::HTML::DataTable Widget::HTML::HierView Widget::HTML::TreeView Widget::HTML::SelectorView Widget::HTML::Template Widget::HTML::RepositoryEditor Widget::HTML::Button Widget::HTML::Checkbox Widget::HTML::DateDropDowns Widget::HTML::DateField Widget::HTML::Element Widget::HTML::ImageButton Widget::HTML::Label Widget::HTML::Menu Widget::HTML::NewWidget Widget::HTML::Select Widget::HTML::Stylizable Widget::HTML::StylizableContainer Widget::HTML::TextField Widget::HTML::Toolbar Widget::HTML::ValidatedTextField Widget::Template I would follow a similar approach for Gtk and WAP widgets. Widget::Gtk::DataTable Widget::WAP::DataTable ... or something like that. Stephen