Exemple #1
0
 //判断当前编辑器中是否有某个session。哈希值是根据用户id和消息id计算的。
 private CodeEditSessionInfo hasSession(CodeEditSessionInfo info)
 {
     foreach (var session in openedSessions.Keys)
     {
         if (session.GetHashCode() == info.GetHashCode())
         {
             return(session);
         }
     }
     return(null);
 }
Exemple #2
0
 //请求开启编辑会话。
 //如果编辑会话已存在,则切换到它。
 //如果编辑会话还不存在,则加入会话集合并进行一些准备工作。
 //如果内部的编辑器还没加载好,加入等待队列。
 public void RequestOpenSession(CodeEditSessionInfo session)
 {
     if (!innerEditorLoaded)
     {
         initMonaco();
         waitingSessions.Enqueue(session);
     }
     else
     {
         handleAddSession(session);
     }
 }
Exemple #3
0
        //创建一个新tab。
        private muxc.TabViewItem createTabViewItem(CodeEditSessionInfo session)
        {
            var newTab = new muxc.TabViewItem()
            {
                Header     = "与" + session.Contact.DisplayName + "聊天中的代码",
                IsClosable = true,
                IconSource = new muxc.SymbolIconSource()
                {
                    Symbol = Symbol.Document
                },
                Content = "",
                Tag     = session
            };

            return(newTab);
        }
Exemple #4
0
        private void editorTabView_AddTabButtonClick(muxc.TabView sender, object args)
        {
            var info = new CodeEditSessionInfo()
            {
                Contact = new ContactPage.ContactItemViewModel()
                {
                    UserID = count.ToString(),
                },
                CreateTime = DateTime.Now,
                Language   = "csharp",
                Code       = "using System;"
            };

            RequestOpenSession(info);
            count++;
        }
Exemple #5
0
 public testPage()
 {
     this.InitializeComponent();
     date = DateTime.Now;
     info = new CodeEditorPage.CodeEditSessionInfo()
     {
         Contact = new ContactPage.ContactItemViewModel()
         {
             UserID = "22234",
         },
         CreateTime = date,
         Language   = "csharp",
         Code       = "using System;"
     };
     testPre.Content = page;
 }
Exemple #6
0
        private void handleAddSession(CodeEditSessionInfo session)
        {
            var temp = hasSession(session);

            if (temp != null)
            {
                editorTabView.SelectedItem = openedSessions[temp];
            }
            else
            {
                var newTab = createTabViewItem(session);
                editorTabView.TabItems.Add(newTab);
                openedSessions.Add(session, newTab);
                editorTabView.SelectedItem = newTab;
                if (editorPresenter.Content == null)
                {
                    editorPresenter.Content = codeEditor;
                }
            }
        }
Exemple #7
0
 //当关闭一个会话时,需要:
 //将它的tab移除,将其从本类的字典openedSessions中移除,通知代码编辑器关闭这个会话。
 public void RequestCloseSession(CodeEditSessionInfo session)
 {
     editorTabView.TabItems.Remove(openedSessions[session]);
     openedSessions.Remove(session);
     codeEditor.CloseSession(session);
 }