#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);   
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();
  if (name.empty()) 
  {
    error_box("Specificare la tabella sulla linea di comando.");
    return FALSE;
  }
  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);
}

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