/// <summary> /// Event callback whenever the tab is changed, which will attempt to set /// focus to the first control on the sheet. /// </summary> /// <param name="sender">Sender.</param> /// <param name="e">Event arguments.</param> private void tabControl_SelectedIndexChanged(object sender, System.EventArgs e) { XmlTabPage tab = (XmlTabPage)tabControl.TabPages[tabControl.SelectedIndex].Tag; tab.FocusFirst(); }
public void Design(string mode, Microsoft.Office.Interop.Visio.Page page) { if (_definition == null) { throw new Exception("Cannot .Design if no definition has ben .Load()'ed."); } /* * Parse definition properties. */ #region Properties XmlElement properties = (XmlElement)_definition.SelectSingleNode("/shape/properties", FormsNamespace.NamespaceManager); if (properties == null) { throw new ArgumentException("Missing properties element.", "doc"); } this.Text = properties.Attributes["title"].Value; #endregion IXmlShape shape = null; if (this.Tag is IXmlShape) { shape = (IXmlShape)this.Tag; } #region Create Tabs XmlNodeList tabNodeList = properties.SelectNodes("tab", FormsNamespace.NamespaceManager); foreach (XmlElement tabElement in tabNodeList) { /* * Iterate through tab list. Please note that since each Control is * being added with Dock.Top, they will visually appear in reverse order. * Therefore, once all have been added, we perform a ReLayout! */ XmlTabPage tab = new XmlTabPage(tabElement); if (tab.IsInvisibleInMode(mode))//Se tab invisível, não é adicionado ao form { continue; } if (tab.IsDisabledInMode(mode)) { ((Control)tab.TabPage).Enabled = false; } tabControl.TabPages.Add(tab.TabPage); XmlNodeList fieldNodeList = tabElement.SelectNodes("*"); foreach (XmlElement fieldElement in fieldNodeList) { /* * Iterate through each property. Note how we do not include in the _fields * bag controls that are not IXmlProperty! */ if (fieldElement.Name == "include") { string filename, xPath, excludedProperties = null; string[] excludedPropertiesList = null; string prefix = null; if ((fieldElement.Attributes["file"] != null)) { filename = fieldElement.Attributes["file"].Value; } else { throw (new Exception("Element include in shape definition doesn´t have the attribute 'file'!")); } if ((fieldElement.Attributes["xPath"] != null)) { xPath = fieldElement.Attributes["xPath"].Value; } else { throw (new Exception("Element include in shape definition doesn´t have the attribute 'xPath'!")); } if ((fieldElement.Attributes["prefix"] != null)) { prefix = fieldElement.Attributes["prefix"].Value; } if ((fieldElement.Attributes["excludedProperties"] != null)) { excludedProperties = fieldElement.Attributes["excludedProperties"].Value; excludedPropertiesList = excludedProperties.Replace(" ", "").Split(','); } XmlDocument xdoc = LoadPropertiesFromFile(filename); foreach (XmlElement fieldElem in xdoc.SelectNodes(xPath)) { if ((excludedPropertiesList != null) && checkIfExcludedNode(fieldElem.Attributes["id"].Value, excludedPropertiesList)) { continue; } if (prefix != null) { fieldElem.Attributes["id"].Value = string.Format("{0}_{1}", prefix, fieldElem.Attributes["id"].Value); } Control control = XmlFormFactory.CreateProperty(fieldElem, mode, page); BaseProperty tmpControl = control as BaseProperty; if (control is IXmlProperty) { IXmlProperty property = (IXmlProperty)control; _fields.Add(property); } if (tmpControl != null) { if (tmpControl.IsInvisibleInMode(fieldElem, mode)) { continue; } if (tmpControl.IsDisabledInMode(fieldElem, mode)) { control.Enabled = false; } } if (control.Visible) { tab.AddProperty(control); } if (shape != null && tmpControl != null) { tmpControl.ChangeByConnection(shape.ConnectedTo(), shape.ConnectedFrom()); } } } else { Control control = XmlFormFactory.CreateProperty(fieldElement, mode, page); BaseProperty tmpControl = control as BaseProperty; if (control is IXmlProperty) { IXmlProperty property = (IXmlProperty)control; _fields.Add(property); } if (tmpControl != null) { if (tmpControl.IsInvisibleInMode(fieldElement, mode)) { continue; } if (tmpControl.IsDisabledInMode(fieldElement, mode)) { control.Enabled = false; } } if (control.Visible) { tab.AddProperty(control); } if (shape != null && tmpControl != null) { tmpControl.ChangeByConnection(shape.ConnectedTo(), shape.ConnectedFrom()); } } } tab.ReLayout(); } #endregion #region Shape Specific AddOns if (shape != null) { shape.Design(); } #endregion }
/// <summary> /// Event callback for the Form activation. Sets focus to the first control /// on the current tab. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void XmlForm_Activated(object sender, System.EventArgs e) { XmlTabPage ft = (XmlTabPage)tabControl.SelectedTab.Tag; ft.FocusFirst(); }
public void Design(string mode, Microsoft.Office.Interop.Visio.Page page) { if (_definition == null) throw new Exception("Cannot .Design if no definition has ben .Load()'ed."); /* * Parse definition properties. */ #region Properties XmlElement properties = (XmlElement)_definition.SelectSingleNode("/shape/properties", FormsNamespace.NamespaceManager); if (properties == null) throw new ArgumentException("Missing properties element.", "doc"); this.Text = properties.Attributes["title"].Value; #endregion IXmlShape shape = null; if (this.Tag is IXmlShape) shape = (IXmlShape)this.Tag; #region Create Tabs XmlNodeList tabNodeList = properties.SelectNodes("tab", FormsNamespace.NamespaceManager); foreach (XmlElement tabElement in tabNodeList) { /* * Iterate through tab list. Please note that since each Control is * being added with Dock.Top, they will visually appear in reverse order. * Therefore, once all have been added, we perform a ReLayout! */ XmlTabPage tab = new XmlTabPage(tabElement); if (tab.IsInvisibleInMode(mode))//Se tab invisível, não é adicionado ao form continue; if (tab.IsDisabledInMode(mode)) ((Control)tab.TabPage).Enabled = false; tabControl.TabPages.Add(tab.TabPage); XmlNodeList fieldNodeList = tabElement.SelectNodes("*"); foreach (XmlElement fieldElement in fieldNodeList) { /* * Iterate through each property. Note how we do not include in the _fields * bag controls that are not IXmlProperty! */ if (fieldElement.Name == "include") { string filename, xPath, excludedProperties = null; string[] excludedPropertiesList = null; string prefix = null; if ((fieldElement.Attributes["file"] != null)) filename = fieldElement.Attributes["file"].Value; else throw (new Exception("Element include in shape definition doesn´t have the attribute 'file'!")); if ((fieldElement.Attributes["xPath"] != null)) xPath = fieldElement.Attributes["xPath"].Value; else throw (new Exception("Element include in shape definition doesn´t have the attribute 'xPath'!")); if ((fieldElement.Attributes["prefix"] != null)) prefix = fieldElement.Attributes["prefix"].Value; if ((fieldElement.Attributes["excludedProperties"] != null)) { excludedProperties = fieldElement.Attributes["excludedProperties"].Value; excludedPropertiesList = excludedProperties.Replace(" ", "").Split(','); } XmlDocument xdoc = LoadPropertiesFromFile(filename); foreach (XmlElement fieldElem in xdoc.SelectNodes(xPath)) { if ((excludedPropertiesList != null) && checkIfExcludedNode(fieldElem.Attributes["id"].Value, excludedPropertiesList)) continue; if (prefix != null) fieldElem.Attributes["id"].Value = string.Format("{0}_{1}", prefix, fieldElem.Attributes["id"].Value); Control control = XmlFormFactory.CreateProperty(fieldElem, mode, page); BaseProperty tmpControl = control as BaseProperty; if (control is IXmlProperty) { IXmlProperty property = (IXmlProperty)control; _fields.Add(property); } if (tmpControl != null) { if (tmpControl.IsInvisibleInMode(fieldElem, mode)) continue; if (tmpControl.IsDisabledInMode(fieldElem, mode)) control.Enabled = false; } if (control.Visible) tab.AddProperty(control); if (shape != null && tmpControl != null) tmpControl.ChangeByConnection(shape.ConnectedTo(), shape.ConnectedFrom()); } } else { Control control = XmlFormFactory.CreateProperty(fieldElement, mode, page); BaseProperty tmpControl = control as BaseProperty; if (control is IXmlProperty) { IXmlProperty property = (IXmlProperty)control; _fields.Add(property); } if (tmpControl != null) { if (tmpControl.IsInvisibleInMode(fieldElement, mode)) continue; if (tmpControl.IsDisabledInMode(fieldElement, mode)) control.Enabled = false; } if (control.Visible) tab.AddProperty(control); if (shape != null && tmpControl != null) tmpControl.ChangeByConnection(shape.ConnectedTo(), shape.ConnectedFrom()); } } tab.ReLayout(); } #endregion #region Shape Specific AddOns if (shape != null) { shape.Design(); } #endregion }