Beispiel #1
0
        public override GSCore ExecuteMessage(string token, GSCoreCollection args)
        {
            if (token.Equals("showNextPage"))
            {
                if (HasNextPage())
                {
                    CurrentPage++;
                }
                PostExecuteEvent("OnCurrentPageChanged");
            }
            else if (token.Equals("showPrevPage"))
            {
                if (HasPrevPage())
                {
                    CurrentPage--;
                }
                PostExecuteEvent("OnCurrentPageChanged");
            }
            else if (token.Equals("gotoNextEdit"))
            {
                SetNextEditableField();
            }
            else if (token.Equals("acceptString"))
            {
                SMWordToken edit = GetFocusedEditField();
                if (edit != null)
                {
                    edit.AcceptString(args.getSafe(0).getStringValue());
                }
                drawWordsModified = true;
            }
            else if (token.Equals("acceptEnter"))
            {
                SetNextEditableField();
            }
            else if (token.Equals("acceptBack"))
            {
                SMWordToken edit = GetFocusedEditField();
                if (edit != null)
                {
                    edit.AcceptBack();
                }
                drawWordsModified = true;
            }

            return(base.ExecuteMessage(token, args));
        }
Beispiel #2
0
        public override bool OnDropFinished(PVDragContext dc)
        {
            bool needUpdateDrawWords = false;

            /*if (this.Cardinality == SMConnectionCardinality.One && dc.draggedItem != null)
             * {
             *  drawWords.Clear();
             *  DroppedItems.Clear();
             *  drawWordsModified = true;
             *  needUpdateDrawWords = true;
             * }
             * else if (this.Cardinality == SMConnectionCardinality.Many)
             * {
             *  needUpdateDrawWords = true;
             * }
             * else*/
            {
                if (dc.draggedItem != null)
                {
                    Point p = dc.lastPoint;
                    p.Offset(-Area.Left, -Area.Top);
                    SMWordToken lastToken = null;
                    foreach (SMWordBase wt in drawWords)
                    {
                        if (wt is SMWordToken)
                        {
                            lastToken = wt as SMWordToken;
                        }
                        if (wt.rect.Contains(p))
                        {
                            if (wt is SMWordToken)
                            {
                                SMWordToken wtk = (SMWordToken)wt;
                                if (wtk.Editable)
                                {
                                    wtk.AcceptString(dc.draggedItem.Tag);
                                    wtk.UIStateHover  = false;
                                    drawWordsModified = true;
                                    return(true);
                                }
                                else if (wtk.Cardinality == SMConnectionCardinality.One || wtk.Cardinality == SMConnectionCardinality.Many)
                                {
                                    wtk.UIStateHover = false;
                                    return(SendContentToToken(dc, wtk));
                                }
                            }
                        }
                    }
                    if (DropablesCount == 1 && lastToken != null)
                    {
                        return(SendContentToToken(dc, lastToken));
                    }
                }
            }

            if (base.OnDropFinished(dc) && needUpdateDrawWords)
            {
                SMWordBase wr = null;
                if (dc.draggedItem.Image != null)
                {
                    wr = new SMWordImage(this.Font, dc.draggedItem);
                }
                else
                {
                    wr = new SMWordText(this.Font, dc.draggedItem);
                }
                wr.Evaluation = this.HasImmediateEvaluation ? MNEvaluationType.Immediate : MNEvaluationType.Lazy;
                drawWords.Add(wr);
                drawWordsModified = true;
                return(true);
            }

            return(false);
        }