PHP Classes
Icontem

File: hnwb_ListView/examples/hnwb_ListView.example_3.phpw


  Search   All class groups All class groups   Latest entries Latest entries   Top 10 charts Top 10 charts   Newsletter Newsletter   Blog Blog   Forums Forums   Help FAQ Help FAQ  
  Login   Register  
Recommend this page to a friend! ReTweet ReTweet Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of Horst Nogajski  >  hnwb_ListView for WinBinder  >  hnwb_ListView/examples/hnwb_ListView.example_3.phpw  
File: hnwb_ListView/examples/hnwb_ListView.example_3.phpw
Role: Example script
Content type: text/plain
Description: advanced Example App, using 2 ListViews with Configurator-Windows and Buttons, one with customized Buttons
Class: hnwb_ListView for WinBinder
Extend the WinBinder ListView control
 

Contents

Class file image Download
<?PHP
/*****************************************************************************
  | @script_type -  PHP-WinBinder
  | @scriptname  -  hnwb_ListView.example.phpw
  | @version     -  1.0
  | -------------------------------------------------------------------------
  | @author      -  Horst Nogajski <coding@nogajski.de>
  | @copyright   -  (c) 1999 - 2007
  | @licence     -  LGPL
  | -------------------------------------------------------------------------
  | $Source: /WINBINDER/hnwb_ListViewClass/hnwb_ListView.example_3.phpw,v $
  | $Id: hnwb_ListView.example_3.phpw,v 1.3 2007/01/04 22:21:42 horst Exp $
 ****************************************************************************/



include('config.php');
define('APPNAME'basename__FILE__ ));



//------------------------------------------------------------------------------


#--> STEP 1:
    // define ID-Constants for your ListViews
    
if(!defined('IDC_LISTVIEW_1')) define('IDC_LISTVIEW_1'1001);
    if(!
defined('IDC_LISTVIEW_2')) define('IDC_LISTVIEW_2'1002);



#--> STEP 2:
    // Create window with: WBC_NOTIFY, WBC_MOUSEMOVE | WBC_HEADERSEL !!!
    
$winmain wb_create_window(nullAppWindowAPPNAMEWBC_CENTERWBC_CENTER,
                
540449WBC_NOTIFYWBC_MOUSEMOVE WBC_HEADERSEL );


#--> STEP 3:
    // create a global INI-Object
    
$inifile str_replace('.phpw',''__FILE__).'.ini';
    
$ini = new hn_ini($inifile,TRUE,TRUE);



#--> STEP 4:
    //
    // define a customized Button-CLassExtension for the first ListView:
    // 1):
    //     define the ButtonLabels in Array $LABELS
    // 2):
    //     define the Actions for the Buttons in Method Button_Event_Handler()
    // 3):
    //     define enabled/disabled states in Method display_Buttons()
    //
class My_ListView_with_Buttons extends hnwb_ListView_Buttons
{

    
// Button-Texts
    
var $LABELS = array('copy selected','move selected','copy checked','move checked');


    
// we create this as a Reference-Handle to the TargetListView, because we
    // want copy DataRows from the first to the second ListView
    
var $lv2 null;


    function 
My_ListView_with_Buttons($ini=null$Lines=TRUE$CheckBoxes=TRUE$IniSectionPrefix='')
    {
        
// CALL THE PARENT CONSTRUCTOR
        
$this->hnwb_ListView_Buttons($ini$Lines$CheckBoxes$IniSectionPrefix);
    }


    function 
Button_Event_Handler($id)
    {
        switch(
$id)
        {
            case 
$this->Button_ID_first:
                
$data $this->Data_GET(ID_LV_DATATYPE_SELECTEDFALSE);
                
$this->lv2->Data_PUT($dataTRUE);
                unset(
$data);
                break;

            case 
$this->Button_ID_first 1:
                
$data $this->Data_GET(ID_LV_DATATYPE_SELECTEDFALSE);
                
$this->Data_DELETE(ID_LV_DATATYPE_SELECTED);
                
$this->lv2->Data_PUT($dataTRUE);
                unset(
$data);
                break;

            case 
$this->Button_ID_first 2:
                
$data $this->Data_GET(ID_LV_DATATYPE_CHECKEDFALSE);
                
$this->lv2->Data_PUT($dataTRUE);
                unset(
$data);
                break;

            case 
$this->Button_ID_first 3:
                
$data $this->Data_GET(ID_LV_DATATYPE_CHECKEDFALSE);
                
$this->Data_DELETE(ID_LV_DATATYPE_CHECKED);
                
$this->lv2->Data_PUT($dataTRUE);
                unset(
$data);
                break;
        }
        
$this->display_Buttons(FALSE);
    }


    function 
display_Buttons($on=TRUE)
    {
        
// THIS PART IS REQUIRED:
        
for($i=$this->Button_ID_first;$i<=$this->Button_ID_last;$i++)
        {
            
wb_set_visible($this->bt_ctrl{$i},$on);
        }
        
// END REQUIRED PART

        // THE FOLLOWING PARTS CAN BE DEFINED TO SUITE YOUR NEEDS:
        // Buttons should only enabled if there Actions make sence depending
        // to the current ListViewState
        
if($this->Count_Selected()>0)
        {
            
wb_set_enabled($this->bt_ctrl{$this->Button_ID_first},TRUE);
            
wb_set_enabled($this->bt_ctrl{($this->Button_ID_first +1)},TRUE);
        }
        else
        {
            
wb_set_enabled($this->bt_ctrl{$this->Button_ID_first},FALSE);
            
wb_set_enabled($this->bt_ctrl{($this->Button_ID_first +1)},FALSE);
        }

        if(
$this->has_CheckBoxes() && $this->Count_Checked()>0)
        {
            
wb_set_enabled($this->bt_ctrl{($this->Button_ID_first +2)},TRUE);
            
wb_set_enabled($this->bt_ctrl{($this->Button_ID_first +3)},TRUE);
        }
        else
        {
            
wb_set_enabled($this->bt_ctrl{($this->Button_ID_first +2)},FALSE);
            
wb_set_enabled($this->bt_ctrl{($this->Button_ID_first +3)},FALSE);
        }
    }

// END class My_ListView_with_Buttons


#--> STEP 5
    // get Data for the Listview (e.g. from MySQL-Query)
    
$data example_data();




#--> STEP 6, CREATE THE SECOND LISTVIEW FIRST   - (use the standard Buttons)
    
$lv2 = new hnwb_ListView_Buttons($ini,TRUE,TRUE);

    
// define first ID for the Buttons
    
$lv2->define_Start_ID(9000);

    
// create the Control
    
$lv2->ctrl wb_create_control($winmainListView''10250511145IDC_LISTVIEW_2WBC_VISIBLE WBC_ENABLED WBC_SORT WBC_LINES WBC_CHECKBOXES00);

    
// setup the ini-object, (ATTENTION: THIS MUST BE CALLED DIRECTLY AFTER THE CONTROL IS CREATED)
    
$lv2->initialize_ini();

    
// use AutoConfigure for the Headernames without Uniqe-IDs
    
$lv2->set_ASSOC_AUTO_Column_Header($data);

    
// finally setup the enhanced Control, (ATTENTION: THIS MUST BE CALLED AFTER THE ColumnHeader ARE CREATED)
    
$lv2->initialize();




#--> STEP 7:
    // create a _CUSTOMIZED_ Object for the FIRST LISTVIEW:

    
$lv1 = new My_ListView_with_Buttons($ini,TRUE,TRUE);

    
// define first ID for the Buttons
    
$lv1->define_Start_ID(9010);

    
// create the Control
    
$lv1->ctrl wb_create_control($winmainListView''1015511195IDC_LISTVIEW_1WBC_VISIBLE WBC_ENABLED WBC_SORT WBC_LINES WBC_CHECKBOXES00);

    
// setup the ini-object, (ATTENTION: THIS MUST BE CALLED AFTER THE CONTROL IS CREATED)
    
$lv1->initialize_ini();

    
// put Reference to the Second ListView
    
$lv1->lv2 =& $lv2;

    
// use AutoConfigure for the Headernames and setup the listview to handle
    // data with Unique-ID's (uid-field = id)
    
$lv1->set_ASSOC_AUTO_Column_Header($data'id');

    
// finally setup the enhanced Control, (ATTENTION: THIS MUST BE CALLED AFTER THE ColumnHeader ARE CREATED)
    
$lv1->initialize();


    
$lv1->Data_PUT($data);



wb_set_handler($winmain"process_main");
wb_main_loop();



//-------------------------------------------------------------------- FUNCTIONS


function process_main($window$id$ctrl=0$lparam1=0$lparam2=0)
{

#--> STEP 8:
    // make the $LV_cfg and the ListView-ObjectHandlers global!
    
if(!isset($GLOBALS['LV_cfg'])) $GLOBALS['LV_cfg'] = null;
    global 
$lv1$lv2;


    switch(
$id)
    {


#--> STEP 9:
        // First Hook into the MainProcess-EventHandler,
        // with fallthrough ! (without break-command)

        
case IDDEFAULT:
            
$lv1->Event_Handler($window$id$ctrl$lparam1$lparam2$GLOBALS['LV_cfg']);
            
$lv2->Event_Handler($window$id$ctrl$lparam1$lparam2$GLOBALS['LV_cfg']);



#--> STEP 10:
        // For each ListView-ObjectHandler:
        // set a second Hook into the MainProcess-EventHandler,

        
case $lv1->get_ID():
            
$lv1->Event_Handler($window$id$ctrl$lparam1$lparam2$GLOBALS['LV_cfg']);
            break;

        case 
$lv2->get_ID():
            
$lv2->Event_Handler($window$id$ctrl$lparam1$lparam2$GLOBALS['LV_cfg']);
            break;



#--> STEP 11:
        // For each Button-Extended-ListView-ObjectHandler:
        // catch and proceed Button-Events

        
case $id >= $lv1->Button_ID_first && $id <= $lv1->Button_ID_last:
            
$lv1->Button_Event_Handler($id);
            break;

        case 
$id >= $lv2->Button_ID_first && $id <= $lv2->Button_ID_last:
            
$lv2->Button_Event_Handler($id);
            break;



#--> STEP 12:
        // For each ListView-ObjectHandler:
        // CleanUp at ProcessTermination

        
case IDCLOSE:
            
$GLOBALS['LV_cfg'] = null;
            unset(
$GLOBALS['LV_cfg']);

            
// CleanUp the SECOND LISTVIEW FIRST !!
            
$lv2->Destroy();
            
$lv2=null;
            unset(
$lv2);

            
$lv1->Destroy();
            
$lv1=null;
            unset(
$lv1);

            
wb_destroy_window($window);
            break;

    }

}


function 
example_data()
{
    
$data_src = array(
        array(
'company'=>'company',            'name'=>'doe',        'firstname'=>'john'),
        array(
'company'=>'',                'name'=>'doe',        'firstname'=>'john'),
        array(
'company'=>'ab ltd.',            'name'=>'doe',        'firstname'=>'john'),
        array(
'company'=>'de ltd.',            'name'=>'doe',        'firstname'=>'john'),
        array(
'company'=>'fg ltd.',            'name'=>'doe',        'firstname'=>'john'),
        array(
'company'=>'xy ltd.',            'name'=>'doe',        'firstname'=>'john'),
        array(
'company'=>'company',            'name'=>'wesson',    'firstname'=>'al'),
        array(
'company'=>'company',            'name'=>'baker',    'firstname'=>'barry'),
        array(
'company'=>'company',            'name'=>'butcher',    'firstname'=>'barry'),
        array(
'company'=>'company',            'name'=>'baker',    'firstname'=>'terry'),
        array(
'company'=>'xy ltd.',            'name'=>'patterson','firstname'=>'aldus'),
        array(
'company'=>'trade united',    'name'=>'hugley',    'firstname'=>'jenny')
    );
    
$data = array();
    
$uid 0;
    for(
$i=0;$i<3;$i++)
    {
        foreach(
$data_src as $d)
        {
            
$data[] = array_merge($d,array('id'=>$uid));
            
$uid++;
        }
    }
    return 
$data;
}

?>

 
  Advertise on this site Advertise on this site   Site map Site map   Statistics Statistics   Site tips Site tips   Privacy policy Privacy policy   Contact Contact  

For more information send a message to :
info at phpclasses dot org.
Copyright (c) Icontem 1999-2009 PHP Classes - PHP Class Scripts
  PHP Book Reviews - Reviews of books and other products