/// <summary>
        /// Creats a group object
        /// </summary>
        /// <returns>The Shape observer for the newly created group or <c>null</c>.</returns>
        private OoShapeObserver createGroup()
        {
            OoShapeObserver group = null;

            OoAccessibleDocWnd  draw = null;
            OoDrawPagesObserver doc  = null;
            OoDrawPageObserver  page = null;

            if (IsShapeSelected && LastSelectedShape != null)
            {
                page = LastSelectedShape.Page;
                doc  = page.PagesObserver;
                draw = doc.DocWnd;
            }
            else
            {
                // TODO: how to get those things
            }

            if (doc != null && draw != null && draw.DrawPageSupplier != null)
            {
                Logger.Instance.Log(LogPriority.DEBUG, this, "[NOTICE]\t[DRAWING]\t[CREATE]\t" + "build group shape");
                var grpShape = OoDrawUtils.CreateGroupShape_anonymous(draw.DrawPageSupplier);
                OoUtils.SetStringProperty(grpShape, "Name", LL.GetTrans("tangram.oomanipulation.shape.group"));
                if (page != null && page.DrawPage_anonymouse != null)
                {
                    var pageObj = page.DrawPage_anonymouse;
                    OoDrawUtils.AddShapeToDrawPageUndoable(grpShape, pageObj, draw.DrawPageSupplier);
                    group = doc.RegisterNewShape(grpShape);
                }
            }

            return(group);
        }
        /// <summary>
        /// Groups the current selected obejct into a group
        /// </summary>
        /// <returns><c>true</c> if the shape was added to a group successfully; otherwise, <c>false</c>.</returns>
        private bool grouping()
        {
            if (IsShapeSelected && LastSelectedShape != null)
            {
                OoAccessibleDocWnd  draw = null;
                OoDrawPagesObserver doc  = null;
                OoDrawPageObserver  page = null;
                page = LastSelectedShape.Page;
                if (page != null)
                {
                    doc = page.PagesObserver;
                    if (doc != null)
                    {
                        draw = doc.DocWnd;
                        if (draw != null && draw.DrawPageSupplier != null)
                        {
                            var undoManager = draw.DrawPageSupplier;

                            if (_group == null) // start grouping
                            {
                                _group = createGroup();
                            }

                            if (_group != null && _group.IsGroup)
                            {
                                // set Title bar

                                // size & position
                                var size = LastSelectedShape.Size;
                                var pos  = LastSelectedShape.Position;

                                // TODO: check if this is a group
                                if (OoDrawUtils.AddShapeToGroupUndoable(_group.DomShape, LastSelectedShape.DomShape, undoManager, "Add shape to group"))
                                {
                                    LastSelectedShape.Size     = size;
                                    LastSelectedShape.Position = pos;

                                    var b = _group.Bounds;
                                    _group.Position = b.Location;

                                    play(LL.GetTrans("tangram.oomanipulation.group.added", OoElementSpeaker.GetElementAudioText(LastSelectedShape)), false);

                                    LastSelectedShape = _group;
                                    // sayLastSelectedShape(false);
                                    return(true);
                                }
                                return(false);
                            }
                        }
                    }
                }
            }
            return(false);
        }