1 &ANALYZE-SUSPEND _VERSION-NUMBER UIB_v8r12 GUI
6 &Scoped-define WINDOW-NAME CURRENT-WINDOW
7 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS V-table-Win
8 /*------------------------------------------------------------------------
12 Description
: from VIEWER.W
- Template for SmartViewer Objects
20 ------------------------------------------------------------------------*/
24 /* *************************** Definitions
************************** */
26 DEF VAR mode
AS CHAR NO-UNDO.
27 DEF VAR key-name
AS CHAR NO-UNDO.
28 DEF VAR key-value
AS CHAR NO-UNDO INITIAL ?.
30 /* _UIB-CODE-BLOCK-END
*/
34 &ANALYZE-SUSPEND _UIB-PREPROCESSOR-BLOCK
36 /* ******************** Preprocessor Definitions
******************** */
38 &Scoped-define PROCEDURE-TYPE SmartViewer
40 &Scoped-define ADM-SUPPORTED-LINKS Record-Source,Record-Target,TableIO-Target
42 /* Name of first Frame and
/or Browse and
/or first Query
*/
43 &Scoped-define FRAME-NAME F-Main
46 &Scoped-define EXTERNAL-TABLES FlowStepType
47 &Scoped-define FIRST-EXTERNAL-TABLE FlowStepType
50 /* Need to scope the external tables to this procedure
*/
51 DEFINE QUERY external_tables
FOR FlowStepType.
52 /* Standard List Definitions
*/
53 &Scoped-Define ENABLED-FIELDS FlowStepType.FlowStepType ~
54 FlowStepType.Description FlowStepType.InitialPriority ~
55 FlowStepType.InitialStatus FlowStepType.WarnPeriod FlowStepType.WarnUnits
56 &Scoped-define FIELD-PAIRS~
57 ~
{&FP1}FlowStepType ~{&FP2}FlowStepType ~{&FP3}~
58 ~
{&FP1}Description ~{&FP2}Description ~{&FP3}~
59 ~
{&FP1}InitialPriority ~{&FP2}InitialPriority ~{&FP3}~
60 ~
{&FP1}InitialStatus ~{&FP2}InitialStatus ~{&FP3}~
61 ~
{&FP1}WarnPeriod ~{&FP2}WarnPeriod ~{&FP3}~
62 ~
{&FP1}WarnUnits ~{&FP2}WarnUnits ~{&FP3}
63 &Scoped-define ENABLED-TABLES FlowStepType
64 &Scoped-define FIRST-ENABLED-TABLE FlowStepType
65 &Scoped-Define ENABLED-OBJECTS cmb_FlowTaskType
66 &Scoped-Define DISPLAYED-FIELDS FlowStepType.FlowStepType ~
67 FlowStepType.Description FlowStepType.InitialPriority ~
68 FlowStepType.InitialStatus FlowStepType.WarnPeriod FlowStepType.WarnUnits
69 &Scoped-Define DISPLAYED-OBJECTS cmb_FlowTaskType
71 /* Custom List Definitions
*/
72 /* ADM-CREATE-FIELDS
,ADM-ASSIGN-FIELDS
,List-3
,List-4
,List-5
,List-6
*/
74 /* _UIB-PREPROCESSOR-BLOCK-END
*/
78 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _XFTR "Foreign Keys" V-table-Win _INLINE
79 /* Actions
: ? adm
/support
/keyedit.w ? ? ?
*/
85 FlowStepType|y|y|TTPL.FlowStepType.FlowStepType
88 **************************
89 * Set attributes related to FOREIGN
KEYS
91 RUN set-attribute-list
(
92 'Keys-Accepted
= "FlowStepType",
93 Keys-Supplied
= "FlowStepType"'
:U
).
94 /**************************
96 /* _UIB-CODE-BLOCK-END
*/
100 /* *********************** Control Definitions
********************** */
103 /* Definitions of the field level widgets
*/
104 DEFINE VARIABLE cmb_FlowTaskType
AS CHARACTER FORMAT "X(256)":U
106 VIEW-AS COMBO-BOX INNER-LINES 20
108 SIZE 44.57 BY 1 TOOLTIP "The type of step which the rule applies against" NO-UNDO.
111 /* ************************ Frame Definitions
*********************** */
114 FlowStepType.FlowStepType
AT ROW 1 COL 4.72 COLON-ALIGNED
118 cmb_FlowTaskType
AT ROW 2.4 COL 8.14 COLON-ALIGNED
119 FlowStepType.Description
AT ROW 3.6 COL 8.14 COLON-ALIGNED
122 FlowStepType.InitialPriority
AT ROW 5.4 COL 12.14 COLON-ALIGNED
125 FlowStepType.InitialStatus
AT ROW 6.45 COL 12.14 COLON-ALIGNED
128 FlowStepType.WarnPeriod
AT ROW 7.8 COL 12.14 COLON-ALIGNED
132 FlowStepType.WarnUnits
AT ROW 7.8 COL 23 COLON-ALIGNED NO-LABEL
135 "before step is due" VIEW-AS TEXT
136 SIZE 12.57 BY .65 AT ROW 8 COL 27.86
137 WITH 1 DOWN NO-BOX KEEP-TAB-ORDER OVERLAY
138 SIDE-LABELS NO-UNDERLINE THREE-D
139 AT COL 1 ROW 1 SCROLLABLE
143 /* *********************** Procedure Settings
************************ */
145 &ANALYZE-SUSPEND _PROCEDURE-SETTINGS
146 /* Settings for
THIS-PROCEDURE
148 External Tables
: TTPL.FlowStepType
149 Allow
: Basic
,DB-Fields
151 Add Fields to
: EXTERNAL-TABLES
152 Other Settings
: PERSISTENT-ONLY
COMPILE
155 /* This procedure should always be
RUN PERSISTENT. Report the error
, */
156 /* then cleanup and return.
*/
157 IF NOT THIS-PROCEDURE:PERSISTENT THEN DO:
158 MESSAGE "{&FILE-NAME} should only be RUN PERSISTENT."
159 VIEW-AS ALERT-BOX ERROR BUTTONS OK.
163 &ANALYZE-RESUME _END-PROCEDURE-SETTINGS
165 /* ************************* Create Window
************************** */
167 &ANALYZE-SUSPEND _CREATE-WINDOW
168 /* DESIGN Window definition
(used by the UIB
)
169 CREATE WINDOW V-table-Win
ASSIGN
172 /* END WINDOW DEFINITION
*/
177 /* *************** Runtime Attributes and UIB Settings
************** */
179 &ANALYZE-SUSPEND _RUN-TIME-ATTRIBUTES
180 /* SETTINGS
FOR WINDOW V-table-Win
181 VISIBLE,,RUN-PERSISTENT
*/
182 /* SETTINGS
FOR FRAME F-Main
183 NOT-VISIBLE Size-to-Fit
*/
185 FRAME F-Main
:SCROLLABLE = FALSE
186 FRAME F-Main
:HIDDEN = TRUE.
188 /* SETTINGS
FOR FILL-IN FlowStepType.FlowStepType
IN FRAME F-Main
190 /* SETTINGS
FOR FILL-IN FlowStepType.WarnPeriod
IN FRAME F-Main
192 /* SETTINGS
FOR FILL-IN FlowStepType.WarnUnits
IN FRAME F-Main
194 /* _RUN-TIME-ATTRIBUTES-END
*/
198 /* Setting information for Queries and Browse Widgets fields
*/
200 &ANALYZE-SUSPEND _QUERY-BLOCK FRAME F-Main
201 /* Query rebuild information for
FRAME F-Main
204 */ /* FRAME F-Main
*/
210 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _INCLUDED-LIB V-table-Win
211 /* ************************* Included-Libraries
*********************** */
213 {src
/adm
/method
/viewer.i
}
214 {inc
/method
/m-mntvwr.i
}
216 /* _UIB-CODE-BLOCK-END
*/
222 /* ************************ Control Triggers
************************ */
224 &Scoped-define SELF-NAME cmb_FlowTaskType
225 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL cmb_FlowTaskType V-table-Win
226 ON U1
OF cmb_FlowTaskType
IN FRAME F-Main
/* Task Type
*/
228 {workflow
/inc
/scFwTskTyp1.i
"FlowStepType" "FlowTaskType"}
231 /* _UIB-CODE-BLOCK-END
*/
235 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL cmb_FlowTaskType V-table-Win
236 ON U2
OF cmb_FlowTaskType
IN FRAME F-Main
/* Task Type
*/
238 {workflow
/inc
/scFwTskTyp2.i
"FlowStepType" "FlowTaskType"}
241 /* _UIB-CODE-BLOCK-END
*/
247 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK V-table-Win
250 /* *************************** Main Block
*************************** */
252 &IF DEFINED(UIB_IS_RUNNING) <> 0 &THEN
253 RUN dispatch
IN THIS-PROCEDURE ('initialize'
:U
).
256 /************************ INTERNAL PROCEDURES
********************/
258 /* _UIB-CODE-BLOCK-END
*/
262 /* ********************** Internal Procedures
*********************** */
264 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE adm-find-using-key V-table-Win adm/support/_key-fnd.p
265 PROCEDURE adm-find-using-key
:
266 /*------------------------------------------------------------------------------
267 Purpose
: Finds the current record using the contents of
268 the 'Key-Name' and 'Key-Value' attributes.
270 ------------------------------------------------------------------------------*/
271 DEF VAR key-value
AS CHAR NO-UNDO.
272 DEF VAR row-avail-enabled
AS LOGICAL NO-UNDO.
274 /* LOCK status on the find depends on FIELDS-ENABLED.
*/
275 RUN get-attribute
('FIELDS-ENABLED'
:U
).
276 row-avail-enabled
= (RETURN-VALUE eq 'yes'
:U
).
277 /* Look up the current key-value.
*/
278 RUN get-attribute
('Key-Value'
:U
).
279 key-value
= RETURN-VALUE.
281 /* Find the current record using the current Key-Name.
*/
282 RUN get-attribute
('Key-Name'
:U
).
284 WHEN 'FlowStepType'
:U
THEN
285 {src
/adm
/template
/find-tbl.i
286 &TABLE = FlowStepType
287 &WHERE = "WHERE FlowStepType.FlowStepType eq key-value"
293 /* _UIB-CODE-BLOCK-END
*/
297 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE adm-row-available V-table-Win _ADM-ROW-AVAILABLE
298 PROCEDURE adm-row-available
:
299 /*------------------------------------------------------------------------------
300 Purpose
: Dispatched to this procedure when the Record-
301 Source has a new row available. This procedure
302 tries to get the new row
(or foriegn keys
) from
303 the Record-Source and process it.
305 ------------------------------------------------------------------------------*/
307 /* Define variables needed by this internal procedure.
*/
308 {src
/adm
/template
/row-head.i
}
310 /* Create a list of all the tables that we need to get.
*/
311 {src
/adm
/template
/row-list.i
"FlowStepType"}
313 /* Get the record
ROWID's from the RECORD-SOURCE.
*/
314 {src
/adm
/template
/row-get.i
}
316 /* FIND each record specified by the RECORD-SOURCE.
*/
317 {src
/adm
/template
/row-find.i
"FlowStepType"}
319 /* Process the newly available records
(i.e. display fields
,
320 open queries
, and
/or pass records on to any RECORD-TARGETS
).
*/
321 {src
/adm
/template
/row-end.i
}
325 /* _UIB-CODE-BLOCK-END
*/
329 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE cancel-changes V-table-Win
330 PROCEDURE cancel-changes
:
331 /*------------------------------------------------------------------------------
332 Purpose
: Quit without applying any changes
333 ------------------------------------------------------------------------------*/
334 IF mode
= "Add" THEN DO TRANSACTION:
335 FIND CURRENT FlowStepType
NO-ERROR.
336 IF AVAILABLE(FlowStepType
) THEN DELETE FlowStepType.
339 RUN check-modified
( 'clear'
:U
).
341 RUN dispatch
( 'exit'
:U
).
345 /* _UIB-CODE-BLOCK-END
*/
349 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE confirm-changes V-table-Win
350 PROCEDURE confirm-changes
:
351 /*------------------------------------------------------------------------------
353 ------------------------------------------------------------------------------*/
354 RUN verify-flow-step.
355 IF RETURN-VALUE <> "" THEN RETURN.
357 RUN dispatch
( 'update-record'
:U
).
358 RUN notify
( 'open-query
,record-source'
:U
).
360 RUN dispatch
( 'exit'
:U
).
364 /* _UIB-CODE-BLOCK-END
*/
368 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE disable_UI V-table-Win _DEFAULT-DISABLE
369 PROCEDURE disable_UI
:
370 /*------------------------------------------------------------------------------
371 Purpose
: DISABLE the User Interface
373 Notes
: Here we clean-up the user-interface by deleting
374 dynamic widgets we have created and
/or hide
375 frames. This procedure is usually called when
376 we are ready to
"clean-up" after running.
377 ------------------------------------------------------------------------------*/
378 /* Hide all frames.
*/
380 IF THIS-PROCEDURE:PERSISTENT THEN DELETE PROCEDURE THIS-PROCEDURE.
383 /* _UIB-CODE-BLOCK-END
*/
387 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE inst-initialize V-table-Win
388 PROCEDURE inst-initialize
:
389 /*------------------------------------------------------------------------------
391 ------------------------------------------------------------------------------*/
393 IF mode
= 'Add'
THEN DO:
395 CURRENT-WINDOW:TITLE = "Adding a New Workflow Step".
396 RUN dispatch
( 'add-record'
:U
).
398 ELSE IF mode
= "Maintain" THEN
399 RUN dispatch
( 'enable-fields'
:U
).
401 RUN dispatch
( 'disable-fields'
:U
).
405 /* _UIB-CODE-BLOCK-END
*/
409 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE override-add-record V-table-Win
410 PROCEDURE override-add-record
:
411 /*------------------------------------------------------------------------------
413 ------------------------------------------------------------------------------*/
414 DO WITH FRAME {&FRAME-NAME}:
416 FIND FlowStepType
WHERE FlowTaskType
= key-value
417 AND FlowStepType.FlowStepType
= ?
NO-LOCK NO-ERROR.
418 IF NOT AVAILABLE(FlowStepType
) THEN CREATE FlowStepType.
420 ASSIGN FlowStepType.FlowTaskType
= key-value
421 FlowStepType.FlowStepType
= ?.
423 CURRENT-WINDOW:TITLE = "Adding a New Workflow Step".
424 RUN dispatch
( 'display-fields'
:U
).
425 RUN dispatch
( 'enable-fields'
:U
).
426 RUN dispatch
( 'update-record'
:U
).
432 /* _UIB-CODE-BLOCK-END
*/
436 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE pre-destroy V-table-Win
437 PROCEDURE pre-destroy
:
438 /*------------------------------------------------------------------------------
440 ------------------------------------------------------------------------------*/
441 IF LAST-EVENT:FUNCTION = "WINDOW-CLOSE" THEN RUN cancel-changes.
444 /* _UIB-CODE-BLOCK-END
*/
448 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE send-key V-table-Win adm/support/_key-snd.p
450 /*------------------------------------------------------------------------------
451 Purpose
: Sends a requested
KEY value back to the calling
453 Parameters
: <see adm
/template
/sndkytop.i
>
454 ------------------------------------------------------------------------------*/
456 /* Define variables needed by this internal procedure.
*/
457 {src
/adm
/template
/sndkytop.i
}
459 /* Return the key value associated with each key case.
*/
460 {src
/adm
/template
/sndkycas.i
"FlowStepType" "FlowStepType" "FlowStepType"}
462 /* Close the
CASE statement and end the procedure.
*/
463 {src
/adm
/template
/sndkyend.i
}
467 /* _UIB-CODE-BLOCK-END
*/
471 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE send-records V-table-Win _ADM-SEND-RECORDS
472 PROCEDURE send-records
:
473 /*------------------------------------------------------------------------------
474 Purpose
: Send record
ROWID's for all tables used by
476 Parameters
: see template
/snd-head.i
477 ------------------------------------------------------------------------------*/
479 /* Define variables needed by this internal procedure.
*/
480 {src
/adm
/template
/snd-head.i
}
482 /* For each requested table
, put it's
ROWID in the output list.
*/
483 {src
/adm
/template
/snd-list.i
"FlowStepType"}
485 /* Deal with any unexpected table requests before closing.
*/
486 {src
/adm
/template
/snd-end.i
}
490 /* _UIB-CODE-BLOCK-END
*/
494 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE state-changed V-table-Win
495 PROCEDURE state-changed
:
496 /* -----------------------------------------------------------
500 -------------------------------------------------------------*/
501 DEFINE INPUT PARAMETER p-issuer-hdl
AS HANDLE NO-UNDO.
502 DEFINE INPUT PARAMETER p-state
AS CHARACTER NO-UNDO.
505 /* Object instance CASEs can go here to replace standard behavior
507 {src
/adm
/template
/vstates.i
}
511 /* _UIB-CODE-BLOCK-END
*/
515 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE use-Key-Name V-table-Win
516 PROCEDURE use-Key-Name
:
517 /*------------------------------------------------------------------------------
519 ------------------------------------------------------------------------------*/
520 DEF INPUT PARAMETER new-key-name
AS CHAR NO-UNDO.
521 key-name
= new-key-name.
524 /* _UIB-CODE-BLOCK-END
*/
528 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE use-Key-Value V-table-Win
529 PROCEDURE use-Key-Value
:
530 /*------------------------------------------------------------------------------
532 ------------------------------------------------------------------------------*/
533 DEF INPUT PARAMETER new-key-value
AS CHAR NO-UNDO.
534 key-value
= new-key-value.
537 /* _UIB-CODE-BLOCK-END
*/
541 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE use-Mode V-table-Win
543 /*------------------------------------------------------------------------------
545 ------------------------------------------------------------------------------*/
546 DEF INPUT PARAMETER new-mode
AS CHAR NO-UNDO.
550 /* _UIB-CODE-BLOCK-END
*/
554 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE verify-flow-step V-table-Win
555 PROCEDURE verify-flow-step
:
556 /*------------------------------------------------------------------------------
558 ------------------------------------------------------------------------------*/
559 DEF VAR input-task-type
AS CHAR NO-UNDO.
561 DO WITH FRAME {&FRAME-NAME}:
563 input-task-type
= TRIM( ENTRY( 1, cmb_FlowTaskType
:SCREEN-VALUE, " ") ).
564 IF input-task-type
= ?
OR TRIM(input-task-type
) = "" THEN DO:
565 MESSAGE "You must choose a unique Flow Task code."
566 VIEW-AS ALERT-BOX ERROR TITLE "Unassigned Flow Task Code".
567 APPLY '
ENTRY'
:U
TO FlowStepType.FlowStepType.
571 IF INPUT FlowStepType.FlowStepType
= ?
OR TRIM(INPUT FlowStepType.FlowStepType
) = "" THEN DO:
572 MESSAGE "You must choose a unique Flow Step code."
573 VIEW-AS ALERT-BOX ERROR TITLE "Unassigned Flow Step Code".
574 APPLY '
ENTRY'
:U
TO FlowStepType.FlowStepType.
578 DEF BUFFER OtherStep
FOR FlowStepType.
579 IF ( INPUT FlowStepType.FlowStepType
<> FlowStepType.FlowStepType
580 OR input-task-type
<> FlowStepType.FlowTaskType
)
581 AND CAN-FIND( OtherStep
WHERE OtherStep.FlowStepType
= INPUT FlowStepType.FlowStepType
582 AND OtherStep.FlowTaskType
= input-task-type
) THEN DO:
583 MESSAGE "A Flow Step already exists with the code" INPUT FlowStepType.FlowStepType
"!" SKIP
584 "for task" input-task-type
SKIP(1)
585 "You must choose a unique FlowStep code."
586 VIEW-AS ALERT-BOX ERROR TITLE "Duplicate Flow Step Code".
587 APPLY '
ENTRY'
:U
TO FlowStepType.FlowStepType.
591 IF TRIM(INPUT FlowStepType.Description
) = "" THEN DO:
592 MESSAGE "You must supply a description for the Flow Step!"
593 VIEW-AS ALERT-BOX ERROR TITLE "Incomplete Name".
594 APPLY '
ENTRY'
:U
TO FlowStepType.Description.
602 /* _UIB-CODE-BLOCK-END
*/