From 3f31210ccf16ceb511c7cfc918a72908289a213b Mon Sep 17 00:00:00 2001 From: Rich Date: Fri, 30 Jun 2017 18:34:19 +0000 Subject: [PATCH] B2017-133 EDraw - DSO Framer Replacement --- PROMS/Volian.Controls.Library/DSOTabPanel.cs | 228 ++++++++++--------- 1 file changed, 120 insertions(+), 108 deletions(-) diff --git a/PROMS/Volian.Controls.Library/DSOTabPanel.cs b/PROMS/Volian.Controls.Library/DSOTabPanel.cs index 654ff1b3..d69d1af3 100644 --- a/PROMS/Volian.Controls.Library/DSOTabPanel.cs +++ b/PROMS/Volian.Controls.Library/DSOTabPanel.cs @@ -17,7 +17,7 @@ namespace Volian.Controls.Library #region Private Fields private DisplayTabControl _MyDisplayTabControl; private static readonly log4net.ILog _MyLog = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); - private AxDSOFramer.AxFramerControl _MyDSOFramer; + private AxEDWordLib.AxEDWord _MyEdWord; // B2017-133 Edraw DSO Framer Replacement private TransparentPanel _MyTransparentPanel; private static int _Count = 0; private DocumentInfo _MyDocumentInfo; @@ -80,9 +80,10 @@ namespace Volian.Controls.Library { get { - if (_MyDSOFramer == null) return false; - LBDocumentClass doc = new LBDocumentClass(_MyDSOFramer.ActiveDocument); - return !doc.Saved; + if (_MyEdWord == null) return false; // B2017-133 Edraw Is Dirty Property + return _MyEdWord.IsDirty(); + //LBDocumentClass doc = new LBDocumentClass(_MyEdWord.ActiveDocument()); + //return !doc.Saved; } } private bool _OverrideClose = false; @@ -108,16 +109,48 @@ namespace Volian.Controls.Library _MyDocumentInfo = documentInfo; SetupDSO(); _RefreshTimer = new Timer(); // Enabled is false and interval is 1/10th of second. + _RefreshTimer.Interval = 1000;// B2017-133 Edraw ClientSizeChanged += new EventHandler(DSOTabPanel_ClientSizeChanged); _RefreshTimer.Tick += new EventHandler(_RefreshTimer_Tick); + _MyEdWord.BeforeDocumentClosed += _MyEdWord_BeforeDocumentClosed;// B2017-133 Edraw + _MyEdWord.BeforeDocumentOpened += _MyEdWord_BeforeDocumentOpened;// B2017-133 Edraw + _MyEdWord.BeforeDocumentSaved += _MyEdWord_BeforeDocumentSaved;// B2017-133 Edraw //_frm = new frmPG(_MyDSOFramer); //_frm.Show(); } + void _MyEdWord_BeforeDocumentSaved(object sender, EventArgs e)// B2017-133 Edraw + { + SaveDSO(); + } + void _MyEdWord_BeforeDocumentOpened(object sender, EventArgs e)// B2017-133 Edraw + { + _MyEdWord.DisableFileCommand(EDWordLib.WdUIType.wdUIDisableClose, true); + _MyEdWord.DisableFileCommand(EDWordLib.WdUIType.wdUIDisableNew, true); + _MyEdWord.DisableFileCommand(EDWordLib.WdUIType.wdUIDisablePrint, true); + _MyEdWord.DisableFileCommand(EDWordLib.WdUIType.wdUIDisablePrintPreview, true); + _MyEdWord.DisableFileCommand(EDWordLib.WdUIType.wdUIDisablePrintQuick, true); + _MyEdWord.DisableFileCommand(EDWordLib.WdUIType.wdUIDisableSave, false); + _MyEdWord.DisableFileCommand(EDWordLib.WdUIType.wdUIDisableSaveAs, true); + _MyEdWord.DisableStandardCommand(EDWordLib.CommandType.cmdTypeSave, true); + _MyEdWord.DisableStandardCommand(EDWordLib.CommandType.cmdTypeClose, true); + _MyEdWord.DisableStandardCommand(EDWordLib.CommandType.cmdTypePrint, true); + _MyEdWord.DisableSaveHotKey(true); + _MyEdWord.DisablePrintHotKey(true); + } + void _MyEdWord_BeforeDocumentClosed(object sender, EventArgs e)// B2017-133 Edraw + { + Console.WriteLine("B2017-133 Edraw Before Document Closed"); + } void _RefreshTimer_Tick(object sender, EventArgs e) { _RefreshTimer.Enabled = false; - if(_MyDSOFramer != null) - _MyDSOFramer.Focus(); + if (_MyEdWord != null)// B2017-133 Edraw + { + _MyEdWord.Focus(); + _MyEdWord.GotoItem(EDWordLib.WdGoToItem.wdGoToStart, EDWordLib.WdGoToDirection.wdGoToFirst); + //_MyEdWord.BringToFront(); + //_MyEdWord.EndInit(); + } } void DSOTabPanel_ClientSizeChanged(object sender, EventArgs e) { @@ -135,13 +168,13 @@ namespace Volian.Controls.Library _Count++; // Increment the count of open Word documents (Limit = MSWordLimit) _MyCount = _Count; this._MyTransparentPanel = new TransparentPanel(); - this._MyDSOFramer = new AxDSOFramer.AxFramerControl(); - ((System.ComponentModel.ISupportInitialize)(this._MyDSOFramer)).BeginInit(); - this.Controls.Add(this._MyDSOFramer); + this._MyEdWord = new AxEDWordLib.AxEDWord();// B2017-133 Edraw + _MyEdWord.BeginInit(); + this.Controls.Add(this._MyEdWord); this.Controls.Add(this._MyTransparentPanel); // A transparent panel is added over top of the DSO Framer window so that // the related tab can be activated when the user clicks on a Word Document. Since the Word document is actually running // in a different thread, it does not behave properly with focus events. - this.components.Add(this._MyDSOFramer); + this.components.Add(this._MyEdWord);// B2017-133 Edraw this.components.Add(this._MyTransparentPanel); this._MyTransparentPanel.Dock = System.Windows.Forms.DockStyle.Fill; this._MyTransparentPanel.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); @@ -152,20 +185,20 @@ namespace Volian.Controls.Library //this._MyTransPanel.Size = new System.Drawing.Size(370, 423); //this._MyTransPanel.TabIndex = 1; this._MyTransparentPanel.Click += new EventHandler(_MyTransparentPanel_Click); - this._MyDSOFramer.Dock = System.Windows.Forms.DockStyle.Fill; + this._MyEdWord.Dock = System.Windows.Forms.DockStyle.Fill; //System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(WordDSOTab)); //this._DSOFramer.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("_FC.OcxState"))); - ((System.ComponentModel.ISupportInitialize)(this._MyDSOFramer)).EndInit(); + _MyEdWord.EndInit(); try { try { - this._MyDSOFramer.Open(MyDSOFile.MyFile.FullName); - //this._MyDSOFramer.Open(MyDSOFile.MyFile.FullName,false,"Word.Document","",""); + this._MyEdWord.LicenseName = "Volian7573291802";// B2017-133 Edraw + this._MyEdWord.LicenseCode = "EDW8-5527-1201-AB8A";// B2017-133 Edraw + this._MyEdWord.Open(MyDSOFile.MyFile.FullName); } catch (Exception ex) { - _MyLog.Warn("dso fraimer error", ex); // put exception message in the error log System.IO.FileStream fs = MyDSOFile.MyFile.Create(); using (DocumentAuditInfoList dail = DocumentAuditInfoList.Get(MyDocumentInfo.DocID)) { @@ -194,36 +227,14 @@ namespace Volian.Controls.Library MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } fs.Close(); - this._MyDSOFramer.Open(MyDSOFile.MyFile.FullName); + this._MyEdWord.Open(MyDSOFile.MyFile.FullName);// B2017-133 Edraw } - LBDocumentClass doc = new LBDocumentClass(_MyDSOFramer.ActiveDocument); + LBDocumentClass doc = new LBDocumentClass(_MyEdWord.ActiveDocument()); Console.WriteLine("Version {0}", doc.Application.Version); float ver; if (!float.TryParse(doc.Application.Version, out ver)) ver = 12.0F; - this._MyDSOFramer.Menubar = ver < 12.0F; - this._MyDSOFramer.set_EnableFileCommand(DSOFramer.dsoFileCommandType.dsoFileClose, false); - this._MyDSOFramer.set_EnableFileCommand(DSOFramer.dsoFileCommandType.dsoFileNew, false); - this._MyDSOFramer.set_EnableFileCommand(DSOFramer.dsoFileCommandType.dsoFilePageSetup, false); - this._MyDSOFramer.set_EnableFileCommand(DSOFramer.dsoFileCommandType.dsoFilePrint, false); - this._MyDSOFramer.set_EnableFileCommand(DSOFramer.dsoFileCommandType.dsoFilePrintPreview, false); - this._MyDSOFramer.set_EnableFileCommand(DSOFramer.dsoFileCommandType.dsoFileProperties, false); - this._MyDSOFramer.set_EnableFileCommand(DSOFramer.dsoFileCommandType.dsoFileSave, false); - this._MyDSOFramer.set_EnableFileCommand(DSOFramer.dsoFileCommandType.dsoFileSaveAs, false); - this._MyDSOFramer.Titlebar = false; - //if (_MyCount < 20) - // this._MyDSOFramer.FrameHookPolicy = DSOFramer.dsoFrameHookPolicy.dsoResetNow; - //this._MyDSOFramer.BeforeDocumentClosed += new AxDSOFramer._DFramerCtlEvents_BeforeDocumentClosedEventHandler(_MyDSOFramer_BeforeDocumentClosed); - //this._MyDSOFramer.OnSaveCompleted += new AxDSOFramer._DFramerCtlEvents_OnSaveCompletedEventHandler(_MyDSOFramer_OnSaveCompleted); - //this._MyDSOFramer.LostFocus += new EventHandler(_MyDSOFramer_LostFocus); - //this._MyDSOFramer.GotFocus += new EventHandler(_MyDSOFramer_GotFocus); - //this._MyDSOFramer.Enter += new EventHandler(_MyDSOFramer_Enter); - //this._MyDSOFramer.Leave += new EventHandler(_MyDSOFramer_Leave); - //this._MyDSOFramer.OnActivationChange += new AxDSOFramer._DFramerCtlEvents_OnActivationChangeEventHandler(_MyDSOFramer_OnActivationChange); this.Enter += new EventHandler(DSOTabPanel_Enter); - //this.Leave += new EventHandler(DSOTabPanel_Leave); - //this.GotFocus += new EventHandler(DSOTabPanel_GotFocus); - //this.LostFocus += new EventHandler(DSOTabPanel_LostFocus); Application.DoEvents(); // The following line corrects Symbol characters in MSWord Sections // CheckForSymbolCharacters(doc); @@ -240,7 +251,7 @@ namespace Volian.Controls.Library } public void FixSymbolCharacters() { - CheckForSymbolCharacters(new LBDocumentClass(_MyDSOFramer.ActiveDocument)); + CheckForSymbolCharacters(new LBDocumentClass(_MyEdWord.ActiveDocument()));// B2017-133 Edraw } private void CheckForSymbolCharacters(LBDocumentClass doc) { @@ -298,7 +309,7 @@ namespace Volian.Controls.Library { if (SearchString == null) return; // Get the Document - LBDocumentClass wordDoc = new LBDocumentClass(_MyDSOFramer.ActiveDocument); + LBDocumentClass wordDoc = new LBDocumentClass(_MyEdWord.ActiveDocument()); //LBSelection sel = wordDoc.Application.Selection; LBFind find = wordDoc.Application.Selection.Find; find.ClearFormatting(); @@ -314,7 +325,7 @@ namespace Volian.Controls.Library { if (txt == null || txt.Length == 0) return; //nothing to insert // Get the Document - LBDocumentClass wordDoc = new LBDocumentClass(_MyDSOFramer.ActiveDocument); + LBDocumentClass wordDoc = new LBDocumentClass(_MyEdWord.ActiveDocument()); //This will get the selected range or just the current cursor position LBSelection sel = wordDoc.Application.Selection; // This will replace the selection or insert at current position @@ -323,7 +334,7 @@ namespace Volian.Controls.Library public string GetSelectedString() { - LBDocumentClass wordDoc = new LBDocumentClass(_MyDSOFramer.ActiveDocument); + LBDocumentClass wordDoc = new LBDocumentClass(_MyEdWord.ActiveDocument()); //This will get the selected range or just the current cursor position LBSelection sel = wordDoc.Application.Selection; // if the start & end are the same, nothing is selected: @@ -415,10 +426,10 @@ namespace Volian.Controls.Library MessageBox.Show("Currently in VIEW mode,\r\n cannot Save " + _MyDisplayTabItem.Tooltip); return; } - LBDocumentClass doc = new LBDocumentClass(_MyDSOFramer.ActiveDocument); - while (doc.Saved = false) - Application.DoEvents(); - string tmp = GetReflectiveProperty(_MyDSOFramer.ActiveDocument, "FullName"); + LBDocumentClass doc = new LBDocumentClass(_MyEdWord.ActiveDocument()); + //while (doc.Saved = false) + // Application.DoEvents(); + string tmp = GetReflectiveProperty(_MyEdWord.ActiveDocument(), "FullName"); if (System.IO.File.Exists(tmp)) MyDSOFile.FullName = tmp; else @@ -475,6 +486,57 @@ namespace Volian.Controls.Library _MyLog.Warn("Before Closing Document ", ex); } } + /// + /// Save the contents of the Word Document to a file + /// and save the file to the database + /// + /// + public bool SaveDSO() + { + bool result = true; + try + { + bool stat = _MyEdWord.Save();// B2017-133 Edraw + Console.WriteLine("Save = {0}", stat); + SaveDSO_Phase2(); + //_MyDSOFramer_OnSaveCompleted(this, null); + // These are handled in the method above + //LBDocumentClass doc = new LBDocumentClass(_MyDSOFramer.ActiveDocument); + //MyDSOFile.FullName = GetReflectiveProperty(_MyDSOFramer.ActiveDocument, "FullName"); + //MyDSOFile.SaveFile(doc.Length, doc.Ascii); + } + catch (Exception ex) + { + if (_MyLog.IsErrorEnabled) _MyLog.Error("SaveDSO", ex); + MessageBox.Show(ex.Message, "Error Saving Document", MessageBoxButtons.OK, MessageBoxIcon.Error); + result = false; + } + return result; + } + /// + /// Check to see if a Word document should be saved. If it is dirty ask the user if the + /// changes should be changed. Save the changes if the user says "yes". + /// + /// + public bool SaveDirty() + { + if (OverrideClose) + return false; + if (IsDirty) + { + // Unfortunately, the only way to handle view mode for DSO Framer is to not save. + if (PanelViewEditMode == E_ViewMode.View || !_AllowedToEdit) + { + MessageBox.Show("Currently in VIEW mode,\r\n cannot Save " + _MyDisplayTabItem.Tooltip); + return false; + } + //if (MessageBox.Show("Save changes to " + _MyDisplayTabItem.MyItemInfo.TabTitle + "\r\n" + _MyDisplayTabItem.MyItemInfo.TabToolTip, "Document has Changed", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) + if (MessageBox.Show("Save changes to " + _MyDisplayTabItem.Text + "\r\n" + _MyDisplayTabItem.Tooltip, "Document has Changed", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) + return SaveDSO(); + return false; + } + return true; + } public static bool IgnoreEnter = false; private bool _In_DSOTabPanel_Enter=false; /// @@ -503,7 +565,7 @@ namespace Volian.Controls.Library try { //_MyDSOFramer.EventsEnabled = true; - _MyDSOFramer.FrameHookPolicy = DSOFramer.dsoFrameHookPolicy.dsoResetNow; + //_MyEdWord.FrameHookPolicy = DSOFramer.dsoFrameHookPolicy.dsoResetNow; } catch (Exception ex) { @@ -514,62 +576,12 @@ namespace Volian.Controls.Library _In_DSOTabPanel_Enter = true; if (MyDisplayTabItem.MyItemInfo != null) _MyDisplayTabControl.OnItemSelectedChanged(this,new ItemSelectedChangedEventArgs(MyDisplayTabItem.MyItemInfo)); - _MyDSOFramer.Focus(); + _MyEdWord.Focus(); _In_DSOTabPanel_Enter = false; _MyDisplayTabControl.SelectedDisplayTabItem = MyDisplayTabItem; } #endregion #region Public Methods - /// - /// Save the contents of the Word Document to a file - /// and save the file to the database - /// - /// - public bool SaveDSO() - { - bool result = true; - try - { - _MyDSOFramer.Save(); - SaveDSO_Phase2(); - //_MyDSOFramer_OnSaveCompleted(this, null); - // These are handled in the method above - //LBDocumentClass doc = new LBDocumentClass(_MyDSOFramer.ActiveDocument); - //MyDSOFile.FullName = GetReflectiveProperty(_MyDSOFramer.ActiveDocument, "FullName"); - //MyDSOFile.SaveFile(doc.Length, doc.Ascii); - } - catch (Exception ex) - { - if (_MyLog.IsErrorEnabled) _MyLog.Error("SaveDSO", ex); - MessageBox.Show(ex.Message, "Error Saving Document", MessageBoxButtons.OK, MessageBoxIcon.Error); - result = false; - } - return result; - } - /// - /// Check to see if a Word document should be saved. If it is dirty ask the user if the - /// changes should be changed. Save the changes if the user says "yes". - /// - /// - public bool SaveDirty() - { - if (OverrideClose) - return false; - if (IsDirty) - { - // Unfortunately, the only way to handle view mode for DSO Framer is to not save. - if (PanelViewEditMode == E_ViewMode.View || !_AllowedToEdit) - { - MessageBox.Show("Currently in VIEW mode,\r\n cannot Save " + _MyDisplayTabItem.Tooltip); - return false; - } - //if (MessageBox.Show("Save changes to " + _MyDisplayTabItem.MyItemInfo.TabTitle + "\r\n" + _MyDisplayTabItem.MyItemInfo.TabToolTip, "Document has Changed", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) - if (MessageBox.Show("Save changes to " + _MyDisplayTabItem.Text + "\r\n" + _MyDisplayTabItem.Tooltip, "Document has Changed", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) - return SaveDSO(); - return false; - } - return true; - } private bool _IsBeingDeleted = false; public bool IsBeingDeleted { @@ -595,14 +607,14 @@ namespace Volian.Controls.Library bool result = true; try { - if (_MyDSOFramer != null) + if (_MyEdWord != null) { SaveDSO_Phase1(); - _MyDSOFramer.Close(); - Controls.Remove(_MyDSOFramer); - components.Remove(_MyDSOFramer); - _MyDSOFramer.Dispose(); - _MyDSOFramer = null; + _MyEdWord.CloseDoc(); + Controls.Remove(_MyEdWord); + components.Remove(_MyEdWord); + _MyEdWord.Dispose(); + _MyEdWord = null; _Count--; } } @@ -620,9 +632,9 @@ namespace Volian.Controls.Library { try { - this._MyDSOFramer.Activate(); - if (_MyCount <= MSWordLimit) - this._MyDSOFramer.FrameHookPolicy = DSOFramer.dsoFrameHookPolicy.dsoResetNow; + //this._MyEdWord.Activate(); + //if (_MyCount <= MSWordLimit) + // this._MyEdWord.FrameHookPolicy = DSOFramer.dsoFrameHookPolicy.dsoResetNow; } catch (Exception ex) {