Exemple #1
0
        /*
         * Copy/paste in one step. Will not set the copied element for later paste.
         */
        private void CloneItem(object sender, EventArgs e)
        {
            FieldInstanceNode newNode = CreateCopyNode();

            if (newNode != null)
            {
                InsertTreeItem(newNode);
            }
        }
Exemple #2
0
        /*
         * Set the name field of the edited label's FieldInstance.
         */
        void LabelEdited(object o, NodeLabelEditEventArgs args)
        {
            FieldInstanceNode instanceNode = args.Node as FieldInstanceNode;

            if (instanceNode != null)
            {
                instanceNode.Fields[instanceNode.NameIndex].Value = args.Label;
                dataGridView.Refresh();
                DataChanged = true;
            }
        }
Exemple #3
0
        /*
         * Apply value edited in data grid view to appropriate FieldInstance.
         */
        void CellEdited(object o, DataGridViewCellEventArgs args)
        {
            FieldInstanceNode fieldNode = treeView.SelectedNode as FieldInstanceNode;

            if (fieldNode != null && args.ColumnIndex == 1)
            {
                DataChanged = true;

                // update node label
                if (args.RowIndex == fieldNode.NameIndex)
                {
                    fieldNode.Text = fieldNode.Fields[args.RowIndex].Value;
                }
            }
        }
Exemple #4
0
        /*
         * Remove the currently selected item from the tree.
         */
        void DeleteEntry(object unused1 = null, EventArgs unused2 = null)
        {
            TreeNodeCollection removeFrom = EditedNodes;
            FieldInstanceNode  toRemove   = treeView.SelectedNode as FieldInstanceNode;

            if (removeFrom != null && toRemove != null)
            {
                if (EditedFieldList != null)
                {
                    EditedFieldList.Remove(toRemove.Fields);
                }
                removeFrom.Remove(toRemove);
                DataChanged = true;
            }
        }
Exemple #5
0
        /*
         * Insert the given item into the currently selected node.
         * This can only be done for list nodes (new entry in the list)
         * or root nodes (new entry in the model).
         * TODO: check the inserted types when inserting into a list.
         */
        private void InsertTreeItem(FieldInstanceNode newNode)
        {
            TreeNodeCollection addTo = EditedNodes;

            if (newNode != null && addTo != null)
            {
                List <List <FieldInstance> > parentList = EditedFieldList;
                addTo.Add(newNode);
                if (parentList != null)
                {
                    parentList.Add(newNode.Fields);
                }
                newNode.EnsureVisible();
                treeView.SelectedNode = newNode;
                DataChanged           = true;
            }
        }
Exemple #6
0
        /*
         * Create a copy of the currently selected node.
         * Will copy the values from the contained field instances so we don't
         * get into referencing problems.
         */
        private FieldInstanceNode CreateCopyNode()
        {
            FieldInstanceNode    newNode = null;
            List <FieldInstance> toClone = treeView.SelectedNode.Tag as List <FieldInstance>;

            if (toClone != null)
            {
                ListTypeNode listNode  = treeView.SelectedNode.Parent as ListTypeNode;
                int          nameIndex = listNode != null
                    ? (listNode.Field.Info as ListType).NameAt
                    : -1;
                List <FieldInstance> fields = new List <FieldInstance>();
                toClone.ForEach(f => {
                    fields.Add(f.CreateCopy());
                });
                newNode = new FieldInstanceNode(fields, nameIndex);
            }
            return(newNode);
        }
Exemple #7
0
        /*
         * Upon tree node selection, fill the grid view with fields of selected element.
         * Also, enable edit menu items depending on selection.
         */
        void NodeSelected(object o, TreeViewEventArgs args)
        {
            dataGridView.CancelEdit();
            FieldInstanceNode node = treeView.SelectedNode as FieldInstanceNode;

            if (node != null)
            {
                List <FieldInstance> dataFields = node.SimpleFields;
                dataGridView.DataSource = new BindingList <FieldInstance>(dataFields);
            }
            else
            {
                dataGridView.DataSource = new List <FieldInstance>();
            }

            // enable menu items
            cloneToolStripMenuItem.Enabled  = CanEditElements;
            copyToolStripMenuItem.Enabled   = CanEditElements;
            deleteToolStripMenuItem.Enabled = CanEditElements;
            pasteToolStripMenuItem.Enabled  = CopiedNode != null && CanEditElements;
            treeView.LabelEdit = args.Node is FieldInstanceNode;
        }
Exemple #8
0
 /*
  * Copy the currently selected tree item (for later paste).
  */
 private void CopyTreeItem(object unused1 = null, EventArgs unused2 = null)
 {
     CopiedNode = treeView.SelectedNode as FieldInstanceNode;
 }