Subversion Repositories DevTools

Rev

Rev 2094 | Rev 2106 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2088 ghuddy 1
using System;
2
using System.Windows.Forms;
3
using System.IO;
4
using Word;
5
 
6
 
7
namespace EA_DocGen
8
{
9
	/// <summary>
10
	/// 
11
	/// </summary>
12
	public class Main
13
	{
14
      public string filecontents = "";
15
      public AboutForm theForm;
16
 
17
      private EA_Utilities EA_Utils = new EA_Utilities();
18
 
19
 
20
      public readonly static String GUI_OUTPUT_TAB_NAME = "EA_DocGen";
21
 
22
 
23
 
24
      //Called Before EA starts to check Add-In Exists
25
      public String EA_Connect(EA.Repository Repository)
26
      {
27
         //No special processing required.
28
         return "a string";
29
      }
30
 
31
      /// <summary>
32
      /// Called when EA initialised. Creates an output tab for the add in.
33
      /// </summary>
34
      /// <param name="repository"></param>
35
      public void EA_OnPostInitialized(EA.Repository repository)
36
      {
37
         repository.CreateOutputTab(GUI_OUTPUT_TAB_NAME);
38
         repository.EnsureOutputVisible(GUI_OUTPUT_TAB_NAME);
39
      }
40
 
41
 
2094 ghuddy 42
 
2088 ghuddy 43
 
44
      //Called when user Click Add-Ins Menu item from within EA.
45
      //Populates the Menu with our desired selections.
46
      public object EA_GetMenuItems(EA.Repository Repository, string Location, string MenuName)
47
      {
48
         object menutItems = null;
49
 
50
         switch( MenuName )
51
         {
52
            case "":
53
               menutItems = "-&EA DocGen";
54
               break;
55
 
56
            case "-&Using Copied GUID...":
57
            {
58
               string[] ar = { "&Add Link Element",
2094 ghuddy 59
                               "&Add Test Link Element",
2104 ghuddy 60
                               "&Add Name Link Element",
2088 ghuddy 61
                               "&Generate Packages From Element List",
62
                               "&Generate Sub-Package Links",
63
                               "&Generate Element Links" };
64
               menutItems = ar;
65
               break;
66
            }  
67
 
68
            case "-&Misc Utils":
69
            {
2104 ghuddy 70
               string[] ar = { "&Mark Content With API Stereotype",
71
                               "&Remove API Stereotype From Content",
72
                               "&Show Package/Element Discovery Order",
2088 ghuddy 73
 
74
                             };
75
               menutItems = ar;
76
               break;
77
            }
78
 
79
            case "-&EA DocGen":
80
            {
81
               string[] ar = { "&Generate Document From Model Layout", 
2094 ghuddy 82
                               "-",
2088 ghuddy 83
                               "&Copy GUID To Clipboard",
84
                               "-&Using Copied GUID...",
2094 ghuddy 85
                                "-",
2088 ghuddy 86
                               "&Add Table Element",
87
                               "&Add Text Element",
88
                               "&Add RelationshipMatrix Element",
2094 ghuddy 89
                               "&Add Test Traceability Element",
90
                                "-",
91
                               "&Add Document Reference",
92
                               "&Add Terminology Entry",
93
                               "&Modify EA_DocGen Options",
94
                               "-",
2088 ghuddy 95
                               "&Generate Model Layout For Design Document",
2094 ghuddy 96
                               "&Generate Basic Document Model Layout",
97
                                "-",
2088 ghuddy 98
                               "-&Misc Utils",
99
//                               "&Get TreePos"
100
//                               "&Save Version Controlled Package",
101
                               "&About..." };
102
               menutItems = ar;
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
          }
120
 
121
         return menutItems;
122
      }
123
 
124
      //Sets the state of the menu depending if there is an active project or not
125
      bool IsProjectOpen(EA.Repository Repository)
126
      {
127
         try
128
         {
129
            EA.Collection c = Repository.Models;
130
            return true;
131
         }
132
         catch
133
         {
134
            return false;
135
         }
136
      }
137
 
2094 ghuddy 138
      private bool isEA_DocGenSelected(EA.Repository Repository)
139
      {
140
         EA.ObjectType objType;
141
         object obj;
142
 
143
         objType = Repository.GetTreeSelectedItem( out obj );
144
         if (objType == EA.ObjectType.otElement)
145
         {
146
            if (0 == ((EA.Element)obj).Name.CompareTo(EA_Constants.EA_DocGenBaseName))
147
               return true;
148
         }
149
         return false;
150
      }
151
 
152
      private bool isPackageSelected(EA.Repository Repository, string pkgName)
153
      {
154
         EA.ObjectType objType;
155
         object obj;
156
 
157
         objType = Repository.GetTreeSelectedItem( out obj );
158
         if (objType == EA.ObjectType.otPackage)
159
         {
160
            if (pkgName != null)
161
            {
162
               if ( 0 == ((EA.Package)obj).Name.CompareTo(pkgName) )
163
               {
164
                  return true;
165
               }
166
            }
167
            else
168
            {
169
               return true;
170
            }
171
         }
172
         return false;                                            
173
      }
174
 
175
 
2088 ghuddy 176
      //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)
178
      {
179
         if( IsProjectOpen(Repository) )
180
         {
181
            if ((MenuName == "-&Using Copied GUID...") && (EA_Utils.guid_clipboard.objType == EA.ObjectType.otNone))
182
            {
183
               IsEnabled = false;
184
            }
185
            else
186
            {
2094 ghuddy 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;
231
               }
2088 ghuddy 232
            }
233
         }
234
         else
235
         {
236
            // If no open project, disable all menu options
237
            IsEnabled = false;
238
         }
239
      }
240
 
241
      //Called when user makes a selection in the menu.
242
      //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)
244
      {
245
         EA.ObjectType objType;
246
 		   object obj;
247
 
248
         EA_Utils.accept_EA_RepositoryRef(Repository);
249
 
250
         switch( ItemName )
251
         {
252
            case "&Generate Document From Model Layout":	
2104 ghuddy 253
               Repository.EnsureOutputVisible(GUI_OUTPUT_TAB_NAME);
2088 ghuddy 254
               EA_Utils.createWordDoc();
255
               break;
256
 
257
            case "&Copy GUID To Clipboard":
258
               EA_Utils.copy_GUID_to_clipboard();
259
               break;
260
 
261
            case "&Add Link Element":
262
               EA_Utils.AddLinkElement();
2094 ghuddy 263
               break;
2088 ghuddy 264
 
2104 ghuddy 265
            case "&Add Name Link Element":
266
               EA_Utils.AddNameLinkElement();
267
               break;
268
 
2094 ghuddy 269
            case "&Add Test Link Element":
270
               EA_Utils.AddTestLinkElement();
271
               break;
272
 
2088 ghuddy 273
            case "&Generate Packages From Element List":
274
               EA_Utils.GeneratePackagesFromElementList();
275
               break;
276
 
277
            case "&Generate Sub-Package Links":
278
               EA_Utils.GenerateSubPackageLinks();
279
               break;
280
 
281
            case "&Generate Element Links":
282
               EA_Utils.GenerateElementLinks();
283
               break;
284
 
285
            case "&Add Table Element":
286
               EA_Utils.AddTableElement();
287
               break;
288
 
289
            case "&Add Text Element":
290
               EA_Utils.AddTextElement();
291
               break;
292
 
293
            case "&Add RelationshipMatrix Element":
294
               EA_Utils.AddRelationshipMatrixElement();
295
               break;
296
 
2094 ghuddy 297
            case "&Add Test Traceability Element":
298
               EA_Utils.AddTestTraceabilityElement();
299
               break;
300
 
2088 ghuddy 301
            case "&About...":
302
               AboutForm anAbout = new AboutForm();
303
               anAbout.ShowDialog();
304
               break;
305
 
2094 ghuddy 306
            case "&Add Document Reference":
307
               EA_Utils.addDocumentReference();
308
               break;
309
 
310
            case "&Add Terminology Entry":
311
               EA_Utils.addTerminology();
312
               break;
313
 
314
            case "&Modify EA_DocGen Options":
315
               EA_Utils.modifyOptions();
316
               break;
317
 
2104 ghuddy 318
            case "&Mark Content With API Stereotype":
319
               EA_Utils.MarkContentWithAPIStereotype();
320
               break;
321
 
322
            case "&Remove API Stereotype From Content":
323
               EA_Utils.RemoveAPIStereotypeFromContent();
324
               break;
325
 
2088 ghuddy 326
            //////////////////////////////////////////////////////////////////////
327
            /// EXPERIMENTAL ITEMS ONLY
328
            //////////////////////////////////////////////////////////////////////
329
            case "&Generate Model Layout For Design Document":
330
               EA_Utils.create_BMS00289_Layout();
331
               break;
332
 
2094 ghuddy 333
            case "&Generate Basic Document Model Layout":
334
               EA_Utils.create_basic_Layout();
335
               break;
336
 
2088 ghuddy 337
            case "&Show Package/Element Discovery Order":
338
               EA_Utils.showDiscoveryOrder();
339
               break;
340
 
341
            case "&Get TreePos":
342
               objType = Repository.GetTreeSelectedItem( out obj );
343
               if (objType == EA.ObjectType.otPackage)
344
               {
345
                  MessageBox.Show(((EA.Package)obj).TreePos.ToString());
346
               }
347
               break;
348
 
349
            case "&Save Version Controlled Package":
350
               EA_Utils.SaveVersionControlledPackage();
351
               break;
352
 
353
         }
354
      }
355
	}
356
}