From 90a4ca821fbed8298264c71ef19f0a1f1b9ed94f Mon Sep 17 00:00:00 2001 From: Kathy Date: Fri, 3 Oct 2008 11:36:10 +0000 Subject: [PATCH] --- PROMS/Volian.Controls.Library/DSOTabPanel.cs | 91 +++++++++++++++---- .../Volian.Controls.Library/DisplayTabItem.cs | 59 +++++++++--- 2 files changed, 117 insertions(+), 33 deletions(-) diff --git a/PROMS/Volian.Controls.Library/DSOTabPanel.cs b/PROMS/Volian.Controls.Library/DSOTabPanel.cs index ac633795..9d0fc98d 100644 --- a/PROMS/Volian.Controls.Library/DSOTabPanel.cs +++ b/PROMS/Volian.Controls.Library/DSOTabPanel.cs @@ -7,6 +7,7 @@ using System.Drawing; using System.Windows.Forms; using VEPROMS.CSLA.Library; using Volian.Controls.Library; +using System.Reflection; namespace Volian.Controls.Library @@ -112,22 +113,45 @@ namespace Volian.Controls.Library //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(); - this._MyDSOFramer.Open(MyDSOFile.MyFile.FullName); - this._MyDSOFramer.Menubar = 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); + try + { + this._MyDSOFramer.Open(MyDSOFile.MyFile.FullName); + this._MyDSOFramer.Menubar = 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); + } + catch (Exception ex) + { + string message = ShowException(ex); + Console.WriteLine("\r\n-------------\r\n{0}{1}{2}\r\n-------------\r\n", MyDSOFile.MyFile.FullName, ex.GetType().Name, message); + // TODO: Should output a message + // TODO: Should try to do a direct open using Word. + } + } + + private string ShowException(Exception ex) + { + string sep = "\r\n "; + StringBuilder sb = new StringBuilder(); + do + { + sb.Append(sep + ex.Message); + sep += " "; + ex = ex.InnerException; + } while (ex != null); + return sb.ToString(); } //void _MyDSOFramer_Leave(object sender, EventArgs e) @@ -189,6 +213,7 @@ namespace Volian.Controls.Library /// void _MyDSOFramer_OnSaveCompleted(object sender, AxDSOFramer._DFramerCtlEvents_OnSaveCompletedEvent e) { + MyDSOFile.FullName = GetReflectiveProperty(_MyDSOFramer.ActiveDocument, "FullName"); MyDSOFile.SaveFile(); } /// @@ -233,7 +258,8 @@ namespace Volian.Controls.Library if (_In_DSOTabPanel_Enter) return; //vlnStackTrace.ShowStack("DSOTabPanel_Enter {0} DocID {1} Index {2} {3}",_In_DSOTabPanel_Enter, this._MyDocumentInfo.DocID, _MyDisplayTabControl.MyBar.SelectedDockTab, sender.GetType().FullName); _In_DSOTabPanel_Enter = true; - _MyDisplayTabControl.OnItemSelectedChanged(this,new ItemSelectedChangedEventArgs(MyDisplayTabItem.MyItemInfo)); + if (MyDisplayTabItem.MyItemInfo != null) + _MyDisplayTabControl.OnItemSelectedChanged(this,new ItemSelectedChangedEventArgs(MyDisplayTabItem.MyItemInfo)); _MyDSOFramer.Focus(); _In_DSOTabPanel_Enter = false; } @@ -250,6 +276,7 @@ namespace Volian.Controls.Library try { _MyDSOFramer.Save(); + MyDSOFile.FullName = GetReflectiveProperty(_MyDSOFramer.ActiveDocument, "FullName"); MyDSOFile.SaveFile(); } catch (Exception ex) @@ -269,7 +296,8 @@ namespace Volian.Controls.Library if (_MyDSOFramer.IsDirty) { // TODO: Should be based upon Item rather than Document. - 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.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; } @@ -326,5 +354,32 @@ namespace Volian.Controls.Library } } #endregion + #region DocumentProperties + + private string GetReflectiveProperty(object objectToInspect, string propertyName) + { + string returnString = ""; + //To use reflection on an object, you + // first need to get an instance + // of that object's type. + Type objectType = objectToInspect.GetType(); + //After you have the object's type, you can get + // information on that type. In this case, we're + // asking the type to tell us all the + // properties that it contains. + PropertyInfo[] properties = objectType.GetProperties(); + //You can then use the PropertyInfo array + // to loop through each property of the type. + foreach (PropertyInfo property in properties) + { + //The interest part of this code + // is the GetValue method. This method + // returns the value of the property. + if(property.Name == propertyName) + return property.GetValue(objectToInspect, null).ToString(); + } + return null; + } + #endregion } } diff --git a/PROMS/Volian.Controls.Library/DisplayTabItem.cs b/PROMS/Volian.Controls.Library/DisplayTabItem.cs index eaac1400..f9303ac6 100644 --- a/PROMS/Volian.Controls.Library/DisplayTabItem.cs +++ b/PROMS/Volian.Controls.Library/DisplayTabItem.cs @@ -16,6 +16,9 @@ namespace Volian.Controls.Library private StepTabPanel _MyStepTabPanel; private string _MyKey; private DSOTabPanel _MyDSOTabPanel; + private DocumentInfo _MyDocumentInfo; + + #endregion #region Properties /// @@ -59,6 +62,13 @@ namespace Volian.Controls.Library get { return _MyStepTabPanel.SelectedItemInfo; } set { _MyStepTabPanel.SelectedItemInfo = value; } } + /// + /// Current DocumentInfo for this page - only set if library document + /// + public DocumentInfo MyDocumentInfo + { + get { return _MyDocumentInfo; } + } #endregion #region Constructors public DisplayTabItem(IContainer container, DisplayTabControl myDisplayTabControl, ItemInfo myItemInfo, string myKey) @@ -69,16 +79,24 @@ namespace Volian.Controls.Library container.Add(this); InitializeComponent(); this.Click += new EventHandler(DisplayTabItem_Click); - //this.GotFocus += new EventHandler(DisplayTabItem_GotFocus); - //this.LostFocus += new EventHandler(DisplayTabItem_LostFocus); - //this.MouseDown += new System.Windows.Forms.MouseEventHandler(DisplayTabItem_MouseDown); - //this.MouseUp += new System.Windows.Forms.MouseEventHandler(DisplayTabItem_MouseUp); if (myItemInfo.MyContent.MyEntry == null) SetupStepTabPanel(); else SetupDSOTabPanel(); Name = string.Format("DisplayTabItem {0}", myItemInfo.ItemID); } + public DisplayTabItem(IContainer container, DisplayTabControl myDisplayTabControl, DocumentInfo myDocumentInfo, string myKey) + { + _MyKey = myKey; + _MyDisplayTabControl = myDisplayTabControl; + _MyDocumentInfo = myDocumentInfo; + container.Add(this); + InitializeComponent(); + this.Click += new EventHandler(DisplayTabItem_Click); + SetupLibraryDocumentDSOTabPanel(); + Name = string.Format("DisplayTabLibraryDocument {0}", myDocumentInfo.DocID); + } + protected override void OnDisplayedChanged() { //Console.WriteLine("=>=>=>=> OnDisplayedChanged"); @@ -168,13 +186,7 @@ namespace Volian.Controls.Library Name = "tabItem Item " + _MyItemInfo.ItemID; Text = _MyItemInfo.TabTitle; Tooltip = _MyItemInfo.TabToolTip; - // - //Console.WriteLine("this.Focus {0}", Name); - //this.Focus(); - //Console.WriteLine("Controls.Add {0}", Name); _MyDisplayTabControl.Controls.Add(_MyDSOTabPanel); - //Console.WriteLine("Enabled = false {0}", Name); - //_MyDisplayTabControl.MyBar.Enabled = false; DSOTabPanel.IgnoreEnter = true; Console.WriteLine("AddRange {0}", Name); _MyDisplayTabControl.MyBar.Items.AddRange(new DevComponents.DotNetBar.BaseItem[] { @@ -182,15 +194,32 @@ namespace Volian.Controls.Library // // tabPanel // - //Console.WriteLine("Enabled = true {0}", Name); - //_MyDisplayTabControl.MyBar.Enabled = true; - //Console.WriteLine("SelectedDisplayTabItem {0}", Name); _MyDisplayTabControl.SelectedDisplayTabItem = this; - //Console.WriteLine("MyDisplayTabItem {0}", Name); _MyDSOTabPanel.MyDisplayTabItem = this; DSOTabPanel.IgnoreEnter = false; - //_MyDisplayTabControl.OnItemSelectedChanged(this, new ItemSelectedChangedEventArgs(MyItemInfo)); } + private void SetupLibraryDocumentDSOTabPanel() + { + _MyDSOTabPanel = new DSOTabPanel(_MyDocumentInfo, _MyDisplayTabControl); + // + // tabItem + // + Control = _MyDSOTabPanel; + Name = "tabLibraryDocument " + _MyDocumentInfo.DocID; + Text = _MyDocumentInfo.LibTitle; + DocumentConfig dc = new DocumentConfig(_MyDocumentInfo); + Tooltip = dc.LibDoc_Comment; + _MyDisplayTabControl.Controls.Add(_MyDSOTabPanel); + DSOTabPanel.IgnoreEnter = true; + _MyDisplayTabControl.MyBar.Items.AddRange(new DevComponents.DotNetBar.BaseItem[] { + this}); + // + // tabPanel + // + _MyDisplayTabControl.SelectedDisplayTabItem = this; + _MyDSOTabPanel.MyDisplayTabItem = this; + DSOTabPanel.IgnoreEnter = false; + } #endregion } }