Exemplo n.º 1
0
        void OnChildRemoved(object ob, ActionTreeNodeArgs args)
        {
            OpenSubmenu = null;

            Widget           wrapper = Widget.Lookup(this);
            IDesignArea      area    = wrapper.GetDesignArea();
            IObjectSelection asel    = area.GetSelection();
            ActionMenuItem   curSel  = asel != null ? asel.DataObject as ActionMenuItem : null;
            int pos = menuItems.IndexOf(curSel);

            foreach (Gtk.Widget w in Children)
            {
                if (w is CustomMenuBarItem && ((CustomMenuBarItem)w).ActionMenuItem.Node == args.Node)
                {
                    Remove(w);
                    menuItems.Remove(((CustomMenuBarItem)w).ActionMenuItem);
                    if (menuItems.Count == 0 && !showPlaceholder)
                    {
                        AddSpacerItem();
                    }
                    break;
                }
            }
            if (pos != -1 && pos < menuItems.Count)
            {
                ((ActionMenuItem)menuItems[pos]).Select();
            }
            else if (menuItems.Count > 0)
            {
                ((ActionMenuItem)menuItems[menuItems.Count - 1]).Select();
            }
        }
        private void DeleteIssues(
            [NotNull] IQueryFilter queryFilter,
            [CanBeNull] IObjectSelection objectSelection,
            [CanBeNull] IDictionary <int, QualityCondition> qualityConditionsById)
        {
            Assert.ArgumentNotNull(queryFilter, nameof(queryFilter));

            foreach (IssueDatasetWriter issueWriter in IssueDatasets.GetIssueWriters())
            {
                // add project-specific filter logic
                AdaptFilterToContext(issueWriter, queryFilter);

                if (objectSelection == null)
                {
                    issueWriter.DeleteErrorObjects(queryFilter);
                }
                else
                {
                    Assert.NotNull(
                        qualityConditionsById,
                        "The quality conditions are required when there is an object selection");

                    var determineDeletableRow = new DeletableErrorRowFilter(issueWriter,
                                                                            objectSelection);

                    issueWriter.DeleteErrorObjects(queryFilter,
                                                   determineDeletableRow,
                                                   qualityConditionsById);
                }
            }
        }
        void OnChildRemoved(object ob, ActionTreeNodeArgs args)
        {
            Widget           wrapper = Stetic.Wrapper.Widget.Lookup(this);
            IDesignArea      area    = wrapper.GetDesignArea();
            IObjectSelection asel    = area.GetSelection();
            ActionToolItem   curSel  = asel != null ? asel.DataObject as ActionToolItem : null;
            int pos = toolItems.IndexOf(curSel);

            foreach (Gtk.Widget w in Children)
            {
                if (w is CustomToolbarItem && ((CustomToolbarItem)w).ActionToolItem.Node == args.Node)
                {
                    Remove(w);
                    toolItems.Remove(((CustomToolbarItem)w).ActionToolItem);
                    w.Destroy();
                    if (!showPlaceholder && toolItems.Count == 0)
                    {
                        AddSpacerItem();
                    }
                    break;
                }
            }

            if (pos != -1 && pos < toolItems.Count)
            {
                ((ActionToolItem)toolItems[pos]).Select();
            }
            else if (toolItems.Count > 0)
            {
                ((ActionToolItem)toolItems[toolItems.Count - 1]).Select();
            }
        }
            public DeletableErrorRowFilter([NotNull] IssueDatasetWriter issueWriter,
                                           [NotNull] IObjectSelection objectSelection)
            {
                Assert.ArgumentNotNull(issueWriter, nameof(issueWriter));
                Assert.ArgumentNotNull(objectSelection, nameof(objectSelection));

                _issueWriter     = issueWriter;
                _objectSelection = objectSelection;
            }
Exemplo n.º 5
0
        public virtual void Select()
        {
            IDesignArea area = GetDesignArea();

            if (area.IsSelected(this))
            {
                return;
            }
            IObjectSelection sel = area.SetSelection(this, node.Action != null ? node.Action.GtkAction : null);

            sel.Drag     += HandleItemDrag;
            sel.Disposed += OnSelectionDisposed;
            GrabFocus();
        }
Exemplo n.º 6
0
        protected void UpdateSelectionStatus()
        {
            IDesignArea      area = GetDesignArea();
            IObjectSelection sel  = area.GetSelection();

            sel.Disposed -= OnSelectionDisposed;
            sel.Drag     -= HandleItemDrag;

            area.ResetSelection(this);

            sel           = area.SetSelection(this, this);
            sel.Drag     += HandleItemDrag;
            sel.Disposed += OnSelectionDisposed;
        }
        /// <summary>
        /// Deletes all issues of the specified quality conditions within the
        /// <see cref="Perimeter"/>. All errors will be deleted if the Perimeter property is
        /// not set or the provided quality conditions list is null.
        /// </summary>
        /// <param name="qualityConditions">The quality conditions.</param>
        /// <param name="objectSelection">The object selection.</param>
        public void DeleteErrors(
            [CanBeNull] IEnumerable <QualityCondition> qualityConditions,
            [CanBeNull] IObjectSelection objectSelection)
        {
            IQueryFilter filter = CreateIssueDeletionFilter(_perimeter, FieldNameErrorType);

            if (qualityConditions == null)
            {
                DeleteIssuesForAllQualityConditions(filter, objectSelection);
            }
            else
            {
                DeleteIssuesForQualityConditions(filter, objectSelection, qualityConditions);
            }
        }
        private void DeleteIssuesForQualityConditions(
            [NotNull] IQueryFilter filter,
            [CanBeNull] IObjectSelection objectSelection,
            [NotNull] IEnumerable <QualityCondition> qualityConditions)
        {
            var qualityConditionsById = new Dictionary <int, QualityCondition>();

            const int maxLength = 2000;             // maximum length of IN(....) in ORACLE query

            StringBuilder idListBuilder = null;

            foreach (QualityCondition condition in qualityConditions)
            {
                string idString = condition.Id.ToString(CultureInfo.InvariantCulture);

                if (idListBuilder == null)
                {
                    idListBuilder = new StringBuilder(idString);
                }
                else
                {
                    if ((idListBuilder.Length + idString.Length + 1) > maxLength)
                    {
                        // the concatenated list gets too long, delete current batch
                        DeleteIssues(filter, idListBuilder.ToString(),
                                     qualityConditionsById,
                                     objectSelection);

                        idListBuilder = new StringBuilder(idString);
                        qualityConditionsById.Clear();
                    }
                    else
                    {
                        idListBuilder.AppendFormat(",{0}", idString);
                    }
                }

                qualityConditionsById.Add(condition.Id, condition);
            }

            if (idListBuilder != null)
            {
                // there is an open batch
                DeleteIssues(filter, idListBuilder.ToString(),
                             qualityConditionsById,
                             objectSelection);
            }
        }
Exemplo n.º 9
0
        public void StartEditing()
        {
            if (Child is Gtk.Label)
            {
                IDesignArea      d   = WidgetUtils.GetDesignArea(this);
                IObjectSelection sel = d.GetSelection(this);
                if (sel == null)
                {
                    sel = d.SetSelection(this, null);
                }

                sel.Disposed += SelectionDisposed;

                Remove(Child);
                Add(CreateEntry());
                ShowAll();
                Child.GrabFocus();
            }
        }
        protected override bool OnKeyPressEvent(Gdk.EventKey ev)
        {
            switch (ev.Key)
            {
            case Gdk.Key.Delete:
            case Gdk.Key.KP_Delete:
                IObjectSelection sel = GetSelection();
                if (sel != null && sel.DataObject != null)
                {
                    Wrapper.Widget wrapper = Wrapper.Widget.Lookup(sel.DataObject) as Wrapper.Widget;
                    if (wrapper != null)
                    {
                        wrapper.Delete();
                    }
                }
                return(true);

            default:
                return(base.OnKeyPressEvent(ev));
            }
        }
        private void DeleteIssuesForAllQualityConditions(
            [NotNull] IQueryFilter queryFilter,
            [CanBeNull] IObjectSelection objectSelection)
        {
            Assert.ArgumentNotNull(queryFilter, nameof(queryFilter));

            if (objectSelection == null)
            {
                DeleteIssues(queryFilter, null, null);
            }
            else
            {
                const bool fetchParameterValues            = true;
                IList <QualityCondition> qualityConditions =
                    _qualityConditionRepository.GetAll(fetchParameterValues);

                DeleteIssues(queryFilter,
                             objectSelection,
                             qualityConditions.ToDictionary(qcon => qcon.Id));
            }
        }
        void OnChildRemoved(object ob, ActionTreeNodeArgs args)
        {
            IDesignArea      area   = wrapper.GetDesignArea();
            IObjectSelection asel   = area.GetSelection();
            ActionMenuItem   curSel = asel != null ? asel.DataObject as ActionMenuItem : null;
            int pos = menuItems.IndexOf(curSel);

            ActionMenuItem mi = FindMenuItem(args.Node);

            if (mi != null)
            {
                // Remove the table row that contains the menu item
                Gtk.Table.TableChild tc = (Gtk.Table.TableChild)table [mi];
                uint row = tc.TopAttach;
                mi.Detach();
                menuItems.Remove(mi);
                foreach (Gtk.Widget w in table.Children)
                {
                    tc = (Gtk.Table.TableChild)table [w];
                    if (tc.TopAttach >= row)
                    {
                        tc.TopAttach--;
                    }
                    if (tc.BottomAttach > row)
                    {
                        tc.BottomAttach--;
                    }
                }
                if (pos != -1 && pos < menuItems.Count)
                {
                    ((ActionMenuItem)menuItems[pos]).Select();
                }
                else
                {
                    SelectLastItem();
                }
                GLib.Timeout.Add(50, new GLib.TimeoutHandler(RepositionSubmenu));
            }
        }
        private void DeleteIssues(
            [NotNull] IQueryFilter queryFilter,
            [NotNull] string commaSeparatedQualityConditionIds,
            [NotNull] IDictionary <int, QualityCondition> qualityConditionsById,
            [CanBeNull] IObjectSelection objectSelection)
        {
            Assert.ArgumentNotNull(queryFilter, nameof(queryFilter));
            Assert.ArgumentNotNullOrEmpty(commaSeparatedQualityConditionIds,
                                          nameof(commaSeparatedQualityConditionIds));
            Assert.ArgumentNotNull(qualityConditionsById, nameof(qualityConditionsById));

            string whereClause = string.Format("{0} IN ({1})",
                                               FieldNameQualityConditionId,
                                               commaSeparatedQualityConditionIds);

            queryFilter.WhereClause =
                StringUtils.IsNotEmpty(queryFilter.WhereClause)
                                        ? string.Format("{0} AND {1}", queryFilter.WhereClause, whereClause)
                                        : whereClause;

            DeleteIssues(queryFilter, objectSelection, qualityConditionsById);
        }