bergerjac / gitextensions

This fork of GitExtensions is primarily focused on creating an interactive view of git's common objects.
http://code.google.com/p/gitextensions
GNU General Public License v3.0
1 stars 0 forks source link

Notifications #17

Open bergerjac opened 11 years ago

bergerjac commented 11 years ago

There needs to be a generic way to display that a DragDrop or (right-click) ContextAction failed.

Via a MessageBox, a StatusBar, or ... ?

Example: {Branch} right-click -> Delete and the delete fails.

This needs to be displayed to the user; as well, it will allow developers to cancel a UI update.


View the requirements discussion Requirements:

Notifications (Icon N)

Most Recent Notification

Most Recent

Other Tasks

jbialobr commented 11 years ago

As a plugin use case I could change Check for update plugin to use Notifications instead of showing modal form.

bergerjac commented 11 years ago

@jbialobr

There's a bit of a dilemma on my hands regarding the location of the Notification Feed.

RepoObjectsTree Bar Error

I tried to get around this issue by manually setting the size of the most recent notification, but even then, the image is cut off (see 1st image, top part) and it's not a good UX. The issue arises from the fact that if a notification has text that is too long, it'll be put into the overflow container (see 1st image, bottom part).

Notifications Area

I was also wary of adding a bar which would only be used for notifications. It seemed like a lot of dead/wasted space (red box). The only other option I can see is the area to the right of the main menu area (blue).

What do you think?

jbialobr commented 11 years ago

What about the bottom status bar, where unresolved merge conflicts notification appears? "unresolved merge conflicts" also should be posted via NotificationManager. I think that it shouldn't be ignorable. There is a one problem: now default onClick action is show resolve merge conflicts dialog - not discard as we planed.

tmp

bergerjac commented 11 years ago

"unresolved merge conflicts" also should be posted via NotificationManager

That's the plan.

default onClick action is show resolve merge conflicts dialog

This notification will have a context menu item to show resolve merge conflicts dialog.

The reason why notifications shouldn't be on the bottom is because that area is kind of obscure and out of the way. Most of the user interactions are happening near the top-left part of the UI, so the user's eyes are focused on that portion..

Also, if a user is doing work in the top-left and something fails, he has to go all the way to the bottom-right to see what happened.

I think we want the user's eyes and mouse to have to move as little as possible.

What do you think about:

Put Notifications drop-down to the right of Refresh.

Notifications Suggested

Put Most Recent Notification to the right of Help menu.

jbialobr commented 11 years ago

tmp

What about this: 1) Show most recent notification like on picture for X seconds (lets say 15 or 25). After that time it hides. 2) Show in toolbar notification icon N with number of not viewed notifications: N (3). 3) After click on icon N list of notifications is shown. List consists of components like in 1) - stack layout. 4) Notification component 1) has toolbar (top-rigth corner) with close button. Navigation arrows can be shown only for most recent notification, but they are not crucial. Here also can be placed Ignore button. 5) Notification component 1) is divided into two areas:

6) Let user decide where to place notification button

bergerjac commented 11 years ago

6) Let user decide where to place notification button

Which button? Most Recent or Icon N button?

jbialobr commented 11 years ago

Which button? Most Recent or Icon N button?

Icon N button. if Icon N is located in toolbar then Most Recent Notification appears under it. If Icon N is located in status bar then Most Recent Notification appears above it.

bergerjac commented 11 years ago

Makes sense.

If Icon N is located in toolbar, where should it be? Next to Refresh?

Icon N located next to Refresh

or where do you think?

jbialobr commented 11 years ago

Yes, I think that next to refresh is good place for it.

bergerjac commented 11 years ago

@jbialobr I've created a new Milestone (on GitHub) called Notifications. There are a lot of undocumented issues that have been created related to the overall notifications implementation.

I've pushed to left-panel/status-debug and could use some help on implementing the Popup and List forms.

I don't have much experience in creating GitEx forms/dialogs, so it may be a lot easier for someone who has been working on the project for a longer time.

Also, if you start working on a particularly big feature, it would probably be a good idea to create an issue and mark yourself as the assignee. I will do the same as well. That way, we won't both work on the same problem at the same time.

jbialobr commented 11 years ago

I don't have much experience in creating GitEx forms/dialogs, so it may be a lot easier for someone who has been working on the project for a longer time.

Not necessarily - this is my first c# project and I am not familiar with many things - but I will try to do my best. For example I don't know how to set up FormBrowse to be not hidden behind non modal child forms (e.g. FormFileHistory). Do you have any idea how to do that?

jbialobr commented 11 years ago

I see, that you started to implement popup and list form. Do I have to finish them or take other topic? My time is limited to 2 hours a day.

bergerjac commented 11 years ago

this is my first c# project and I am not familiar with many things

Well, congrats; you're doing well.

how to set up FormBrowse to be not hidden behind non modal child forms (e.g. FormFileHistory)

Instead of Form.ShowDialog(...), use Form.Show(...) Modal/Modeless. So, formFileHistory.Show(...) will allow you to navigate back to FormBrowse.

Do I have to finish [popup and list form] or take other topic? My time is limited to 2 hours a day.

I can implement the majority of the popup and list forms. Once they're done, you can take the feature additions, such as: