I have a simple question.
I have a lot of menuitems and buttons in my application. I try to remember to add ... in the caption to indicate that a modal dialog is followed.
But should I also add those dots for a non modal dialog. I try to search in Google but cannot find any clear answer. I use Win32 and Delphi.
Regards
The ... implies that some further input is required to complete the action of the menu item.
So, "Save" means that the menu item will cause the document to save, whereas "Save..." implies that the user will need to enter the name, or choose a file format or something before the file will be saved.
Typically the further input is entered in a popup modal dialog, but (a) not every modal dialog is a prompt for further information, and (b) hypothetically some other input mechanism could be used.
The '...' implies that the user will be given the opportunity to back-out of the operation.
This was in a user interface guideline book I read back in 1995, I can't seem to find a definitive confirmation online anymore.
I'd say that this depends strongly on your personal taste. I add ... whenever any new window is opened, be it modal or non-modal, to indicate to the user that he has to expect some other window to appear.
My guess is that there should be some Microsoft UI Guidelines document about that, but neither have I ever looked for something like that nor do I know of one.
Related
Consider a modal dialog where a user can select an item from a list.
Option 1: Instantly close the modal upon selecting an item from the list.
Option 2: Have a selected state for the selected item and provide OK / Cancel buttons to confirm the selection before closing the modal.
Which of the two options is preferred from an accessibility standpoint? (considering keyboard navigation support, etc). Note that the selection is non-destructive and the user could easily re-open the modal and change the selection.
Option 2 is your best option here is some guidance related to this and the WCAG guideline
Basically do not change context, update lists etc. automatically on any type of input, you should always give the user a chance to confirm their actions.
Now the question is do you really need a modal if all the user is doing is selecting an item from a list?
Surely it would be a better UX to just have a list you can choose from (this depends on what you are doing, just thought I would point it out as you didn't give an example).
You also need to consider the fact that your modal list should present number of options, currently selected options etc. etc. Yet again these are just guesses and something to consider, it could be irrelevant.
Which is a better User Experience / Design decision for opening a table row (in a business website)? To place an "Open" button like this:
Or, to allow the row to be opened by clicking anywhere on it?
Your question assumes that people understand that there is more information to be gained by "expanding" these rows in this table. As this is designed right now, there are zero hints for a user that they are capable of viewing more information inside the same view that they are using.
Option 1: Open button
Let's assume (dangerously) that people are knowledgable that they can use this table to view more info about a line item in this table. The button itself is separated from the content it is referring to, breaking Fitt's Law. Also, the label is "open", which most users would interpret as taking them to another page, or opening a new context. "View More" or "Expand" would be a better label.
Option 2: Click anywhere
This is slightly better than the button, as it clearly relates the action to the content. However, it still doesn't solve the problem of exposing the functionality to the user.
I would recommend a combination of both of these approaches, making sure you are solving for Fitt's Law as well as exposing a label that will tell the users what functionality is present in these table rows, and how to access them.
I have a report which contains date prompts. For several reasons, we want to disable manual user input into these date prompts, and to require the use of the date picker instead (this requirement won't change).
How can one do this?
What I've tried:
adding a javascript snippet (embedded in an invisible text prompt) to disable the text field. This works, however when I click "Apply" in the promptset, the date field is re-enabled!
Any insight on how I can accomplish this?
Anybody know how to hack the behavior of the Apply button so I can call my js function again? OR where can I hack the raw html of the promptset/report so that can set the date fields to "disabled=true"?
I do not know of any hack for the "Apply" button, however if we change your process a bit, instead of locking the columns down (and possibly creating confusion for the end user "Why can't I click on this prompt!!"), what we could do is hide the prompts either by using a JQuery function, or other method. The link within this answer describes several options to hide prompts:
Hidden prompts (Oracle Method)
Hiding prompts using guided navigation
Hiding prompts in a section
Hiding certain UI controls inside a prompt
This link has many other links to resources, and should hopefully answer your question, albeit in a different way.
Links (several in case one gets broken):
http://intelligentinsight.wordpress.com/2012/10/20/obiee-11g-hidden-prompts-and-hiding-prompts/ (Main Link)
http://docs.oracle.com/cd/E21764_01/bi.1111/e10544/prompts.htm#CIHCDDEG (Oracle Link, should be stable)
http://intelligentinsight.wordpress.com/2012/09/23/obiee-11g-improve-dashboard-prompt-ui-selectively-hiding-and-displaying-prompts-using-jquery/ (Link with JQuery instruction)
I'm using Joomla to develop a user profile management component with AJAX.
The goal is to allow the user to edit his own user information. There is a lot of information so instead of having one massive form, I decided to make "subforms" or sections. And for the whole thing to be user-friendly I want to send the forms and refresh the user information with AJAX.
Here's an example :
There are two sections, "Basic user info" which displays the first name, the last name and the age of the person and "Extended user info" which displays the occupation, the company and the skills of the person. Each section has an "edit" link (or button) which turns the content into a form (AJAX) allowing the user to modify the presented information. You can only edit one section's information at a time. When the user has finished modifying the data, he sends the form with a "send" link (or button) and the section gets back to simply displaying the information of the section (with the updates that were just made).
So I need to know what is the most efficient way to develop such a component. I thought of two approaches :
1) In the "tmpl" directory of the main component view we the following files :
default_basic.php (displays the basic user information),
default_basic_edit.php (displays the form which allows the user to edit the basic information)
default_extended.php (displays the extended user information),
default_extended_edit.php (displays the form which allows the user to edit the extended info)
default.php (loads each of the display subtemplates with calls to JView::loadTemplate($subtemplate))
When the user clicks on an edit link, an AJAX call is made to the following URI index.php?option=com_userinfo&view=userinfo&subview=basic_edit&format=ajax, which causes the view class to call $this->loadTemplate('basic_edit') after assigning the user information to it.
If the user clicks cancel the same process is used to load the 'basic' template again. And if the user modifies the information and clicks the send link, the form is sent and then the 'basic' template is loaded too.
2) There is only a "default.php" file in the "tmpl" directory which holds the edit version and the display version of each section. But all the edit versions are hidden at first. And when the user clicks on the edit link the display version of the section becomes hidden and the edit version is displayed (using display:none and display:block). Then, if the user clicks the cancel button we do the opposite. And if the user clicks the send button we send an AJAX request to update the data in the database and return the updated user info which will be loaded into the display version of the section. And we finally replace the edit version of the section with its display version.
I know there's a lot of text but in the end it goes down to choosing between refreshing full HTML blocks with AJAX, or just sending the updated info and modifying the content of hidden blocks and then make them appear. So what do you think is the most logical approach, knowing that we are in a Joomla 1.5 environment ? How would you procede ? (maybe there are other ways to create such a component ?)
(I tried both ways and I couldn't entirely make it work so I decided to ask to see if it is a matter of conception...)
Thank you for taking the time to read all the text.
My answer is: why even refresh parts when it can be done without it?
For example when we are talking about basic form elements like text fields and check/radio buttons I would prefer the following: on a successful save/send simply display a nice message like "Profile saved" for some seconds and the user is sure that the changes are save and sound.
In case I msissed somthing let me know.
I have tried both solutions and #2 is the only one that worked for me.
When a user clicks once on an item in a Grid or a ListBox, that item is usually selected, hence most UI frameworks have a onSelected event or the like for that.
However, how can we generally call the next step when a user "finally" selects an item by e.g. double clicking an entry? You know when some popup might appear in the context of the selected item and the user can do further stuff.
Strangely enough, I think I have never seen a word for that in any UI framework.
onPicked, onAccepted, onChosen, onFinallySelected, onResult? All kinda awkward or too special. Any other ideas?
I haven't found anything wrong with SelectionChangeCommitted
The wxWidgets framework uses the term activated to describe what you're talking about. So, the method could be called onActivated.