Example #1
0
 public static string getReorderTypeText(ReorderType rd)
 {
     if (rd == ReorderType.Fixed)
     {
         return("Fixed Reorder Qty");
     }
     else if (rd == ReorderType.MinMax)
     {
         return("Minimum & Maximum Qty");
     }
     else
     {
         return("By Order");
     }
 }
Example #2
0
        private void MenuItemCallback(ReorderType type)
        {
            try
            {
                ////////////////////////
                /// Reorder parser productions.
                ////////////////////////

                if (!(((IServiceProvider)ServiceProvider).GetService(typeof(VsTextManagerClass)) is IVsTextManager manager))
                {
                    return;
                }
                manager.GetActiveView(1, null, out IVsTextView view);
                if (view == null)
                {
                    return;
                }
                view.GetCaretPos(out int l, out int c);
                view.GetBuffer(out IVsTextLines buf);
                if (buf == null)
                {
                    return;
                }
                ITextBuffer buffer = AntlrLanguageClient.AdaptersFactory.GetWpfTextView(view)?.TextBuffer;
                string      ffn    = buffer.GetFFN();
                if (ffn == null)
                {
                    return;
                }
                Workspaces.Document document = Workspaces.Workspace.Instance.FindDocument(ffn);
                if (document == null)
                {
                    return;
                }
                AntlrLanguageClient.CMReorderParserRules(ffn, type);
            }
            catch (Exception exception)
            {
                Logger.Log.Notify(exception.StackTrace);
            }
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="ReorderEdgeCommand"/> class.
        /// </summary>
        /// <param name="edgeModel">The edge to reorder.</param>
        /// <param name="type">The reorder operation to apply.</param>
        public ReorderEdgeCommand(IEdgeModel edgeModel, ReorderType type) : this()
        {
            EdgeModel = edgeModel;
            Type      = type;

            switch (Type)
            {
            case ReorderType.MoveFirst:
                UndoString = "Move Edge First";
                break;

            case ReorderType.MoveUp:
                UndoString = "Move Edge Up";
                break;

            case ReorderType.MoveDown:
                UndoString = "Move Edge Down";
                break;

            case ReorderType.MoveLast:
                UndoString = "Move Edge Last";
                break;
            }
        }
Example #4
0
        private void MenuItemCallback(object sender, EventArgs e, ReorderType type)
        {
            try
            {
                ////////////////////////
                /// Reorder parser productions.
                ////////////////////////

                IVsTextManager manager = ((IServiceProvider)ServiceProvider).GetService(typeof(VsTextManagerClass)) as IVsTextManager;
                if (manager == null)
                {
                    return;
                }

                manager.GetActiveView(1, null, out IVsTextView view);
                if (view == null)
                {
                    return;
                }

                view.GetCaretPos(out int l, out int c);
                view.GetBuffer(out IVsTextLines buf);
                if (buf == null)
                {
                    return;
                }

                IWpfTextView xxx    = AntlrLanguageClient.AdaptersFactory.GetWpfTextView(view);
                ITextBuffer  buffer = xxx.TextBuffer;
                string       ffn    = buffer.GetFFN().Result;
                if (ffn == null)
                {
                    return;
                }

                Workspaces.Document document = Workspaces.Workspace.Instance.FindDocument(ffn);
                if (document == null)
                {
                    return;
                }

                int pos = LanguageServer.Module.GetIndex(l, c, document);
                AntlrLanguageClient alc = AntlrLanguageClient.Instance;
                if (alc == null)
                {
                    return;
                }
                Dictionary <string, string> changes = alc.CMReorderParserRulesServer(ffn, pos, type);
                foreach (var pair in changes)
                {
                    string fn = pair.Key;
                    Workspaces.Document dd = Workspaces.Workspace.Instance.FindDocument(fn);
                    if (dd == null)
                    {
                        return;
                    }
                    string new_code = pair.Value;
                    var    edit     = buffer.CreateEdit();
                    var    diff     = new LanguageServer.diff_match_patch();
                    var    diffs    = diff.diff_main(document.Code, new_code);
                    var    patch    = diff.patch_make(diffs);
                    //patch.Reverse();

                    // Start edit session.
                    int times = 0;
                    int delta = 0;
                    foreach (var p in patch)
                    {
                        times++;
                        var start = p.start1 - delta;

                        var offset = 0;
                        foreach (var ed in p.diffs)
                        {
                            if (ed.operation == LanguageServer.Operation.EQUAL)
                            {
                                // Let's verify that.
                                var len       = ed.text.Length;
                                var tokenSpan = new SnapshotSpan(buffer.CurrentSnapshot,
                                                                 new Span(start + offset, len));
                                var tt = tokenSpan.GetText();
                                if (ed.text != tt)
                                {
                                }
                                offset = offset + len;
                            }
                            else if (ed.operation == LanguageServer.Operation.DELETE)
                            {
                                var len       = ed.text.Length;
                                var tokenSpan = new SnapshotSpan(buffer.CurrentSnapshot,
                                                                 new Span(start + offset, len));
                                var tt = tokenSpan.GetText();
                                if (ed.text != tt)
                                {
                                }
                                var sp = new Span(start + offset, len);
                                offset = offset + len;
                                edit.Delete(sp);
                            }
                            else if (ed.operation == LanguageServer.Operation.INSERT)
                            {
                                var len = ed.text.Length;
                                edit.Insert(start + offset, ed.text);
                            }
                        }
                        delta = delta + (p.length2 - p.length1);
                    }
                    edit.Apply();
                }
            }
            catch (Exception exception)
            {
                Logger.Log.Notify(exception.StackTrace);
            }
        }
Example #5
0
        public Dictionary <string, string> CMReorderParserRulesServer(string ffn, int pos, ReorderType reorder_type)
        {
            try
            {
                if (_rpc == null)
                {
                    return(null);
                }

                CMReorderParserRulesParams p = new CMReorderParserRulesParams();
                Uri uri = new Uri(ffn);
                p.TextDocument = uri;
                p.Pos          = pos;
                p.Type         = reorder_type;

                Dictionary <string, string> result = _rpc.InvokeAsync <Dictionary <string, string> >("CMReorderParserRules", p).Result;
                return(result);
            }
            catch (Exception)
            {
            }
            return(null);
        }