public static ChangeLogShadow LookupChangeLogShadow() { foreach (Shadow shadow in shadowShapeMap.Values) { ChangeLogShadow changeLogShadow = shadow as ChangeLogShadow; if (changeLogShadow != null) { return(shadow as ChangeLogShadow); } } return(null); }
//JDK killed this one for the highlight fixes /*public static System.Drawing.Color? GetHighlightColor(string dateString) { * DateTime date; * if (DateTime.TryParse(dateString, out date)) * return GetHighlightColor(date); * else * return null; * } * */ /** * Returns the highlight color to be used given a change date. * If no highlight is needed, it will return the DefaultHighlightColor */ public static System.Drawing.Color?GetHighlightColor(DateTime date) { ChangeLogShadow shadow = PathMaker.LookupChangeLogShadow(); if (shadow == null) { return(null); } string color = shadow.GetColorStringForChange(date); return(ConvertColorStringToColor(color)); }
/** * Returns the highlight color to be used given a change version stamp. * If no highlight is needed, it will return the DefaultHighlightColor */ public static System.Drawing.Color?GetHighlightColor(string versionLabel) { ChangeLogShadow shadow = PathMaker.LookupChangeLogShadow(); if (shadow == null) { return(null); } String color = Strings.HighlightColorNone; if (versionLabel == null || versionLabel == "") { versionLabel = Strings.DefaultVersionStamp; } else { color = shadow.GetColorStringForChange(versionLabel); } return(ConvertColorStringToColor(color)); }
// Creates a shadow from a shape. Should only be called from PathMaker // event handlers when things are loaded, added, etc. public static Shadow MakeShapeShadow(Shape shape) { ShapeTypes shapeType = Common.GetShapeType(shape); Shadow shadow = null; switch (shapeType) { case ShapeTypes.CallSubDialog: shadow = new CallSubDialogShadow(shape); break; case ShapeTypes.ChangeLog: shadow = new ChangeLogShadow(shape); break; case ShapeTypes.AppDesc: shadow = new AppDescShadow(shape); break; case ShapeTypes.PrefixList: shadow = new PrefixListShadow(shape); break; case ShapeTypes.Comment: shadow = new IgnoredShadow(shape); break; case ShapeTypes.Connector: shadow = new ConnectorShadow(shape); break; case ShapeTypes.Data: shadow = new DataShadow(shape); break; case ShapeTypes.Decision: shadow = new DecisionShadow(shape); break; case ShapeTypes.DocTitle: shadow = new DocTitleShadow(shape); break; case ShapeTypes.HangUp: shadow = new HangUpShadow(shape); break; case ShapeTypes.Interaction: shadow = new InteractionShadow(shape); break; case ShapeTypes.None: break; case ShapeTypes.OffPageRef: shadow = new OffPageRefShadow(shape); break; case ShapeTypes.OnPageRefIn: shadow = new OnPageRefInShadow(shape); break; case ShapeTypes.OnPageRefOut: shadow = new OnPageRefOutShadow(shape); break; case ShapeTypes.Page: break; case ShapeTypes.Placeholder: shadow = new IgnoredShadow(shape); break; case ShapeTypes.Play: shadow = new PlayShadow(shape); break; case ShapeTypes.Return: shadow = new ReturnShadow(shape); break; case ShapeTypes.Start: shadow = new StartShadow(shape); break; case ShapeTypes.SubDialog: shadow = new SubDialogShadow(shape); break; case ShapeTypes.Transfer: shadow = new TransferShadow(shape); break; } return shadow; }
internal static string ExportFastPathXML(AxMicrosoft.Office.Interop.VisOcx.AxDrawingControl visioControl, bool useTmpFile) { DocTitleShadow docTitleShadow = PathMaker.LookupDocTitleShadow(); if (docTitleShadow == null) { Common.ErrorMessage("Missing Document Title shape"); return(null); } StartShadow startShadow = PathMaker.LookupStartShadow(); if (startShadow == null) { Common.ErrorMessage("Missing Start shape"); return(null); } changeLogShadow = PathMaker.LookupChangeLogShadow(); if (changeLogShadow == null) { Common.ErrorMessage("Missing Change Log shape"); return(null); } if (saveFileDialog == null) { saveFileDialog = new SaveFileDialog(); saveFileDialog.Title = Common.GetResourceString(Strings.SaveFastPathXMLTitleRes); saveFileDialog.Filter = Common.GetResourceString(Strings.SaveFastPathXMLFilterRes); saveFileDialog.FilterIndex = 1; } saveFileDialog.InitialDirectory = PathMaker.getCurrentFileDirectory(visioControl); saveFileDialog.RestoreDirectory = true; targetFilename = visioControl.Src; currentFileName = System.IO.Path.GetFileName(targetFilename); saveFileDialog.FileName = Common.StripExtensionFileName(currentFileName) + ".xml"; if (!useTmpFile) { if (saveFileDialog.ShowDialog() == DialogResult.OK) { targetFilename = saveFileDialog.FileName; } else { return(null); } } else { targetFilename = saveFileDialog.FileName + ".tmp"; } XmlDocument xmlDoc = new XmlDocument(); xmlDoc.XmlResolver = null; xmlDoc.LoadXml(xmlStrings.Header); xmlDoc.DocumentElement.SetAttribute(xmlStrings.Project, docTitleShadow.GetProjectName()); xmlDoc.DocumentElement.SetAttribute(xmlStrings.Client, docTitleShadow.GetClientName()); xmlDoc.DocumentElement.SetAttribute(xmlStrings.LastModified, changeLogShadow.GetLastLogChangeDate()); xmlDoc.DocumentElement.SetAttribute(xmlStrings.Version, changeLogShadow.GetLastChangeVersion()); AddStartElement(xmlDoc, startShadow); List <Shadow> shadowList = PathMaker.LookupAllShadows(); // sorting them here helps the Missed statements in PathRunner come out in order string stateSortOrder = startShadow.GetDefaultSetting(Strings.DefaultSettingsStateSortOrder); if (stateSortOrder.Equals(Strings.StateSortOrderAlphaNumerical)) { shadowList.Sort(Common.StateIdShadowSorterAlphaNumerical); } else if (stateSortOrder.Equals(Strings.StateSortOrderNumericalOnly)) { shadowList.Sort(Common.StateIdShadowSorterNumericalAlpha); } else { Common.StateIdShadowSorterVisioHeuristic(shadowList, visioControl.Document, startShadow); } foreach (Shadow shadow in shadowList) { switch (shadow.GetShapeType()) { case ShapeTypes.Interaction: AddInteractionElement(xmlDoc, shadow as InteractionShadow); break; case ShapeTypes.Play: AddPlayElement(xmlDoc, shadow as PlayShadow); break; case ShapeTypes.Decision: AddDecisionElement(xmlDoc, shadow as DecisionShadow); break; case ShapeTypes.Data: AddDataElement(xmlDoc, shadow as DataShadow); break; case ShapeTypes.SubDialog: AddSubDialogElement(xmlDoc, shadow as SubDialogShadow); break; default: break; } } xmlDoc.Save(targetFilename); return(targetFilename); }
internal static void ExportHighLevelDesignDoc(AxMicrosoft.Office.Interop.VisOcx.AxDrawingControl visioControl) { DocTitleShadow docTitleShadow = PathMaker.LookupDocTitleShadow(); if (docTitleShadow == null) { Common.ErrorMessage("Missing Document Title shape"); return; } changeLogShadow = PathMaker.LookupChangeLogShadow(); if (changeLogShadow == null) { Common.ErrorMessage("Missing Change Log shape"); return; } StartShadow startShadow = PathMaker.LookupStartShadow(); if (startShadow == null) { Common.ErrorMessage("Missing Start shape"); return; } string targetFilename; string currentFileName; if (saveFileDialog == null) saveFileDialog = new SaveFileDialog(); saveFileDialog.InitialDirectory = PathMaker.getCurrentFileDirectory(visioControl); saveFileDialog.Title = Common.GetResourceString(Strings.SaveHLDSpecTitleRes); saveFileDialog.Filter = Common.GetResourceString(Strings.SaveHLDSpecFilterRes); saveFileDialog.FilterIndex = 1; targetFilename = visioControl.Src; currentFileName = System.IO.Path.GetFileName(targetFilename); saveFileDialog.FileName = Common.StripExtensionFileName(currentFileName) + "_HLD.docx"; if (saveFileDialog.ShowDialog() == DialogResult.OK) targetFilename = saveFileDialog.FileName; else return; Microsoft.Office.Interop.Word.Application wordApp = new Microsoft.Office.Interop.Word.Application(); wordApp.Visible = false; string templateFilename = System.Windows.Forms.Application.StartupPath + @"\" + Common.GetResourceString(Strings.HLDTemplateFileNameRes); Document doc = wordApp.Documents.Add(templateFilename); doc.BuiltInDocumentProperties["Author"] = "Convergys PathMaker"; bool saved = visioControl.Document.Saved; // output visio Selection content = wordApp.Selection; content.GoTo(What: WdGoToItem.wdGoToBookmark, Name: "CallFlowDiagram"); content.ClearFormatting(); content.set_Style("Normal"); content.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter; InlineShape shp = null; foreach (Microsoft.Office.Interop.Visio.Page page in visioControl.Document.Pages) { if (!page.Name.StartsWith("Background-") && !page.Name.Equals("Title") && !page.Name.Equals("App Description") && !page.Name.Equals("Revision History")) { string tmpFileName = System.IO.Path.GetTempPath() + Guid.NewGuid().ToString() + ".jpg"; page.Export(tmpFileName); shp = content.InlineShapes.AddPicture(tmpFileName); shp.ScaleHeight = 90;//set to 90% to handle minor differences content.InsertBreak(WdBreakType.wdPageBreak); } } visioControl.Document.Saved = saved; AddTitleAndLogo(doc, docTitleShadow); AddChangeLog(doc, changeLogShadow, "HLD"); doc.Fields.Update(); doc.SaveAs(targetFilename); ((_Application)wordApp).Quit(); System.Runtime.InteropServices.Marshal.ReleaseComObject(wordApp); wordApp = null; }
private static void AddChangeLog(Document doc, ChangeLogShadow changeLogShadow, String label) { Microsoft.Office.Interop.Word.Table changeLogTable = null; if (label.Contains("VUI")) { changeLogTable = doc.Tables[Templates.ChangeLog]; } else { changeLogTable = doc.Tables[Templates.ChangeLogHLD]; } Table table = changeLogShadow.GetChangeLog(); InsertWordTableRows(changeLogTable, 2, table.GetNumRows() - 1); int wordRow = 2; for (int row = 0; row < table.GetNumRows(); row++) { changeLogTable.Cell(wordRow, 1).Range.InsertAfter(table.GetData(row, (int)TableColumns.ChangeLog.Date)); changeLogTable.Cell(wordRow, 2).Range.InsertAfter(table.GetData(row, (int)TableColumns.ChangeLog.Version)); changeLogTable.Cell(wordRow, 3).Range.InsertAfter(table.GetData(row, (int)TableColumns.ChangeLog.Details)); changeLogTable.Cell(wordRow, 4).Range.InsertAfter(table.GetData(row, (int)TableColumns.ChangeLog.Author)); string color = table.GetData(row, (int)TableColumns.ChangeLog.Highlight); WdColorIndex colorIndex = ConvertStringToColorIndex(color); for (int i = 1; i <= 4; i++) changeLogTable.Cell(wordRow, i).Range.Font.Shading.BackgroundPatternColorIndex = colorIndex; wordRow++; } Selection content = doc.Application.Selection; content.GoTo(What: WdGoToItem.wdGoToBookmark, Name: "TitleVersion"); content.TypeText("Version " + changeLogShadow.GetLastChangeVersion()); content.GoTo(What: WdGoToItem.wdGoToBookmark, Name: "TitleLastModifiedDate"); DateTime date; if (DateTime.TryParse(changeLogShadow.GetLastLogChangeDate(), out date)) content.TypeText(date.ToString("MMMM dd, yyyy")); }
internal static void ExportUserInterfaceSpec(AxMicrosoft.Office.Interop.VisOcx.AxDrawingControl visioControl, Boolean skipDiagramExport) { ParamCache paramCache = new ParamCache(); paramCache.visioControl = visioControl; paramCache.skipDiagramExport = skipDiagramExport;//JDK recent feature enhancement paramCache.docTitleShadow = PathMaker.LookupDocTitleShadow(); if (paramCache.docTitleShadow == null) { Common.ErrorMessage("Missing Document Title shape"); return; } paramCache.startShadow = PathMaker.LookupStartShadow(); if (paramCache.startShadow == null) { Common.ErrorMessage("Missing Start shape"); return; } //Get changeLogShawdow to get version and date information changeLogShadow = PathMaker.LookupChangeLogShadow(); if (changeLogShadow == null) { Common.ErrorMessage("Missing Change Log shape"); return; } //Get appDescShadow to get detailed information //using text box GUID for this new field appDescShadow = PathMaker.LookupAppDescShadow(); if (appDescShadow == null) { //Common.ErrorMessage("Missing App Description shape");//JDK removed check for compatibility //return; } //Get prefixListShadow to get detailed information //using text box GUID for this new field prefixListShadow = PathMaker.LookupPrefixListShadow(); if (prefixListShadow == null) { //Common.ErrorMessage("Missing Prefix List shape");//JDK removed check for compatibility //return; } if (saveFileDialog == null) saveFileDialog = new SaveFileDialog(); saveFileDialog.InitialDirectory = PathMaker.getCurrentFileDirectory(visioControl); saveFileDialog.Title = Common.GetResourceString(Strings.SaveUISpecTitleRes); saveFileDialog.Filter = Common.GetResourceString(Strings.SaveUISpecFilterRes); saveFileDialog.FilterIndex = 1; paramCache.targetFilename = paramCache.visioControl.Src; paramCache.currentFileName = System.IO.Path.GetFileName(paramCache.targetFilename); saveFileDialog.FileName = Common.StripExtensionFileName(paramCache.currentFileName) + ".docx"; if (saveFileDialog.ShowDialog() == DialogResult.OK) paramCache.targetFilename = saveFileDialog.FileName; else return; ProgressBarForm progressBarForm = new ProgressBarForm("Exporting UI", ExportUserInterfaceSpecWorker, paramCache); progressBarForm.ShowDialog(); }
public DialogResult ShowDialog(ChangeLogShadow shadow) { this.shadow = shadow; return ShowDialog(); }
public static void RedoAllHiddenPromptMarkers() { //the start step has globals and default confirmation prompts that must be modified as well Shadow startStep = PathMaker.LookupStartShadow(); ChangeLogShadow changeLogShadow = PathMaker.LookupChangeLogShadow(); DateTime triggerDate; DateTime.TryParse(Strings.StampFormatChangeDate, out triggerDate); //Common.WarningMessage("changeLogShadow.GetLastChangeDate() = " + changeLogShadow.GetLastChangeDate()); if ((startStep != null) && (changeLogShadow.GetLastChangeDate() <= triggerDate)) { string tmpAlertMsg = "* * * ALERT - CHANGE TRACKING FORMATS WILL BE UPDATED! * * *" + "\r\n\r\nHidden date stamps will now use version numbers instead." + "\r\n\r\nThis makes it INCOMPATIBLE with older versions of PathMaker." + "\r\n\r\nAdd a new Revision History line for this file update process with NO HIGHLIGHT COLOR." + " Then select SAVE AS and create a new .VUI file once the table update is complete." + " You may then add a new Revision Histroy record to begin documenting your design changes with highlights." + " Old colors should be fine if left on during this update process."; Common.WarningMessage(tmpAlertMsg); //scrub the version stamps in the ChangeLogShadow before any other processing takes place - we do not want any aplhas in the version strings for float comparisons later Table table = changeLogShadow.GetChangeLog(); String lastVersionStamp = ""; string tempScrubbedVer = ""; Boolean versionStampsUpdated = false; for (int r = 0; r < table.GetNumRows(); r++) { lastVersionStamp = table.GetData(r, (int)TableColumns.ChangeLog.Version); tempScrubbedVer = Common.CleanupVersionLabel(lastVersionStamp); if (!tempScrubbedVer.Equals(lastVersionStamp)) { table.SetData(r, (int)TableColumns.ChangeLog.Version, tempScrubbedVer); versionStampsUpdated = true; } } if (versionStampsUpdated) { changeLogShadow.SetChangeLog(table); } startStep.RedoHiddenDateMarkers(); List <Shadow> shadowList = PathMaker.LookupAllShadows(); //JDK added this to update old diagrams with hidden date stamps to new version stamp format foreach (Shadow s in shadowList) { StateShadow stateShadow = s as StateShadow; if (stateShadow != null && (stateShadow.GetShapeType().Equals(ShapeTypes.Play) || stateShadow.GetShapeType().Equals(ShapeTypes.Interaction))) { stateShadow.RedoHiddenDateMarkers(stateShadow); //Common.WarningMessage("Skipping RedoHiddenDateMarkers"); } if (stateShadow != null && (stateShadow.GetShapeType().Equals(ShapeTypes.Decision) || stateShadow.GetShapeType().Equals(ShapeTypes.Data))) { StateWithTransitionShadow stateTranShadow = s as StateWithTransitionShadow; //Common.WarningMessage("Starting RedoHiddenDateMarkers for Decision or Data State:" + stateTranShadow.GetStateId()); stateTranShadow.RedoHiddenDateMarkers(stateTranShadow); } } } }
// Creates a shadow from a shape. Should only be called from PathMaker // event handlers when things are loaded, added, etc. public static Shadow MakeShapeShadow(Shape shape) { ShapeTypes shapeType = Common.GetShapeType(shape); Shadow shadow = null; switch (shapeType) { case ShapeTypes.CallSubDialog: shadow = new CallSubDialogShadow(shape); break; case ShapeTypes.ChangeLog: shadow = new ChangeLogShadow(shape); break; case ShapeTypes.AppDesc: shadow = new AppDescShadow(shape); break; case ShapeTypes.PrefixList: shadow = new PrefixListShadow(shape); break; case ShapeTypes.Comment: shadow = new IgnoredShadow(shape); break; case ShapeTypes.Connector: shadow = new ConnectorShadow(shape); break; case ShapeTypes.Data: shadow = new DataShadow(shape); break; case ShapeTypes.Decision: shadow = new DecisionShadow(shape); break; case ShapeTypes.DocTitle: shadow = new DocTitleShadow(shape); break; case ShapeTypes.HangUp: shadow = new HangUpShadow(shape); break; case ShapeTypes.Interaction: shadow = new InteractionShadow(shape); break; case ShapeTypes.None: break; case ShapeTypes.OffPageRef: shadow = new OffPageRefShadow(shape); break; case ShapeTypes.OnPageRefIn: shadow = new OnPageRefInShadow(shape); break; case ShapeTypes.OnPageRefOut: shadow = new OnPageRefOutShadow(shape); break; case ShapeTypes.Page: break; case ShapeTypes.Placeholder: shadow = new IgnoredShadow(shape); break; case ShapeTypes.Play: shadow = new PlayShadow(shape); break; case ShapeTypes.Return: shadow = new ReturnShadow(shape); break; case ShapeTypes.Start: shadow = new StartShadow(shape); break; case ShapeTypes.SubDialog: shadow = new SubDialogShadow(shape); break; case ShapeTypes.Transfer: shadow = new TransferShadow(shape); break; } return(shadow); }
internal static string ExportFastPathXML(AxMicrosoft.Office.Interop.VisOcx.AxDrawingControl visioControl, bool useTmpFile) { DocTitleShadow docTitleShadow = PathMaker.LookupDocTitleShadow(); if (docTitleShadow == null) { Common.ErrorMessage("Missing Document Title shape"); return null; } StartShadow startShadow = PathMaker.LookupStartShadow(); if (startShadow == null) { Common.ErrorMessage("Missing Start shape"); return null; } changeLogShadow = PathMaker.LookupChangeLogShadow(); if (changeLogShadow == null) { Common.ErrorMessage("Missing Change Log shape"); return null; } if (saveFileDialog == null) { saveFileDialog = new SaveFileDialog(); saveFileDialog.Title = Common.GetResourceString(Strings.SaveFastPathXMLTitleRes); saveFileDialog.Filter = Common.GetResourceString(Strings.SaveFastPathXMLFilterRes); saveFileDialog.FilterIndex = 1; } saveFileDialog.InitialDirectory = PathMaker.getCurrentFileDirectory(visioControl); saveFileDialog.RestoreDirectory = true; targetFilename = visioControl.Src; currentFileName = System.IO.Path.GetFileName(targetFilename); saveFileDialog.FileName = Common.StripExtensionFileName(currentFileName) + ".xml"; if (!useTmpFile) { if (saveFileDialog.ShowDialog() == DialogResult.OK) targetFilename = saveFileDialog.FileName; else return null; } else targetFilename = saveFileDialog.FileName + ".tmp"; XmlDocument xmlDoc = new XmlDocument(); xmlDoc.XmlResolver = null; xmlDoc.LoadXml(xmlStrings.Header); xmlDoc.DocumentElement.SetAttribute(xmlStrings.Project, docTitleShadow.GetProjectName()); xmlDoc.DocumentElement.SetAttribute(xmlStrings.Client, docTitleShadow.GetClientName()); xmlDoc.DocumentElement.SetAttribute(xmlStrings.LastModified, changeLogShadow.GetLastLogChangeDate()); xmlDoc.DocumentElement.SetAttribute(xmlStrings.Version, changeLogShadow.GetLastChangeVersion()); AddStartElement(xmlDoc, startShadow); List<Shadow> shadowList = PathMaker.LookupAllShadows(); // sorting them here helps the Missed statements in PathRunner come out in order string stateSortOrder = startShadow.GetDefaultSetting(Strings.DefaultSettingsStateSortOrder); if (stateSortOrder.Equals(Strings.StateSortOrderAlphaNumerical)) shadowList.Sort(Common.StateIdShadowSorterAlphaNumerical); else if (stateSortOrder.Equals(Strings.StateSortOrderNumericalOnly)) shadowList.Sort(Common.StateIdShadowSorterNumericalAlpha); else Common.StateIdShadowSorterVisioHeuristic(shadowList, visioControl.Document, startShadow); foreach (Shadow shadow in shadowList) { switch (shadow.GetShapeType()) { case ShapeTypes.Interaction: AddInteractionElement(xmlDoc, shadow as InteractionShadow); break; case ShapeTypes.Play: AddPlayElement(xmlDoc, shadow as PlayShadow); break; case ShapeTypes.Decision: AddDecisionElement(xmlDoc, shadow as DecisionShadow); break; case ShapeTypes.Data: AddDataElement(xmlDoc, shadow as DataShadow); break; case ShapeTypes.SubDialog: AddSubDialogElement(xmlDoc, shadow as SubDialogShadow); break; default: break; } } xmlDoc.Save(targetFilename); return targetFilename; }
public DialogResult ShowDialog(ChangeLogShadow shadow) { this.shadow = shadow; return(ShowDialog()); }
internal static void ExportUserInterfaceSpec(AxMicrosoft.Office.Interop.VisOcx.AxDrawingControl visioControl) { ParamCache paramCache = new ParamCache(); paramCache.visioControl = visioControl; paramCache.docTitleShadow = PathMaker.LookupDocTitleShadow(); if (paramCache.docTitleShadow == null) { Common.ErrorMessage("Missing Document Title shape"); return; } paramCache.startShadow = PathMaker.LookupStartShadow(); if (paramCache.startShadow == null) { Common.ErrorMessage("Missing Start shape"); return; } //Get changeLogShawdow to get version and date information changeLogShadow = PathMaker.LookupChangeLogShadow(); if (changeLogShadow == null) { Common.ErrorMessage("Missing Change Log shape"); return; } if (saveFileDialog == null) saveFileDialog = new SaveFileDialog(); saveFileDialog.InitialDirectory = PathMaker.getCurrentFileDirectory(visioControl); saveFileDialog.Title = Common.GetResourceString(Strings.SaveUISpecTitleRes); saveFileDialog.Filter = Common.GetResourceString(Strings.SaveUISpecFilterRes); saveFileDialog.FilterIndex = 1; paramCache.targetFilename = paramCache.visioControl.Src; paramCache.currentFileName = System.IO.Path.GetFileName(paramCache.targetFilename); saveFileDialog.FileName = Common.StripExtensionFileName(paramCache.currentFileName) + ".docx"; if (saveFileDialog.ShowDialog() == DialogResult.OK) paramCache.targetFilename = saveFileDialog.FileName; else return; ProgressBarForm progressBarForm = new ProgressBarForm("Exporting UI", ExportUserInterfaceSpecWorker, paramCache); progressBarForm.ShowDialog(); }