//============================================================ // <T>删除一个组件。</T> // // @param component 组件 //============================================================ public virtual void Remove(FRcComponent component) { if (_components != null) { _components.Remove(component); } }
//============================================================ // <T>测试子组件是否需要序列化。</T> // // @param component 子组件 //============================================================ public virtual bool TestSerializeComponent(FRcComponent component) { if (!component.OptionValid) { return(false); } return(true); }
//============================================================ // <T>将来源组件插入到目标组件之后。</T> // // @param sourceComponent 组件 // @param targetComponent 组件 //============================================================ public virtual void InsertAfter(FRcComponent sourceComponent, FRcComponent targetComponent) { if (sourceComponent != null) { sourceComponent.Parent = this; } Components.InsertAfter(sourceComponent, targetComponent); }
//============================================================ // <T>在父对象中删除自己。</T> //============================================================ public void RemoveFromParent() { FRcComponent parent = _parent as FRcComponent; if (parent != null) { parent.Remove(this); } }
//============================================================ // <T>测试子组件是否需要序列化。</T> // // @param component 子组件 //============================================================ public override bool TestSerializeComponent(FRcComponent component) { if (!component.OptionValid) { return(false); } if (component is FRcScrollItem) { return(false); } return(true); }
//============================================================ // <T>在父对象中激活自己。</T> // // @param component 组件 //============================================================ protected void ActiveFromParent(FRcComponent component) { if (component != null) { FRcComponent parent = component.Parent as FRcComponent; if (parent != null) { parent.ActiveChildren(component); ActiveFromParent(parent); } } }
//============================================================ // <T>从输入流中反序列化内容。</T> // // @param input 输入流 //============================================================ public override void Unserialize(IInput input) { base.Unserialize(input); // 创建所有子节点 int count = input.ReadInt16(); for (int n = 0; n < count; n++) { string typeName = input.ReadString(); FRcComponent component = _console.CreateComponent(typeName); component.Unserialize(input); } }
//============================================================ // <T>序列化内容到输出流。</T> // // @param output 输出流 //============================================================ public override void OnSerialize(IOutput output) { base.OnSerialize(output); // 序列化属性 output.WriteUint8((byte)_spreadCd); output.WriteUint8((byte)_horizontalCount); output.WriteUint8((byte)_horizontalSpace); output.WriteUint8((byte)_verticalCount); output.WriteUint8((byte)_verticalSpace); output.WriteUint8((byte)_initialCount); // 获得项目数量 int itemCount = 0; int total = ComponmentCount; for (int n = 0; n < total; n++) { FRcComponent component = _components[n]; if (!component.OptionValid) { continue; } if (component is FRcScrollItem) { itemCount++; } } // 写入模版集合 output.WriteInt16((short)itemCount); for (int n = 0; n < total; n++) { FRcComponent component = _components[n]; if (!component.OptionValid) { continue; } if (component is FRcScrollItem) { FByteStream stream = new FByteStream(); component.Serialize(stream); output.WriteString(component.Name); //output.WriteInt16((short)REnumUiComponent.Parse(_typeName)); output.WriteString(component.ClassName); output.WriteInt32(stream.Length); output.WriteBytes(stream.Memory, 0, stream.Length); } } }
//============================================================ // <T>加载配置信息。</T> // // @param xconfig 配置节点 //============================================================ public override void LoadConfig(FXmlNode xconfig) { base.LoadConfig(xconfig); if (xconfig.HasNode()) { // 创建所有子节点 foreach (FXmlNode xnode in xconfig.Nodes) { string nodeName = xnode.Name; FRcComponent component = _console.CreateComponent(nodeName); if (component != null) { // 增加为子节点 component.Parent = this; Push(component); // 加载配置信息 component.LoadConfig(xnode); } } } }
//============================================================ // <T>增加一个子组件。</T> // // @param componment 子组件 //============================================================ public virtual void Push(FRcComponent component) { component.Parent = this; Components.Push(component); }
//============================================================ // <T>测试是否可以放入父控件内。</T> // // @param parent 父组件 // @return 是否可以放入 //============================================================ public virtual bool TestParent(FRcComponent parent) { return(true); }
//============================================================ // <T>激活子节点处理。</T> // // @param component 组件 //============================================================ public virtual void ActiveChildren(FRcComponent component) { }