BBjGrid::setEnhancedSelectionModelEnabled

Description

In BBj 15.00 and higher, this method enables the Enhanced Selection Model scheme for the current grid.

Syntax

Return Value Method
void setEnhancedSelectionModelEnabled(boolean mode)

Parameters

Parameter Description
mode

Specifies whether or not to enable the Enhanced Selection Model. By default, mode is set to false.

true (1) = Enabled

false (0) = Disabled

Return Value

None.

Remarks

If enabled, the grid exclusively uses the Enhanced Selection Model. If disabled, the grid uses the Legacy Selection Model that emulates Java’s Default Selection Model for a grid. This call should be made immediately after declaration of a grid. This function will reset many of the existing settings and clear out any selections that exist in the grid. Although you can change the selection model at any time, its intention is to enable/disable the Enhanced Selection Model within the grid and once it is set, the user should not need to switch between modes.

Example

REM Set the multiple selection option on for a BBjGrid object
 
REM Obtain the instance of the BBjAPI object
LET myAPI!=BBjAPI()
 
REM Open the SysGui device
SYSGUI=UNT
OPEN (SYSGUI) "X0"
 
REM Obtain the instance of the BBjSysGui object
LET mySysGui!=myAPI!.getSysGui()
 
REM Create the main window and control objects
GOSUB CreateCalendar
 
REM Display the initial data
GOSUB DisplayMonth
 
REM Set the multiple selection option on for the calendar
Calendar!.setEnhancedSelectionModelEnabled(1)
Calendar!.setMultipleSelection(mySysGui!.TRUE)
 
REM Display the main window
MainWindow!.setVisible(mySysGui!.TRUE)
 
REM Register the CALLBACK routines
CALLBACK(ON_CLOSE,DoAppClose,CalendarContext)
 
REM Process Events
PROCESS_EVENTS
 
REM Callback routine called when the user closes the application window
DoAppClose:
REM RELEASE
RETURN
 
REM Subroutine called to display the days in the current selected month/year
DisplayMonth:
LET DayNum=0
LET FirstDayOfMonth=DayTable!.get(DATE(JUL(CurrentYear,CurrentMonth,1):"%Ds"))
LET DaysInMonth=FNDaysInMonth(CurrentYear,CurrentMonth)
MonthVector!.clear()
IF CurrentDay>DaysInMonth+1 THEN
     CurrentDay=DaysInMonth+1
FI
LET CurrentJul=JUL(CurrentYear,CurrentMonth,CurrentDay)
 
REM Week 0
FOR DayOfWeek=0 TO 6
     IF FirstDayOfMonth>DayOfWeek THEN
        LET Item$=STR(0:DayMask$)
     ELSE
        LET Item$=STR(DayNum+1:DayMask$)
        LET DayNum=DayNum+1
     FI
     MonthVector!.addItem(Item$)
NEXT DayOfWeek
 
REM Week 1-3
FOR Week=1 TO 3
     FOR DayOfWeek=0 TO 6
        LET Item$=STR(DayNum+1:DayMask$)
        LET DayNum=DayNum+1
     MonthVector!.addItem(Item$)
  NEXT DayOfWeek
NEXT Week
 
REM Week 4-5
FOR week=4 TO 5
     FOR DayOfWeek=0 TO 6
        IF DayNum>DaysInMonth THEN
           LET Item$=STR(0:DayMask$)
        ELSE
           LET Item$=STR(DayNum+1:DayMask$)
           LET DayNum=DayNum+1
        FI
        MonthVector!.addItem(Item$)
  NEXT DayOfWeek
NEXT week
 
REM Set the current information
 
Calendar!.setCellText(MonthVector!)
LET CurrRow=INT((FirstDayOfMonth+CurrentDay-1)/7)
LET CurrCol=MOD(FirstDayOfMonth+CurrentDay-1,7)
 
Calendar!.setSelectedCell(CurrRow,CurrCol)
LET CurrentMonthYear$=DATE(CurrentJul:"%Ml %Y")
CurrDate!.setText(CurrentMonthYear$)
Calendar!.setCellText(5,5," To")
Calendar!.setCellText(5,6,"day ")
 
Calendar!.setSelectedCell(5,6)
Calendar!.moveToNextCell()
 
print Calendar!.getSelectedRow()
print Calendar!.getSelectedColumn()
 
RETURN
 
REM Function called to return the number of days in the passed year and month
DEF FNDaysInMonth(fYear,fMonth)
REM calculate the number of days in a month - zero based
LET DaysInMonth=30
IF fMonth<>12 THEN
        LET DaysInMonth=NUM(DATE(JUL(fYear,fMonth+1,1)-1:"%D"))-1
FI
RETURN DaysInMonth
FNEND
 
REM Subroutine called to create the calendar
CreateCalendar:
REM Create the vector to hold month info
LET MonthVector!=mySysGui!.makeVector()
 
REM Create a java hash table to hold day names
LET DayTable!=new java.util.Hashtable()
 
REM Get standard date info from the STRING table
DIM DateInfo$:"Mask:C(32*=0),SM[12]:C(3*=0),M[12]:C(32*=0),SD[7]:C(3*=0),D[7]:C(32*=0)"
LET DateInfo$=STBL("!DATE")
 
REM Build the masks for the dates
LET dateMask$=DateInfo.Mask$
LET M=POS("%M"=dateMask$),dateMask$=dateMask$(1,M+1)+"l"+dateMask$(M+3)
LET M=POS("%Y"=dateMask$),dateMask$=dateMask$(1,M+1)+dateMask$(M+3)
WHILE POS("/"=dateMask$)
     LET M=POS("/"=dateMask$),dateMask$(M,1)=" "
WEND
 
REM Build the day table
FOR X=0 TO 6
     LET Item$=DateInfo.SD$[x+1]
     DayTable!.put(Item$,x)
NEXT X
 
REM Get current date info
LET CurrentDate$=DATE(CurrentJul:dateMask$)
LET CurrentMonthYear$=DATE(CurrentJul:"%Ml %Y")
LET CurrentDay=NUM(DATE(CurrentJul:"%Dz"))
LET CurrentMonth=NUM(DATE(CurrentJul:"%Mz"))
LET CurrentYear=NUM(DATE(CurrentJul:"%Y"))
 
REM Misc
LET TITLE$="BBjGrid"
LET DayMask$="##B"
LET CurrentJul=0,CalX=400,CalY=400
 
REM Get the next available context
LET CalendarContext=mySysGui!.getAvailableContext()
mySysGui!.setContext(CalendarContext)
 
REM Create the main window
LET MainWindow! = mySysGui!.addWindow(100,100,202,160,TITLE$,$00010013$)
 
REM Add the calendar (grid) to the main window
LET Calendar! = MainWindow!.addGrid(100,3,26,198,121)
 
REM Set the attributes of the grid
Calendar!.setGridEditable(1)
blueColor! = mySysGui!.makeColor(mySysGui!.BLUE)
Calendar!.setColumnHeaderForeColor(blueColor!)
Calendar!.setNumRows(6)
Calendar!.setRowHeight(20)
Calendar!.setNumColumns(7)
Calendar!.setMaxColumns(255)
Calendar!.setHasColumnHeader(mySysGui!.TRUE)
Calendar!.setVerticalLinesVisible(mySysGui!.TRUE)
Calendar!.setHorizontalLinesVisible(mySysGui!.TRUE)
Calendar!.setClientEdge(mySysGui!.TRUE)
Calendar!.setSelectionMode(Calendar!.GRID_SELECT_CELL)
 
REM Set the attributes for the grid's columns
FOR COL = 0 TO 6
     Calendar!.setColumnWidth(COL, 25)
     Calendar!.setColumnAlignment(COL, Calendar!.GRID_ALIGN_RIGHT)
     Calendar!.setColumnForeColor(COL, blueColor!)
NEXT COL
Calendar!.setColumnHeaderStyle(Calendar!.GRID_STYLE_BUTTON_UP)
 
REM Set the attributes for the grid's column headers
myVector! = mySysGui!.makeVector()
myVector!.addItem("S")
myVector!.addItem("M")
myVector!.addItem("T")
myVector!.addItem("W")
myVector!.addItem("T")
myVector!.addItem("F")
myVector!.addItem("S")
Calendar!.setColumnHeaderText(myVector!)
Calendar!.setColumnHeaderForeColor(blueColor!)
 
REM Set the attributes for the current date (static text control)
LET CurrDate! = MainWindow!.addStaticText(101,45,3,90,20,"")
CurrDate!.setClientEdge(mySysGui!.TRUE)
CurrDate!.setForeColor(blueColor!)

RETURN   

See Also

BBjAPI

BBjGrid::isEnhancedSelectionModelEnabled

BBjWindow

Enhanced Grid Selection Model

See the BBj Object Diagram for an illustration of the relationship between BBj Objects.