private void m_arbre_AfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e) { if (e.Node.Parent == null || !(e.Node.Parent.Tag is CInfoChampDynamique)) { m_lblTable.Text = m_structurePrincipale.NomConvivial; } else { m_lblTable.Text = ((CInfoChampDynamique)e.Node.Parent.Tag).NomPropriete; } if (e.Node != null && e.Node.Tag is CInfoChampDynamique) { m_champSel = e.Node.Tag as CInfoChampDynamique; TreeNode node = e.Node.Parent; while (node != null) { CInfoChampDynamique champParent = node.Tag as CInfoChampDynamique; if (champParent != null) { m_champSel.InsereParent(champParent); } node = node.Parent; } } }
public CResultAErreur Serialize(C2iSerializer serializer) { int nVersion = GetNumVersion(); CResultAErreur result = serializer.TraiteVersion(ref nVersion); if (!result) { return(result); } serializer.TraiteInt(ref m_nWidth); serializer.TraiteString(ref m_strTitre); if (nVersion < 1) { CDefinitionProprieteDynamique def = null; result = serializer.TraiteObject <CDefinitionProprieteDynamique>(ref def); if (serializer.Mode == ModeSerialisation.Lecture) { m_infoChampDynamique = new CInfoChampDynamique( def.Nom, def.TypeDonnee.TypeDotNetNatif, def.NomPropriete, "", null); } } else { serializer.TraiteObject <CInfoChampDynamique>(ref m_infoChampDynamique); } return(result); }
private void m_btnSelectChampDynamique_Click(object sender, EventArgs e) { CInfoStructureDynamique infoStructure = CInfoStructureDynamique.GetStructure(m_typeObjetEdite, 1); CInfoChampDynamique champSel = CFormSelectChampParentPourStructure.SelectPropriete(infoStructure); if (champSel != null) { m_colonneAffichee.InfoChampDynamique = champSel; m_labelChamp.Text = champSel == null ? "" : champSel.NomChamp; } /*Rectangle rect = m_panelComboChamp.RectangleToScreen(new Rectangle(0, m_panelComboChamp.Height, m_panelComboChamp.Width, 230)); * bool bCancel = false; * CDefinitionProprieteDynamique champ = CFormSelectChampPopup.SelectDefinitionChamp( * rect, * m_typeObjetEdite, * new CFournisseurProprietesForFiltreDynamique(), * ref bCancel, * null, * null); * if (!bCancel) * { * m_colonneAffichee.InfoChampDynamique = champ; * m_labelChamp.Text = champ == null ? "[NOT DEFINED]" : champ.Nom; * }*/ }
//----------------------------------------------------------------------- private void GetSelectedFields(ArrayList lst, TreeNodeCollection nodes, CInfoChampDynamique defParent) { foreach (TreeNode node in nodes) { CInfoChampDynamique defProp = null; if (node.Tag is CInfoChampDynamique) { defProp = (CInfoChampDynamique)node.Tag; defProp = defProp.Clone(); if (defParent != null) { defProp.InsereParent(defParent); } } else if (node.Tag == null) //C'est un folder { defProp = defParent; } if (node.Checked && defProp != null && m_tableSelectionnes[defProp.NomPropriete] == null) { lst.Add(defProp); } else if (!node.Checked && defProp != null) { //Elle a été décochée !!! m_listeDecoches.Add(defProp); } GetSelectedFields(lst, node.Nodes, defProp); } }
private bool CanCheck(CInfoChampDynamique champ) { if (champ.StructureValeur != null) { return(false); } return(true); }
private bool ShouldHasFils(CInfoChampDynamique champ) { if (champ.StructureValeur == null) { return(false); } return(true); }
//----------------------------------------------------------------------- private void FillTree(CInfoStructureDynamique structure, TreeNodeCollection nodes, CInfoChampDynamique defParente) { ArrayList lst = new ArrayList( ); lst.AddRange(structure.Champs); lst.Sort(new DefSorter()); //Trouve les catégories Hashtable tableCategories = new Hashtable(); foreach (CInfoChampDynamique info in lst) { if (info.Rubrique != "" && ShouldHadChamp(info)) { if (tableCategories[info.Rubrique] == null) { TreeNode node = new TreeNode(info.Rubrique); node.ImageIndex = 0; node.SelectedImageIndex = 0; nodes.Add(node); tableCategories[info.Rubrique] = node; } } } foreach (CInfoChampDynamique info in lst) { if (ShouldHadChamp(info)) { TreeNode node = new TreeNode(info.NomChamp); node.ImageIndex = info.StructureValeur != null?1:2; node.SelectedImageIndex = node.ImageIndex; TreeNodeCollection nodesParents = nodes; if (info.Rubrique != "") { TreeNode nodeParent = (TreeNode)tableCategories[info.Rubrique]; if (nodeParent != null) { nodesParents = nodeParent.Nodes; } } node.Tag = info; nodesParents.Add(node); if (info.StructureValeur != null && ShouldHasFils(info)) { node.Nodes.Add("*"); } CInfoChampDynamique newInfo = info.Clone(); if (defParente != null) { newInfo.InsereParent(defParente); } if (m_tableSelectionnes[newInfo.NomPropriete] != null) { node.Checked = true; } } } }
/// <summary> /// Surchages de CInfoStructureDynamique /// </summary> /// <param name="tp"></param> /// <param name="nDepth"></param> /// <returns></returns> //----------------------------------------------------------------- public static CInfoStructureDynamique GetStructure(Type tp, int nDepth) { if (nDepth < 0) { return(null); } CFournisseurPropDynStd fournisseur = new CFournisseurPropDynStd(false); ArrayList lst = new ArrayList(); foreach (CDefinitionProprieteDynamique def in fournisseur.GetDefinitionsChamps(tp, 0, null)) { if (!def.TypeDonnee.IsArrayOfTypeNatif) { CInfoChampDynamique info = null; CInfoStructureDynamique infoFils = GetStructure(def.TypeDonnee.TypeDotNetNatif, nDepth - 1); if (infoFils != null && infoFils.Champs.Count == 0) { infoFils = null; } //Champs simples, interpretés par CInterpreteurTextePropriete if (def.GetType() == typeof(CDefinitionProprieteDynamique)) { info = new CInfoChampDynamique( def.Nom, def.TypeDonnee.TypeDotNetNatif, def.NomPropriete, def.Rubrique, infoFils); } else { CStringSerializer serializer = new CStringSerializer(ModeSerialisation.Ecriture); I2iSerializable obj = (I2iSerializable)def; serializer.TraiteObject(ref obj); info = new CInfoChampDynamique( def.Nom, def.TypeDonnee.TypeDotNetNatif, "~#" + serializer.String + "~@#@", def.Rubrique, infoFils); } lst.Add(info); } } CInfoStructureDynamique infoStructure = new CInfoStructureDynamique(); infoStructure.NomConvivial = DynamicClassAttribute.GetNomConvivial(tp); infoStructure.Champs = lst; return(infoStructure); }
//----------------------------------------------------------------------- public static CInfoChampDynamique SelectPropriete(CInfoStructureDynamique structure) { CFormSelectChampParentPourStructure form = new CFormSelectChampParentPourStructure(); form.m_tableSelectionnes.Clear(); form.m_structurePrincipale = structure; form.m_lblTable.Text = form.m_structurePrincipale.NomConvivial; form.FillTree(structure, form.m_arbre.Nodes, null); form.m_arbre.CheckBoxes = false; form.m_bMonoSelection = true; CInfoChampDynamique infoSel = null; if (form.ShowDialog() == DialogResult.OK) { infoSel = form.m_champSel; } form.Dispose(); return(infoSel); }
//----------------------------------------------------------------------- private void m_arbre_BeforeExpand(object sender, System.Windows.Forms.TreeViewCancelEventArgs e) { if (e.Node.Nodes.Count == 1 && e.Node.Nodes[0].Text == "*") { CInfoChampDynamique def = (CInfoChampDynamique)e.Node.Tag; if (def == null) { return; } e.Node.Nodes.Clear(); CInfoChampDynamique infoParente = null; if (e.Node.Tag is CInfoChampDynamique) { infoParente = (CInfoChampDynamique)e.Node.Tag; } CInfoStructureDynamique newStruct = CInfoStructureDynamique.GetStructure(def.TypeDonnee, 1); FillTree(newStruct, e.Node.Nodes, infoParente); } }
//----------------------------------------------------------------------- //Retourne vrai si le champ doit apparaitre dans l'arbre private bool ShouldHadChamp(CInfoChampDynamique champ) { return(true); }