/**
 * Test issues related to SELECTION-LIST
 */
/**
 * Request user for an item text and append item to the end of the list
 */
DEFINE BUTTON bAddItem LABEL "Add item...".

/**
 * Reload the current item list without changing it
 */
DEFINE BUTTON bReloadItems LABEL "Reload items".

/**
 *
 */
DEFINE BUTTON bPrint LABEL "Print".
DEFINE VARIABLE bMultiple AS LOGICAL NO-UNDO VIEW-AS TOGGLE-BOX LABEL "Multiple selection".
DEFINE VARIABLE bScrollbarHorizontal AS LOGICAL NO-UNDO VIEW-AS TOGGLE-BOX LABEL "Scrollbar Horizontal".
DEFINE VARIABLE bScrollbarVertical AS LOGICAL NO-UNDO VIEW-AS TOGGLE-BOX LABEL "Scrollbar Vertical".

DEFINE VARIABLE listItems AS CHARACTER NO-UNDO.
listItems = "personeel,materieel,materiaal,dienst".

DEFINE FRAME hFrame 
   bAddItem AT COLUMN 5 ROW 10
   bMultiple AT COLUMN 5 ROW 12
   bPrint AT COLUMN 5 ROW 14
   bReloadItems AT COLUMN 5 ROW 16
   bScrollbarHorizontal AT COLUMN 5 ROW 18
   bScrollbarVertical AT COLUMN 5 ROW 20
   WITH
      FONT 4
      SCROLLABLE
      SIZE-PIXELS 600 BY 500.

DEFINE VARIABLE hList AS WIDGET-HANDLE NO-UNDO.
PROCEDURE createSelectionList .
   IF VALID-HANDLE(hList)
       THEN
      DELETE WIDGET hList.
   
   CREATE SELECTION-LIST hList
     ASSIGN FRAME                = FRAME hFrame:HANDLE
              X                  = 10
              Y                  = 10
              WIDTH-PIXELS       = 70
              SENSITIVE          = TRUE
              VISIBLE            = FALSE
              DELIMITER          = ',':U
              MULTIPLE           = bMultiple
              LIST-ITEMS         = listItems
              INNER-LINES        = 4
              SCROLLBAR-VERTICAL = bScrollbarVertical
              SCROLLBAR-HORIZONTAL = bScrollbarHorizontal
              TRIGGERS:
                 ON DEFAULT-ACTION
                    PERSISTENT RUN onDefaultActionSelectionList IN THIS-PROCEDURE.
                 ON LEFT-MOUSE-UP
                    PERSISTENT RUN onLeftMouseUpSelectionList IN THIS-PROCEDURE.
                 ON RIGHT-MOUSE-UP
                    PERSISTENT RUN onRightMouseUpSelectionList IN THIS-PROCEDURE.
                 ON LEFT-MOUSE-DOWN
                    PERSISTENT RUN onLeftMouseDownSelectionList IN THIS-PROCEDURE.
                 ON RIGHT-MOUSE-DOWN
                    PERSISTENT RUN onRightMouseDownSelectionList IN THIS-PROCEDURE.
                 ON LEAVE
                    PERSISTENT RUN onLeaveSelectionList IN THIS-PROCEDURE.
                 ON TAB
                    PERSISTENT RUN onTabSelectionList IN THIS-PROCEDURE.
                 ON BACK-TAB
                    PERSISTENT RUN onBackTabSelectionList IN THIS-PROCEDURE.
                 ON F7
                    PERSISTENT RUN onF7SelectionList IN THIS-PROCEDURE.
              END TRIGGERS.
              .
   hList:VISIBLE = TRUE.
END PROCEDURE.

RUN createSelectionList.
APPLY 'ENTRY' TO hList.

ENABLE ALL WITH FRAME hFrame.

ON CHOOSE OF bAddItem DO:
  DEFINE VARIABLE itemText AS CHARACTER FORMAT "x(64)" NO-UNDO.
  MESSAGE "New item text:" SET itemText.
  listItems = listItems + "," + itemText.
  hList:LIST-ITEMS = listItems.
END.

ON CHOOSE OF bReloadItems DO:
  hList:LIST-ITEMS = listItems.
END.

ON CHOOSE OF bPrint DO:
  MESSAGE hList:SCREEN-VALUE.
  MESSAGE hList:LIST-ITEMS.
END.

bMultiple:SCREEN-VALUE = "no".
ON VALUE-CHANGED OF bMultiple
DO:
   ASSIGN bMultiple.
   MESSAGE "multiple: " bMultiple.
   RUN createSelectionList.   
END.

bScrollbarHorizontal:SCREEN-VALUE = "no".
ON VALUE-CHANGED OF bScrollbarHorizontal
DO:
   ASSIGN bScrollbarHorizontal.
   RUN createSelectionList.   
END.

bScrollbarVertical:SCREEN-VALUE = "no".
ON VALUE-CHANGED OF bScrollbarVertical
DO:
   ASSIGN bScrollbarVertical.
   RUN createSelectionList.   
END.

PROCEDURE onDefaultActionSelectionList:
   MESSAGE "ON DEFAULT-ACTION".
END PROCEDURE.

PROCEDURE onLeftMouseUpSelectionList:
   MESSAGE "ON LEFT-MOUSE-UP".
END PROCEDURE.

PROCEDURE onRightMouseUpSelectionList:
   MESSAGE "ON RIGHT-MOUSE-UP".
END PROCEDURE.

PROCEDURE onLeftMouseDownSelectionList:
   MESSAGE "ON LEFT-MOUSE-DOWN".
END PROCEDURE.

PROCEDURE onRightMouseDownSelectionList:
   MESSAGE "ON RIGHT-MOUSE-DOWN".
END PROCEDURE.

PROCEDURE onLeaveSelectionList:
   MESSAGE "ON LEAVE".
END PROCEDURE.

PROCEDURE onTabSelectionList:
   MESSAGE "ON TAB".
END PROCEDURE.

PROCEDURE onBackTabSelectionList:
   MESSAGE "ON BACK-TAB".
END PROCEDURE.

PROCEDURE onF7SelectionList:
   MESSAGE "ON F7".
END PROCEDURE.

WAIT-FOR CLOSE OF THIS-PROCEDURE.
