source: branches/work_311/doc/actions/DocOpenWindowAction.cpp @ 625

Revision 625, 20.4 KB checked in by jls17, 5 years ago (diff)
  • view-field references in open window target location are now linking to the field and a reference is shown from the field back to the action
Line 
1//Copyright (C) 2014 John Luthgers | jls17
2//
3//This file is part of ARInside.
4//
5//    ARInside is free software: you can redistribute it and/or modify
6//    it under the terms of the GNU General Public License as published by
7//    the Free Software Foundation, version 2 of the License.
8//
9//    ARInside is distributed in the hope that it will be useful,
10//    but WITHOUT ANY WARRANTY; without even the implied warranty of
11//    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12//    GNU General Public License for more details.
13//
14//    You should have received a copy of the GNU General Public License
15//    along with ARInside.  If not, see <http://www.gnu.org/licenses/>.
16
17#include "stdafx.h"
18#include "DocAlMessageAction.h"
19#include "DocOpenWindowAction.h"
20#include "../../core/ARQualification.h"
21#include "../../core/ARAssignHelper.h"
22#include "../../core/OpenWindowReportData.h"
23#include "../../core/OpenWindowSampleData.h"
24#include "../../output/ObjNotFound.h"
25#include "../../output/URLLink.h"
26#include "../../util/Context.h"
27
28DocOpenWindowAction::DocOpenWindowAction(Context &theContext, const AROpenDlgStruct &theAction)
29:       context(theContext), action(theAction)
30{
31}
32
33void DocOpenWindowAction::ToStream(std::ostream& strm)
34{
35        try
36        {
37                CARInside* arIn = &context.getInside();
38                string openWindowServer;
39                string openWindowSchemaName;
40                CARSchema attachedSchema(context.getCurrentSchemaId());
41                OpenWindowReportData reportData(action.reportString);
42                OpenWindowSampleData sampleData(context);
43
44                // check if we need to get the sample data
45                if(action.serverName[0] == '$')
46                {
47                        openWindowServer = sampleData.getServer();
48                        openWindowSchemaName = sampleData.getSchema();
49                }
50
51                // window type
52                int windowMode = CAREnum::OpenWindowModeMapped(action.windowMode);
53                strm << "<p>Window Type: " << CAREnum::OpenWindowMode(windowMode) << endl;
54
55                // display type
56                if (windowMode == AR_ACTIVE_LINK_ACTION_OPEN_MODIFY || windowMode == AR_ACTIVE_LINK_ACTION_OPEN_DSPLY)
57                {
58                        strm << "<br/>Display Type: " << CAREnum::OpenWindowDisplayType(action.windowMode) << endl;
59                }
60
61                // target location
62                if (ActionOpenDlgTargetLocation(windowMode))
63                {
64                        strm << "<br/>Target Location: ";
65
66                        if (action.targetLocation != NULL) 
67                        {
68                                if (action.targetLocation[0] == '$')
69                                {
70                                        int fieldId = atoi(&action.targetLocation[1]);
71                                        strm << "$" << (fieldId < 0 ? CAREnum::Keyword(abs(fieldId)) : arIn->LinkToField(context.getCurrentSchemaId(), fieldId, context.getRootLevel())) << "$";
72
73                                        if (fieldId > 0)
74                                        {
75                                                CRefItem refItem(context, REFM_OPENWINDOW_LOCATION);
76                                                arIn->AddFieldReference(context.getCurrentSchemaId(), fieldId, refItem);
77                                        }
78                                }
79                                else if (IsViewFieldReference(action.targetLocation))
80                                {
81                                        int fieldId = atoi(&action.targetLocation[2]);
82
83                                        if (fieldId > 0)
84                                        {
85                                                strm << "VF" << arIn->LinkToField(context.getCurrentSchemaId(), fieldId, &action.targetLocation[2], context.getRootLevel());
86                                                CRefItem refItem(context, REFM_OPENWINDOW_LOCATION_VIEWFIELD);
87                                                if (!arIn->FieldreferenceExists(context.getCurrentSchemaId(), fieldId, refItem))
88                                                {
89                                                        arIn->AddFieldReference(context.getCurrentSchemaId(), fieldId, refItem);
90                                                }
91                                        }
92                                        else
93                                        {
94                                                strm << action.targetLocation;
95                                        }
96                                }
97                                else
98                                {
99                                        strm << action.targetLocation;
100                                }
101                        }
102                        strm << endl;
103                }
104
105                // show "inline form" option
106                if (ActionOpenDlgInlineForm(windowMode))
107                {
108                        strm << "<br/><input type=\"checkbox\" name=\"inlineForm\" value=\"inline\" " << (reportData.getInlineForm().compare("true")==0 ? "checked" : "") << ">Inline Form<br/>" << endl;
109                }
110
111                strm << "</p>" << endl;
112
113                // ****************************************************
114                // server
115                strm << "<p>Server Name: ";
116                if(action.serverName[0] == '$' && !openWindowServer.empty())
117                {
118                        int fieldId = atoi(&action.serverName[1]);
119                        strm << "$" << (fieldId < 0 ? CAREnum::Keyword(abs(fieldId)) : arIn->LinkToField(context, fieldId)) << "$ (Sample Server: " << arIn->LinkToServerInfo(context, openWindowServer) << ")";
120
121                        if (fieldId > 0)
122                        {
123                                CRefItem refItem(context, REFM_OPENWINDOW_SERVER);
124                                arIn->AddFieldReference(context.getCurrentSchemaId(), fieldId, refItem);
125                        }
126                }
127                else
128                {
129                        openWindowServer = action.serverName;
130                        strm << arIn->LinkToServerInfo(context, openWindowServer);
131                }
132
133                strm << "<br/>Form Name: ";
134                if (action.schemaName[0] == '$')
135                {
136                        int fieldId = atoi(&action.schemaName[1]);
137                        strm << "$" << (fieldId < 0 ? CAREnum::Keyword(abs(fieldId)) : arIn->LinkToField(context, fieldId)) << "$ (Sample Schema: " << arIn->LinkToSchema(openWindowSchemaName, context.getRootLevel()) << ")";
138
139                        if (fieldId > 0)
140                        {
141                                CRefItem refItem(context, REFM_OPENWINDOW_FORM);
142                                arIn->AddFieldReference(context.getCurrentSchemaId(), fieldId, refItem);
143                        }
144
145                        if (fieldId == (-AR_KEYWORD_SCHEMA)) openWindowSchemaName = attachedSchema.GetName();
146                }
147                else
148                {
149                        openWindowSchemaName = action.schemaName;
150                        strm << arIn->LinkToSchema(openWindowSchemaName, context.getRootLevel()) << endl;
151                }
152
153                LookupFormContext openWindowContext(context, openWindowSchemaName);
154                CARSchema openWindowSchema(openWindowContext.getLookupSchemaId());
155
156                // add a used-as-open-window-schema reference to the detected schema
157                CRefItem openWindowSchemaRef(context, REFM_OPENWINDOW_FORM);
158                if (openWindowSchema.Exists() && !openWindowSchema.ReferenceExists(openWindowSchemaRef))
159                        openWindowSchema.AddReference(openWindowSchemaRef);
160
161                strm << "<br/>View Name: ";
162                if(action.vuiLabel[0] == '$')// == NULL || strcmp(action.vuiLabel, "")==0)
163                {
164                        int fieldId = atoi(&action.vuiLabel[1]);
165                        strm << "$" << (fieldId < 0 ? CAREnum::Keyword(abs(fieldId)) : arIn->LinkToField(context, fieldId)) << "$";
166
167                        if (fieldId > 0)
168                        {
169                                CRefItem refItem(context, REFM_OPENWINDOW_VIEW);
170                                arIn->AddFieldReference(context.getCurrentSchemaId(), fieldId, refItem);
171                        }
172                }
173                else
174                {
175                        if (action.vuiLabel[0] == 0)
176                        { 
177                                strm << "(Clear)" << endl;
178                        }
179                        else
180                        {
181                                if (!openWindowSchema.Exists())
182                                {
183                                        ObjNotFound notFound(strm);
184                                        notFound << action.vuiLabel;
185                                        notFound.End();
186                                }
187                                else
188                                {
189                                        CARVui vui(openWindowSchema.GetInsideId(), action.vuiLabel);
190                                        if (vui.Exists())
191                                                strm << URLLink(vui, context.getRootLevel());
192                                        else
193                                        {
194                                                ObjNotFound notFound(strm);
195                                                notFound << action.vuiLabel;
196                                                notFound.End();
197                                        }
198                                }
199                        }
200                }
201                strm << "</p>" << endl;
202
203                // report details here
204                if (windowMode == AR_ACTIVE_LINK_ACTION_OPEN_REPORT)
205                {
206                        if (!reportData.IsValid())
207                        {
208                                strm << "<p>";
209                                ObjNotFound notFound(strm);
210                                notFound << "Could not load report informations!";
211                                notFound.End();
212                                strm << "</p>";
213                        }
214                        else
215                        {
216                                string reportType = reportData.getReportType();
217                                string reportLocation = reportData.getReportLocation();
218                                string reportName = reportData.getReportName();
219                                string reportDestination = reportData.getReportDestination();
220
221                                strm << "<p>Report Type: ";                             
222                                if (!reportType.empty() && reportType[0] == '$')
223                                {
224                                        int fieldId = atoi(&reportType.c_str()[1]);
225                                        strm << "$" << (fieldId < 0 ? CAREnum::Keyword(abs(fieldId)) : arIn->LinkToField(context, fieldId)) << "$";
226                                        if (fieldId > 0)
227                                        {
228                                                CRefItem refItem(context, REFM_OPENWINDOW_REPORTTYPE);
229                                                arIn->AddFieldReference(context.getCurrentSchemaId(), fieldId, refItem);
230                                        }
231                                }
232                                else
233                                {
234                                        strm << reportType;
235                                }
236                                strm <<  "<br/>";
237
238                                int iReportLocation = atoi(reportLocation.c_str());
239                                strm << "Report Location: " << CAREnum::ReportLocation(iReportLocation);
240                               
241                                strm << "<br/>Report Name: ";
242                                if (!reportName.empty() && reportName[0] == '$')
243                                {
244                                        int fieldId = atoi(&reportName.c_str()[1]);
245                                        strm << "$" << (fieldId < 0 ? CAREnum::Keyword(abs(fieldId)) : arIn->LinkToField(context, fieldId)) << "$";
246                                        if (fieldId > 0)
247                                        {
248                                                CRefItem refItem(context, REFM_OPENWINDOW_REPORTNAME);
249                                                arIn->AddFieldReference(context.getCurrentSchemaId(), fieldId, refItem);
250                                        }
251                                }
252                                else
253                                {
254                                        strm << reportName;
255                                }
256                                strm << "<br/>";
257                               
258                                // to-screen:
259                                // to-print:
260                                // to-file:
261                                strm << "Report Destination: ";
262                                if (!reportDestination.empty() && reportDestination[0] == '$')
263                                {
264                                        int fieldId = atoi(&reportDestination.c_str()[1]);
265                                        strm << "$" << (fieldId < 0 ? CAREnum::Keyword(abs(fieldId)) : arIn->LinkToField(context, fieldId)) << "$";
266                                        if (fieldId > 0)
267                                        {
268                                                CRefItem refItem(context, REFM_OPENWINDOW_REPORTDESTINATION);
269                                                arIn->AddFieldReference(context.getCurrentSchemaId(), fieldId, refItem);
270                                        }
271                                }
272                                else
273                                {
274                                        // map the string value to the displayed combobox item of dev studio
275                                        strm << reportDestination;
276                                }
277                                strm << "</p>";
278                        }
279                }
280
281                // qualification
282                if(ActionOpenDlgQualifier(action.windowMode))
283                {
284                        if(action.query.operation != AR_COND_OP_NONE)
285                        {
286                                stringstream strmTmpQual;
287
288                                CRefItem refItem(context, REFM_OPENWINDOW_QUALIFICATION);
289                                MappingContext qualContext(context, openWindowSchema.GetInsideId());
290
291                                strmTmpQual.str("");
292                                CARQualification arQual(qualContext, refItem);
293                                arQual.CheckQuery(&action.query, strmTmpQual);
294
295                                strm << "<p>Qualification:<br/>" << endl;
296                                strm << strmTmpQual.str() << "</p>";
297                        }       
298                }
299
300                strm << "<p>";
301                // show close button
302                if (ActionOpenDlgCloseButton(windowMode))
303                {
304                        strm << "<input type=\"checkbox\" name=\"closeWnd\" value=\"closeWndAll\" " << (action.closeBox ? "checked" : "") << ">Show Close Button in Dialog<br/>" << endl;
305                }
306
307                // suppres empty list
308                if (ActionOpenDlgSuppressEmptyList(windowMode))
309                {
310                        strm << "<input type=\"checkbox\" name=\"suprEmptyLst\" value=\"suprEmptyLstVal\" " << (action.suppressEmptyLst ? "checked" : "") << ">Suppress Empty List<br/>" << endl;               
311                }
312
313                // set fields to defaults
314                bool setToDefault = false;
315                if (windowMode == AR_ACTIVE_LINK_ACTION_OPEN_SEARCH || windowMode == AR_ACTIVE_LINK_ACTION_OPEN_SUBMIT)
316                {
317
318                        for(unsigned int i= 0; i < action.inputValueFieldPairs.numItems; ++i)
319                        {
320                                if (action.inputValueFieldPairs.fieldAssignList[i].fieldId == AR_SET_DEFAULTS_ID)
321                                {
322                                        setToDefault = true;
323                                        break;
324                                }
325                        }
326
327                        strm << "<input type=\"checkbox\" name=\"setToDefault\" value=\"setToDefaultVal\" " << (setToDefault ? "checked" : "") << ">Set Fields To Defaults<br/>" << endl;               
328                }
329
330                // input mapping
331                if (ActionOpenDlgInputMapping(windowMode) && !setToDefault)
332                {
333                        MappingContext mappingContext(context);
334                        mappingContext.setPrimarySchemaId(openWindowSchema.GetInsideId());
335                        mappingContext.setSecondarySchemaId(context.getCurrentSchemaId());
336
337                        CARAssignHelper assignHelper(mappingContext);
338                        strm << assignHelper.OpenWindowAssignment(action.inputValueFieldPairs, mappingContext.getActionIndex(), mappingContext.getIfElse(), OWM_OPEN);
339                }
340
341                // output mapping (dialog on close)
342                if (ActionOpenDlgOutputMapping(windowMode))
343                {
344                        strm << "On Dialog Close Action:<br/>";
345
346                        MappingContext mappingContext(context, openWindowSchema.GetInsideId());
347
348                        CARAssignHelper assignHelper(mappingContext);
349                        strm << assignHelper.OpenWindowAssignment(action.outputValueFieldPairs, mappingContext.getActionIndex(), mappingContext.getIfElse(), OWM_CLOSE);
350                }
351                strm << "</p>";
352
353                if (ActionOpenDlgMessage(windowMode))
354                {
355                        // message
356                        strm << "<p>If No Request Match: ";
357                        if (action.noMatchContinue)
358                        {
359                                strm << "Do not show any message";
360                        }
361                        else if (action.msg.messageText == NULL || action.msg.messageText[0] == 0)      // dont know, if thats the correct criteria for the default message
362                        {
363                                strm << "Show default message";
364                        }
365                        else if (action.msg.messageType > 0)
366                        {
367                                strm << "Show message<br/>";
368                               
369                                DocAlMessageAction docMessage(context, action.msg);
370                                docMessage.ToStream(strm);
371                        }
372                        strm << "</p>" << endl;
373
374                        // sorting
375                        if (action.sortOrderList.numItems > 0) 
376                        {
377                                CTable tblSortList("sortList", "TblObjectList");
378                                tblSortList.AddColumn(40, "Field Name");
379                                tblSortList.AddColumn(15, "Field Id");
380                                tblSortList.AddColumn(15, "Field Type");
381                                tblSortList.AddColumn(30, "Sort Order");
382                               
383                                char strFieldId[20];
384
385                                for (unsigned int i = 0; i < action.sortOrderList.numItems; ++i)
386                                {
387                                        CARField rField(openWindowSchema.GetInsideId(), action.sortOrderList.sortList[i].fieldId);
388
389                                        strFieldId[0] = 0;
390                                        sprintf(strFieldId, "%d", static_cast<int>(action.sortOrderList.sortList[i].fieldId));
391
392                                        CTableRow row("cssStdRow");
393                                        row.AddCell(arIn->LinkToField(openWindowContext, action.sortOrderList.sortList[i].fieldId));
394                                        row.AddCell(strFieldId);
395                                        row.AddCell((rField.Exists() ? CAREnum::DataType(rField.GetDataType()) : "Unknown"));
396                                        row.AddCell(CAREnum::SchemaSortOrder(action.sortOrderList.sortList[i].sortOrder));
397                                       
398                                        tblSortList.AddRow(row);
399
400                                        if (openWindowSchema.Exists())
401                                        {
402                                                CRefItem refItem(context, REFM_OPENWINDOW_SORTBY);
403                                                arIn->AddFieldReference(openWindowSchema.GetInsideId(), action.sortOrderList.sortList[i].fieldId, refItem);
404                                        }
405                                }
406
407                                strm << "<p>Sort Order" << tblSortList << "</p>";
408                        }
409
410                        // additional report informations
411                        if (windowMode == AR_ACTIVE_LINK_ACTION_OPEN_REPORT)
412                        {
413                                string entryIDs = reportData.getEntryIds();
414                                string queryOverride = reportData.getQueryOverride();
415                                string reportOperation = reportData.getReportOperation();
416                                string charEncoding = reportData.getCharEncoding();
417
418                                strm << "<p>EntryIDs: ";
419                                if (!entryIDs.empty() && entryIDs[0] == '$')
420                                {
421                                        int fieldId = atoi(&entryIDs.c_str()[1]);
422                                        strm << "$" << (fieldId < 0 ? CAREnum::Keyword(abs(fieldId)) : arIn->LinkToField(context, fieldId)) << "$";
423                                        if (fieldId > 0)
424                                        {
425                                                CRefItem refItem(context, REFM_OPENWINDOW_ENTRYIDS);
426                                                arIn->AddFieldReference(context.getCurrentSchemaId(), fieldId, refItem);
427                                        }
428                                }
429                                else
430                                {
431                                        strm << entryIDs;
432                                }
433                               
434                                strm << "<br/>Query Override: ";
435                                if (!queryOverride.empty() && queryOverride[0] == '$')
436                                {
437                                        int fieldId = atoi(&entryIDs.c_str()[1]);
438                                        strm << "$" << (fieldId < 0 ? CAREnum::Keyword(abs(fieldId)) : arIn->LinkToField(context, fieldId)) << "$";
439                                        if (fieldId > 0)
440                                        {
441                                                CRefItem refItem(context, REFM_OPENWINDOW_QUERYOVERRIDE);
442                                                arIn->AddFieldReference(context.getCurrentSchemaId(), fieldId, refItem);
443                                        }
444                                }
445                                else
446                                {
447                                        strm << queryOverride;
448                                }
449                               
450                                strm << "<br/>Report Operation: ";
451                                int iReportOperation = atoi(reportOperation.c_str());
452                                if (iReportOperation == 0) iReportOperation = 2;        // set default to Run
453                                strm << CAREnum::ReportOperation(iReportOperation);
454
455                                strm << "<br/>Character Encoding: ";
456                                if (!charEncoding.empty() && charEncoding[0] == '$')
457                                {
458                                        int fieldId = atoi(&charEncoding.c_str()[1]);
459                                        strm << "$" << (fieldId < 0 ? CAREnum::Keyword(abs(fieldId)) : arIn->LinkToField(context, fieldId)) << "$";
460                                        if (fieldId > 0)
461                                        {
462                                                CRefItem refItem(context, REFM_OPENWINDOW_CHARENC);
463                                                arIn->AddFieldReference(context.getCurrentSchemaId(), fieldId, refItem);
464                                        }
465                                }
466                                else
467                                {
468                                        strm << charEncoding;
469                                }
470                                strm << "</p>" << endl;
471                        }
472
473                        // polling interval
474                        if (ActionOpenDlgPoolingInterval(windowMode) && action.pollinginterval > 0)
475                        {
476                                strm << "<p>Polling interval: " << action.pollinginterval << "</p>" << endl;
477                        }
478                }
479        }
480        catch(exception& e)
481        {
482                cout << "EXCEPTION in AlActionOpenDlg of '" << context.getCurrentObject().GetName() << "': " << e.what() << endl;
483        }
484}
485
486bool DocOpenWindowAction::ActionOpenDlgQualifier(int nWindowType)
487{
488        switch(nWindowType)
489        {
490        case AR_ACTIVE_LINK_ACTION_OPEN_MODIFY_DETAIL:
491        case AR_ACTIVE_LINK_ACTION_OPEN_MODIFY:
492        case AR_ACTIVE_LINK_ACTION_OPEN_MODIFY_LST:
493        case AR_ACTIVE_LINK_ACTION_OPEN_MODIFY_SPLIT:
494        case AR_ACTIVE_LINK_ACTION_OPEN_DSPLY_LST:
495        case AR_ACTIVE_LINK_ACTION_OPEN_REPORT:
496        case AR_ACTIVE_LINK_ACTION_OPEN_DSPLY_DETAIL:
497        case AR_ACTIVE_LINK_ACTION_OPEN_DSPLY_SPLIT:
498        case AR_ACTIVE_LINK_ACTION_OPEN_DSPLY:
499#if AR_CURRENT_API_VERSION >= AR_API_VERSION_763
500        case AR_ACTIVE_LINK_ACTION_OPEN_MODIFY_DIRECT:
501        case AR_ACTIVE_LINK_ACTION_OPEN_MODIFY_DIRECT_LST:
502        case AR_ACTIVE_LINK_ACTION_OPEN_MODIFY_DIRECT_DETAIL:
503        case AR_ACTIVE_LINK_ACTION_OPEN_MODIFY_DIRECT_SPLIT:
504        case AR_ACTIVE_LINK_ACTION_OPEN_DISPLAY_DIRECT:
505        case AR_ACTIVE_LINK_ACTION_OPEN_DISPLAY_DIRECT_LST:
506        case AR_ACTIVE_LINK_ACTION_OPEN_DISPLAY_DIRECT_DETAIL:
507        case AR_ACTIVE_LINK_ACTION_OPEN_DISPLAY_DIRECT_SPLIT:
508#endif
509                return true;
510        default: return false;
511        }
512}
513
514bool DocOpenWindowAction::ActionOpenDlgTargetLocation(int nWindowType)
515{
516        switch (nWindowType)
517        {
518        case AR_ACTIVE_LINK_ACTION_OPEN_SEARCH:
519        case AR_ACTIVE_LINK_ACTION_OPEN_SUBMIT:
520        case AR_ACTIVE_LINK_ACTION_OPEN_MODIFY:
521        case AR_ACTIVE_LINK_ACTION_OPEN_DSPLY:
522        case AR_ACTIVE_LINK_ACTION_OPEN_REPORT:
523#if AR_CURRENT_API_VERSION >= AR_API_VERSION_763
524        case AR_ACTIVE_LINK_ACTION_OPEN_MODIFY_DIRECT: 
525        case AR_ACTIVE_LINK_ACTION_OPEN_DISPLAY_DIRECT:
526#endif
527                return true;
528        default: return false;
529        }
530}
531
532bool DocOpenWindowAction::ActionOpenDlgCloseButton(int nWindowType)
533{
534        switch (nWindowType)
535        {
536        case AR_ACTIVE_LINK_ACTION_OPEN_DLG:
537#if AR_CURRENT_API_VERSION >= AR_API_VERSION_764
538        case AR_ACTIVE_LINK_ACTION_OPEN_POPUP:
539#endif
540                return true;
541        default: return false;
542        }
543}
544
545bool DocOpenWindowAction::ActionOpenDlgSuppressEmptyList(int nWindowType)
546{
547        switch (nWindowType)
548        {
549        case AR_ACTIVE_LINK_ACTION_OPEN_MODIFY:
550        case AR_ACTIVE_LINK_ACTION_OPEN_DSPLY:
551#if AR_CURRENT_API_VERSION >= AR_API_VERSION_763
552        case AR_ACTIVE_LINK_ACTION_OPEN_MODIFY_DIRECT:
553        case AR_ACTIVE_LINK_ACTION_OPEN_DISPLAY_DIRECT:
554#endif
555                return true;
556        default: return false;
557                       
558        }
559}
560
561bool DocOpenWindowAction::ActionOpenDlgInputMapping(int nWindowType)
562{
563        switch (nWindowType)
564        {
565        case AR_ACTIVE_LINK_ACTION_OPEN_DLG:
566        case AR_ACTIVE_LINK_ACTION_OPEN_SEARCH:
567        case AR_ACTIVE_LINK_ACTION_OPEN_SUBMIT:
568#if AR_CURRENT_API_VERSION >= AR_API_VERSION_764
569        case AR_ACTIVE_LINK_ACTION_OPEN_POPUP:
570#endif
571                return true;
572        default: return false;
573        }
574}
575
576bool DocOpenWindowAction::ActionOpenDlgOutputMapping(int nWindowType)
577{
578        switch (nWindowType)
579        {
580        case AR_ACTIVE_LINK_ACTION_OPEN_DLG:
581#if AR_CURRENT_API_VERSION >= AR_API_VERSION_764
582        case AR_ACTIVE_LINK_ACTION_OPEN_POPUP:
583#endif
584                return true;
585        default: return false;
586        }
587}
588
589bool DocOpenWindowAction::ActionOpenDlgPoolingInterval(int nWindowType)
590{
591        switch (nWindowType)
592        {
593        case AR_ACTIVE_LINK_ACTION_OPEN_DSPLY:
594        case AR_ACTIVE_LINK_ACTION_OPEN_MODIFY:
595#if AR_CURRENT_API_VERSION >= AR_API_VERSION_763
596        case AR_ACTIVE_LINK_ACTION_OPEN_DISPLAY_DIRECT:
597        case AR_ACTIVE_LINK_ACTION_OPEN_MODIFY_DIRECT:
598#endif
599                return true;
600        default: return false;
601        }
602}
603
604bool DocOpenWindowAction::ActionOpenDlgMessage(int nWindowType)
605{
606        switch (nWindowType)
607        {
608        case AR_ACTIVE_LINK_ACTION_OPEN_DSPLY:
609        case AR_ACTIVE_LINK_ACTION_OPEN_MODIFY:
610#if AR_CURRENT_API_VERSION >= AR_API_VERSION_763
611        case AR_ACTIVE_LINK_ACTION_OPEN_DISPLAY_DIRECT:
612        case AR_ACTIVE_LINK_ACTION_OPEN_MODIFY_DIRECT:
613#endif
614        case AR_ACTIVE_LINK_ACTION_OPEN_REPORT:
615                return true;
616        default: return false;
617        }
618}
619
620bool DocOpenWindowAction::ActionOpenDlgInlineForm(int nWindowType)
621{
622        // The "Inline Form" option isn't displayed on open window actions of type Dialog, Report and Popup. Show it for all other types!
623
624        switch (nWindowType)
625        {
626        //case AR_ACTIVE_LINK_ACTION_OPEN_DLG:
627        case AR_ACTIVE_LINK_ACTION_OPEN_SEARCH:
628        case AR_ACTIVE_LINK_ACTION_OPEN_SUBMIT:
629        //case AR_ACTIVE_LINK_ACTION_OPEN_REPORT:
630        case AR_ACTIVE_LINK_ACTION_OPEN_MODIFY:
631        case AR_ACTIVE_LINK_ACTION_OPEN_DSPLY:
632#if AR_CURRENT_API_VERSION >= AR_API_VERSION_763
633        case AR_ACTIVE_LINK_ACTION_OPEN_MODIFY_DIRECT:
634        case AR_ACTIVE_LINK_ACTION_OPEN_DISPLAY_DIRECT:
635#endif
636        //case AR_ACTIVE_LINK_ACTION_OPEN_POPUP:
637                return true;
638        default: return false;
639        }
640}
641
642bool DocOpenWindowAction::IsViewFieldReference(const char *targetLocation)
643{
644        if (targetLocation != NULL && strncmp("VF", targetLocation, 2) == 0)
645        {
646                int index = 2;
647                while (targetLocation[index] != 0)
648                {
649                        char chr = targetLocation[index];
650                        if (chr < '0' || chr > '9')
651                                return false;
652
653                        index++;
654                }
655                return true;
656        }
657        return false;
658}
659
Note: See TracBrowser for help on using the repository browser.