The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

HTML::GUI::widget - Create and control GUI for web application

VERSION

Version 0.01

WIDGET

base class for HTML widgets

PUBLIC METHODS

new

   Parameters :
      params : hash ref : Contains the properties of the widget :
                                -type : text, select, checkbox
                                -value : the value of the widget
                                -id : the id of the widget (mandatory)
                                -display : if false, the fied has the propertie style="display:none"
                                -constraints : array ref of contraints names
                                -label : text associated with the fiel
                                -title : title to display when the mouse cursor is over the widget
                                -class : css class to associate with the widget
                                -disabled : the widget is disabled or not

   Return : 
      

   Description : 
      create a new html widget.
      It can be feed with data manually or automatically with a hash.

FACTORY

 instantiante any widget previously serialized

instantiate

  Create widgets from the data structure $data
        This is a class method so it should be use like this :
                                HTML::GUI::widget->instantiate($myString)

  Parameters :
          -$data : the data structure which describe the widgets 
                -$path : the path (used to name the screen objects)

        Return :
                a widget or undef if the $data is not correct

instantiateFromYAML

  Instantiante a widget from a yaml string
        This is a class method so it should be use like this :
                                HTML::GUI::widget->instantiateFromYAML($myString)

        parameters :
        - $class : the className
        - $yamlString : the yaml string describing the widget
        - $path : the path (used to name the screen objects)

        returns :
        -the new widget or undef if the yaml does not describe a widget

setParent

   Return : 
                                nothing

   Description : 
                                set the reference to the parent of the widget in the widget tree

top

   Return : 
     the root of the widget tree or itself if the widget doesn't belong to 
                 any container

setRootDirectory

   Description : 
                                Define the root Directory of the screen definitions

getRootAncestor

   Description : 
      search the root of the current widget tree.

   Return : 
      The root object of the current tree 

getHtml

   Parameters :

   Return : 
      string

   Description : 
      Return the html of the widget.

getId

   Return : 
                                string  

   Description : 
      return the id of the widget.

getIds

   Return : 
                                array

   Description : 
      return an array of the ids of the widget. 
                        For simple widget, it's the same thing as getId
                        but it's different for container which can have many widgets.

getTempId

  Return a new widget id who is unique for the current screen.

getElementById

   Parameters :
      id : string : id of the object to find.

   Description : 
                                return the widget whose id is $id or undef if no object has this id

getStyleContent

   Description : 
     return the content of the html 'style' attribute
   Parameters :
      style : hashref : reference to a hash containing all styles attributs ; if not defined, the function use $self->style to generate a html content

setProp

   Parameters :
      params : hash ref : defines params value

   Return : 
      

   Description : 
      

getProp

   Parameters :
      $propName : the name of the property we want to read

   Return : 
                   - the value of the property if it exists
                         - undef if the property doesn't exists

getDefinitionData

  This method is the miror of the "new" method it generate a data structure that defines the widget, calling the "new" function with this hash ref will create the same widget. It is usefull for serialing a widget.
  With no parameters it works for a generic widget, but it is possible to specify paramters in order to specialise the behavior for a particular class.
        The expression "definition data" means the data that are specified when calling the 'new' function. Exemple :

my $definitionData = {id => "textObject", value=> '2'};

my $textInputWidget = HTML::GUI::text->new($definitionData);

  Parameters :
                - $paramPublicProp : the hash to feed with the public properties, if undef a new hash is created
                - $paramDefaultValue : an ARRAY ref containing a list of the default values (if a propertie is set to a default value, il is not specified as a "definition data"), if undef the default values of generic widgets is used
                - $paramPublicPropList : the list of properties that can be "definition data", if undef the list of public properties of a generic widget is used 

  Return :
                - a ref to the hash that define the public properties of the widget

serializeToYAML

                return a string describing the current widget in YAML format

writeToFile

  write the seralization of the current objet into the file $fileName.
        Currently, only the YAML is available, so $fileName MUST be like "*.yaml"
        Parameters :
         - $fileName : the name of the file to write into
  returns :
         - 1 if the operation terminates normally
         - 0 if a problem occurs

instantiateFromFile

  Instantiate widgets from a file
        Currently, only the YAML format is available, so $fileName MUST be like "*.yaml"
        Parameters :
         - $fileName : the name of the file to read
         - $baseDir (optional) : the base Directory (this path is added befaor $fileName 
                                                                                                                to effectively locate the file on the filesystem)
  returns :
         - the widgets object newly created if the operation terminates normally
         - undef if a problem occurs

clone

   Parameters :
      params : hash ref : params to overload the params of the current objet (changing the id is a good idea)

   Return : 
      widget

   Description : 
      

error

   Parameters :
      type : string : Visibility of the error (pub/priv)
      params :  hashref : params of the error
   Description :
                 record one error in the current objet

printTime

   Parameters :
      $time : string : a value returned by the function time
   Description :
                  return a human readable string of the date $time

dumpStack

   Parameters :
      stackName : string : name of the stack to convert to string
   Description :
                  return a human readable string of the stack $stackName

getCurrentStack

   Description :
                  return a array of the current stack

alert

   Description :
                  store an alert message in the current objet 

debug

   Parameters :
      message : string : message to debug
   Description :
                  record one debug in the current objet

getLabel

   Description :
                  return the label of the current obj

getLabelHtml

   Description :
                  return the html of the label of the current obj
                        If the label is a void string, return ''

METHODS FOR SUBCLASSING

PRIVATE METHODS

getPubPropHash

   Returns :
      propHash : hash : a hash containing the value '1' pour each public propertie

getPath

   Return : 
      a string containing the actual path of the module

validate

   Description :
                  All widgets are OK by default. The input widgets have custom 
                        validate function to implements constraints.

   Return : 
      always 1 

getValueHash

                Description : 
                                Default method for all non-input and non-container widgets
                Return : 
                        undef

fired

         Parameters :
                 $params : the hash ref containing the POST key-value pairs.

   Decription :
                this function aims to be specialized for buttons.

   Returns :
      - true if the current object was fired
                        - false otherwise

getNodeSession

   Decription :
                 return a hash ref to the session. This is a low level API to
                 manage multiple user session in multiple windows.
                 This function MUST be refined by the choosen engine.

   Returns :
      - a hash ref to the session corresponding to the user agent cookie
                        - a void hash ref if no session can be found

getSession

   Decription :
                 return a hash ref to the session corresponding to one window of the browser. If a user opens two windows of the same brower, he will need to connect two times, getSession will return two different sessions.
                 This method MUST be implemented by the engine

   Returns :
      - a hash ref to the session corresponding to the user agent cookie
                        - a void hash ref if no session can be found

getFunctionFromName

                Description :
                                Find the function whose name is $functionName 
                                If the module of the function not loaded, it will be loaded automatically.

                Returns :
                                - a ref to the function whose name is $functionName if it exists
                                - undef if no function of this name exists

AUTHOR

Jean-Christian Hassler, <jhassler at free.fr>

BUGS

Please report any bugs or feature requests to bug-gui-libhtml-screen at rt.cpan.org, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=HTML-GUI. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.

SUPPORT

You can find documentation for this module with the perldoc command.

    perldoc HTML::GUI::widget

You can also look for information at:

ACKNOWLEDGEMENTS

COPYRIGHT & LICENSE

Copyright 2007 Jean-Christian Hassler, all rights reserved.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.