LimeLM
wyBuild
Support forum
Wyatt Says...
wyDay Home

"Wyatt Says..." is a collection of articles by Wyatt O'Day talking about wyDay products and the things we've learned along the way.


Wyatt Says...

June 24th, 2007

You’re dying to know what the AIC is, aren’t you? No, it’s not a test to see if you qualify for insurance with a talking wallaby. Rather, you’ll be glad to hear that I’ve coined a new computer acronym which you can add to your arsenal of entirely forgettable “stupid geek talk.”

AIC Test: Anger Induced Clickscapade Test

The AIC test (pronounced “ache test”), briefly, is a confirmation that your program works at 3a.m. Specifically it’s a guard that you, the programmer, put in place for your customers’ all-nighters. He’ll be running Firefox with over 30 tabs open, Photoshop with nearly a gig’s worth of images in memory, and several other CPU & memory intensive programs, plus your own program.

He’s 20 minutes away from finishing after nearly 20 hours of caffeine fueled work. He clicks a link in Firefox and the browser freezes. Realizing a bad situation in the making, he flips back to Photoshop to save his work. “Application Not Responding,” Windows gleefully reports. He switches from program to program, leaving a trail of unresponsive programs.

By the time he flips to your program, his Tea is in a puddle on his desk and he’s used phrases that would make a longshoreman blush. Now begins the anger induced clickscapade. Clicking furiously, and largely at random, he’s going to try to save his work, export and upload his data, and print a copy of his work all while your program blinks between responsive and unresponsive states. Your program has to process each click and keystroke perfectly. This means no flaky behavior.

How to run the test

From that series of events alone, the AIC test sounds suspiciously arbitrary. If you’ve taken even a beginners computer course you’ll already know that nothing in the computer is arbitrary or unpredictable. To illustrate my point I’ll describe the steps I took to fix an already usable SplitButton control to an AIC passable SplitButton control.

A little background

SplitButtons are everywhere from Firefox to Photoshop to many Microsoft products. Here’s a SplitButton in Firefox:

SplitButton in Firefox

As the name SplitButton implies, the functionality of the back button in Firefox is divided. Click the near the green arrow and the browser goes back a page; click the downward pointing black arrow (the drop-down region) and a list of recently visited sites appears.

These types of buttons are seen so often in Windows programs, you’d think Microsoft would have built the functionality into the Windows API prior to adding it to Windows Vista. Not so. After googling for a few hours I found three options:

  1. A bloated commercial component suite. Only $280; who could refuse?
  2. A buggy, but open source SplitButton designed by some anonymous guy. Pass.
  3. A functioning, open source, SplitButton control written by a Microsoft programmer. Sounds perfect.

The tests, the subtleties

The SplitButton I opted to use was by the Microsoft programmer, Jessica. After an hour of use I noticed a few sticky parts in her nearly perfect implementation. First of all, the drop-down region of the SplitButton didn’t fill the full height of the button:

SplitButton highlights

If the user clicks the right hand side of Jessica’s button the user will expect a menu to pop-up. However, the highlight shows that if the user clicks either the top or bottom five pixels they will have triggered the normal button click-event. At 3a.m. this subtlety is death. It’s an easy fix, so why not fix it?

Then there’s the matter of right clicking. In Firefox’s SplitButtons a right click shows the menu directly under the button – acting identical to clicking the drop-down region. Jessica’s implementation, along with SplitButtons in Windows toolbars, shows the menu wherever the right click happened. I prefer displaying the menu directly under the button so it doesn’t obscure the button’s text:

Right clicking SplitButton

And lastly, Jessica forgot to implement the disabled state for the SplitButton. It’s another easy fix, and is essential if you disable buttons:

Disabled SplitButton

Why do I care? Why should you?

All of these “major” fixes took less than an hour to implement and test, and they reduced my own frustration with the button. I use the SplitButton in the InstantUpdate Designer so the user can select options when uploading their newly created update files:

InstantUpdate Designer Release Candidate

If I were to use an unaltered version Jessica’s SplitButton, then a user could easily start large uploads when he only wanted to change an upload option. Quirks like these make months of hard work seem wasted. And, it’s only through anger induced clickscapades do these problems show themselves.

Update October 13, 2008: You can view all the latest changes at the SplitButton changelog page.

Download the fixed SplitButton. Open source, and confirmed working with .NET 2.0 and above (C#, VB.NET, etc.).

Comment on the SplitButton

RSS Subscribe to the 'Wyatt Says...' RSS Feed and keep up to date on on my articles on updaters, usability, open source C# components, and software licensing.

Comments

Leave a Reply