protected override void OnCTPFactoryAvailable(Office.ICTPFactory ctpFactoryInst) { try { Trace.WriteLine("OnCTPFactoryAvailable"); base.OnCTPFactoryAvailable(ctpFactoryInst); if (Parent.TaskPanes.Count > 0) { bool paneExists = null != Parent.TaskPanes[0].Pane; bool paneCreated = Parent.TaskPanes[0].Create(); Trace.WriteLine("Parent.TaskPanes.Count > 0"); Trace.WriteLine("paneExists: " + paneExists.ToString()); Trace.WriteLine("paneCreated: " + paneCreated.ToString()); //MessageBox.Show(String.Format("Pane Exists {0} Pane Created {1}", paneExists, paneCreated)); } else { Trace.WriteLine("Parent.TaskPanes.Count == 0"); } } catch (Exception exception) { MessageBox.Show("OnCTPFactoryAvailable Exception"); Trace.WriteLine("OnCTPFactoryAvailable Exception " + exception.ToString()); throw; } }
/// <summary> /// ICustomTaskPaneConsumer implementation /// </summary> /// <param name="CTPFactoryInst">factory proxy from host application</param> public virtual void CTPFactoryAvailable(object CTPFactoryInst) { try { if (null != CTPFactoryInst) { TaskPaneFactory = new NetOffice.OfficeApi.ICTPFactory(Factory, null, CTPFactoryInst); foreach (TaskPaneInfo item in TaskPanes) { string title = item.Title; Office.CustomTaskPane taskPane = TaskPaneFactory.CreateCTP(item.Type.FullName, title) as Office.CustomTaskPane; item.Pane = taskPane; item.AssignEvents(); item.IsLoaded = true; ITaskPane pane = taskPane.ContentControl as ITaskPane; if (null != pane) { TaskPaneInstances.Add(pane); object[] argumentArray = new object[0]; if (item.Arguments != null) { argumentArray = item.Arguments; } pane.OnConnection(Application, taskPane, argumentArray); } foreach (KeyValuePair <string, object> property in item.ChangedProperties) { if (property.Key != "Title") { taskPane.GetType().InvokeMember(property.Key, BindingFlags.SetProperty, null, taskPane, new object[] { property.Value }); } } } } } catch (NetRunTimeSystem.Exception exception) { NetOffice.DebugConsole.Default.WriteException(exception); OnError(ErrorMethodKind.CTPFactoryAvailable, exception); } }
public void CTPFactoryAvailable(object CTPFactoryInst) { try { Office.ICTPFactory ctpFactory = new NetOffice.OfficeApi.ICTPFactory(_accessApplication, CTPFactoryInst); Office._CustomTaskPane taskPane = ctpFactory.CreateCTP(typeof(Addin).Assembly.GetName().Name + ".SampleControl", "NetOffice Sample Pane(CS35)", Type.Missing); taskPane.DockPosition = MsoCTPDockPosition.msoCTPDockPositionRight; taskPane.Width = 300; taskPane.Visible = true; _sampleControl = taskPane.ContentControl as SampleControl; ctpFactory.Dispose(); } catch (Exception exception) { string message = string.Format("An error occured.{0}{0}{1}", Environment.NewLine, exception.Message); MessageBox.Show(message, _progId, MessageBoxButtons.OK, MessageBoxIcon.Error); } }
public void CTPFactoryAvailable(object CTPFactoryInst) { try { Office.ICTPFactory ctpFactory = new NetOffice.OfficeApi.ICTPFactory(_outlookApplication, CTPFactoryInst); Office._CustomTaskPane taskPane = ctpFactory.CreateCTP(typeof(Addin).Assembly.GetName().Name + ".SampleControl", "NetOffice Sample Pane(CS4)", Type.Missing); taskPane.DockPosition = MsoCTPDockPosition.msoCTPDockPositionRight; taskPane.Width = 300; taskPane.Visible = true; _sampleControl = taskPane.ContentControl as SampleControl; ctpFactory.Dispose(); } catch (Exception exception) { string message = string.Format("An error occured.{0}{0}{1}", Environment.NewLine, exception.Message); MessageBox.Show(message, _prodId, MessageBoxButtons.OK, MessageBoxIcon.Error); } }
private void CreateCustomPanes(object CTPFactoryInst) { TaskPaneFactory = new NetOffice.OfficeApi.ICTPFactory(Factory, null, CTPFactoryInst); foreach (TaskPaneInfo item in TaskPanes) { string title = item.Title; Office.CustomTaskPane taskPane = CreateCTP(item.Type.FullName, title); if (null == taskPane) { continue; } item.Pane = taskPane; item.AssignEvents(); item.IsLoaded = true; switch (taskPane.DockPosition) { case NetOffice.OfficeApi.Enums.MsoCTPDockPosition.msoCTPDockPositionLeft: case NetOffice.OfficeApi.Enums.MsoCTPDockPosition.msoCTPDockPositionRight: taskPane.Width = item.Width >= 0 ? item.Width : TaskPaneInfo.DefaultSize; break; case NetOffice.OfficeApi.Enums.MsoCTPDockPosition.msoCTPDockPositionTop: case NetOffice.OfficeApi.Enums.MsoCTPDockPosition.msoCTPDockPositionBottom: taskPane.Height = item.Height >= 0 ? item.Height : TaskPaneInfo.DefaultSize; break; case NetOffice.OfficeApi.Enums.MsoCTPDockPosition.msoCTPDockPositionFloating: item.Width = item.Width >= 0 ? item.Width : TaskPaneInfo.DefaultSize; taskPane.Height = item.Height >= 0 ? item.Height : TaskPaneInfo.DefaultSize; break; default: break; } ITaskPane pane = taskPane.ContentControl as ITaskPane; if (null != pane) { TaskPaneInstances.Add(pane); object[] argumentArray = new object[0]; if (item.Arguments != null) { argumentArray = item.Arguments; } try { pane.OnConnection(Application, taskPane, argumentArray); } catch (Exception exception) { Factory.Console.WriteException(exception); } } foreach (KeyValuePair <string, object> property in item.ChangedProperties) { if (property.Key == "Title") { continue; } try { if (property.Key == "Width") // avoid to set width in top and bottom align { object outValue = null; item.ChangedProperties.TryGetValue("DockPosition", out outValue); if (null != outValue) { Office.Enums.MsoCTPDockPosition position = (Office.Enums.MsoCTPDockPosition)Enum.Parse(typeof(Office.Enums.MsoCTPDockPosition), outValue.ToString()); if (position == Office.Enums.MsoCTPDockPosition.msoCTPDockPositionTop || position == Office.Enums.MsoCTPDockPosition.msoCTPDockPositionBottom) { continue; } } } if (property.Key == "Height") // avoid to set height in left and right align { object outValue = null; item.ChangedProperties.TryGetValue("DockPosition", out outValue); if (null == outValue) { outValue = Office.Enums.MsoCTPDockPosition.msoCTPDockPositionRight; // NetOffice default position if unset } Office.Enums.MsoCTPDockPosition position = (Office.Enums.MsoCTPDockPosition)Enum.Parse(typeof(Office.Enums.MsoCTPDockPosition), outValue.ToString()); if (position == Office.Enums.MsoCTPDockPosition.msoCTPDockPositionLeft || position == Office.Enums.MsoCTPDockPosition.msoCTPDockPositionRight) { continue; } } taskPane.GetType().InvokeMember(property.Key, BindingFlags.SetProperty, null, taskPane, new object[] { property.Value }); } catch { Factory.Console.WriteLine("Failed to set TaskPane property {0}", property.Key); } } } }
private void CreateCustomPanes(object CTPFactoryInst) { TaskPaneFactory = new NetOffice.OfficeApi.ICTPFactory(Factory, null, CTPFactoryInst); foreach (TaskPaneInfo item in TaskPanes) { string title = item.Title; Office.CustomTaskPane taskPane = CreateCTP(item.Type.FullName, title); if (null == taskPane) continue; item.Pane = taskPane; item.AssignEvents(); item.IsLoaded = true; switch (taskPane.DockPosition) { case NetOffice.OfficeApi.Enums.MsoCTPDockPosition.msoCTPDockPositionLeft: case NetOffice.OfficeApi.Enums.MsoCTPDockPosition.msoCTPDockPositionRight: taskPane.Width = item.Width >= 0 ? item.Width : TaskPaneInfo.DefaultSize; break; case NetOffice.OfficeApi.Enums.MsoCTPDockPosition.msoCTPDockPositionTop: case NetOffice.OfficeApi.Enums.MsoCTPDockPosition.msoCTPDockPositionBottom: taskPane.Height = item.Height >= 0 ? item.Height : TaskPaneInfo.DefaultSize; break; case NetOffice.OfficeApi.Enums.MsoCTPDockPosition.msoCTPDockPositionFloating: item.Width = item.Width >= 0 ? item.Width : TaskPaneInfo.DefaultSize; taskPane.Height = item.Height >= 0 ? item.Height : TaskPaneInfo.DefaultSize; break; default: break; } ITaskPane pane = taskPane.ContentControl as ITaskPane; if (null != pane) { TaskPaneInstances.Add(pane); object[] argumentArray = new object[0]; if (item.Arguments != null) argumentArray = item.Arguments; try { pane.OnConnection(Application, taskPane, argumentArray); } catch (Exception exception) { Factory.Console.WriteException(exception); } } foreach (KeyValuePair<string, object> property in item.ChangedProperties) { if (property.Key == "Title") continue; try { if (property.Key == "Width") // avoid to set width in top and bottom align { object outValue = null; item.ChangedProperties.TryGetValue("DockPosition", out outValue); if (null != outValue) { Office.Enums.MsoCTPDockPosition position = (Office.Enums.MsoCTPDockPosition)Enum.Parse(typeof(Office.Enums.MsoCTPDockPosition), outValue.ToString()); if (position == Office.Enums.MsoCTPDockPosition.msoCTPDockPositionTop || position == Office.Enums.MsoCTPDockPosition.msoCTPDockPositionBottom) continue; } } if (property.Key == "Height") // avoid to set height in left and right align { object outValue = null; item.ChangedProperties.TryGetValue("DockPosition", out outValue); if (null == outValue) outValue = Office.Enums.MsoCTPDockPosition.msoCTPDockPositionRight; // NetOffice default position if unset Office.Enums.MsoCTPDockPosition position = (Office.Enums.MsoCTPDockPosition)Enum.Parse(typeof(Office.Enums.MsoCTPDockPosition), outValue.ToString()); if (position == Office.Enums.MsoCTPDockPosition.msoCTPDockPositionLeft || position == Office.Enums.MsoCTPDockPosition.msoCTPDockPositionRight) continue; } taskPane.GetType().InvokeMember(property.Key, BindingFlags.SetProperty, null, taskPane, new object[] { property.Value }); } catch { Factory.Console.WriteLine("Failed to set TaskPane property {0}", property.Key); } } } }
/// <summary> /// ICustomTaskPaneConsumer implementation /// </summary> /// <param name="CTPFactoryInst">factory proxy from host application</param> public virtual void CTPFactoryAvailable(object CTPFactoryInst) { try { if (null == CTPFactoryInst) { Factory.Console.WriteLine("Warning: null argument recieved in CTPFactoryAvailable. argument name: CTPFactoryInst"); return; } CustomPaneAttribute paneAttribute = AttributeHelper.GetCustomPaneAttribute(Type); if (null != paneAttribute) { TaskPaneInfo item = TaskPanes.Add(paneAttribute.PaneType, paneAttribute.PaneType.Name); if (!CallOnCreateTaskPaneInfo(item)) { item.Title = paneAttribute.Title; item.Visible = paneAttribute.Visible; item.DockPosition = (Office.Enums.MsoCTPDockPosition)Enum.Parse(typeof(Office.Enums.MsoCTPDockPosition), paneAttribute.DockPosition.ToString()); item.DockPositionRestrict = (Office.Enums.MsoCTPDockPositionRestrict)Enum.Parse(typeof(Office.Enums.MsoCTPDockPositionRestrict), paneAttribute.DockPositionRestrict.ToString()); item.Width = paneAttribute.Width; item.Height = paneAttribute.Height; item.Arguments = new object[] { this }; } item.VisibleStateChange += new NetOffice.OfficeApi.CustomTaskPane_VisibleStateChangeEventHandler(AttributePane_VisibleStateChange); item.DockPositionStateChange += new Office.CustomTaskPane_DockPositionStateChangeEventHandler(AttributePane_DockPositionStateChange); } TaskPaneFactory = new NetOffice.OfficeApi.ICTPFactory(Factory, null, CTPFactoryInst); foreach (TaskPaneInfo item in TaskPanes) { string title = item.Title; Office.CustomTaskPane taskPane = TaskPaneFactory.CreateCTP(item.Type.FullName, title) as Office.CustomTaskPane; item.Pane = taskPane; item.AssignEvents(); item.IsLoaded = true; switch (taskPane.DockPosition) { case NetOffice.OfficeApi.Enums.MsoCTPDockPosition.msoCTPDockPositionLeft: case NetOffice.OfficeApi.Enums.MsoCTPDockPosition.msoCTPDockPositionRight: taskPane.Width = item.Width; break; case NetOffice.OfficeApi.Enums.MsoCTPDockPosition.msoCTPDockPositionTop: case NetOffice.OfficeApi.Enums.MsoCTPDockPosition.msoCTPDockPositionBottom: taskPane.Height = item.Height; break; case NetOffice.OfficeApi.Enums.MsoCTPDockPosition.msoCTPDockPositionFloating: item.Width = paneAttribute.Width; taskPane.Height = item.Height; break; default: break; } ITaskPane pane = taskPane.ContentControl as ITaskPane; if (null != pane) { TaskPaneInstances.Add(pane); object[] argumentArray = new object[0]; if (item.Arguments != null) { argumentArray = item.Arguments; } pane.OnConnection(Application, taskPane, argumentArray); } foreach (KeyValuePair <string, object> property in item.ChangedProperties) { if (property.Key == "Title") { continue; } try { if (property.Key == "Width") // avoid to set width in top and bottom align { object outValue = null; item.ChangedProperties.TryGetValue("DockPosition", out outValue); if (null != outValue) { Office.Enums.MsoCTPDockPosition position = (Office.Enums.MsoCTPDockPosition)Enum.Parse(typeof(Office.Enums.MsoCTPDockPosition), outValue.ToString()); if (position == Office.Enums.MsoCTPDockPosition.msoCTPDockPositionTop || position == Office.Enums.MsoCTPDockPosition.msoCTPDockPositionBottom) { continue; } } } if (property.Key == "Height") // avoid to set height in left and right align { object outValue = null; item.ChangedProperties.TryGetValue("DockPosition", out outValue); if (null == outValue) { outValue = Office.Enums.MsoCTPDockPosition.msoCTPDockPositionRight; // NetOffice default position if unset } Office.Enums.MsoCTPDockPosition position = (Office.Enums.MsoCTPDockPosition)Enum.Parse(typeof(Office.Enums.MsoCTPDockPosition), outValue.ToString()); if (position == Office.Enums.MsoCTPDockPosition.msoCTPDockPositionLeft || position == Office.Enums.MsoCTPDockPosition.msoCTPDockPositionRight) { continue; } } taskPane.GetType().InvokeMember(property.Key, BindingFlags.SetProperty, null, taskPane, new object[] { property.Value }); } catch { ; } } } } catch (NetRuntimeSystem.Exception exception) { Factory.Console.WriteException(exception); OnError(ErrorMethodKind.CTPFactoryAvailable, exception); } }
/// <summary> /// ICustomTaskPaneConsumer implementation /// </summary> /// <param name="CTPFactoryInst">factory proxy from host application</param> public virtual void CTPFactoryAvailable(object CTPFactoryInst) { try { if (null != CTPFactoryInst) { TaskPaneFactory = new NetOffice.OfficeApi.ICTPFactory(Factory, null, CTPFactoryInst); foreach (TaskPaneInfo item in TaskPanes) { string title = item.Title; Office.CustomTaskPane taskPane = TaskPaneFactory.CreateCTP(item.Type.FullName, title) as Office.CustomTaskPane; item.Pane = taskPane; item.AssignEvents(); item.IsLoaded = true; ITaskPane pane = taskPane.ContentControl as ITaskPane; if (null != pane) { TaskPaneInstances.Add(pane); object[] argumentArray = new object[0]; if(item.Arguments != null) argumentArray = item.Arguments; pane.OnConnection(Application, taskPane, argumentArray); } foreach (KeyValuePair<string, object> property in item.ChangedProperties) if (property.Key != "Title") taskPane.GetType().InvokeMember(property.Key, BindingFlags.SetProperty, null, taskPane, new object[] { property.Value }); } } } catch (NetRunTimeSystem.Exception exception) { NetOffice.DebugConsole.Default.WriteException(exception); OnError(ErrorMethodKind.CTPFactoryAvailable, exception); } }
public void CTPFactoryAvailable(object CTPFactoryInst) { try { _myCtpFactory = new NetOffice.OfficeApi.ICTPFactory(_excelApplication, CTPFactoryInst); _myPane = _myCtpFactory.CreateCTP("ExcelAddinCSharp.SampleControl", "NetOffice Sample Pane(C#)", Type.Missing); _myPane.DockPosition = MsoCTPDockPosition.msoCTPDockPositionRight; _myPane.Visible = true; _myControl = _myPane.ContentControl as SampleControl; _taskPanePassed = true; } catch (Exception throwedException) { _taskPanePassed = false; string details = string.Format("{1}{1}Details:{1}{1}{0}", throwedException.Message, Environment.NewLine); Console.WriteLine(details); } }
/// <summary> /// Create taskpanes /// </summary> /// <typeparam name="T">Taskpane interface type from</typeparam> /// <typeparam name="N">Current host application</typeparam> /// <param name="factory">current used factory</param> /// <param name="ctpFactoryInst">taskpane creator given from office application</param> /// <param name="taskPanes">taskpane you want to create</param> /// <param name="taskPaneInstances">create taskpane instances</param> /// <param name="onError">Error callback if somthings fails</param> /// <param name="application">host application in base definition</param> public OfficeApi.ICTPFactory CreateCustomPanes <T, N>(Core factory, object ctpFactoryInst, OfficeApi.Tools.CustomTaskPaneCollection taskPanes, List <T> taskPaneInstances, NetOffice.Tools.OnErrorHandler onError, COMObject application) where T : class where N : COMObject { OfficeApi.ICTPFactory TaskPaneFactory = new NetOffice.OfficeApi.ICTPFactory(factory, null, ctpFactoryInst); try { foreach (TaskPaneInfo item in taskPanes) { string title = item.Title; OfficeApi.CustomTaskPane taskPane = CreateCTP(factory, TaskPaneFactory, item.Type.FullName, title, onError); if (null == taskPane) { continue; } Type taskPaneType = taskPane.GetType(); item.Pane = taskPane; item.AssignEvents(); item.IsLoaded = true; switch (taskPane.DockPosition) { case NetOffice.OfficeApi.Enums.MsoCTPDockPosition.msoCTPDockPositionLeft: case NetOffice.OfficeApi.Enums.MsoCTPDockPosition.msoCTPDockPositionRight: taskPane.Width = item.Width >= 0 ? item.Width : TaskPaneInfo.DefaultSize; break; case NetOffice.OfficeApi.Enums.MsoCTPDockPosition.msoCTPDockPositionTop: case NetOffice.OfficeApi.Enums.MsoCTPDockPosition.msoCTPDockPositionBottom: taskPane.Height = item.Height >= 0 ? item.Height : TaskPaneInfo.DefaultSize; break; case NetOffice.OfficeApi.Enums.MsoCTPDockPosition.msoCTPDockPositionFloating: item.Width = item.Width >= 0 ? item.Width : TaskPaneInfo.DefaultSize; taskPane.Height = item.Height >= 0 ? item.Height : TaskPaneInfo.DefaultSize; break; default: break; } T pane = taskPane.ContentControl as T; if (null != pane) { taskPaneInstances.Add(pane); object[] argumentArray = new object[0]; if (item.Arguments != null) { argumentArray = item.Arguments; } try { OfficeApi.Tools.ITaskPaneConnection <N> foo = pane as OfficeApi.Tools.ITaskPaneConnection <N>; if (null != foo) { foo.OnConnection(application as N, taskPane, argumentArray); } } catch (Exception exception) { factory.Console.WriteException(exception); } } foreach (KeyValuePair <string, object> property in item.ChangedProperties) { if (property.Key == "Title") { continue; } try { if (property.Key == "Width") // avoid to set width in top and bottom align { object outValue = null; item.ChangedProperties.TryGetValue("DockPosition", out outValue); if (null != outValue) { OfficeApi.Enums.MsoCTPDockPosition position = (OfficeApi.Enums.MsoCTPDockPosition)Enum.Parse(typeof(OfficeApi.Enums.MsoCTPDockPosition), outValue.ToString()); if (position == OfficeApi.Enums.MsoCTPDockPosition.msoCTPDockPositionTop || position == OfficeApi.Enums.MsoCTPDockPosition.msoCTPDockPositionBottom) { continue; } } } if (property.Key == "Height") // avoid to set height in left and right align { object outValue = null; item.ChangedProperties.TryGetValue("DockPosition", out outValue); if (null == outValue) { outValue = OfficeApi.Enums.MsoCTPDockPosition.msoCTPDockPositionRight; // NetOffice default position if unset } OfficeApi.Enums.MsoCTPDockPosition position = (OfficeApi.Enums.MsoCTPDockPosition)Enum.Parse(typeof(OfficeApi.Enums.MsoCTPDockPosition), outValue.ToString()); if (position == OfficeApi.Enums.MsoCTPDockPosition.msoCTPDockPositionLeft || position == OfficeApi.Enums.MsoCTPDockPosition.msoCTPDockPositionRight) { continue; } } taskPaneType.InvokeMember(property.Key, System.Reflection.BindingFlags.SetProperty, null, taskPane, new object[] { property.Value }); } catch { factory.Console.WriteLine("Failed to set TaskPane property {0}", property.Key); } } } return(TaskPaneFactory); } catch (Exception) { throw; } }