Beispiel #1
0
 public static bool Host(int Port, SharpRoom room, out HostResult result)
 {
     if (IsConnected)
     {
         result = HostResult.AlreadyHosted;
         return(false);
     }
     return(_ishost = isconnected = server.Host(out result, Port, room));
 }
Beispiel #2
0
 /// <summary>
 /// Open up a new document window with the specified file
 /// </summary>
 public override HostResult LoadFileIntoNewWindow(string filePath)
 {
     try
     {
         VsShellUtilities.OpenDocument(_vsAdapter.ServiceProvider, filePath);
         return(HostResult.Success);
     }
     catch (Exception e)
     {
         return(HostResult.NewError(e.Message));
     }
 }
Beispiel #3
0
 /// <summary>
 /// Perform a vertical buffer split, which is essentially just another window in a different tab group.
 /// </summary>
 public override HostResult SplitViewVertically(ITextView value)
 {
     try
     {
         _dte.ExecuteCommand("Window.NewWindow");
         _dte.ExecuteCommand("Window.NewVerticalTabGroup");
         return(HostResult.Success);
     }
     catch (Exception e)
     {
         return(HostResult.NewError(e.Message));
     }
 }
Beispiel #4
0
 public override HostResult LoadFileIntoNewWindow(string filePath)
 {
     try
     {
         var textDocument = TextDocumentFactoryService.CreateAndLoadTextDocument(filePath, TextBufferFactoryService.TextContentType);
         var wpfTextView  = MainWindow.CreateTextView(textDocument.TextBuffer);
         MainWindow.AddNewTab(System.IO.Path.GetFileName(filePath), wpfTextView);
         return(HostResult.Success);
     }
     catch (Exception ex)
     {
         return(HostResult.NewError(ex.Message));
     }
 }
Beispiel #5
0
 /// <summary>
 /// In a perfect world this would replace the contents of the existing ITextView
 /// with those of the specified file.  Unfortunately this causes problems in
 /// Visual Studio when the file is of a different content type.  Instead we
 /// mimic the behavior by opening the document in a new window and closing the
 /// existing one
 /// </summary>
 public override HostResult LoadFileIntoExistingWindow(string filePath, ITextView textView)
 {
     try
     {
         // Open the document before closing the other.  That way any error which occurs
         // during an open will cause the method to abandon and produce a user error
         // message
         VsShellUtilities.OpenDocument(_vsAdapter.ServiceProvider, filePath);
         _textManager.CloseView(textView);
         return(HostResult.Success);
     }
     catch (Exception e)
     {
         return(HostResult.NewError(e.Message));
     }
 }
Beispiel #6
0
        public override HostResult SplitViewHorizontally(ITextView textView)
        {
            // First find the IVimViewInfo that contains this ITextView
            IVimViewInfo vimViewInfo;

            if (!TryGetVimViewInfo(textView, out vimViewInfo))
            {
                return(HostResult.NewError(ErrorCouldNotFindVimViewInfo));
            }

            var newTextView     = MainWindow.CreateTextView(textView.TextBuffer);
            var newTextViewHost = MainWindow.CreateTextViewHost(newTextView);

            vimViewInfo.VimWindow.AddVimViewInfo(newTextViewHost);
            return(HostResult.Success);
        }
Beispiel #7
0
        public override HostResult MoveFocus(ITextView textView, Direction direction)
        {
            foreach (var vimWindow in _vimWindowManager.VimWindowList)
            {
                var list = vimWindow.VimViewInfoList;
                int i    = 0;
                while (i < list.Count)
                {
                    if (list[i].TextView == textView)
                    {
                        break;
                    }

                    i++;
                }

                if (i >= list.Count)
                {
                    continue;
                }

                int target = -1;
                switch (direction)
                {
                case Direction.Up:
                    target = i - 1;
                    break;

                case Direction.Down:
                    target = i + 1;
                    break;
                }

                if (target >= 0 && target < list.Count)
                {
                    var targetTextView = list[target].TextViewHost.TextView;
                    Keyboard.Focus(targetTextView.VisualElement);
                    return(HostResult.Success);
                }
                else
                {
                    return(HostResult.NewError(ErrorInvalidDirection));
                }
            }

            return(HostResult.NewError(ErrorCouldNotFindVimViewInfo));
        }
Beispiel #8
0
        public override HostResult MoveFocus(ITextView textView, Direction direction)
        {
            bool result = false;

            switch (direction)
            {
            case Direction.Up:
                result = _textManager.MoveViewUp(textView);
                break;

            case Direction.Down:
                result = _textManager.MoveViewDown(textView);
                break;
            }

            return(result ? HostResult.Success : HostResult.NewError("Not Implemented"));
        }
Beispiel #9
0
        public override HostResult MoveFocus(ITextView textView, Direction direction)
        {
            bool result = false;

            if (direction.IsUp)
            {
                result = _textManager.MoveViewUp(textView);
            }
            else if (direction.IsDown)
            {
                result = _textManager.MoveViewDown(textView);
            }
            else if (direction.IsLeft || direction.IsRight)
            {
                result = false;
            }

            return(result ? HostResult.Success : HostResult.NewError("Not Implemented"));
        }
Beispiel #10
0
        public bool Host(out HostResult result, int Port, SharpRoom room)
        {
            if (hosted)
            {
                result = HostResult.AlreadyHosted;
                return(false);
            }
            try
            {
                this.port = Port;
                this.room = room;

                IPEndPoint endPoint = new IPEndPoint(IPAddress.Any, this.port);
                listener = new TcpListener(endPoint);
                listener.Start();

                serverclient = new SharpClient("ServerClient");
                room.AssignClient(serverclient);

                listenerThread = new Thread(ListenClients);
                listenerThread.Start();

                hosted = true;

                S_OnHosted();
                result = HostResult.Succes;
                return(true);
            }
            catch (Exception e)
            {
                try { listener.Stop(); } catch { }
                try { listenerThread.Abort(); } catch { }

                listenerThread = null;
                listener       = null;
                hosted         = false;

                result = HostResult.UnhandledException;
                return(false);
            }
        }
Beispiel #11
0
        // TODO: The ITextView parameter isn't necessary.  This command should always load into
        // the active window, not existing
        public override HostResult LoadFileIntoExistingWindow(string filePath, ITextView textView)
        {
            var vimWindow = MainWindow.ActiveVimWindowOpt;

            if (vimWindow == null)
            {
                return(HostResult.NewError("No active vim window"));
            }

            try
            {
                var textDocument    = TextDocumentFactoryService.CreateAndLoadTextDocument(filePath, TextBufferFactoryService.TextContentType);
                var wpfTextViewHost = MainWindow.CreateTextViewHost(MainWindow.CreateTextView(textDocument.TextBuffer));
                vimWindow.Clear();
                vimWindow.AddVimViewInfo(wpfTextViewHost);
                return(HostResult.Success);
            }
            catch (Exception ex)
            {
                return(HostResult.NewError(ex.Message));
            }
        }
Beispiel #12
0
 public override HostResult LoadFileIntoNewWindow(string filePath)
 {
     return(HostResult.NewError(""));
 }
Beispiel #13
0
 public override HostResult LoadFileIntoExistingWindow(string filePath, ITextView textView)
 {
     return(HostResult.NewError(""));
 }
Beispiel #14
0
 public override HostResult SplitViewVertically(ITextView value)
 {
     return(HostResult.NewError(""));
 }
Beispiel #15
0
 private void Host_Click(object sender, RoutedEventArgs e)
 {
     Result = HostResult.Host;
     this.Hide();
 }
Beispiel #16
0
 private void Return_Click(object sender, RoutedEventArgs e)
 {
     Result = HostResult.MainMenu;
     this.Hide();
 }
Beispiel #17
0
 public override HostResult Make(bool jumpToFirstError, string arguments)
 {
     return(HostResult.NewError(""));
 }
Beispiel #18
0
 public BaseActionArgs()
 {
     Result = new HostResult();
 }
Beispiel #19
0
 /// <summary>
 /// Verticaly window splits are not supported in visual studio
 /// </summary>
 public override HostResult SplitViewVertically(ITextView value)
 {
     return(HostResult.NewError(Resources.UnsupportedInVisualStudio));
 }
Beispiel #20
0
 public override HostResult MoveFocus(ITextView textView, Direction direction)
 {
     return(HostResult.NewError("Not Supported"));
 }
Beispiel #21
0
 public void GoToFile2()
 {
     Create("foo bar");
     _vimHost.Setup(x => x.IsDirty(_textBuffer)).Returns(false).Verifiable();
     _vimHost.Setup(x => x.LoadFileIntoExistingWindow("foo", _textBuffer)).Returns(HostResult.NewError("")).Verifiable();
     _statusUtil.Setup(x => x.OnError(Resources.NormalMode_CantFindFile("foo"))).Verifiable();
     _operations.GoToFile();
     _statusUtil.Verify();
     _vimHost.Verify();
 }