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


Reply via email to