Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improved tabbed terminals design #1888

Closed
vparfonov opened this issue Jul 21, 2016 · 9 comments
Closed

Improved tabbed terminals design #1888

vparfonov opened this issue Jul 21, 2016 · 9 comments
Assignees
Labels
kind/enhancement A feature request - must adhere to the feature request template.
Milestone

Comments

@vparfonov
Copy link
Contributor

vparfonov commented Jul 21, 2016

In the version 4.5.0 we have integrated the new feature "Side by side terminals"

We have the basics of the functionality, but we now have to implement a proper design and user experience.

Here is the design:
multiconsole

Focus
Terminal who is currently having the cursor is shown with:

  • a layer over the background of the terminal #4A90E2 alpha:8%
  • a 1px height line a the bottom of the terminal's tab

New Terminal
A new terminal can be invoked by either clicking in the "+" button in the list of consoles or by executing a new command from the toolbar.
In this case, the new terminal/console is opened in the pane that was having the focus previously.

Pane Management
The management of panes is handled by a small button on the right of the tabs in the pane. When this button is clicked, it shows options:

  • Close Pane: it closes the panes and all the associated terminals.
  • Close All Tabs in Pane: it closes all the tabs from the pane, but does not close the pane.
  • Split Pane in Two Rows: it splits the area of the current pane to create another pane into another row (50% of the height of each pane)
  • Split Pane in Two Column: it splits the are of the current pane to create another pane into another column (50% of the width of each pane)

When a new pane is created, it always opens a new terminal from the same machine than the latest terminal focused by the user.

Terminal tree
The terminal tree behaves like the project explorer. The user can open the same terminal into multiple panes.

Too much terminal in pane
When there are too many terminals in the pane, we do the same behavior than the one we have for the editor. We reuse the same button which is handling the pane management.
(Sample: 15 terminals opened in a pane, but space to display the tabs allow to display only 10, then we will have the other 5 terminals in the menu)

@vparfonov vparfonov added kind/enhancement A feature request - must adhere to the feature request template. status/open-for-dev An issue has had its specification reviewed and confirmed. Waiting for an engineer to take it. sprint/next team/ide labels Jul 21, 2016
@slemeur
Copy link
Contributor

slemeur commented Jul 21, 2016

Design updated from discussion with @vparfonov

@azatsarynnyy
Copy link
Member

Imagine that just one pane is shown with some tabs and user clicks Split pane button.
What should be shown in second pane?
Should it be just empty pane that can receive a focus to allow user open terminals/console inside it?

@slemeur
Copy link
Contributor

slemeur commented Jul 22, 2016

"When a new pane is created, it always opens the last focused terminal."

If user hits "Split pane", we always create the pane with a terminal and this terminal is having the focus. In the case of multi-machines, the new terminal will be from the same machine than the latest terminal focused by the user.

@azatsarynnyy
Copy link
Member

And if the first pane is empty then new pane also should be empty. Am I right?

@azatsarynnyy
Copy link
Member

@slemeur when you say it always opens the last focused terminal does it mean that the last focused terminal should be in both panes or it should be moved from the first pane to the second (newly created) one

@slemeur
Copy link
Contributor

slemeur commented Jul 22, 2016

@azatsarynnyy :

And if the first pane is empty then new pane also should be empty. Am I right?

You can consider opening a terminal from the dev-machine.
note: This situation should not happen as we are always opening a terminal when we open the IDE.

does it mean that the last focused terminal should be in both panes

No, let's open a new terminal from the same machine than the latest terminal focused by the user.

@azatsarynnyy
Copy link
Member

azatsarynnyy commented Jul 22, 2016

note: This situation should not happen as we are always opening a terminal when we open the IDE.

But actually this situation may happen when user click Close All Tabs In Pane.
Opening a terminal from the dev-machine is OK for me.

No, let's open a new terminal from the same machine than the latest terminal focused by the user.

So, the last focused terminal from the first pane should be closed?

@slemeur
Copy link
Contributor

slemeur commented Jul 22, 2016

But actually this situation may happen when user click Close All Tabs In Pane.

Even with that - you always had at least one terminal opened. Note that we should remind the source of the latest opened/used terminal even if this one has been closed by the user.

It seems there is complexity on this behavior, if it is too tricky - start by just opening a terminal from the dev-machine each time a new pane is created.

@azatsarynnyy
Copy link
Member

OK. Now it is more understandable )

And one more question. Issue description says: "The user can open the same terminal into multiple panes".
Can't imagine how it should look like in this new UI? Or may be skip it on the first stage?

@azatsarynnyy azatsarynnyy added status/in-progress This issue has been taken by an engineer and is under active development. and removed status/open-for-dev An issue has had its specification reviewed and confirmed. Waiting for an engineer to take it. labels Jul 31, 2016
@vparfonov vparfonov added status/pending-merge and removed status/in-progress This issue has been taken by an engineer and is under active development. sprint/next labels Aug 22, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind/enhancement A feature request - must adhere to the feature request template.
Projects
None yet
Development

No branches or pull requests

3 participants