using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using WebWindowComplex.Json; using static WebWindowComplex.Json.WindowConst; namespace WebWindowComplex.Models { public class FrameDimension { #region Public Constructors public FrameDimension(Frame ParentFrame, int nIndex, string sName, double dValue, bool bIsLen) { m_ParentFrame = ParentFrame; m_nIndex = nIndex; m_sName = sName; m_dValue = dValue; m_bIsLen = bIsLen; } #endregion Public Constructors #region Public Properties public double dValue { get { return m_dValue; } set { m_dValue = value; if (value > MaxDim) { m_dValue = MaxDim; } else if (value < MinDim && !m_sName.Equals("Radius")) { m_dValue = MinDim; } //if(ParentFrame.AreaList.Count > 0) // SearchAreaList(ParentFrame); m_ParentFrame.ParentWindow.OnUpdatePreview(m_ParentFrame.ParentWindow.sSerialized()); } } public int nIndex { get { return m_nIndex; } } public Frame ParentFrame { get { return m_ParentFrame; } } public string sName { get { return m_sName; } } #endregion Public Properties #region Internal Methods /// /// Cerca nell'albero gli oggetti Sash e Split per associare la larghezza /// /// //protected void SearchAreaList(Area node) //{ // if (node != null) // { // if(node.AreaType.Equals(AreaTypes.SASH)) // calculateWidth((Sash)node); // else if(node.AreaType.Equals(AreaTypes.SPLIT)) // calculateWidth((Split)node); // foreach (var item in node.AreaList) // { // SearchAreaList(item); // } // } //} /// /// Ricalcolo larghezza Sash e SPlit /// /// //protected void calculateWidth(Area area) //{ // if (area is Sash) // { // Sash sash = (Sash)area; // if (area.ParentArea is Frame) // { // Frame frame = (Frame)area.ParentArea; // sash.Width = (frame.DimensionList.Where(x => x.sName == "Width").FirstOrDefault())!.dValue; // } // else if (sash.ParentArea.ParentArea is Split) // { // Split split = (Split)sash.ParentArea.ParentArea; // if (split.SplitVertList.Count > 0) // { // int indexSplit = 0; // for (int i = 0; i < split.AreaList.Count; i++) // { // if (split.AreaList.ElementAt(i).AreaList.First().Equals(sash)) // indexSplit = i; // } // switch (split.SplitVertList.ElementAt(indexSplit).MeasureType) // { // case MeasureTypes.ABSOLUT: // { // sash.Width = split.SplitVertList.ElementAt(indexSplit).dDimension; // break; // } // case MeasureTypes.PROPORTIONAL: // { // /// TO DO!!!!! // break; // } // case MeasureTypes.PERCENTAGE: // { // sash.Width = split.SplitVertList.ElementAt(indexSplit).dDimension / 100 * split.Width; // break; // } // } // } // else // { // Frame frame = (Frame)sash.ParentWindow.AreaList[0]; // sash.Width = (frame.DimensionList.Where(x => x.sName == "Width").FirstOrDefault())!.dValue; // } // } // } // else if (area is Split) // { // Split split = (Split)area; // if (area.ParentArea is Frame) // { // Frame frame = (Frame)area.ParentArea; // split.Width = (frame.DimensionList.Where(x => x.sName == "Width").FirstOrDefault())!.dValue; // } // else if (split.ParentArea.ParentArea is Sash) // { // Sash sash = (Sash)split.ParentArea.ParentArea; // int indexSash = 0; // for (int i = 0; i < sash.AreaList.Count; i++) // { // if (sash.AreaList.ElementAt(i).AreaList.First().Equals(split)) // indexSash = i; // } // switch (sash.SashList.ElementAt(indexSash).MeasureType) // { // case MeasureTypes.ABSOLUT: // { // split.Width = sash.SashList.ElementAt(indexSash).dDimension; // break; // } // case MeasureTypes.PROPORTIONAL: // { // /// TO DO!!!!! // break; // } // case MeasureTypes.PERCENTAGE: // { // split.Width = sash.SashList.ElementAt(indexSash).dDimension / 100 * sash.Width; // break; // } // } // } // } //} internal JsonFrameDimension Serialize() { JsonFrameDimension JsonFrameDimension = new JsonFrameDimension(m_nIndex, m_sName, m_dValue); return JsonFrameDimension; } #endregion Internal Methods #region Protected Fields protected Frame m_ParentFrame; #endregion Protected Fields #region Private Fields private bool m_bIsLen = false; private double m_dValue; private int m_nIndex; private string m_sName; // valore massimo della dimensione del frame private int MaxDim = 4000; // valore minimo della dimensione del frame private int MinDim = 600; #endregion Private Fields } }