Login   Register  
PHP Classes
elePHPant
Icontem

File: hnwb_ListView/examples/hnwb_ListView.example_3.phpw

Recommend this page to a friend!
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  >  Download  
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
Author: By
Last change: x
Date: 7 years ago
Size: 9,087 bytes
 

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;
}

?>