Subversion Repositories DevTools

Rev

Rev 2104 | Rev 2110 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2104 Rev 2106
Line 1... Line 1...
1
using System;
1
using System;
2
using System.Windows.Forms;
2
using System.Windows.Forms;
3
using System.IO;
3
using System.IO;
4
using Word;
4
using Word;
-
 
5
using System.Threading;
5
 
6
 
6
 
7
 
7
namespace EA_DocGen
8
namespace EA_DocGen
8
{
9
{
9
	/// <summary>
10
	/// <summary>
10
	/// 
11
	/// 
11
	/// </summary>
12
	/// </summary>
12
	public class Main
13
	public class Main
13
	{
14
	{
14
      public string filecontents = "";
-
 
15
      public AboutForm theForm;
15
      public AboutForm theForm;
16
 
16
 
-
 
17
      // All other classes access the EA repository through this public static item
17
      private EA_Utilities EA_Utils = new EA_Utilities();
18
      public static EA.Repository EA_Repository = null;
18
 
-
 
19
 
19
 
20
      public readonly static String GUI_OUTPUT_TAB_NAME = "EA_DocGen";
20
      public readonly static String GUI_OUTPUT_TAB_NAME = "EA_DocGen";
21
      
21
      
-
 
22
      // EA_DocGen Menu strings
-
 
23
 
-
 
24
      //////////////////////////////////////////////////////////////////////////////////
-
 
25
      /// The Main Menu
-
 
26
      //////////////////////////////////////////////////////////////////////////////////
-
 
27
      private const string MI_Root            = "-&EA DocGen";
-
 
28
 
-
 
29
      private const string MI_Separator                  = "-";
-
 
30
      private const string MI_GenDocFromModelLayout      = "&Generate Document From Model Layout";
-
 
31
      private const string MI_CopyGUIDToClipboard        = "&Copy GUID To Clipboard";
-
 
32
      private const string MI_AddTableElement            = "&Add Table Element";
-
 
33
      private const string MI_AddTextElement             = "&Add Text Element";
-
 
34
      private const string MI_AddRelMatrixElement        = "&Add RelationshipMatrix Element";
-
 
35
      private const string MI_AddTestTraceabilityElement = "&Add Test Traceability Element";
-
 
36
      private const string MI_AddDocumentReference       = "&Add Document Reference";
-
 
37
      private const string MI_AddTerminologyEntry        = "&Add Terminology Entry";
-
 
38
      private const string MI_ModifyDocumentOptions      = "&Modify EA_DocGen Options";
-
 
39
      private const string MI_GenModelLayoutForDesignDoc = "&Generate Model Layout For Design Document";
-
 
40
      private const string MI_GenBasicModelLayout        = "&Generate Basic Document Model Layout";
-
 
41
      private const string MI_About                      = "&About...";
-
 
42
 
-
 
43
      private string[] MI_RootMenu = new string[] { MI_GenDocFromModelLayout, 
-
 
44
                                                    MI_Separator,
-
 
45
                                                    MI_CopyGUIDToClipboard,
-
 
46
                                                    MI_UsingCopiedGUID, // sub-menu
-
 
47
                                                    MI_Separator,
-
 
48
                                                    MI_AddTableElement,
-
 
49
                                                    MI_AddTextElement,
-
 
50
                                                    MI_AddRelMatrixElement,
-
 
51
                                                    MI_AddTestTraceabilityElement,
-
 
52
                                                    MI_Separator,
-
 
53
                                                    MI_AddDocumentReference,
-
 
54
                                                    MI_AddTerminologyEntry,
-
 
55
                                                    MI_Separator,
-
 
56
                                                    MI_ModifyDocumentOptions,
-
 
57
                                                    MI_Separator,
-
 
58
                                                    MI_GenModelLayoutForDesignDoc,
-
 
59
                                                    MI_GenBasicModelLayout,
-
 
60
                                                    MI_Separator,
-
 
61
                                                    MI_MiscUtils,       // sub-menu
-
 
62
                                                    MI_About };
-
 
63
 
-
 
64
      //////////////////////////////////////////////////////////////////////////////////
-
 
65
      /// Using Copied GUID sub-menu
-
 
66
      //////////////////////////////////////////////////////////////////////////////////
-
 
67
      private const string MI_UsingCopiedGUID = "-&Using Copied GUID...";
-
 
68
 
-
 
69
      private const string MI_AddLinkElement     = "&Add Link Element";
-
 
70
      private const string MI_AddTestLinkElement = "&Add Test Link Element";
-
 
71
      private const string MI_AddNameLinkElement = "&Add Name Link Element";
-
 
72
      private const string MI_GenPkgsFromEleList = "&Generate Packages From Element List";
-
 
73
      private const string MI_GenSubPkgLinks     = "&Generate Sub-Package Links";
-
 
74
      private const string MI_GenEleLinks        = "&Generate Element Links";
-
 
75
 
-
 
76
      private string[] MI_UsingCopiedGUIDSubMenu = new string[] { MI_AddLinkElement,
-
 
77
                                                                  MI_AddTestLinkElement,
-
 
78
                                                                  MI_AddNameLinkElement,
-
 
79
                                                                  MI_Separator,
-
 
80
                                                                  MI_GenPkgsFromEleList,
-
 
81
                                                                  MI_GenSubPkgLinks,
-
 
82
                                                                  MI_GenEleLinks};
-
 
83
 
-
 
84
      //////////////////////////////////////////////////////////////////////////////////
-
 
85
      /// Misc Utils sub-menu
-
 
86
      //////////////////////////////////////////////////////////////////////////////////
-
 
87
      private const string MI_MiscUtils       = "-&Misc Utils";
-
 
88
 
-
 
89
      private const string MI_MarkContentWithAPIStereotype   = "&Mark Content With API Stereotype";
-
 
90
      private const string MI_RemoveAPIStereotypeFromContent = "&Remove API Stereotype From Content";
-
 
91
      private const string MI_ShowDiscoveryOrder             = "&Show Package/Element Discovery Order";
-
 
92
      private const string MI_FollowLink                     = "&Follow Link";
-
 
93
      private const string MI_UpdateLink                     = "&Update Link";
-
 
94
      private const string MI_IdentifyClipboardItem          = "&Identify Clipboard Item";
-
 
95
 
-
 
96
      private string[] MI_MiscUtilsSubMenu = new string[] { MI_MarkContentWithAPIStereotype,
-
 
97
                                                            MI_RemoveAPIStereotypeFromContent,
-
 
98
                                                            MI_Separator,
-
 
99
                                                            MI_ShowDiscoveryOrder,
-
 
100
                                                            MI_Separator,
-
 
101
                                                            MI_FollowLink,
-
 
102
                                                            MI_UpdateLink,
-
 
103
                                                            MI_Separator,
-
 
104
                                                            MI_IdentifyClipboardItem};
-
 
105
 
-
 
106
 
-
 
107
 
-
 
108
      // Thread variables so the document generation dialog can be detached from the EA thread that
-
 
109
      // is used to drive EA_DocGen via the menus
-
 
110
      private Thread threadCreateDoc = null;
-
 
111
      public static bool threadCreateDocDialogRunning = false;   // true when the docu gen dialog is being shown
-
 
112
      public static bool threadCreateDocProcessRunning = false;  // true when document generation is taking place
-
 
113
 
-
 
114
 
22
 
115
 
23
 
116
 
24
      //Called Before EA starts to check Add-In Exists
117
      //Called Before EA starts to check Add-In Exists
25
      public String EA_Connect(EA.Repository Repository)
118
      public String EA_Connect(EA.Repository Repository)
26
      {
119
      {
-
 
120
         EA_Repository = Repository;
27
         //No special processing required.
121
         //No special processing required.
28
         return "a string";
122
         return "a string";
29
      }
123
      }
30
 
124
 
31
      /// <summary>
125
      /// <summary>
32
      /// Called when EA initialised. Creates an output tab for the add in.
126
      /// Called when EA initialised. Creates an output tab for the add in.
33
      /// </summary>
127
      /// </summary>
34
      /// <param name="repository"></param>
128
      /// <param name="repository"></param>
35
      public void EA_OnPostInitialized(EA.Repository repository)
129
      public void EA_OnPostInitialized(EA.Repository Repository)
36
      {
130
      {
-
 
131
         EA_Repository = Repository;
37
         repository.CreateOutputTab(GUI_OUTPUT_TAB_NAME);
132
         Repository.CreateOutputTab(GUI_OUTPUT_TAB_NAME);
38
         repository.EnsureOutputVisible(GUI_OUTPUT_TAB_NAME);
133
         Repository.EnsureOutputVisible(GUI_OUTPUT_TAB_NAME);
39
      }
134
      }
40
 
135
 
41
 
136
 
42
 
137
 
43
 
138
 
44
      //Called when user Click Add-Ins Menu item from within EA.
139
      //Called when user Click Add-Ins Menu item from within EA.
45
      //Populates the Menu with our desired selections.
140
      //Populates the Menu with our desired selections.
46
      public object EA_GetMenuItems(EA.Repository Repository, string Location, string MenuName)
141
      public object EA_GetMenuItems(EA.Repository Repository, string Location, string MenuName)
47
      {
142
      {
48
         object menutItems = null;
143
         EA_Repository = Repository;
49
                 
-
 
-
 
144
 
50
         switch( MenuName )
145
         switch( MenuName )
51
         {
146
         {
52
            case "":
147
            case "":
53
               menutItems = "-&EA DocGen";
-
 
54
               break;
148
               return MI_Root;
55
 
149
 
56
            case "-&Using Copied GUID...":
150
            case MI_UsingCopiedGUID:
57
            {
-
 
58
               string[] ar = { "&Add Link Element",
151
               return MI_UsingCopiedGUIDSubMenu;
59
                               "&Add Test Link Element",
-
 
60
                               "&Add Name Link Element",
-
 
61
                               "&Generate Packages From Element List",
-
 
62
                               "&Generate Sub-Package Links",
-
 
63
                               "&Generate Element Links" };
-
 
64
               menutItems = ar;
-
 
65
               break;
-
 
66
            }  
-
 
67
 
152
 
68
            case "-&Misc Utils":
153
            case MI_MiscUtils:
69
            {
-
 
70
               string[] ar = { "&Mark Content With API Stereotype",
-
 
71
                               "&Remove API Stereotype From Content",
-
 
72
                               "&Show Package/Element Discovery Order",
-
 
73
 
-
 
74
                             };
-
 
75
               menutItems = ar;
154
               return MI_MiscUtilsSubMenu;
76
               break;
-
 
77
            }
-
 
78
 
155
 
79
            case "-&EA DocGen":
156
            case "-&EA DocGen":
80
            {
-
 
81
               string[] ar = { "&Generate Document From Model Layout", 
-
 
82
                               "-",
-
 
83
                               "&Copy GUID To Clipboard",
-
 
84
                               "-&Using Copied GUID...",
-
 
85
                                "-",
-
 
86
                               "&Add Table Element",
-
 
87
                               "&Add Text Element",
-
 
88
                               "&Add RelationshipMatrix Element",
-
 
89
                               "&Add Test Traceability Element",
-
 
90
                                "-",
-
 
91
                               "&Add Document Reference",
-
 
92
                               "&Add Terminology Entry",
-
 
93
                               "&Modify EA_DocGen Options",
-
 
94
                               "-",
-
 
95
                               "&Generate Model Layout For Design Document",
-
 
96
                               "&Generate Basic Document Model Layout",
-
 
97
                                "-",
-
 
98
                               "-&Misc Utils",
-
 
99
//                               "&Get TreePos"
-
 
100
//                               "&Save Version Controlled Package",
-
 
101
                               "&About..." };
-
 
102
               menutItems = ar;
157
               return MI_RootMenu;
103
               break;
-
 
104
            }
-
 
105
               // TODO - more menu options
-
 
106
               //
-
 
107
               // 1. Generate Package Structure Layout from a QMS outline document.
-
 
108
               //    User needs to select a QMS outline document, and the addin opens it and reads
-
 
109
               //    all of the document headings and their heading levels (styles) and forms a
-
 
110
               //    package structure from them. The user would have to also specify the Parent
-
 
111
               //    package name under which this structure should be created in the EA model.
-
 
112
               //
-
 
113
               // 2. Import/Export requirements from/to RequisitePro
-
 
114
               //    What is possible here will need investigating. 
-
 
115
               //    Does ReqPro have an interoperability interface? 
-
 
116
               //    Do we have to export/import via a file (eg. csv file).
-
 
117
               //
-
 
118
               //
-
 
119
          }
158
          }
120
 
159
 
121
         return menutItems;
160
         return "";
122
      }
161
      }
123
 
162
 
124
      //Sets the state of the menu depending if there is an active project or not
163
      //Sets the state of the menu depending if there is an active project or not
125
      bool IsProjectOpen(EA.Repository Repository)
164
      bool IsProjectOpen(EA.Repository Repository)
126
      {
165
      {
-
 
166
         EA_Repository = Repository;
-
 
167
 
127
         try
168
         try
128
         {
169
         {
129
            EA.Collection c = Repository.Models;
170
            EA.Collection c = Repository.Models;
130
            return true;
171
            return true;
131
         }
172
         }
Line 174... Line 215...
174
 
215
 
175
 
216
 
176
      //Called once Menu has been opened to see what menu items are active.
217
      //Called once Menu has been opened to see what menu items are active.
177
      public void EA_GetMenuState(EA.Repository Repository, string Location, string MenuName, string ItemName, ref bool IsEnabled, ref bool IsChecked)
218
      public void EA_GetMenuState(EA.Repository Repository, string Location, string MenuName, string ItemName, ref bool IsEnabled, ref bool IsChecked)
178
      {
219
      {
-
 
220
         EA_Repository = Repository;
-
 
221
 
179
         if( IsProjectOpen(Repository) )
222
         if( IsProjectOpen(Repository) )
180
         {
223
         {
-
 
224
            if (ItemName == MI_AddDocumentReference)
-
 
225
            {
-
 
226
               IsEnabled = isPackageSelected(Repository, "References");
-
 
227
            }
-
 
228
            else if (ItemName == MI_AddTerminologyEntry)
-
 
229
            {
-
 
230
               IsEnabled = isPackageSelected(Repository, "Terminology");
-
 
231
            }
-
 
232
            else if (ItemName == MI_ModifyDocumentOptions)
-
 
233
            {
-
 
234
               IsEnabled = isEA_DocGenSelected(Repository);
-
 
235
            }
-
 
236
            else if (   (MenuName == MI_UsingCopiedGUID) 
181
            if ((MenuName == "-&Using Copied GUID...") && (EA_Utils.guid_clipboard.objType == EA.ObjectType.otNone))
237
               && (GUID_Clipboard.objType == EA.ObjectType.otNone))
-
 
238
            {
-
 
239
               IsEnabled = false;
-
 
240
            }
-
 
241
            else if (ItemName == MI_GenDocFromModelLayout 
-
 
242
                     && (threadCreateDocDialogRunning == true || threadCreateDocProcessRunning == true))
182
            {
243
            {
183
               IsEnabled = false;
244
               IsEnabled = false;
184
            }
245
            }
185
            else
246
            else
186
            {
247
            {
187
               if (ItemName == "&Add Document Reference")
-
 
188
               {
-
 
189
                  IsEnabled = isPackageSelected(Repository, "References");
-
 
190
               }
-
 
191
               else if (ItemName == "&Add Terminology Entry")
-
 
192
               {
-
 
193
                  IsEnabled = isPackageSelected(Repository, "Terminology");
-
 
194
               }
-
 
195
               else if (ItemName == "&Add Table Element")
-
 
196
               {
-
 
197
                  IsEnabled = isPackageSelected(Repository, null);
-
 
198
               }
-
 
199
               else if (ItemName == "&Add Text Element")
-
 
200
               {
-
 
201
                  IsEnabled = isPackageSelected(Repository, null);
-
 
202
               }
-
 
203
               else if (ItemName == "&Add RelationshipMatrix Element")
-
 
204
               {
-
 
205
                  IsEnabled = isPackageSelected(Repository, null);
-
 
206
               }
-
 
207
               else if (ItemName == "&Generate Model Layout For Design Document")
-
 
208
               {
-
 
209
                  IsEnabled = isPackageSelected(Repository, null);
-
 
210
               }
-
 
211
               else if (ItemName == "&Generate Basic Document Model Layout")
-
 
212
               {
-
 
213
                  IsEnabled = isPackageSelected(Repository, null);
-
 
214
               }
-
 
215
               else if (ItemName == "&Generate Document From Model Layout")
-
 
216
               {
-
 
217
                  IsEnabled = isPackageSelected(Repository, null);
-
 
218
               }
-
 
219
               else if (ItemName == "&Add Test Traceability Element")
-
 
220
               {
-
 
221
                  IsEnabled = isPackageSelected(Repository, null);
-
 
222
               }
-
 
223
               else if (ItemName == "&Modify EA_DocGen Options")
-
 
224
               {
-
 
225
                  IsEnabled = isEA_DocGenSelected(Repository);
-
 
226
               }
-
 
227
 
-
 
228
               else
-
 
229
               {
-
 
230
                  IsEnabled = true;
248
               IsEnabled = true;
231
               }
-
 
232
            }
249
            }
233
         }
250
         }
234
         else
251
         else
235
         {
252
         {
236
            // If no open project, disable all menu options
253
            // If no open project, disable all menu options
Line 240... Line 257...
240
 
257
 
241
      //Called when user makes a selection in the menu.
258
      //Called when user makes a selection in the menu.
242
      //This is your main exit point to the rest of your Add-in
259
      //This is your main exit point to the rest of your Add-in
243
      public void EA_MenuClick(EA.Repository Repository, string Location, string MenuName, string ItemName)
260
      public void EA_MenuClick(EA.Repository Repository, string Location, string MenuName, string ItemName)
244
      {
261
      {
245
         EA.ObjectType objType;
-
 
246
 		   object obj;
-
 
247
 
-
 
248
         EA_Utils.accept_EA_RepositoryRef(Repository);
262
         EA_Repository = Repository;
249
 
263
 
250
         switch( ItemName )
264
         switch( ItemName )
251
         {
265
         {
252
            case "&Generate Document From Model Layout":	
266
            case MI_GenDocFromModelLayout:	
253
               Repository.EnsureOutputVisible(GUI_OUTPUT_TAB_NAME);
267
               Repository.EnsureOutputVisible(GUI_OUTPUT_TAB_NAME);
-
 
268
               threadCreateDoc = new Thread(new ThreadStart(EA_Utilities.createWordDoc));
-
 
269
               threadCreateDoc.ApartmentState = ApartmentState.STA;
254
               EA_Utils.createWordDoc();
270
               threadCreateDoc.Start();
255
               break;
271
               break;
256
 
272
 
257
            case "&Copy GUID To Clipboard":
273
            case MI_CopyGUIDToClipboard:
258
               EA_Utils.copy_GUID_to_clipboard();
274
               EA_Utilities.copy_GUID_to_clipboard();
259
               break;
275
               break;
260
 
276
 
261
            case "&Add Link Element":
277
            case MI_AddLinkElement:
262
               EA_Utils.AddLinkElement();
278
               EA_Utilities.AddLinkElement();
263
               break;
279
               break;
264
 
280
 
265
            case "&Add Name Link Element":
281
            case MI_AddNameLinkElement:
266
               EA_Utils.AddNameLinkElement();
282
               EA_Utilities.AddNameLinkElement();
267
               break;
283
               break;
268
 
284
 
269
            case "&Add Test Link Element":
285
            case MI_AddTestLinkElement:
270
               EA_Utils.AddTestLinkElement();
286
               EA_Utilities.AddTestLinkElement();
271
               break;
287
               break;
272
 
288
 
273
            case "&Generate Packages From Element List":
289
            case MI_GenPkgsFromEleList:
274
               EA_Utils.GeneratePackagesFromElementList();
290
               EA_Utilities.GeneratePackagesFromElementList();
275
               break;
291
               break;
276
 
292
 
277
            case "&Generate Sub-Package Links":
293
            case MI_GenSubPkgLinks:
278
               EA_Utils.GenerateSubPackageLinks();
294
               EA_Utilities.GenerateSubPackageLinks();
279
               break;
295
               break;
280
 
296
 
281
            case "&Generate Element Links":
297
            case MI_GenEleLinks:
282
               EA_Utils.GenerateElementLinks();
298
               EA_Utilities.GenerateElementLinks();
283
               break;
299
               break;
284
 
300
 
285
            case "&Add Table Element":
301
            case MI_AddTableElement:
286
               EA_Utils.AddTableElement();
302
               EA_Utilities.AddTableElement();
287
               break;
303
               break;
288
 
304
 
289
            case "&Add Text Element":
305
            case MI_AddTextElement:
290
               EA_Utils.AddTextElement();
306
               EA_Utilities.AddTextElement();
291
               break;
307
               break;
292
 
308
 
293
            case "&Add RelationshipMatrix Element":
309
            case MI_AddRelMatrixElement:
294
               EA_Utils.AddRelationshipMatrixElement();
310
               EA_Utilities.AddRelationshipMatrixElement();
295
               break;
311
               break;
296
 
312
 
297
            case "&Add Test Traceability Element":
313
            case MI_AddTestTraceabilityElement:
298
               EA_Utils.AddTestTraceabilityElement();
314
               EA_Utilities.AddTestTraceabilityElement();
299
               break;
315
               break;
300
 
316
 
301
            case "&About...":
317
            case MI_About:
302
               AboutForm anAbout = new AboutForm();
318
               AboutForm anAbout = new AboutForm();
303
               anAbout.ShowDialog();
319
               anAbout.ShowDialog();
304
               break;
320
               break;
305
 
321
 
306
            case "&Add Document Reference":
322
            case MI_AddDocumentReference:
307
               EA_Utils.addDocumentReference();
323
               EA_Utilities.addDocumentReference();
308
               break;
324
               break;
309
 
325
 
310
            case "&Add Terminology Entry":
326
            case MI_AddTerminologyEntry:
311
               EA_Utils.addTerminology();
327
               EA_Utilities.addTerminology();
312
               break;
328
               break;
313
 
329
 
314
            case "&Modify EA_DocGen Options":
330
            case MI_ModifyDocumentOptions:
315
               EA_Utils.modifyOptions();
331
               EA_Utilities.modifyOptions();
316
               break;
332
               break;
317
 
333
 
318
            case "&Mark Content With API Stereotype":
334
            case MI_MarkContentWithAPIStereotype:
319
               EA_Utils.MarkContentWithAPIStereotype();
335
               EA_Utilities.MarkContentWithAPIStereotype();
320
               break;
336
               break;
321
 
337
 
322
            case "&Remove API Stereotype From Content":
338
            case MI_RemoveAPIStereotypeFromContent:
323
               EA_Utils.RemoveAPIStereotypeFromContent();
339
               EA_Utilities.RemoveAPIStereotypeFromContent();
324
               break;
340
               break;
325
 
341
 
326
            //////////////////////////////////////////////////////////////////////
-
 
327
            /// EXPERIMENTAL ITEMS ONLY
-
 
328
            //////////////////////////////////////////////////////////////////////
-
 
329
            case "&Generate Model Layout For Design Document":
342
            case MI_GenModelLayoutForDesignDoc:
330
               EA_Utils.create_BMS00289_Layout();
343
               EA_Utilities.create_BMS00289_Layout();
331
               break;
344
               break;
332
 
345
 
333
            case "&Generate Basic Document Model Layout":
346
            case MI_GenBasicModelLayout:
334
               EA_Utils.create_basic_Layout();
347
               EA_Utilities.create_basic_Layout();
335
               break;
348
               break;
336
 
349
 
337
            case "&Show Package/Element Discovery Order":
350
            case MI_ShowDiscoveryOrder:
338
               EA_Utils.showDiscoveryOrder();
351
               EA_Utilities.showDiscoveryOrder();
339
               break;
352
               break;
340
 
353
 
341
            case "&Get TreePos":
354
            case MI_FollowLink:
342
               objType = Repository.GetTreeSelectedItem( out obj );
-
 
343
               if (objType == EA.ObjectType.otPackage)
355
               EA_Utilities.followLink();
344
               {
-
 
345
                  MessageBox.Show(((EA.Package)obj).TreePos.ToString());
-
 
346
               }
-
 
347
               break;
356
               break;
348
 
357
 
349
            case "&Save Version Controlled Package":
358
            case MI_UpdateLink:
350
               EA_Utils.SaveVersionControlledPackage();
359
               EA_Utilities.updateLink();
351
               break;
360
               break;
352
 
361
 
-
 
362
            case MI_IdentifyClipboardItem:
-
 
363
               EA_Utilities.identifyClipboardItem();
-
 
364
               break;
353
         }
365
         }
354
      }
366
      }
-
 
367
 
-
 
368
      public static void WriteOutput(string s, int id)
-
 
369
      {
-
 
370
         EA_Repository.WriteOutput( GUI_OUTPUT_TAB_NAME, s, id);
-
 
371
      }
-
 
372
 
-
 
373
 
355
	}
374
	}
356
}
375
}