File: n_svc_dropdown.sru
Size: 8468
Date: Mon, 07 Apr 2008 21:31:45 +0200
$PBExportHeader$n_svc_dropdown.sru
$PBExportComments$Dropdown service
forward
global type n_svc_dropdown from n_svc_base
end type
end forward

global type n_svc_dropdown from n_svc_base
end type
global n_svc_dropdown n_svc_dropdown

type variables
Protected:

CONSTANT string DDSVC = "DDSVC"
end variables

forward prototypes
public function integer of_showdropdown (ref n_svc_mgr anv_svc, readonly u_dw_form adw, readonly long al_row, readonly string as_colname, ref n_base_dropdown anv_dd)
public subroutine of_dropdowndatetime (ref n_svc_mgr anv_svc, readonly u_dw_form adw)
public subroutine of_setdropdownservice (ref n_svc_mgr anv_svc, readonly u_dw_form adw, readonly string as_colname, readonly string as_svcname)
protected subroutine of_makedropdown (ref n_svc_mgr anv_svc, readonly u_dw_form adw, readonly string as_col, readonly boolean ab_editable)
public subroutine of_initdropdownservices (ref n_svc_mgr anv_svc, readonly u_dw_form adw)
public function boolean of_hasdropdownservice (ref n_svc_mgr anv_svc, readonly u_dw_form adw, readonly string as_colname, ref string as_svcname)
public function integer of_showdropdown (ref n_base_dropdown anv_dd, readonly string as_classname, readonly powerobject apo_parent, readonly string as_notificationevent, readonly any aa_initvalue, readonly integer ai_x, readonly integer ai_y)
public function integer of_showdropdowntoolbar (readonly u_toolbar auo_toolbar, ref n_base_dropdown anv_dd, readonly string as_classname, readonly powerobject apo_parent, readonly string as_notificationevent, readonly any aa_initvalue, readonly integer ai_x, readonly integer ai_y)
public function integer of_showdropdownbelow (ref n_base_dropdown anv_dd, readonly string as_classname, readonly powerobject apo_parent, readonly string as_notificationevent, readonly any aa_initvalue)
public function integer of_showdropdowntoolbar (readonly u_dwtoolbar auo_toolbar, ref n_base_dropdown anv_dd, readonly string as_classname, readonly powerobject apo_parent, readonly string as_notificationevent, readonly any aa_initvalue, readonly integer ai_x, readonly integer ai_y)
end prototypes

public function integer of_showdropdown (ref n_svc_mgr anv_svc, readonly u_dw_form adw, readonly long al_row, readonly string as_colname, ref n_base_dropdown anv_dd);string ls_svc

IF NOT of_hasdropdownservice(anv_svc, adw, as_colname, ls_svc) THEN &
   RETURN CRet.NO_ACTION
   
TRY
   IF ISVALID(anv_dd) THEN DESTROY anv_dd
   anv_dd = CREATE USING ls_svc
   anv_dd.of_ShowDropdown(adw, al_row, as_colname)
   Message.Processed = TRUE
   RETURN CRet.SUCCESS
CATCH (RuntimeError ex)
   RETURN CRet.FAILURE
END TRY


end function

public subroutine of_dropdowndatetime (ref n_svc_mgr anv_svc, readonly u_dw_form adw);long ll_count, n
n_svc_isempty lnv_check
n_svc_dw_form lnv_dw
n_svc_format lnv_format
string ls_cols[], ls_type, ls_keyword

anv_svc.of_loadsvc(lnv_check, CSvc.ISEMPTY)
anv_svc.of_loadsvc(lnv_format, CSvc.FORMAT)
anv_svc.of_loadsvc(lnv_dw, "n_svc_dw_form")

TRY
   ll_count = lnv_dw.of_getvisiblecolumns(anv_svc, adw, ls_cols)

   FOR n = 1 to ll_count
      //skip no tab order
      IF lower(adw.Describe(ls_cols[n] + ".Tabsequence")) = "0" THEN CONTINUE
      //skip idsplay only
      IF lower(adw.Describe(ls_cols[n] + ".Edit.DisplayOnly")) = "yes" THEN CONTINUE

      ls_type = lnv_dw.of_getcolumndatatype(adw, ls_cols[n])
      CHOOSE CASE ls_type
         //dates
         CASE CDWDataType.DATE, CDWDataType.DATETIME
            this.of_setdropdownservice(anv_svc, adw, ls_cols[n], CDropdown.CALENDAR)
            //set format
//          CHOOSE CASE ls_type
//             CASE CDWDataType.DATE
//                adw.Modify(ls_cols[n] + '.Format="' + lnv_format.of_GetDateFormat() + '"' )
//             CASE CDWDataType.DATETIME
//                adw.Modify(ls_cols[n] + '.Format="' + lnv_format.of_GetDateTimeFormat() + '"' )
//          END CHOOSE
         //time
         CASE CDWDataType.TIME
            this.of_setdropdownservice(anv_svc, adw, ls_cols[n], CDropdown.TIME)
            adw.Modify(ls_cols[n] + '.Format="' + lnv_format.of_GetTimeFormat() + '"' )
      END CHOOSE
   NEXT
CATCH (RuntimeError ex)
   //swallow
END TRY
end subroutine

public subroutine of_setdropdownservice (ref n_svc_mgr anv_svc, readonly u_dw_form adw, readonly string as_colname, readonly string as_svcname);string ls_keyword
n_svc_dw_form lnv_dw
n_svc_isempty lnv_check

anv_svc.of_LoadSvc(lnv_dw, "n_svc_dw_form")
anv_svc.of_LoadSvc(lnv_check, CSvc.ISEMPTY)

ls_keyword = lnv_dw.of_GetTagKeyword(anv_svc, adw, as_colname, DDSVC)
IF NOT lnv_check.of_IsEmpty(ls_keyword) THEN
   ls_keyword += ";"
ELSE
   ls_keyword = ""
END IF
ls_keyword += DDSVC + "=" + as_svcname
adw.Modify(as_colname + '.Tag="' + ls_keyword + '"')
end subroutine

protected subroutine of_makedropdown (ref n_svc_mgr anv_svc, readonly u_dw_form adw, readonly string as_col, readonly boolean ab_editable);string ls_mod, ls_required

ls_required = lower(adw.Describe(as_col + ".Edit.Required"))

ls_mod = as_col + ".ddlb.UseAsBorder=yes " + as_col + ".ddlb.Required=" + ls_required 
IF ab_editable THEN ls_mod += " " + as_col + ".ddlb.AllowEdit=yes"
adw.Modify(ls_mod)
end subroutine

public subroutine of_initdropdownservices (ref n_svc_mgr anv_svc, readonly u_dw_form adw);long ll_count, n
string ls_cols[], ls_svc
n_svc_dw_form lnv_dw

anv_svc.of_LoadSvc(lnv_dw, "n_svc_dw_form")

TRY
   ll_count = lnv_dw.of_getvisiblecolumns(anv_svc, adw, ls_cols)
CATCH (RuntimeError ex)
   //swallow
END TRY

FOR n = 1 to ll_count
   IF this.of_hasdropdownservice(anv_svc, adw, ls_cols[n], ls_svc) THEN
      this.of_makedropdown(anv_svc, adw, ls_cols[n], TRUE)
   END IF
NEXT
end subroutine

public function boolean of_hasdropdownservice (ref n_svc_mgr anv_svc, readonly u_dw_form adw, readonly string as_colname, ref string as_svcname);n_svc_dw_form lnv_dw
n_svc_isempty lnv_check

anv_svc.of_LoadSvc(lnv_dw, "n_svc_dw_form")
as_svcname = lnv_dw.of_GetTagkeyword(anv_svc, adw, as_colname, DDSVC)

anv_svc.of_LoadSvc(lnv_check, CSvc.ISEMPTY)

RETURN NOT lnv_check.of_IsEmpty(as_svcname)
end function

public function integer of_showdropdown (ref n_base_dropdown anv_dd, readonly string as_classname, readonly powerobject apo_parent, readonly string as_notificationevent, readonly any aa_initvalue, readonly integer ai_x, readonly integer ai_y);string ls_svc

TRY
   IF ISVALID(anv_dd) THEN DESTROY anv_dd
   anv_dd = CREATE USING as_classname
   anv_dd.of_ShowDropdown(apo_parent, as_notificationevent, aa_initvalue, ai_x, ai_y)
   Message.Processed = TRUE
   RETURN CRet.SUCCESS
CATCH (RuntimeError ex)
   RETURN CRet.FAILURE
END TRY


end function

public function integer of_showdropdowntoolbar (readonly u_toolbar auo_toolbar, ref n_base_dropdown anv_dd, readonly string as_classname, readonly powerobject apo_parent, readonly string as_notificationevent, readonly any aa_initvalue, readonly integer ai_x, readonly integer ai_y);string ls_svc

TRY
   IF ISVALID(anv_dd) THEN DESTROY anv_dd
   anv_dd = CREATE USING as_classname
   anv_dd.of_ShowDropdownToolbar(auo_toolbar, apo_parent, as_notificationevent, aa_initvalue, ai_x, ai_y)
   Message.Processed = TRUE
   RETURN CRet.SUCCESS
CATCH (RuntimeError ex)
   RETURN CRet.FAILURE
END TRY


end function

public function integer of_showdropdownbelow (ref n_base_dropdown anv_dd, readonly string as_classname, readonly powerobject apo_parent, readonly string as_notificationevent, readonly any aa_initvalue);string ls_svc

TRY
   IF ISVALID(anv_dd) THEN DESTROY anv_dd
   anv_dd = CREATE USING as_classname
   anv_dd.of_ShowDropdownBelow(apo_parent, as_notificationevent, aa_initvalue)
   Message.Processed = TRUE
   RETURN CRet.SUCCESS
CATCH (RuntimeError ex)
   RETURN CRet.FAILURE
END TRY
end function

public function integer of_showdropdowntoolbar (readonly u_dwtoolbar auo_toolbar, ref n_base_dropdown anv_dd, readonly string as_classname, readonly powerobject apo_parent, readonly string as_notificationevent, readonly any aa_initvalue, readonly integer ai_x, readonly integer ai_y);string ls_svc

TRY
   IF ISVALID(anv_dd) THEN DESTROY anv_dd
   anv_dd = CREATE USING as_classname
   anv_dd.of_ShowDropdownToolbar(auo_toolbar, apo_parent, as_notificationevent, aa_initvalue, ai_x, ai_y)
   Message.Processed = TRUE
   RETURN CRet.SUCCESS
CATCH (RuntimeError ex)
   RETURN CRet.FAILURE
END TRY


end function

on n_svc_dropdown.create
call super::create
end on

on n_svc_dropdown.destroy
call super::destroy
end on