Two years ago I invented usability improvement which can make the way in which user interacts with jMemorize during learning session much more convenient.
There are always exactly two buttons visible on quiz panel. One on the left and second on the right. When question is being shown left button is "Show answer" and right button is "Skip card". When the answer is being shown left button is "Yes" (I did know the correct answer) and right button is "No" (I didn't know the correct answer).
Now interaction with the program using mouse looks in this way that user have to constantly move mouse from left to right and vice versa. Admittedly distance between these two buttons is small but even so these small mouse movements are very uncomfortable.
My improvement makes this awkward mouse movements no longer necessary. During the learning session user is always making binary decisions. Mouse has two buttons (left and right) - ideal for making binary decisions. In my solution left mouse button click anywhere on the quiz panel is equivalent to clicking left button of this panel. Analogically right mouse button click anywhere on the quiz panel is equivalent to clicking right button of this panel.
I have implemented this solution - patch file is in attachments. I have never seen such interaction before in any application. Most users will probably don't know about this possibility. I think that the best solution to this issue will be to change the cursor when it is on left/right button clickable panel by adding small mouse icon with left button in green color and right in blue color - then left button on panel should be highlighted with green color and right panel button with blue color. These colors are of course only my proposition - I think that they will look very nicely. Hint during first start of learning session (for new jMemorize user) with information about this possibility will also be needed.
I showed this usability improvement to many people and reactions were always very positive. For me it is definitely the most convenient way to interact with jMemorize during the learning session. I'm curious about your opinion Riad and if you put it into next release :) I followed jMemorize code convention - Checkstyle doesn't show any errors in my code. I have no idea why binary information - if currently question is being shown or if answer is being shown is stored using two booleans not only one. It is a redundancy of information which is error-prone (may lead to inconsistency). I didn't refactor it but I was using only the first boolean (m_isShowQuestion).