/// <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();
 }
Ejemplo n.º 3
0
 /// <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;
 }