Ejemplo n.º 1
0
        // END HERZUM BUG FIX: alignment input-output TLAB-255


        /// <summary>
        /// Creates the input mapping column with combo box.
        /// TODO improve the input mapping combo box:
        /// 1. it doesn't set values until combo box loses focus within table view confirm change - Edited event is raised only then
        /// 2. there is no indication that the field can be modified - render combo box always, OR show some icon that it can be modified
        /// </summary>
        /// <returns>
        /// The input mapping column with combo box.
        /// </returns>
        /// <param name='inputStore'>
        /// Input store.
        /// </param>
        private TreeViewColumn CreateInputMappingColumnWithComboBox(NodeStore inputStore, string columntTitle)
        {
            Gtk.CellRendererCombo comboRenderer = new Gtk.CellRendererCombo();

            comboRenderer.HasEntry   = false;
            comboRenderer.Mode       = CellRendererMode.Editable;
            comboRenderer.TextColumn = 0;
            comboRenderer.Editable   = true;

            ListStore comboBoxStore = new ListStore(typeof(string));

            comboRenderer.Model = comboBoxStore;

            //when user activates combo box, refresh combobox store with available input mapping per node
            comboRenderer.EditingStarted += delegate(object o, EditingStartedArgs args)
            {
                comboBoxStore.Clear();
                IOItemNode     currentItem = (IOItemNode)inputStore.GetNode(new TreePath(args.Path));
                ExperimentNode currentNode = m_component.ExperimentNode;
                string         currentType = currentItem.Type;
                // HERZUM SPRINT 2.4: TLAB-162
                //InputMappings availableInputMappingsPerNode = new InputMappings (currentNode.Owner);
                InputMappings availableInputMappingsPerNode = new InputMappings(m_applicationContext.Application.Experiment);
                // END HERZUM SPRINT 2.4: TLAB-162
                if (currentNode != null && availableInputMappingsPerNode.ContainsMappingsForNode(currentNode))
                {
                    foreach (string incomingOutput in availableInputMappingsPerNode[currentNode].Keys)
                    {
                        if (string.Equals(currentType, availableInputMappingsPerNode [currentNode] [incomingOutput]))
                        {
                            comboBoxStore.AppendValues(Mono.Unix.Catalog.GetString(incomingOutput));
                        }
                    }
                }
            };

            //when edition has been completed set current item node with proper mapping
            comboRenderer.Edited += delegate(object o, EditedArgs args) {
                IOItemNode n = (IOItemNode)inputStore.GetNode(new TreePath(args.Path));
                n.MappedTo = args.NewText;
                RefreshIOHighlightInExperiment(n.MappedTo);
            };

            //finally create the column with above combo renderer
            var mappedToColumn = new TreeViewColumn();

            mappedToColumn.Title = columntTitle;
            mappedToColumn.PackStart(comboRenderer, true);

            //this method sets the text view to current mapping, when combo box is not active
            mappedToColumn.SetCellDataFunc(comboRenderer, delegate(TreeViewColumn tree_column, CellRenderer cell, ITreeNode node) {
                IOItemNode currentItem = (IOItemNode)node;
                comboRenderer.Text     = currentItem.MappedTo;
            });

            return(mappedToColumn);
        }
Ejemplo n.º 2
0
        private void SelectionHandleChanged(object sender, EventArgs e)
        {
            Gtk.NodeSelection selection = (Gtk.NodeSelection)sender;

            ExperimentHelper.ClearHighlightIOInExperiment(m_experimentOwner);

            //selected node maybe null if the moust moved out from the tree view, and selection change to nothing
            if (selection.SelectedNode != null)
            {
                IOItemNode item = (IOItemNode)selection.SelectedNode;
                ExperimentHelper.HighlightIOInExperiment(m_experimentOwner, item.MappedTo);
            }
        }
Ejemplo n.º 3
0
        private void SetIOInfo()
        {
            //set columns in input and output views
            Gtk.NodeStore inputStore  = new Gtk.NodeStore(typeof(IOItemNode));
            Gtk.NodeStore outputStore = new Gtk.NodeStore(typeof(IOItemNode));

            Gtk.CellRendererText textRenderer = new Gtk.CellRendererText();

            //inputs
            TreeViewColumn mappedToColumn = CreateInputMappingColumnWithComboBox(inputStore);

            this.inputView.AppendColumn("Input", textRenderer, "text", 0);
            this.inputView.AppendColumn(mappedToColumn);
            this.inputView.AppendColumn("Type", textRenderer, "text", 2);

            //outputs
            Gtk.CellRendererText editableTextRenderer = new CellRendererText();
            editableTextRenderer.Editable = true;
            editableTextRenderer.Edited  += delegate(object o, EditedArgs args) {
                IOItemNode n = (IOItemNode)outputStore.GetNode(new TreePath(args.Path));
                n.MappedTo = args.NewText;
            };

            this.outputView.AppendColumn("Output", textRenderer, "text", 0);
            this.outputView.AppendColumn("Output as", editableTextRenderer, "text", 1);
            this.outputView.AppendColumn("Type", textRenderer, "text", 2);

            //prepare input and output store
            foreach (IOItem item in m_metadata.IOSpec.Input.Values)
            {
                inputStore.AddNode(new IOItemNode(item));
            }

            foreach (IOItem item in m_metadata.IOSpec.Output.Values)
            {
                outputStore.AddNode(new IOItemNode(item));
            }

            inputView.NodeStore  = inputStore;
            outputView.NodeStore = outputStore;
        }
Ejemplo n.º 4
0
        private void SetOutputInfo(bool isEditable)
        {
            if (m_metadata.IOSpec.Output.Count > 0)
            {
                //set columns in input and output views
                Gtk.NodeStore outputStore = new Gtk.NodeStore(typeof(IOItemNode));

                Gtk.CellRendererText textRenderer = new Gtk.CellRendererText();

                Gtk.CellRendererText editableTextRenderer = new CellRendererText();
                editableTextRenderer.Editable = isEditable;
                editableTextRenderer.Edited  += delegate(object o, EditedArgs args) {
                    IOItemNode n = (IOItemNode)outputStore.GetNode(new TreePath(args.Path));
                    n.MappedTo = args.NewText;
                    RefreshIOHighlightInExperiment(n.MappedTo);
                };

                this.outputView.AppendColumn("Output", textRenderer, "text", 0);
                this.outputView.AppendColumn("Output as", editableTextRenderer, "text", 1);
                this.outputView.AppendColumn("Type", textRenderer, "text", 2);

                foreach (IOItem item in m_metadata.IOSpec.Output.Values)
                {
                    outputStore.AddNode(new IOItemNode(item));
                }

                outputView.NodeStore = outputStore;

                //disables/enables the controls
                outputView.Sensitive = isEditable;

                outputView.HoverSelection         = true;
                outputView.NodeSelection.Changed += SelectionHandleChanged;
            }
            else
            {
                outputView.Visible = false;
            }
        }
Ejemplo n.º 5
0
        // END HERZUM BUG FIX: alignment input-output TLAB-255
        private void SetOutputInfo(bool isEditable)
        {
            if (m_metadata.IOSpec.Output.Count > 0)
            {
                //set columns in input and output views
                Gtk.NodeStore        outputStore  = new Gtk.NodeStore(typeof(IOItemNode));
                Gtk.CellRendererText textRenderer = new Gtk.CellRendererText();

                Gtk.CellRendererText editableTextRenderer = new CellRendererText();
                editableTextRenderer.Editable = isEditable;
                editableTextRenderer.Edited  += delegate(object o, EditedArgs args) {
                    IOItemNode n = (IOItemNode)outputStore.GetNode(new TreePath(args.Path));
                    n.MappedTo = args.NewText;
                    RefreshIOHighlightInExperiment(n.MappedTo);
                };

                // HERZUM SPRINT 4.2: TLAB-226
                //textRenderer.CellBackground = "grey";
                // HERZUM SPRINT 5: TLAB-242
                Gdk.Color colorBack = new  Gdk.Color(245, 245, 245);
                textRenderer.CellBackgroundGdk = colorBack;
                // END HERZUM SPRINT 5: TLAB-242
                // END HERZUM SPRINT 4.2: TLAB-226

                // HERZUM BUG FIX: alignment input-output TLAB-255
                //HERZUM SPRINT 5.4 TLAB-241
                t_Output           = this.outputView.AppendColumn(Convert.ToChar(171) + " Output", textRenderer, "text", 0);
                t_Output.Resizable = true;
                //END HERZUM SPRINT 5.4 TLAB-241
                t_OutputAs             = this.outputView.AppendColumn("Output as", editableTextRenderer, "text", 1);
                t_OutputAs.Resizable   = true;
                t_OutputType           = this.outputView.AppendColumn("Type", textRenderer, "text", 2);
                t_OutputType.Resizable = true;
                // END HERZUM BUG FIX: alignment input-output TLAB-255

                int currentLengthOutput;
                int currentLengthOutputAs;
                foreach (IOItem item in m_metadata.IOSpec.Output.Values)
                {
                    outputStore.AddNode(new IOItemNode(item));
                    // HERZUM BUG FIX: alignment input-output TLAB-255
                    currentLengthOutput   = item.IOItemDefinition.Name.Length;
                    currentLengthOutputAs = item.MappedTo.Length;
                    if (currentLengthOutput > maxLengthOutput)
                    {
                        maxLengthOutput = currentLengthOutput;
                    }
                    if (currentLengthOutputAs > maxLengthOutputAs)
                    {
                        maxLengthOutputAs = currentLengthOutputAs;
                    }
                    // END HERZUM BUG FIX: alignment input-output TLAB-255
                }

                outputView.NodeStore = outputStore;

                //disables/enables the controls
                outputView.Sensitive = isEditable;

                outputView.HoverSelection         = true;
                outputView.NodeSelection.Changed += SelectionHandleChanged;
            }
            else
            {
                outputView.Visible = false;
            }
        }