private void OnFactoryDetails(object sender, EventArgs e) { UIAdaptedFactory factory = _factories[cbFactories.SelectedIndex]; string s = string.Format("Type: {0}\r\nAssembly: {1}", factory.Type.ToString(), factory.Assembly.FullName ); MessageBox.Show(s, "Selected factory details", MessageBoxButtons.OK, MessageBoxIcon.Information); }
bool AddFactory(UIAdaptedFactory iFactory) { foreach (UIAdaptedFactory factory in _factories) { if (factory.Factory.GetType() == iFactory.GetType()) { return(false); } } _factories.Add(iFactory); return(true); }
private void AddFactories(FileInfo assemblyFileInfo) { if (!assemblyFileInfo.Exists) { throw new Exception( "File not found: " + assemblyFileInfo.FullName); } Assembly assembly = Assembly.LoadFile(assemblyFileInfo.FullName); List <Type> factoryTypes = new List <Type>(); foreach (Type type in assembly.GetExportedTypes()) { // need a parameterless constructor if (type.GetConstructor(Type.EmptyTypes) == null) { continue; } foreach (Type inter in type.GetInterfaces()) { if (inter == typeof(IAdaptedOutputFactory)) { factoryTypes.Add(type); break; } } } if (factoryTypes.Count == 0) { MessageBox.Show("No types derived from IAdaptedOutputFactory with parameterless constructors found", "Add Factories", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } UIAdaptedFactory factory; foreach (Type type in factoryTypes) { factory = new UIAdaptedFactory(); factory.InitialiseAs3rdParty(assemblyFileInfo, type.ToString()); AddFactory(factory); } UpdateUIFactories(); }
public FactoriesDialog(List <UIModel> models, UIOutputItem itemOut, UIInputItem itemIn) { _itemOut = itemOut; _itemIn = itemIn; UIAdaptedFactory factory; string firstSourceFactory = null; foreach (UIModel model in models) { foreach (IAdaptedOutputFactory iFactory in model.LinkableComponent.AdaptedOutputFactories) { factory = new UIAdaptedFactory(); if (_itemOut.Component == model.LinkableComponent) { factory.InitialiseAsNative(iFactory.Id, model.LinkableComponent); if (firstSourceFactory == null) { firstSourceFactory = factory.ToString(); } } else { factory.InitialiseAs3rdParty(iFactory.GetType(), model.LinkableComponent); } AddFactory(factory); } } InitializeComponent(); groupBox2.Text = string.Format( "Factory sources that adapt \"{0}\" -> \"{1}\"", itemOut.Caption, itemIn.Caption); UpdateUIFactories(); if (firstSourceFactory != null) { cbFactories.SelectedIndex = cbFactories.FindStringExact(firstSourceFactory); } UpdateControlEnabling(); }
void UpdateUIAdapters() { clbAdapters.Items.Clear(); if (cbFactories.SelectedItem == null) { return; } UIAdaptedFactory factory = (UIAdaptedFactory)cbFactories.SelectedItem; foreach (IIdentifiable id in factory.GetAvailableAdaptedOutputIds(_itemOut, _itemIn)) { clbAdapters.Items.Add( factory.NewAdaptedUIOutputItem(id.Id, _itemOut, _itemIn)); } clbAdapters.Invalidate(); }
void SetValidAdatedOutputs(TreeNode outputSender = null) { UIInputItem input = null; UIOutputItem output = null; if (outputSender != null && outputSender.Tag is UIOutputItem) { output = outputSender.Tag as UIOutputItem; } else { SetErrorText("No output item has been selected"); } List <UIInputItem> checkedInputs = GetDownStreamCheckedItems <UIInputItem>(treeViewTargets.Nodes); if (checkedInputs.Count != 1) { SetErrorText("More than one input item has been selected"); } else { input = checkedInputs[0]; } if (input == null) { listBoxAdaptedOutputs.DataSource = null; return; } if (output == null) { listBoxAdaptedOutputs.DataSource = null; return; } List <UIAdaptedOutputItem> ids = new List <UIAdaptedOutputItem>(); foreach (UIAdaptedFactory factory in externalFactories) { IIdentifiable[] idf = factory.GetAvailableAdaptedOutputIds(output, input); foreach (IIdentifiable f in idf) { ITimeSpaceAdaptedOutput adpout = (ITimeSpaceAdaptedOutput)factory.CreateAdaptedOutput(f, output, input); UIAdaptedOutputItem uiadpout = new UIAdaptedOutputItem(factory, f, adpout, output); ids.Add(uiadpout); } } foreach (IAdaptedOutputFactory factory in connection.SourceModel.LinkableComponent.AdaptedOutputFactories) { UIAdaptedFactory fac = new UIAdaptedFactory(); fac.InitialiseAsNative(factory.Id, connection.SourceModel.LinkableComponent); IIdentifiable[] idf = factory.GetAvailableAdaptedOutputIds(output, input); foreach (IIdentifiable f in idf) { UIAdaptedFactory tempFac = new UIAdaptedFactory(); tempFac.InitialiseAsNative(factory.Id, connection.SourceModel.LinkableComponent); ITimeSpaceAdaptedOutput adpout = (ITimeSpaceAdaptedOutput)factory.CreateAdaptedOutput(f, output, input); UIAdaptedOutputItem uiadpout = new UIAdaptedOutputItem(tempFac, f, adpout, output); ids.Add(uiadpout); } } foreach (TreeNode node in outputSender.Nodes) { if (node.Tag != null && node.Tag is UIAdaptedOutputItem) { UIAdaptedOutputItem item = (UIAdaptedOutputItem)node.Tag; for (int i = 0; i < ids.Count; i++) { if (item.Id == ids[i].Id) { ids.RemoveAt(i); break; } } } } listBoxAdaptedOutputs.DataSource = ids; listBoxAdaptedOutputs.DisplayMember = "Caption"; }