Added capital works blank section. Synced calling screen.
[capital-apms-progress.git] / sec / v-usgmem.w
blobaa88dfc4c42c05e722e9167d120e04dea446a3ec
1 &ANALYZE-SUSPEND _VERSION-NUMBER UIB_v8r12 GUI
2 &ANALYZE-RESUME
3 &Scoped-define WINDOW-NAME CURRENT-WINDOW
4 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS V-table-Win
5 /*------------------------------------------------------------------------
7 File:
9 Description: from VIEWER.W - Template for SmartViewer Objects
11 Input Parameters:
12 <none>
14 Output Parameters:
15 <none>
17 ------------------------------------------------------------------------*/
18 /* This .W file was created with the Progress UIB. */
19 /*----------------------------------------------------------------------*/
21 /* Create an unnamed pool to store all the widgets created
22 by this procedure. This is a good default which assures
23 that this procedure's triggers and internal procedures
24 will execute in this procedure's storage, and that proper
25 cleanup will occur on deletion of the procedure. */
27 CREATE WIDGET-POOL.
29 /* *************************** Definitions ************************** */
31 /* Parameters Definitions --- */
33 /* Local Variable Definitions --- */
35 DEF VAR last-id AS ROWID NO-UNDO.
36 DEF VAR this-win AS HANDLE NO-UNDO.
38 /* _UIB-CODE-BLOCK-END */
39 &ANALYZE-RESUME
42 &ANALYZE-SUSPEND _UIB-PREPROCESSOR-BLOCK
44 /* ******************** Preprocessor Definitions ******************** */
46 &Scoped-define PROCEDURE-TYPE SmartViewer
48 &Scoped-define ADM-SUPPORTED-LINKS Record-Source,Record-Target,TableIO-Target
50 /* Name of first Frame and/or Browse and/or first Query */
51 &Scoped-define FRAME-NAME F-Main
53 /* Standard List Definitions */
54 &Scoped-Define ENABLED-OBJECTS tgl_topmost sel_gavail btn_add sel_gcurr ~
55 btn_remove
56 &Scoped-Define DISPLAYED-OBJECTS tgl_topmost sel_gavail sel_gcurr
58 /* Custom List Definitions */
59 /* ADM-CREATE-FIELDS,ADM-ASSIGN-FIELDS,List-3,List-4,List-5,List-6 */
61 /* _UIB-PREPROCESSOR-BLOCK-END */
62 &ANALYZE-RESUME
65 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _XFTR "Foreign Keys" V-table-Win _INLINE
66 /* Actions: ? adm/support/keyedit.w ? ? ? */
67 /* STRUCTURED-DATA
68 <KEY-OBJECT>
69 THIS-PROCEDURE
70 </KEY-OBJECT>
71 <FOREIGN-KEYS>
72 UserName|y|y|TTPL.Usr.UserName
73 </FOREIGN-KEYS>
74 <EXECUTING-CODE>
75 **************************
76 * Set attributes related to FOREIGN KEYS
78 RUN set-attribute-list (
79 'Keys-Accepted = "UserName",
80 Keys-Supplied = "UserName"':U).
81 /**************************
82 </EXECUTING-CODE> */
83 /* _UIB-CODE-BLOCK-END */
84 &ANALYZE-RESUME
87 /* *********************** Control Definitions ********************** */
90 /* Definitions of the field level widgets */
91 DEFINE BUTTON btn_add
92 LABEL "&Add"
93 SIZE 10 BY 1.05
94 FONT 9.
96 DEFINE BUTTON btn_remove
97 LABEL "&Remove"
98 SIZE 10 BY 1.05
99 FONT 9.
101 DEFINE VARIABLE sel_gavail AS CHARACTER
102 VIEW-AS SELECTION-LIST MULTIPLE SCROLLBAR-VERTICAL
103 SIZE 25 BY 15.6
104 FONT 10 NO-UNDO.
106 DEFINE VARIABLE sel_gcurr AS CHARACTER
107 VIEW-AS SELECTION-LIST MULTIPLE SCROLLBAR-VERTICAL
108 SIZE 25 BY 15.6
109 FONT 10 NO-UNDO.
111 DEFINE VARIABLE tgl_topmost AS LOGICAL INITIAL no
112 LABEL "On Top ?"
113 VIEW-AS TOGGLE-BOX
114 SIZE 10 BY 1
115 FONT 10 NO-UNDO.
118 /* ************************ Frame Definitions *********************** */
120 DEFINE FRAME F-Main
121 tgl_topmost AT ROW 1 COL 54
122 sel_gavail AT ROW 2 COL 2 NO-LABEL
123 btn_add AT ROW 2 COL 28
124 sel_gcurr AT ROW 2 COL 39 NO-LABEL
125 btn_remove AT ROW 3.5 COL 28
126 "Available Groups" VIEW-AS TEXT
127 SIZE 12 BY 1 AT ROW 1 COL 2
128 FONT 10
129 "Current Groups" VIEW-AS TEXT
130 SIZE 11 BY 1 AT ROW 1 COL 39
131 FONT 10
132 WITH 1 DOWN NO-BOX KEEP-TAB-ORDER OVERLAY
133 SIDE-LABELS NO-UNDERLINE THREE-D
134 AT COL 1 ROW 1 SCROLLABLE .
137 /* *********************** Procedure Settings ************************ */
139 &ANALYZE-SUSPEND _PROCEDURE-SETTINGS
140 /* Settings for THIS-PROCEDURE
141 Type: SmartViewer
142 Allow: Basic,DB-Fields
143 Frames: 1
144 Add Fields to: EXTERNAL-TABLES
145 Other Settings: PERSISTENT-ONLY COMPILE
148 /* This procedure should always be RUN PERSISTENT. Report the error, */
149 /* then cleanup and return. */
150 IF NOT THIS-PROCEDURE:PERSISTENT THEN DO:
151 MESSAGE "{&FILE-NAME} should only be RUN PERSISTENT."
152 VIEW-AS ALERT-BOX ERROR BUTTONS OK.
153 RETURN.
154 END.
156 &ANALYZE-RESUME _END-PROCEDURE-SETTINGS
158 /* ************************* Create Window ************************** */
160 &ANALYZE-SUSPEND _CREATE-WINDOW
161 /* DESIGN Window definition (used by the UIB)
162 CREATE WINDOW V-table-Win ASSIGN
163 HEIGHT = 16.75
164 WIDTH = 63.57.
165 /* END WINDOW DEFINITION */
167 &ANALYZE-RESUME
170 /* *************** Runtime Attributes and UIB Settings ************** */
172 &ANALYZE-SUSPEND _RUN-TIME-ATTRIBUTES
173 /* SETTINGS FOR WINDOW V-table-Win
174 VISIBLE,,RUN-PERSISTENT */
175 /* SETTINGS FOR FRAME F-Main
176 NOT-VISIBLE Size-to-Fit */
177 ASSIGN
178 FRAME F-Main:SCROLLABLE = FALSE
179 FRAME F-Main:HIDDEN = TRUE.
181 /* _RUN-TIME-ATTRIBUTES-END */
182 &ANALYZE-RESUME
185 /* Setting information for Queries and Browse Widgets fields */
187 &ANALYZE-SUSPEND _QUERY-BLOCK FRAME F-Main
188 /* Query rebuild information for FRAME F-Main
189 _Options = "NO-LOCK"
190 _Query is NOT OPENED
191 */ /* FRAME F-Main */
192 &ANALYZE-RESUME
197 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _INCLUDED-LIB V-table-Win
198 /* ************************* Included-Libraries *********************** */
200 {src/adm/method/viewer.i}
201 {inc/method/m-mntvwr.i}
203 /* _UIB-CODE-BLOCK-END */
204 &ANALYZE-RESUME
209 /* ************************ Control Triggers ************************ */
211 &Scoped-define SELF-NAME btn_add
212 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL btn_add V-table-Win
213 ON CHOOSE OF btn_add IN FRAME F-Main /* Add */
215 RUN add-groups.
216 END.
218 /* _UIB-CODE-BLOCK-END */
219 &ANALYZE-RESUME
222 &Scoped-define SELF-NAME btn_remove
223 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL btn_remove V-table-Win
224 ON CHOOSE OF btn_remove IN FRAME F-Main /* Remove */
226 RUN remove-groups.
227 END.
229 /* _UIB-CODE-BLOCK-END */
230 &ANALYZE-RESUME
233 &Scoped-define SELF-NAME sel_gavail
234 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL sel_gavail V-table-Win
235 ON MOUSE-SELECT-DBLCLICK OF sel_gavail IN FRAME F-Main
237 APPLY 'CHOOSE':U TO btn_add .
238 END.
240 /* _UIB-CODE-BLOCK-END */
241 &ANALYZE-RESUME
244 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL sel_gavail V-table-Win
245 ON VALUE-CHANGED OF sel_gavail IN FRAME F-Main
247 RUN update-buttons.
248 END.
250 /* _UIB-CODE-BLOCK-END */
251 &ANALYZE-RESUME
254 &Scoped-define SELF-NAME sel_gcurr
255 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL sel_gcurr V-table-Win
256 ON MOUSE-SELECT-DBLCLICK OF sel_gcurr IN FRAME F-Main
258 APPLY 'CHOOSE':U TO btn_remove .
259 END.
261 /* _UIB-CODE-BLOCK-END */
262 &ANALYZE-RESUME
265 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL sel_gcurr V-table-Win
266 ON VALUE-CHANGED OF sel_gcurr IN FRAME F-Main
268 RUN update-buttons.
269 END.
271 /* _UIB-CODE-BLOCK-END */
272 &ANALYZE-RESUME
275 &Scoped-define SELF-NAME tgl_topmost
276 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL tgl_topmost V-table-Win
277 ON VALUE-CHANGED OF tgl_topmost IN FRAME F-Main /* On Top ? */
279 RUN top-most-changed.
280 END.
282 /* _UIB-CODE-BLOCK-END */
283 &ANALYZE-RESUME
286 &UNDEFINE SELF-NAME
288 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK V-table-Win
291 /* *************************** Main Block *************************** */
293 &IF DEFINED(UIB_IS_RUNNING) <> 0 &THEN
294 RUN dispatch IN THIS-PROCEDURE ('initialize':U).
295 &ENDIF
297 /************************ INTERNAL PROCEDURES ********************/
299 /* _UIB-CODE-BLOCK-END */
300 &ANALYZE-RESUME
303 /* ********************** Internal Procedures *********************** */
305 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE add-groups V-table-Win
306 PROCEDURE add-groups :
307 /*------------------------------------------------------------------------------
308 Purpose:
309 Parameters: <none>
310 Notes:
311 ------------------------------------------------------------------------------*/
313 DO WITH FRAME {&FRAME-NAME}:
315 IF NOT AVAILABLE Usr THEN RETURN.
317 RUN notify( 'set-busy, CONTAINER-SOURCE':U ).
319 DEF VAR i AS INT NO-UNDO.
320 DEF VAR sv AS CHAR NO-UNDO.
321 DEF VAR delim AS CHAR NO-UNDO.
323 sv = INPUT sel_gavail.
324 delim = sel_gavail:DELIMITER.
326 DO i = 1 TO NUM-ENTRIES( sv, delim ):
327 CREATE UsrGroupMember.
328 ASSIGN
329 UsrGroupMember.UserName = Usr.UserName
330 UsrGroupMember.GroupName = ENTRY( i, sv, delim ).
331 END.
333 RUN refresh-groups.
334 RUN notify( 'set-idle, CONTAINER-SOURCE':U ).
336 END.
338 END PROCEDURE.
340 /* _UIB-CODE-BLOCK-END */
341 &ANALYZE-RESUME
344 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE adm-find-using-key V-table-Win adm/support/_key-fnd.p
345 PROCEDURE adm-find-using-key :
346 /*------------------------------------------------------------------------------
347 Purpose: Finds the current record using the contents of
348 the 'Key-Name' and 'Key-Value' attributes.
349 Parameters: <none>
350 ------------------------------------------------------------------------------*/
351 DEF VAR key-value AS CHAR NO-UNDO.
352 DEF VAR row-avail-enabled AS LOGICAL NO-UNDO.
354 /* LOCK status on the find depends on FIELDS-ENABLED. */
355 RUN get-attribute ('FIELDS-ENABLED':U).
356 row-avail-enabled = (RETURN-VALUE eq 'yes':U).
357 /* Look up the current key-value. */
358 RUN get-attribute ('Key-Value':U).
359 key-value = RETURN-VALUE.
361 /* Find the current record using the current Key-Name. */
362 RUN get-attribute ('Key-Name':U).
363 CASE RETURN-VALUE:
364 WHEN 'UserName':U THEN
365 {src/adm/template/find-tbl.i
366 &TABLE = Usr
367 &WHERE = "WHERE Usr.UserName eq key-value"
369 END CASE.
371 END PROCEDURE.
373 /* _UIB-CODE-BLOCK-END */
374 &ANALYZE-RESUME
377 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE adm-row-available V-table-Win _ADM-ROW-AVAILABLE
378 PROCEDURE adm-row-available :
379 /*------------------------------------------------------------------------------
380 Purpose: Dispatched to this procedure when the Record-
381 Source has a new row available. This procedure
382 tries to get the new row (or foriegn keys) from
383 the Record-Source and process it.
384 Parameters: <none>
385 ------------------------------------------------------------------------------*/
387 /* Define variables needed by this internal procedure. */
388 {src/adm/template/row-head.i}
390 /* Process the newly available records (i.e. display fields,
391 open queries, and/or pass records on to any RECORD-TARGETS). */
392 {src/adm/template/row-end.i}
394 END PROCEDURE.
396 /* _UIB-CODE-BLOCK-END */
397 &ANALYZE-RESUME
400 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE disable_UI V-table-Win _DEFAULT-DISABLE
401 PROCEDURE disable_UI :
402 /*------------------------------------------------------------------------------
403 Purpose: DISABLE the User Interface
404 Parameters: <none>
405 Notes: Here we clean-up the user-interface by deleting
406 dynamic widgets we have created and/or hide
407 frames. This procedure is usually called when
408 we are ready to "clean-up" after running.
409 ------------------------------------------------------------------------------*/
410 /* Hide all frames. */
411 HIDE FRAME F-Main.
412 IF THIS-PROCEDURE:PERSISTENT THEN DELETE PROCEDURE THIS-PROCEDURE.
413 END PROCEDURE.
415 /* _UIB-CODE-BLOCK-END */
416 &ANALYZE-RESUME
419 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE inst-initialize V-table-Win
420 PROCEDURE inst-initialize :
421 /*------------------------------------------------------------------------------
422 Purpose:
423 Parameters: <none>
424 Notes:
425 ------------------------------------------------------------------------------*/
427 /* tgl_topmost:SCREEN-VALUE IN FRAME {&FRAME-NAME} = "Yes". */
428 this-win = CURRENT-WINDOW.
429 RUN top-most-changed.
431 END PROCEDURE.
433 /* _UIB-CODE-BLOCK-END */
434 &ANALYZE-RESUME
437 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE inst-row-available V-table-Win
438 PROCEDURE inst-row-available :
439 /*------------------------------------------------------------------------------
440 Purpose:
441 ------------------------------------------------------------------------------*/
443 RUN dispatch( 'find-using-key':U ).
444 IF NOT AVAILABLE Usr THEN RETURN.
446 IF VALID-HANDLE( this-win ) THEN this-win:TITLE = "Groups - " + Usr.UserName.
447 IF ROWID( Usr ) <> last-id THEN RUN refresh-groups.
448 last-id = ROWID( Usr ).
449 RUN update-node IN sys-mgr( THIS-PROCEDURE ).
451 END PROCEDURE.
453 /* _UIB-CODE-BLOCK-END */
454 &ANALYZE-RESUME
457 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE pre-row-available V-table-Win
458 PROCEDURE pre-row-available :
459 /*------------------------------------------------------------------------------
460 Purpose:
461 Parameters: <none>
462 Notes:
463 ------------------------------------------------------------------------------*/
465 have-records = No.
467 END PROCEDURE.
469 /* _UIB-CODE-BLOCK-END */
470 &ANALYZE-RESUME
473 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE refresh-groups V-table-Win
474 PROCEDURE refresh-groups :
475 /*------------------------------------------------------------------------------
476 Purpose:
477 Parameters: <none>
478 Notes:
479 ------------------------------------------------------------------------------*/
481 DO WITH FRAME {&FRAME-NAME}:
483 RUN notify( 'set-busy, CONTAINER-SOURCE':U ).
485 sel_gavail:LIST-ITEMS = "".
486 sel_gcurr:LIST-ITEMS = "".
488 IF NOT AVAILABLE Usr THEN RETURN.
490 FOR EACH UsrGroup NO-LOCK WHERE
491 NOT CAN-FIND( UsrGroupMember OF Usr WHERE
492 UsrGroupMember.Groupname = UsrGroup.GroupName ):
493 IF sel_gavail:ADD-LAST( UsrGroup.GroupName ) THEN.
494 END.
496 FOR EACH UsrGroupMember OF Usr NO-LOCK:
497 IF sel_gcurr:ADD-LAST( UsrGroupMember.GroupName ) THEN.
498 END.
500 RUN update-buttons.
501 RUN notify( 'set-idle, CONTAINER-SOURCE':U ).
503 END.
505 END PROCEDURE.
507 /* _UIB-CODE-BLOCK-END */
508 &ANALYZE-RESUME
511 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE remove-groups V-table-Win
512 PROCEDURE remove-groups :
513 /*------------------------------------------------------------------------------
514 Purpose:
515 Parameters: <none>
516 Notes:
517 ------------------------------------------------------------------------------*/
519 DO WITH FRAME {&FRAME-NAME}:
521 IF NOT AVAILABLE Usr THEN RETURN.
523 RUN notify( 'set-busy, CONTAINER-SOURCE':U ).
525 DEF VAR i AS INT NO-UNDO.
526 DEF VAR sv AS CHAR NO-UNDO.
527 DEF VAR delim AS CHAR NO-UNDO.
529 sv = INPUT sel_gcurr.
530 delim = sel_gcurr:DELIMITER.
532 DO i = 1 TO NUM-ENTRIES( sv, delim ):
533 FIND UsrGroupMember OF Usr WHERE UsrGroupMember.GroupName = ENTRY( i, sv, delim )
534 EXCLUSIVE-LOCK NO-ERROR.
535 IF AVAILABLE UsrGroupMember THEN DELETE UsrGroupMember.
536 END.
538 RUN refresh-groups.
539 RUN notify( 'set-idle, CONTAINER-SOURCE':U ).
541 END.
543 END PROCEDURE.
545 /* _UIB-CODE-BLOCK-END */
546 &ANALYZE-RESUME
549 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE send-key V-table-Win adm/support/_key-snd.p
550 PROCEDURE send-key :
551 /*------------------------------------------------------------------------------
552 Purpose: Sends a requested KEY value back to the calling
553 SmartObject.
554 Parameters: <see adm/template/sndkytop.i>
555 ------------------------------------------------------------------------------*/
557 /* Define variables needed by this internal procedure. */
558 {src/adm/template/sndkytop.i}
560 /* Return the key value associated with each key case. */
561 {src/adm/template/sndkycas.i "UserName" "Usr" "UserName"}
563 /* Close the CASE statement and end the procedure. */
564 {src/adm/template/sndkyend.i}
566 END PROCEDURE.
568 /* _UIB-CODE-BLOCK-END */
569 &ANALYZE-RESUME
572 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE send-records V-table-Win _ADM-SEND-RECORDS
573 PROCEDURE send-records :
574 /*------------------------------------------------------------------------------
575 Purpose: Send record ROWID's for all tables used by
576 this file.
577 Parameters: see template/snd-head.i
578 ------------------------------------------------------------------------------*/
580 /* SEND-RECORDS does nothing because there are no External
581 Tables specified for this SmartViewer, and there are no
582 tables specified in any contained Browse, Query, or Frame. */
584 END PROCEDURE.
586 /* _UIB-CODE-BLOCK-END */
587 &ANALYZE-RESUME
590 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE state-changed V-table-Win
591 PROCEDURE state-changed :
592 /* -----------------------------------------------------------
593 Purpose:
594 Parameters: <none>
595 Notes:
596 -------------------------------------------------------------*/
597 DEFINE INPUT PARAMETER p-issuer-hdl AS HANDLE NO-UNDO.
598 DEFINE INPUT PARAMETER p-state AS CHARACTER NO-UNDO.
600 CASE p-state:
601 /* Object instance CASEs can go here to replace standard behavior
602 or add new cases. */
603 {src/adm/template/vstates.i}
604 END CASE.
605 END PROCEDURE.
607 /* _UIB-CODE-BLOCK-END */
608 &ANALYZE-RESUME
611 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE top-most-changed V-table-Win
612 PROCEDURE top-most-changed :
613 /*------------------------------------------------------------------------------
614 Purpose:
615 ------------------------------------------------------------------------------*/
617 IF INPUT FRAME {&FRAME-NAME} tgl_topmost THEN
618 RUN notify( 'set-topmost,container-source':U ).
619 ELSE
620 RUN notify( 'reset-topmost,container-source':U ).
622 END PROCEDURE.
624 /* _UIB-CODE-BLOCK-END */
625 &ANALYZE-RESUME
628 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE update-buttons V-table-Win
629 PROCEDURE update-buttons :
630 /*------------------------------------------------------------------------------
631 Purpose:
632 Parameters: <none>
633 Notes:
634 ------------------------------------------------------------------------------*/
636 DO WITH FRAME {&FRAME-NAME}:
637 btn_add:SENSITIVE = INPUT sel_gavail <> "" AND INPUT sel_gavail <> ?.
638 btn_remove:SENSITIVE = INPUT sel_gcurr <> "" AND INPUT sel_gcurr <> ?.
639 END.
641 END PROCEDURE.
643 /* _UIB-CODE-BLOCK-END */
644 &ANALYZE-RESUME