source: branches/work_304/util/RefItem.cpp @ 368

Revision 368, 19.3 KB checked in by jls17, 6 years ago (diff)
  • added support for filterApi calls (input-mapping, output-mapping, creates field-references)
Line 
1//Copyright (C) 2010 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 Foobar.  If not, see <http://www.gnu.org/licenses/>.
16
17#include "stdafx.h"
18
19#include "RefItem.h"
20#include "../ARInside.h"
21#include "../core/ARServerObject.h"
22#include "../core/ARSchema.h"
23#include "../core/ARField.h"
24#include "../core/ARVui.h"
25#include "../core/ARActiveLink.h"
26#include "../core/ARFilter.h"
27#include "../core/AREscalation.h"
28#include "../core/ARContainer.h"
29#include "../core/ARCharMenu.h"
30#include "../core/ARImage.h"
31
32const char* IfElse(IfElseState state)
33{
34        if (state == IES_IF) return "If";
35        else return "Else";
36}
37
38///////////////////////////////////////////////////////////////////
39// bit mask for actionIndex variable of CRefItem
40// 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0
41// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
42//                                      | |_______________________|
43//                                      |_|    IfElse + Action
44//                                       OpenClose-Bit
45//                                       Service In/Out Bit
46const int ACTIONMASK_INDEX = 0x000007FF;
47const int ACTIONMASK_OPENCLOSE = 0x00000800;
48const int ACTIONMASK_SERVICE_IN_OR_OUT = 0x00000800;
49
50CRefItem::CRefItem()
51{
52        this->arsStructItemType = AR_STRUCT_ITEM_XML_NONE;
53        this->actionIndex = -1;
54        this->objectId = -1;
55        this->messageId = -1;
56        this->subObjectId = -1;
57}
58
59CRefItem::CRefItem(const CARServerObject &obj, int dMessage)
60{
61        Init(obj, 0, -1, dMessage);
62}
63
64CRefItem::CRefItem(const CARServerObject &obj, int IfOrElse, int nAction, int dMessage)
65{
66        Init(obj, IfOrElse, nAction, dMessage);
67}
68
69CRefItem::CRefItem(const CARServerObject &obj, int IfOrElse, int nAction, int OpenOrClose, int dMessage)
70{
71        Init(obj, IfOrElse, nAction, dMessage);
72        if (OpenOrClose > 0)
73                this->actionIndex |= ACTIONMASK_OPENCLOSE;      // set open/close bit
74}
75
76void CRefItem::Init(const CARServerObject &obj, int IfOrElse, int nAction, int dMessage)
77{
78        this->arsStructItemType = obj.GetServerObjectTypeXML();
79        this->actionIndex = nAction;
80        this->messageId = dMessage;
81
82        if (IfOrElse > 0)
83                this->actionIndex += 1000;
84
85        // for special types .. fill subObjectId
86        switch(this->arsStructItemType)
87        {
88        case AR_STRUCT_ITEM_XML_FIELD:
89                this->objectId = (static_cast<const CARField*>(&obj))->GetSchema().GetInsideId();
90                this->subObjectId = obj.GetInsideId();
91                break;
92        case AR_STRUCT_ITEM_XML_VUI:
93                this->objectId = (static_cast<const CARVui*>(&obj))->GetSchema().GetInsideId();
94                this->subObjectId = obj.GetInsideId();
95                break;
96        default:
97                this->objectId = obj.GetInsideId();
98                this->subObjectId = -1;
99        }
100}
101
102const char* CRefItem::IfElse() const
103{
104        int action = actionIndex & ACTIONMASK_INDEX;
105        if (action < 1000) 
106                return ::IfElse(IES_IF);
107        else
108                return ::IfElse(IES_ELSE);
109}
110
111const char* CRefItem::OpenClose() const
112{
113        if ((actionIndex & ACTIONMASK_OPENCLOSE) == 0)
114                return "Open Window";
115        else
116                return "Close Window";
117}
118
119const char* CRefItem::ServiceInfo() const
120{
121        if ((actionIndex & ACTIONMASK_SERVICE_IN_OR_OUT) == 0)
122                return "Service Input Mapping";
123        else
124                return "Service Output Mapping";
125}
126
127int CRefItem::ActionIndex() const
128{
129        int action = actionIndex & ACTIONMASK_INDEX;
130        if (action < 1000)
131                return action;
132        else
133                return action - 1000;
134}
135
136string CRefItem::LinkToSchemaIndex(int rootLevel) const
137{
138        CARSchema schema(objectId);
139        if (schema.Exists())
140        {
141                const ARIndexList& indexList = schema.GetIndexList();
142                return CWebUtil::Link(indexList.indexList[actionIndex].indexName, CPageParams(PAGE_SCHEMA_INDEXES, &schema), "", rootLevel);
143        }
144        return "Index";
145}
146
147string CRefItem::LinkToSchemaResultList(int rootLevel) const
148{
149        const char* cResultList = "ResultList";
150        CARSchema schema(objectId);
151        if (schema.Exists())
152        {
153                return CWebUtil::Link(cResultList, CPageParams(PAGE_SCHEMA_RESULTLIST, &schema), "", rootLevel);
154        }
155        return cResultList;
156}
157
158string CRefItem::LinkToSchemaSortList(int rootLevel) const
159{
160        const char* cSortList = "SortList";
161        CARSchema schema(objectId);
162        if (schema.Exists())
163        {
164                return CWebUtil::Link(cSortList, CPageParams(PAGE_SCHEMA_SORTLIST, &schema), "", rootLevel);
165        }
166        return cSortList;
167}
168
169string CRefItem::LinkToSchema(int rootLevel) const
170{
171        switch (arsStructItemType)
172        {
173        case AR_STRUCT_ITEM_XML_SCHEMA:
174        case AR_STRUCT_ITEM_XML_FIELD:
175        case AR_STRUCT_ITEM_XML_VUI:
176                {
177                        CARSchema schema(objectId);
178                        return schema.GetURL(rootLevel);
179                }
180                break;
181        default: return "";
182        }
183}
184
185void CRefItem::LinkToColumnParent(std::ostream& strm, int rootLevel) const
186{
187        // objectId contains schema id
188        // subObjectId contains column field id,
189        // actionIndex contains table field id
190        CARSchema schema(objectId);
191        CARField field(objectId, actionIndex);
192
193        if (field.Exists())
194        {
195                strm << CARInside::GetInstance()->LinkToField(schema.GetInsideId(), actionIndex, rootLevel) << " of Form " << CARInside::GetInstance()->LinkToSchema(schema.GetInsideId(), rootLevel);
196        }
197}
198
199bool CRefItem::operator ==(const CRefItem &r)
200{
201        if (this->arsStructItemType == r.arsStructItemType &&
202                this->objectId == r.objectId &&
203                this->messageId == r.messageId &&
204                // jls17 NOTE/TODO: just a test to eliminate duplicate references when field is used in multiple action within the same object
205                //this->actionIndex == r.actionIndex &&
206                this->subObjectId == r.subObjectId)
207        {
208                return true;
209        }
210        return false;
211}
212
213int CRefItem::GetObjectType() const
214{
215        return this->arsStructItemType;
216}
217
218string CRefItem::GetObjectName() const
219{
220        switch (this->arsStructItemType)
221        {
222        case AR_STRUCT_ITEM_XML_SCHEMA:
223        // the main object of field/vui is the schema. so in this case we have to
224        // return the schema name, which is used as object name to LinkToXmlObjType
225        case AR_STRUCT_ITEM_XML_FIELD:
226        case AR_STRUCT_ITEM_XML_VUI:
227                {
228                        CARSchema schema(this->objectId);
229                        return schema.GetName();
230                }
231                break;
232        case AR_STRUCT_ITEM_XML_FILTER:
233                {
234                        CARFilter filter(this->objectId);
235                        return filter.GetName();
236                }
237                break;
238        case AR_STRUCT_ITEM_XML_ACTIVE_LINK:
239                {
240                        CARActiveLink actlink(this->objectId);
241                        return actlink.GetName();
242                }
243                break;
244        case AR_STRUCT_ITEM_XML_CHAR_MENU:
245                {
246                        CARCharMenu charMenu(this->objectId);
247                        return charMenu.GetName();
248                }
249                break;
250        case AR_STRUCT_ITEM_XML_ESCALATION:
251                {
252                        CAREscalation esc(this->objectId);
253                        return esc.GetName();
254                }
255                break;
256        // TODO: implement Distributed Mapping
257        //case AR_STRUCT_ITEM_XML_DIST_MAP:
258        //      {
259        //      }
260        //      break;
261        case AR_STRUCT_ITEM_XML_CONTAINER:
262                {
263                        CARContainer cont(this->objectId);
264                        return cont.GetName();
265                }
266                break;
267        // TODO: implement Distributed Pool
268        //case AR_STRUCT_ITEM_XML_DIST_POOL:
269        //      {
270        //      }
271        //      break;
272#if AR_CURRENT_API_VERSION >= AR_API_VERSION_750
273        case AR_STRUCT_ITEM_IMAGE:
274                {
275                        CARImage img(this->objectId);
276                        return img.GetName();
277                }
278                break;
279#endif
280        default: return "";
281        }
282}
283
284unsigned int CRefItem::GetObjectEnabled(bool &supportsEnabled) const
285{
286        switch (GetObjectType())
287        {
288        case AR_STRUCT_ITEM_XML_FILTER:
289                {
290                        supportsEnabled = true;
291                        CARFilter flt(this->objectId);
292                        return flt.GetEnabled();
293                }
294        case AR_STRUCT_ITEM_XML_ACTIVE_LINK:
295                {
296                        supportsEnabled = true;
297                        CARActiveLink actlink(this->objectId);
298                        return actlink.GetEnabled();
299                }
300        case AR_STRUCT_ITEM_XML_ESCALATION:
301                {
302                        supportsEnabled = true;
303                        CAREscalation esc(this->objectId);
304                        return esc.GetEnabled();
305                }
306        ////case AR_STRUCT_ITEM_XML_DIST_MAP: // TODO: add DSO support
307        //case AR_STRUCT_ITEM_XML_DIST_POOL:
308               
309        default:
310                supportsEnabled = false;
311                return false;
312        }
313}
314
315int CRefItem::GetObjectOrder() const
316{
317        switch (GetObjectType())
318        {
319        case AR_STRUCT_ITEM_XML_ACTIVE_LINK:
320                {
321                        CARActiveLink al(GetObjectId());
322                        return al.GetOrder();
323                }
324        case AR_STRUCT_ITEM_XML_FILTER:
325                {
326                        CARFilter flt(GetObjectId());
327                        return flt.GetOrder();
328                }
329        default: return -1;
330        }
331}
332
333string CRefItem::GetObjectExecuteOn() const
334{
335        switch (GetObjectType())
336        {
337        case AR_STRUCT_ITEM_XML_ACTIVE_LINK:
338                {
339                        CARActiveLink al(GetObjectId());
340                        CARProplistHelper props(&al.GetPropList());
341                        return al.GetExecuteOn(true, &props);
342                }
343        case AR_STRUCT_ITEM_XML_FILTER:
344                {
345                        CARFilter flt(GetObjectId());
346                        return flt.GetExecuteOn(true);
347                }
348        case AR_STRUCT_ITEM_XML_ESCALATION:
349                {
350                        CAREscalation esc(GetObjectId());
351                        return esc.GetExecuteOn();
352                }
353        default: return "";
354        }
355}
356
357unsigned int CRefItem::GetObjectEnabled() const
358{
359        bool se;
360        return GetObjectEnabled(se);
361}
362
363string CRefItem::GetDescription(int rootLevel) const
364{
365        stringstream strm;
366        GetDescription(strm, rootLevel);
367        return strm.str();
368}
369
370void CRefItem::GetDescription(std::ostream &strm, int rootLevel) const
371{
372        switch (messageId)
373        {
374        case REFM_PUSHFIELD_TARGET:
375                strm << "Target in 'Push Fields' " << IfElse() << "-Action " << ActionIndex();
376                break;
377        case REFM_PUSHFIELD_VALUE:
378                strm << "Value in 'Push Fields' " << IfElse() << "-Action " << ActionIndex();
379                break;
380        case REFM_SETFIELDS_TARGET:
381                strm << "Target in 'Set Fields' " << IfElse() << "-Action " << ActionIndex();
382                break;
383        case REFM_SETFIELDS_VALUE:
384                strm << "Value in 'Set Fields' " << IfElse() << "-Action " << ActionIndex();
385                break;
386        case REFM_OPENWINDOW_TARGET:
387                strm << "Target in '" << OpenClose() << "' " << IfElse() << "-Action " << ActionIndex();
388                break;
389        case REFM_OPENWINDOW_VALUE:
390                strm << "Value in '" << OpenClose() << "' " << IfElse() << "-Action " << ActionIndex();
391                break;
392        case REFM_SERVICE_TARGET:
393                strm << "Target in '" << ServiceInfo() << "' " << IfElse() << "-Action " << ActionIndex();
394                break;
395        case REFM_SERVICE_VALUE:
396                strm << "Value in '" << ServiceInfo() << "' " << IfElse() << "-Action " << ActionIndex();
397                break;
398        case REFM_SETFIELDS_FORM:
399                strm << "Form Name in 'SetFields' " << IfElse() << "-Action " << ActionIndex();
400                break;
401        case REFM_SETFIELDS_SERVER:
402                strm << "Server Name in 'SetFields' " << IfElse() << "-Action " << ActionIndex();
403                break;
404        case REFM_SETFIELDS_QUALIFICATION:
405                strm << "Set Field If Qualification " << IfElse() << "-Action " << ActionIndex();
406                break;
407        case REFM_SETFIELDS_SQL_QUALIFICATION:
408                strm << "SQL Set Field If Qualification" << IfElse() << "-Action " << ActionIndex();
409                break;
410        case REFM_PUSHFIELD_TARGET_MATCHING:
411                strm << "Target in 'Push Fields' (All Matching Ids) " << IfElse() << "-Action " << ActionIndex();
412                break;
413        case REFM_PUSHFIELD_VALUE_MATCHING:
414                strm << "Value in 'Push Fields' (All Matching Ids) " << IfElse() << "-Action " << ActionIndex();
415                break;
416        case REFM_SETFIELDS_TARGET_MATCHING:
417                strm << "Target in 'Set Fields' (All Matching Ids) " << IfElse() << "-Action " << ActionIndex();
418                break;
419        case REFM_SETFIELDS_VALUE_MATCHING:
420                strm << "Value in 'Set Fields' (All Matching Ids) " << IfElse() << "-Action " << ActionIndex();
421                break;
422        case REFM_SETFIELDS_HOVERFIELD:
423                strm << "Hover-Field in 'SetFields' " << IfElse() << "-Action " << ActionIndex();
424                break;
425        case REFM_SETFIELDS_FILTERAPI_INPUT:
426                strm << "Value in FilterAPI-Input-Mapping " << IfElse() << "-Action " << ActionIndex();
427                break;
428        case REFM_SETFIELDS_FILTERAPI_PLUGINNAME:
429                strm << "Plugin-Name in FilterAPI-Call " << IfElse() << "-Action " << ActionIndex();
430                break;
431        case REFM_PUSHFIELD_HOVERFIELD:
432                strm << "Hover-Field in 'PushFields' " << IfElse() << "-Action " << ActionIndex();
433                break;
434        case REFM_OPENWINDOW_HOVERFIELD:
435                strm << "Hover-Field in 'OpenWindow' " << IfElse() << "-Action " << ActionIndex();
436                break;
437        case REFM_SERVICE_HOVERFIELD:
438                strm << "Hover-Field in 'Service' " << IfElse() << "-Action " << ActionIndex();
439                break;
440        case REFM_RUN_PROCESS:
441                strm << "Field in Run Process " << IfElse() << "-Action " << ActionIndex();
442                break;
443        case REFM_MESSAGE:
444                strm << "Message " << IfElse() << "-Action " << ActionIndex();
445                break;
446        case    REFM_CHANGEFIELD:
447                strm << "Change Field " << IfElse() << "-Action " << ActionIndex();
448                break;
449        case REFM_CHANGEFIELD_OF_FIELDS_VALUE:
450                strm << "Change Field of Fields Value " << IfElse() << "-Action " << ActionIndex();
451                break;
452        case REFM_CHANGEFIELD_LABEL:
453                strm << "Change Field Label " << IfElse() << "-Action " << ActionIndex();
454                break;
455        case REFM_PUSHFIELD_SERVER:
456                strm << "Server Name in 'Push Fields' " << IfElse() << "-Action " << ActionIndex();
457                break;
458        case REFM_PUSHFIELD_FORM:
459                strm << "Form Name in 'Push Fields' " << IfElse() << "-Action " << ActionIndex();
460                break;
461        case REFM_PUSHFIELD_IF:
462                strm << "Push Field If Qualification " << IfElse() << "-Action " << ActionIndex();
463                break;
464        case REFM_DIRECTSQL:
465                strm << "Value in Direct SQL " << IfElse() << "-Action " << ActionIndex();
466                break;
467        case REFM_OPENWINDOW_LOCATION:
468                strm << "Window Open Location " << IfElse() << "-Action " << ActionIndex();
469                break;
470        case REFM_OPENWINDOW_SERVER:
471                strm << "Window Open Server Name " << IfElse() << "-Action " << ActionIndex();
472                break;
473        case REFM_OPENWINDOW_FORM:
474                strm << "Window Open Form Name " << IfElse() << "-Action " << ActionIndex();
475                break;
476        case REFM_OPENWINDOW_VIEW:
477                strm << "Window Open View Name " << IfElse() << "-Action " << ActionIndex();
478                break;
479        case REFM_OPENWINDOW_REPORTTYPE:
480                strm << "Window Open Report Type " << IfElse() << "-Action " << ActionIndex();
481                break;
482        case REFM_OPENWINDOW_REPORTNAME:
483                strm << "Window Open Report Name " << IfElse() << "-Action " << ActionIndex();
484                break;
485        case REFM_OPENWINDOW_REPORTDESTINATION:
486                strm << "Window Open Report Destination " << IfElse() << "-Action " << ActionIndex();
487                break;
488        case REFM_OPENWINDOW_QUALIFICATION:
489                strm << "Open Window Qualification " << IfElse() << "-Action " << ActionIndex();
490                break;
491        case REFM_OPENWINDOW_SORTBY:
492                strm << "Open Window SortBy " << IfElse() << "-Action " << ActionIndex();
493                break;
494        case REFM_OPENWINDOW_ENTRYIDS:
495                strm << "Window Open EntryIDs " << IfElse() << "-Action " << ActionIndex();
496                break;
497        case REFM_OPENWINDOW_QUERYOVERRIDE:
498                strm << "Window Open Query Override " << IfElse() << "-Action " << ActionIndex();
499                break;
500        case REFM_OPENWINDOW_CHARENC:
501                strm << "Window Open Character Encoding " << IfElse() << "-Action " << ActionIndex();
502                break;
503        case REFM_CALLCUIDE_SERVER:
504                strm << "Used as CallGuide Server in " << IfElse() << "-Action " << ActionIndex();
505                break;
506        case REFM_CALLGUIDE_NAME:
507                strm << "Used as CallGuide Name in " << IfElse() << "-Action " << ActionIndex();
508                break;
509        case REFM_CALLGUIDE_TABLELOOP:
510                strm << "Guide Table Loop " << IfElse() << "-Action " << ActionIndex();
511                break;
512        case REFM_GOTO:
513                strm << "Used as Goto-Value in " << IfElse() << "-Action " << ActionIndex();
514                break;
515        case REFM_SERVICE_SERVER:
516                strm << "Used as Service Server in " << IfElse() << "-Action " << ActionIndex();
517                break;
518        case REFM_SERVICE_FORM:
519                strm << "Used as Service Form in " << IfElse() << "-Action " << ActionIndex();
520                break;
521        case REFM_SERVICE_CALL:
522                strm << "Start Service Call in " << IfElse() << "-Action " << ActionIndex();
523                break;
524        case REFM_SERVICE_REQUESTID:
525                strm << "Service Request-Id " << IfElse() << "-Action " << ActionIndex();
526                break;
527        case REFM_TABLEFIELD_SERVER:
528                strm << "Used as Server of Table Field";
529                break;
530        case REFM_TABLEFIELD_FORM:
531                strm << "Used as Schema of Table Field";
532                break;
533        case REFM_TABLEFIELD_COLUMN:
534                strm << "Column in Table "; LinkToColumnParent(strm, rootLevel);
535                break;
536        case REFM_TABLEFIELD_QUALIFICATION:
537                strm << "Table Qualification";
538                break;
539        case REFM_CHARMENU_LABELFIELD:
540                strm << "Menu Label Field";
541                break;
542        case REFM_CHARMENU_VALUE:
543                strm << "Menu Value Field";
544                break;
545        case REFM_CHARMENU_QUALIFICATION:
546                strm << "Search Menu Qualification";
547                break;
548        case REFM_NOTIFY_TEXT:
549                strm << "Field in Notify Action (Text)";
550                break;
551        case REFM_NOTIFY_USER:
552                strm << "Field in Notify Action (User Name)";
553                break;
554        case REFM_NOTIFY_SUBJECT:
555                strm << "Field in Notify Action (Subject)";
556                break;
557        case REFM_NOTIFY_FIELDLIST:
558                strm << "Field in Notify Action (Field List)";
559                break;
560        case REFM_NOTIFY_MAILBOX:
561                strm << "Field in Notify Action (Mailbox Name)";
562                break;
563        case REFM_NOTIFY_FROM:
564                strm << "Field in Notify Action (From)";
565                break;
566        case REFM_NOTIFY_REPLYTO:
567                strm << "Field in Notify Action (Reply To)";
568                break;
569        case REFM_NOTIFY_CC:
570                strm << "Field in Notify Action (CC)";
571                break;
572        case REFM_NOTIFY_BCC:
573                strm << "Field in Notify Action (BCC)";
574                break;
575        case REFM_NOTIFY_ORG:
576                strm << "Field in Notify Action (Organisation)";
577                break;
578        case REFM_NOTIFY_TEMPL_HEADER:
579                strm << "Field in Notify Action (Header Template)";
580                break;
581        case REFM_NOTIFY_TEMPL_CONTENT:
582                strm << "Field in Notify Action (Content Template)";
583                break;
584        case REFM_NOTIFY_TEMPL_FOOTER:
585                strm << "Field in Notify Action (Footer Template)";
586                break;
587        case REFM_SETFIELDS_WS_INPUT:
588                strm << "Web Service Set Fields Input Mapping";
589                break;
590        case REFM_SETFIELDS_WS_OUTPUT:
591                strm << "Web Service Set Fields Output Mapping";
592                break;
593        case REFM_SCHEMA_INDEX:
594                strm << "Field in " << LinkToSchemaIndex(rootLevel);
595                break;
596        case REFM_SCHEMA_RESULTLIST:
597                strm << "Field in " << LinkToSchemaResultList(rootLevel);
598                break;
599        case REFM_SCHEMA_SORTLIST:
600                strm << "Field in " << LinkToSchemaSortList(rootLevel);
601                break;
602        case REFM_SCHEMA_JOIN_QUALIFICATION:
603                strm << "Join Qualification";
604                break;
605        case REFM_SCHEMA_AUDIT_QUALIFICATION:
606                strm << "Audit Qualification";
607                break;
608        case REFM_SCHEMA_ARCHIVE_QUALIFICATION:
609                strm << "Archive Qualification";
610                break;
611        case REFM_SCHEMA_FTS_WEIGHTED_RELEVANCY_FIELD:
612                strm << "FTS Weighted Relevancy Field";
613                break;
614        case REFM_WEBSERVICE_PROPERTY:
615                strm << "Webservice Property";
616                break;
617        case REFM_WEBSERVICE_OPERATION:
618                strm << "Webservice Operation";
619                break;
620        case REFM_WEBSERVICE_FIELDMAP:
621                strm << "Webservice Field Mapping";
622                break;
623        case REFM_RUNIF:
624                strm << "Run If";
625                break;
626        case REFM_CONTROLFIELD:
627                strm << "Control Field";
628                break;
629        case REFM_FOCUSFIELD:
630                strm << "Focus Field";
631                break;
632        case REFM_MACRO:
633                strm << "Field in Macro " << IfElse() << "-Action " << ActionIndex();
634                break;
635        case REFM_BACKGROUND_IMAGE:
636                strm << "Image on field of form " << LinkToSchema(rootLevel);
637                break;
638        case REFM_TITLE_BAR_ICON:
639                strm << "Title Bar Icon in VUI of Form " << LinkToSchema(rootLevel);
640                break;
641        case REFM_VUI_BACKGROUND:
642                strm << "Background in VUI of Form " << LinkToSchema(rootLevel);
643                break;
644        case REFM_PACKINGLIST:
645                strm << "Contained in packing list";
646                break;
647        case REFM_FIELD_CHARMENU:
648                strm << "Field Menu on Form " << LinkToSchema(rootLevel);
649                break;
650        case REFM_CHARMENU_SQL:
651                strm << "Field in Menus SQL-Command";
652                break;
653        case REFM_CHARMENU_FORM:
654                strm << "Form-Value in Menu";
655                break;
656        case REFM_CHARMENU_SERVER:
657                strm << "Server-Value in Menu";
658                break;
659        default:
660                assert(false);
661        }
662}
Note: See TracBrowser for help on using the repository browser.