#include <tabapp.h>
#include <tabutil.h>
#include "batbbnp.h" 

////////////////////////////////////////////////////
// Classe per la gestione della Tabella di Ditta  //
// "Banche di presentazione"                      // 
////////////////////////////////////////////////////
class TBnp_table_app : public Tab_application
{
protected: 
  virtual bool user_destroy() ;
  virtual bool user_create() ;
  virtual void init_query_insert_mode(TMask& m) ;             
  virtual void init_insert_mode(TMask& m) ;
  virtual void init_query_mode (TMask&);   
  virtual int rewrite(const TMask& m);   
  virtual void print(void);                     
  static bool stampa_handler(TMask_field& f, KEY k); 
public:
  TBnp_table_app() {}
  virtual ~TBnp_table_app() {}
};

HIDDEN inline TBnp_table_app& app() { return (TBnp_table_app&) main_app();}


void TBnp_table_app::init_query_insert_mode(TMask& m) 
{       
  m.show(F_CODICEABI);
  m.show(F_CODICECAB);
  m.field(F_CODICEABI).check_type(CHECK_REQUIRED);    
  m.field(F_CODICECAB).check_type(CHECK_REQUIRED);
  m.hide(F_ABI);
  m.hide(F_CAB);  
  m.field(F_ABI).check_type(CHECK_NONE);    
  m.field(F_CAB).check_type(CHECK_NONE);
}        

void TBnp_table_app::init_insert_mode(TMask& m) 
{       
  m.show(F_CODICEABI);
  m.show(F_CODICECAB);
  m.field(F_CODICEABI).check_type(CHECK_REQUIRED);    
  m.field(F_CODICECAB).check_type(CHECK_REQUIRED); 
  m.hide(F_ABI);
  m.hide(F_CAB);     
  m.field(F_ABI).check_type(CHECK_NONE);    
  m.field(F_CAB).check_type(CHECK_NONE);
}

void TBnp_table_app::init_query_mode(TMask& m)
{
  Tab_application::init_query_mode(m);
  m.show(F_ABI); 
  m.show(F_CAB); 
  m.field(F_ABI).check_type(CHECK_REQUIRED);    
  m.field(F_CAB).check_type(CHECK_REQUIRED); 
  m.hide(F_CODICEABI);
  m.hide(F_CODICECAB); 
  m.field(F_CODICEABI).check_type(CHECK_NONE);    
  m.field(F_CODICECAB).check_type(CHECK_NONE); 
}

bool TBnp_table_app::user_create()
{
  Tab_application::user_create();
  const TString& name = get_tabname();
  TMask& mask = *get_mask();
  mask.set_handler(B_PRINT, stampa_handler); 
  return TRUE;
}

bool TBnp_table_app::user_destroy()
{
  return Tab_application::user_destroy();
}

int TBnp_table_app::rewrite(const TMask& m)
{
  return Tab_application::rewrite(m);
}

void TBnp_table_app::print()
{
  Tab_application::print();
}

bool TBnp_table_app::stampa_handler(TMask_field& f, KEY k)
{ 
  TMask &m = f.mask(); 
  if (k == K_SPACE)
     app().print();
  return TRUE;
}

int ef0700(int argc, char* argv[])
{
  TBnp_table_app a ;
  a.run(argc, argv, "Gestione Tabella");
  return 0;
}
