/// <summary> /// Creates boxes from structure /// <see cref="T:Ferda.Modules.ModulesAskingForCreation"/> /// </summary> /// <remarks> /// You can get <see cref="T:Ferda.Modules.ModulesAskingForCreation"/> /// structure from property /// <see cref="P:Ferda.ModulesManager.IBoxModule.ModulesAskingForCreation"/> /// of <see cref="T:Ferda.ModulesManager.IBoxModule"/>. /// </remarks> /// <param name="newModule">A ModulesAskingForCreation</param> /// <seealso cref="P:Ferda.ModulesManager.IBoxModule.ModulesAskingForCreation"/> public IBoxModule[] CreateBoxesAskingForCreation(ModulesAskingForCreation info) { List<IBoxModule> result = new List<IBoxModule>(); foreach (ModuleAskingForCreation newModule in info.newModules) { Ferda.ModulesManager.BoxModuleFactoryCreator creator = (BoxModuleFactoryCreator)this.GetBoxModuleFactoryCreator( newModule.newBoxModuleIdentifier); BoxModule box = creator.CreateBoxModule() as BoxModule; if (box != null) { foreach (ModulesConnection connection in newModule.modulesConnection) { box.SetConnection(connection.socketName, this.getBoxModuleByProxy(connection.boxModuleParam)); } foreach (PropertySetting propertySetting in newModule.propertySetting) { box.IceBoxModulePrx.setProperty(propertySetting.propertyName, propertySetting.value); } result.Add(box); } } return result.ToArray(); }
/// <summary> /// Gets the box modules asking for creation. /// </summary> /// <param name="localePrefs">The localization preferences.</param> /// <param name="boxModule">The box module.</param> /// <returns> /// Array of <see cref="T:Ferda.Modules.ModuleAskingForCreation"> /// Modules Asking For Creation</see>. /// </returns> public override ModulesAskingForCreation[] GetModulesAskingForCreation(string[] localePrefs, BoxModuleI boxModule) { Dictionary<string, ModulesAskingForCreation> modulesAFC = this.getModulesAskingForCreationNonDynamic(localePrefs); List<ModulesAskingForCreation> result = new List<ModulesAskingForCreation>(); ModulesAskingForCreation moduleAFC; ModulesConnection moduleConnection; ModuleAskingForCreation singleModuleAFC; List<ModuleAskingForCreation> allColumnModulesAFC = new List<ModuleAskingForCreation>(); // I presuppose that item with key "Column" is before item with key "AllColumns" foreach (string moduleAFCName in modulesAFC.Keys) { moduleAFC = modulesAFC[moduleAFCName]; switch (moduleAFCName) { case "Column": DataMatrixFunctionsI Func = (DataMatrixFunctionsI)boxModule.FunctionsIObj; string[] columnsNames = null; try { columnsNames = Func.getColumnsNames(); } catch (Ferda.Modules.BoxRuntimeError) { } if (columnsNames != null && columnsNames.Length > 0) { moduleConnection = new ModulesConnection(); moduleConnection.socketName = "DataMatrixOrMultiColumn"; moduleConnection.boxModuleParam = boxModule.MyProxy; foreach (string columnName in columnsNames) { ModulesAskingForCreation newMAFC = new ModulesAskingForCreation(); newMAFC.label = moduleAFC.label.Replace("@Name", columnName); newMAFC.hint = moduleAFC.hint.Replace("@Name", columnName); newMAFC.help = moduleAFC.help; singleModuleAFC = new ModuleAskingForCreation(); singleModuleAFC.modulesConnection = new ModulesConnection[] { moduleConnection }; ; singleModuleAFC.newBoxModuleIdentifier = Ferda.Modules.Boxes.DataMiningCommon.Column.ColumnBoxInfo.typeIdentifier; PropertySetting propertySetting = new PropertySetting(); propertySetting.propertyName = "Name"; propertySetting.value = new Ferda.Modules.StringTI(columnName); singleModuleAFC.propertySetting = new PropertySetting[] { propertySetting }; allColumnModulesAFC.Add(singleModuleAFC); newMAFC.newModules = new ModuleAskingForCreation[] { singleModuleAFC }; result.Add(newMAFC); } } break; case "DerivedColumn": moduleConnection = new ModulesConnection(); singleModuleAFC = new ModuleAskingForCreation(); moduleConnection.socketName = "DataMatrix"; moduleConnection.boxModuleParam = boxModule.MyProxy; singleModuleAFC.modulesConnection = new ModulesConnection[] { moduleConnection }; singleModuleAFC.newBoxModuleIdentifier = Ferda.Modules.Boxes.DataMiningCommon.DerivedColumn.DerivedColumnBoxInfo.typeIdentifier; moduleAFC.newModules = new ModuleAskingForCreation[] { singleModuleAFC }; result.Add(moduleAFC); break; case "AllColumns": if (allColumnModulesAFC.Count <= 1) continue; moduleConnection = new ModulesConnection(); moduleConnection.socketName = "DataMatrixOrMultiColumn"; moduleConnection.boxModuleParam = boxModule.MyProxy; moduleAFC.newModules = allColumnModulesAFC.ToArray(); result.Add(moduleAFC); break; default: throw Ferda.Modules.Exceptions.SwitchCaseNotImplementedError(moduleAFCName); } } return result.ToArray(); }
/// <summary> /// Creates boxes from structure /// <see cref="T:Ferda.Modules.ModulesAskingForCreation"/> /// and add it to view. /// </summary> /// <remarks> /// You can get <see cref="T:Ferda.Modules.ModulesAskingForCreation"/> /// structure from property /// <see cref="P:Ferda.ModulesManager.IBoxModule.ModulesAskingForCreation"/> /// of <see cref="T:Ferda.ModulesManager.IBoxModule"/>. /// </remarks> /// <param name="info">A ModulesAskingForCreation</param> /// <returns>Created boxes</returns> /// <seealso cref="P:Ferda.ModulesManager.IBoxModule.ModulesAskingForCreation"/> public IBoxModule[] CreateBoxesAskingForCreation(ModulesAskingForCreation info) { IBoxModule[] boxes = modulesManager.CreateBoxesAskingForCreation(info); foreach (IBoxModule box in boxes) { archive.Add(box); this.Add(box); } return boxes; }