views:

290

answers:

12

I'm writing an internal-tools webapp; one of the central pages in this tool has a whole bunch of related commands the user can execute by clicking one of a number of buttons on the page, like this:

toolbar

Ideally, all of the buttons would fit on one line. Ordinarily I'd do this by changing each widget from a button with a (sometimes long) text label to a simple, compact icon - e.g.

button labelled "Save"

could be replaced by a familiar disk icon:

disk icon

Unfortunately, I don't think I can do this for every button on this particular page. Some of the command buttons just don't have good visual analogs - "VDS List". Or, if I needed to add another button in the future for some other kind of list, I'd need two icons that both communicate "list-ness" and which list. So, I'm still considering this option, but I don't love it.

So it's come time for me to add yet another button to this section (don't you love internal tools?). There's not enough room on that single line to fit the new button. Aside from the icon solution I already mentioned, what would be a good* way to simplify/declutter/reduce or otherwise improve this UI?


*As per Jakob Nielsen's article, I'd like to think that a dropdown menu is not the solution.


Edit: I'm not looking for input about the icon idea. I'm looking for other solutions. Sorry my example disk icon was a small one; it was just an example. I'm showing a bigger one now to hopefully be more clear.

A: 

What about a combobox and a Confirm button? Or a simple dropdown menu?

Wildhorn
Did you see my note about dropdowns?
Matt Ball
+4  A: 

What if you use icons and text?

For the commonly understood commands - use just an icon (like the save) For the uncommon commands use an Icon + the text.

If you put a border around the button as a whole it should tie the icons / text together nicely and show it's still a button. You could also do some hover effects.

Prescott
Or better, icons and hover-over text. There are some more commonly used icons you can utilize here - Disconnect, Reboot, File Transfer, Config, Messaging.
rlb.usa
I would definitely use hover text (along the lines of [tipsy](http://onehackoranother.com/projects/jquery/tipsy/)) with icons.
Matt Ball
A: 

Add a "Tools" or "Actions" menu bar, and stick rightmost 4 commands (or more) into the menu.

Khan
+1  A: 

Since you can't do a dropdown menu (or similar techniques like clicking a button to generate a secondary menu). The best I can think of is what Prescott did or showing an area of buttons that are grouped in such a way to make it easy for the user to know which section their button should be in.

Kyra
A: 

Would it be possible to implement a "most used" or "preferred" set of buttons (preferably for the user, but globally if necessary) and button to take you to the rest of the items if you need one of those?

Tom H.
That's basically what [sushil's answer](http://stackoverflow.com/questions/3056266/how-can-i-simplify-this-user-interface/3056320#3056320) suggested.
Matt Ball
+8  A: 

alt text

I would add a More Link Like Google does. See the Top Bar of Google with WeB Images Map More >>

To this more >> drop down you can add logic to add button less frequently used by user or something like that.

sushil bharwani
This seems pretty viable to me.
Matt Ball
Works well for single words but take care that you keep enough space between individual links (and don't separate them with only white space, according to WCAG [screen readers otherwise make quite a mess of them]), especially if there are multi-word links.
Joey
If you are just using links and not buttons I mostly use | seperator to seprate my links. @Johannes agree with you on multiple word links
sushil bharwani
@Bears I thought you said dropdown menus are not the solution?
Patrick McElhaney
@Johannes: this is an internal tool, so I don't need to worry about screen readers.@Patrick: by "dropdown menu" I mean `<input type="select">...</input>`. The key difference here is that it shows the most frequently used options all the time.
Matt Ball
@Bears That makes sense. Unfortunately, adaptive menus may not be the solution either. http://humanized.com/weblog/2007/03/05/are_adaptive_interfaces_the_answer/
Patrick McElhaney
@patrick +1 for posting humanized.com/ . However i believe if you see google's set of links they are not adaptive. The links do not channge from user to user. And are based on whats there most popular (clicked) set of links are. So what can be done here is just identify the links like 'Save' that will be used more often and put them in main area. And identify links like 'config' and keep them in more area.
sushil bharwani
A: 

You could group them (like the two 'vds' buttons) behind a single button that, when clicked pops a context menu with the individual icons.

BioBuckyBall
+6  A: 

If you read Jef (and Aza) Raskin, you'll probably realize that icons are also not a good solution – both were pretty vocal in their dislike for them (with very few notable exceptions). For a start they're even harder to hit than tiny buttons, then their symbols can be confusing, culture-dependent and misleading. We're already good at reading text, parsing and interpreting icons is often slower.

In any case, that button bar looks like it accommodates pretty much anyone and their dog who might be using that product. You might have had some specific scenarios in mind when creating it that should be easy to do and are important. Most likely not all buttons are needed at once for such a task to complete.

Another thing is that maybe not all buttons are even useful at any single state of the application. Can you maybe branch into different sets of buttons, depending on the state. That's only possible however, if each state has clearly defined what actions can be taken. If all buttons are equally pressable regardless of state this won't do anything.

Grouping commands according to related functionality might also be an option. This doesn't have to be done with menu-like idioms, you can also put them into containers with different background color or even color the buttons themselves (just keep in mind color blindness, though). Depending on how related those individual functions are this can be a good way of speeding up interaction. It might requier some training for users to know what the colors refer to but for an in-house tool that's only used by people you know (instead of by arbitrary random ones [which is a problem Microsoft faces quite prominently]) this should pose not much of a problem.

Joey
Like I said, I don't love the idea of icons. I'm looking for *other* options.
Matt Ball
+1 for *"Grouping commands according to related functionality"* - a little organization goes a long way
BlueRaja - Danny Pflughoeft
Something akin to the MSOffice ribbon? That would actually follow current Windows UI trends (I guess I'm kind of assuming your user base is on Windows).
JohnL
A: 

Icons are terrible from a user experience stand point. A picture of a Floppy Disk doesn't un-equivocally mean SAVE. It means something to do with a Floppy Disk. A Floppy really, its 2010, SAVE on a web app means save to the server, how does a Floppy Disk even compute?

Here is an application that has had the same extremely usable interface for 10 years! And hardly any images for buttons, and it is one of the most productive applications in its category.

You know what ICONS stand for I ncomprehesible C ryptic O bfucsated N onsense S ymbol!

Also how do you internationalize an icon?

fuzzy lollipop
This is an internal tool; internationalization isn't much of a concern right now.
Matt Ball
Actually icons came into use partly because they were easier to internationalize. A disk icon to save is the same across many languages, while text had to be translated for each language.These days, it's common practice to use resource files everywhere, and better tools exist to translate strings in these resource files.
JohnL
NOTHING about a picture of a Floppy Disk in a web app in 2010 in any country means SAVE.
fuzzy lollipop
+1  A: 

I would start by changing some of the longer labels. At a minimum, "Application Loading" could be abbreviated "App Loading." What's another (shorter) way to say "Quick File Transfer"?

You could also group the buttons into tabs (i.e. make it a ribbon). That might work particularly well if different classes of users tend to use different, non-overlapping sets of buttons.

Patrick McElhaney
A: 

It truly seems like what you're developing is a administration console which happens to present its UI through a web page, rather than something which I'd quantify as a web app. As such, especially given your statement that this is an internal use application, Jakob Nielson's advice regarding <select> tags being poor design need not apply.

For this particular set of assumptions, I think the better option is to imitate a system menu setup using one of the many CSS-based menuing designs possible.

Tetsujin no Oni
+1  A: 

Numerous options:

  • Group and labeling. Any time you have more than eight commands, you should divide the menu items into semantic groups of about four to help the user scan for the command they want. Labeling the groups also helps the scan and can make the menu more compact. For example, Instead of VDS Ping and VDS List, Have a group labeled “VDS” with “Ping” and “List” menu items. You’ve one less word to fit in (two if you put the label above it’s associated menu items when using a horizontal orientation).

  • Pulldown menus. Nielsen is correct about avoiding the use of a dropdown menu for making commands. However, he’s clearly in favor of pulldown menus which look and behave like a menubar in a thick client app (Nielsen calls them “command” and “navigation” menus). I think you’ll find that there are several Javascript pulldown menus out there now, unlike back in 2000 when Nielsen wrote his post. You can fit 100s of commands in a menubar.

  • Sidebar menu. Arraying the menu items vertically and you should be able to fit 20 or more commands and you won’t have to shorten any command names to something user might not understand. If that’s not enough, consider a “menu bank” than combines the benefits of sidebar menu with the capacity of a pulldown menu.

  • Ribbon. If your commands fit into discrete tasks, where the user tends to stick to one task for a while, you can arrange the buttons on a tab control, with one sheet per task.

  • Command Overloading. Represent your data objects as selectable entities in your window and change your commands into more general operations, like Drill-down, Create, Copy, Move, Delete, and Link, that can be applied to various different classes of objects, thereby reducing your total number of commands. The user can select one or more data objects then select the desired command to act on them.

  • Work Area Attributes. Some of your commands may not be commands by settings or attributes. Remove them from the menu and represent them as data objects in the work area of the page (or another page, if they are rarely used) using controls like radio buttons, dropdown lists, and check boxes. This has the added benefit clearly showing the user the current setting as well as providing a means to change it.

  • Variants. For an internal app, you probably have formal roles and responsibilities that vary by work position. Include the user’s position in your model, and dynamically hide commands (and other controls and pages) that aren't relevant to that position.

Michael Zuschlag