Subversion Repositories DevTools

Rev

Rev 2088 | Rev 2104 | 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",
2088 ghuddy 60
                               "&Generate Packages From Element List",
61
                               "&Generate Sub-Package Links",
62
                               "&Generate Element Links" };
63
               menutItems = ar;
64
               break;
65
            }  
66
 
67
            case "-&Misc Utils":
68
            {
69
               string[] ar = { "&Show Package/Element Discovery Order",
70
 
71
                             };
72
               menutItems = ar;
73
               break;
74
            }
75
 
76
            case "-&EA DocGen":
77
            {
78
               string[] ar = { "&Generate Document From Model Layout", 
2094 ghuddy 79
                               "-",
2088 ghuddy 80
                               "&Copy GUID To Clipboard",
81
                               "-&Using Copied GUID...",
2094 ghuddy 82
                                "-",
2088 ghuddy 83
                               "&Add Table Element",
84
                               "&Add Text Element",
85
                               "&Add RelationshipMatrix Element",
2094 ghuddy 86
                               "&Add Test Traceability Element",
87
                                "-",
88
                               "&Add Document Reference",
89
                               "&Add Terminology Entry",
90
                               "&Modify EA_DocGen Options",
91
                               "-",
2088 ghuddy 92
                               "&Generate Model Layout For Design Document",
2094 ghuddy 93
                               "&Generate Basic Document Model Layout",
94
                                "-",
2088 ghuddy 95
                               "-&Misc Utils",
96
//                               "&Get TreePos"
97
//                               "&Save Version Controlled Package",
98
                               "&About..." };
99
               menutItems = ar;
100
               break;
101
            }
102
               // TODO - more menu options
103
               //
104
               // 1. Generate Package Structure Layout from a QMS outline document.
105
               //    User needs to select a QMS outline document, and the addin opens it and reads
106
               //    all of the document headings and their heading levels (styles) and forms a
107
               //    package structure from them. The user would have to also specify the Parent
108
               //    package name under which this structure should be created in the EA model.
109
               //
110
               // 2. Import/Export requirements from/to RequisitePro
111
               //    What is possible here will need investigating. 
112
               //    Does ReqPro have an interoperability interface? 
113
               //    Do we have to export/import via a file (eg. csv file).
114
               //
115
               //
116
          }
117
 
118
         return menutItems;
119
      }
120
 
121
      //Sets the state of the menu depending if there is an active project or not
122
      bool IsProjectOpen(EA.Repository Repository)
123
      {
124
         try
125
         {
126
            EA.Collection c = Repository.Models;
127
            return true;
128
         }
129
         catch
130
         {
131
            return false;
132
         }
133
      }
134
 
2094 ghuddy 135
      private bool isEA_DocGenSelected(EA.Repository Repository)
136
      {
137
         EA.ObjectType objType;
138
         object obj;
139
 
140
         objType = Repository.GetTreeSelectedItem( out obj );
141
         if (objType == EA.ObjectType.otElement)
142
         {
143
            if (0 == ((EA.Element)obj).Name.CompareTo(EA_Constants.EA_DocGenBaseName))
144
               return true;
145
         }
146
         return false;
147
      }
148
 
149
      private bool isPackageSelected(EA.Repository Repository, string pkgName)
150
      {
151
         EA.ObjectType objType;
152
         object obj;
153
 
154
         objType = Repository.GetTreeSelectedItem( out obj );
155
         if (objType == EA.ObjectType.otPackage)
156
         {
157
            if (pkgName != null)
158
            {
159
               if ( 0 == ((EA.Package)obj).Name.CompareTo(pkgName) )
160
               {
161
                  return true;
162
               }
163
            }
164
            else
165
            {
166
               return true;
167
            }
168
         }
169
         return false;                                            
170
      }
171
 
172
 
2088 ghuddy 173
      //Called once Menu has been opened to see what menu items are active.
174
      public void EA_GetMenuState(EA.Repository Repository, string Location, string MenuName, string ItemName, ref bool IsEnabled, ref bool IsChecked)
175
      {
176
         if( IsProjectOpen(Repository) )
177
         {
178
            if ((MenuName == "-&Using Copied GUID...") && (EA_Utils.guid_clipboard.objType == EA.ObjectType.otNone))
179
            {
180
               IsEnabled = false;
181
            }
182
            else
183
            {
2094 ghuddy 184
               if (ItemName == "&Add Document Reference")
185
               {
186
                  IsEnabled = isPackageSelected(Repository, "References");
187
               }
188
               else if (ItemName == "&Add Terminology Entry")
189
               {
190
                  IsEnabled = isPackageSelected(Repository, "Terminology");
191
               }
192
               else if (ItemName == "&Add Table Element")
193
               {
194
                  IsEnabled = isPackageSelected(Repository, null);
195
               }
196
               else if (ItemName == "&Add Text Element")
197
               {
198
                  IsEnabled = isPackageSelected(Repository, null);
199
               }
200
               else if (ItemName == "&Add RelationshipMatrix Element")
201
               {
202
                  IsEnabled = isPackageSelected(Repository, null);
203
               }
204
               else if (ItemName == "&Generate Model Layout For Design Document")
205
               {
206
                  IsEnabled = isPackageSelected(Repository, null);
207
               }
208
               else if (ItemName == "&Generate Basic Document Model Layout")
209
               {
210
                  IsEnabled = isPackageSelected(Repository, null);
211
               }
212
               else if (ItemName == "&Generate Document From Model Layout")
213
               {
214
                  IsEnabled = isPackageSelected(Repository, null);
215
               }
216
               else if (ItemName == "&Add Test Traceability Element")
217
               {
218
                  IsEnabled = isPackageSelected(Repository, null);
219
               }
220
               else if (ItemName == "&Modify EA_DocGen Options")
221
               {
222
                  IsEnabled = isEA_DocGenSelected(Repository);
223
               }
224
 
225
               else
226
               {
227
                  IsEnabled = true;
228
               }
2088 ghuddy 229
            }
230
         }
231
         else
232
         {
233
            // If no open project, disable all menu options
234
            IsEnabled = false;
235
         }
236
      }
237
 
238
      //Called when user makes a selection in the menu.
239
      //This is your main exit point to the rest of your Add-in
240
      public void EA_MenuClick(EA.Repository Repository, string Location, string MenuName, string ItemName)
241
      {
242
         EA.ObjectType objType;
243
 		   object obj;
244
 
245
         EA_Utils.accept_EA_RepositoryRef(Repository);
246
 
247
         switch( ItemName )
248
         {
249
            case "&Generate Document From Model Layout":	
250
               EA_Utils.createWordDoc();
251
               break;
252
 
253
            case "&Copy GUID To Clipboard":
254
               EA_Utils.copy_GUID_to_clipboard();
255
               break;
256
 
257
            case "&Add Link Element":
258
               EA_Utils.AddLinkElement();
2094 ghuddy 259
               break;
2088 ghuddy 260
 
2094 ghuddy 261
            case "&Add Test Link Element":
262
               EA_Utils.AddTestLinkElement();
263
               break;
264
 
2088 ghuddy 265
            case "&Generate Packages From Element List":
266
               EA_Utils.GeneratePackagesFromElementList();
267
               break;
268
 
269
            case "&Generate Sub-Package Links":
270
               EA_Utils.GenerateSubPackageLinks();
271
               break;
272
 
273
            case "&Generate Element Links":
274
               EA_Utils.GenerateElementLinks();
275
               break;
276
 
277
            case "&Add Table Element":
278
               EA_Utils.AddTableElement();
279
               break;
280
 
281
            case "&Add Text Element":
282
               EA_Utils.AddTextElement();
283
               break;
284
 
285
            case "&Add RelationshipMatrix Element":
286
               EA_Utils.AddRelationshipMatrixElement();
287
               break;
288
 
2094 ghuddy 289
            case "&Add Test Traceability Element":
290
               EA_Utils.AddTestTraceabilityElement();
291
               break;
292
 
2088 ghuddy 293
            case "&About...":
294
               AboutForm anAbout = new AboutForm();
295
               anAbout.ShowDialog();
296
               break;
297
 
298
 
2094 ghuddy 299
            case "&Add Document Reference":
300
               EA_Utils.addDocumentReference();
301
               break;
302
 
303
            case "&Add Terminology Entry":
304
               EA_Utils.addTerminology();
305
               break;
306
 
307
            case "&Modify EA_DocGen Options":
308
               EA_Utils.modifyOptions();
309
               break;
310
 
2088 ghuddy 311
            //////////////////////////////////////////////////////////////////////
312
            /// EXPERIMENTAL ITEMS ONLY
313
            //////////////////////////////////////////////////////////////////////
314
            case "&Generate Model Layout For Design Document":
315
               EA_Utils.create_BMS00289_Layout();
316
               break;
317
 
2094 ghuddy 318
            case "&Generate Basic Document Model Layout":
319
               EA_Utils.create_basic_Layout();
320
               break;
321
 
2088 ghuddy 322
            case "&Show Package/Element Discovery Order":
323
               EA_Utils.showDiscoveryOrder();
324
               break;
325
 
326
            case "&Get TreePos":
327
               objType = Repository.GetTreeSelectedItem( out obj );
328
               if (objType == EA.ObjectType.otPackage)
329
               {
330
                  MessageBox.Show(((EA.Package)obj).TreePos.ToString());
331
               }
332
               break;
333
 
334
            case "&Save Version Controlled Package":
335
               EA_Utils.SaveVersionControlledPackage();
336
               break;
337
 
338
         }
339
      }
340
 
341
 
342
	}
343
}