Ejemplo n.º 1
0
        private void buttonAddAdaptedOutput_Click(object sender, EventArgs e)
        {
            UIOutputItem output = null;

            if (treeViewSources.SelectedNode != null && treeViewSources.SelectedNode.Checked && treeViewSources.SelectedNode.Tag is UIOutputItem)
            {
                output = (UIOutputItem)treeViewSources.SelectedNode.Tag;

                if (listBoxAdaptedOutputs.SelectedItem is UIAdaptedOutputItem)
                {
                    UIAdaptedOutputItem adaptedOutput = (UIAdaptedOutputItem)listBoxAdaptedOutputs.SelectedItem;

                    if (adaptedOutput.Adaptee == output)
                    {
                        if (fastLookUpOutputs.ContainsKey(output))
                        {
                            TreeNode parent = fastLookUpOutputs[output];
                            TreeNode child  = new TreeNode(adaptedOutput.Caption);
                            child.Tag              = adaptedOutput;
                            child.ImageKey         = "RESOURCE.BMP";
                            child.SelectedImageKey = "RESOURCE.BMP";
                            child.Checked          = true;
                            parent.Nodes.Add(child);

                            fastLookUpOutputs.Add(adaptedOutput, child);

                            parent.ExpandAll();
                            UpdateCurrentLink();
                        }
                    }
                    else
                    {
                        SetErrorText("Selected adaptor is not valid for selected output");
                    }
                }
            }
        }
Ejemplo n.º 2
0
        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";
        }