Wednesday, October 24, 2007

Photoshop Elements - User Interface

In my recent experimentation with Photoshop Elements 6 (PSE6), I was quite surprised by some of the user interface (UI) techniques employed.

For example, with the "Albums" and "Keyword Tags" palettes, there is a "New" button, as shown below - the bright green cross -

When you hover, the tooltip text shows as below:

But what if you wanted to collapse or expand the tree? There doesn't seem to be any actions available for that. Let's click the "New" button - which is a pull-down, and see what happens ...

Aaahhh. There they are. At the bottom of the "New" menu.

what the?

It seems that it's basically overloading that first tool bar button. I'm not sure why. For fear of cluttering up the tool bar perhaps.

An alternative would be to make the buttons explicit - perhaps like the Eclipse style ones shown here (as the boxed "-" and "+"):

A little more thought needs to go into style guides for these interfaces I think.

Tuesday, October 23, 2007

Photoshop Elements - Smart Albums

My investigations are continuing with Adobe Photoshop Elements 6 (PSE6). And this post looks at the new feature called Smart Albums.

They are based on the same concept as the Smart Playlist in iTunes. That is, they are defined searches - rather than specific, static items - so that the Album contents always stays current.

It is a good feature to include, and in general seems well done. But, I've encountered a few usability issues which seem important.

1. User Interface to Modify a Smart Album

This seems strange. The problem is that there are two different "edit" operations - the most obvious seems to be to select the Smart Album, and then the Edit toolbar icon. In this case, I've selected the album called "Smart Taxis".

Indeed, the hover text indicates "Edit Smart Taxis Album". When you select this action, you get a dialog which only allows you to change the name! It conveniently tells you about the criteria though.

To modify the search criteria, you instead need to follow this process:
  1. Active the smart album, by selecting it from the Album palette
  2. From the organizer, select the Options pulldown
  3. Then select "Modify Search Details"
  4. You then, finally, see the dialog - which is entitled "Find by Details (Metadata)"
  5. You then still need to make the changes you need, and if you want to change that same album, select the check box and type your original name, and press "Search" ??

  6. A helpful dialog then tells you that this album exists, and would you like to replace it.
OMG! In doing this post, I've just realized that it doesn't replace your album - PSE6 adds another album - with the same name.

To be slightly fair, the dialog text doesn't actually say it's going to replace that album - it says "Click OK to create a Smart Album with this name anyway". I guess it could be seen as helping to provide some form of version control. But still, it doesn't seem terribly obvious.

What's going on here?

It seems that there is a basic disconnect between the two halves of the screen - the Organizer on the left - with the find bar showing Search Criteria - and the Album palette on the right - which talks in Albums.

2. Smart Album search criteria

Unfortunately, some of the search criteria available seems a little restrictive - that is, a bit lacking in flexibility. Some examples may help to illustrate:

  1. Can't use "not Include" with the "Keyword Tags" search - only Include:

  2. Can't use Smart Albums as the argument with the "Albums" search. The only albums presented in the list are standard (static) Albums.

    This would allow for a tree structured, or nested style search. This is also something which iTunes seems to manage ok.
I'm sure there are others, but these are the ones which seem to leap out.


Smart Albums is a good start - but it would nice to see them just a little bit smarter ... and easier to use.

Tuesday, October 16, 2007

Exploring the PSE6 Database

Curiosity has got the better of me, and I needed to see a little bit more of the Photoshop Elements 6 (PSE6) database.

You can use standard SQL to poke around, but for simple things I found a great tool in SQLite Expert Personal. It's a simple database exploration tool. The main screen looks like this:

Naturally, I also needed to try some SQL too. This query retrieves the Star rating (from 0 to 5) for all images:
select as recid, media.full_filepath
, mdint.value as rating
from media_table as media
join media_to_metadata_table as mm on = mm.media_id
join metadata_integer_table as mdint on mm.metadata_id =
join metadata_description_table as mdesc on mdint.description_id =
where mdesc.identifier = "xmp:Rating"
and mime_type = "image/jpeg"
Another test query is to retrieve the user tags for an image:
select as recid,
from media_table as media
join tag_to_media_table as t2m on = t2m.media_id
join tag_table as tt on t2m.tag_id =
where = 276
and type_name like 'user%'
I think that I'll put these to further use soon.

Monday, October 15, 2007

Eclipse Commands

The new command framework for Eclipse looks quite good. But I found it a little hard to get started with it.

I've found some really useful info here though:
One problem I've encountered though, is how to determine the command Id for an existing workbench function. In this case, I wanted the "Help -> About" function to be present in my RCP app.

I stumbled across a simple solution - cheat! That is, use the Cheat Sheets wizard to give a helping hand. (Thanks to Chris Aniszczyk for his informative article on Cheat Sheets - reading it gave me the inspiration for this!)
  1. Create a new cheat sheet, by selecting File -> New ... and then selecting "Cheat Sheet".
  2. Just use any name, and specify a "Simple" cheat sheet.
  3. Once in the editor, select the "Item" - and on the right hand side of the form, you will be able to specify a command - using the gift of Browse.
  4. Click on the Browse button, and you'll be presented with a list of common workbench commands. For example:
  5. You can then select the Command, and even press "Execute" to try it.
I've found this a handy trick.

Friday, October 12, 2007

Photoshop Elements

Well, I finally took the plunge - and upgraded my Photoshop Elements 3.0 (and Photoshop Album) to the new Photoshop Elements 6.0 (PSE6).

A few things caused the change:
  • the old version was starting to creak a little bit
  • lots of annoying little bits -like no alternative date format
  • the ability to use star ratings
  • the shiny new interface looked cool!
The upgrade went really well. As other people have noticed - you need to then manually go and convert your old catalogs using the "Catalog Manager" (File -> Catalogs ...).

One disappointment is that there (still) does not seem to be an adequate interface to Flickr. What is with the whole Adobe Partner Services thing? As such, in the past I've whipped up some Java to scan my PSE catalog (stored in an Access/Jet style) database, and reconcile that against my Flickr account - using the flickrj project as the framework.

One pleasant surprise is that the framework used to store the database has been updated. It now uses something called SQLite. This looks really interesting, as it is a well featured SQL database, which stores it's entire contents in a single file. (Apparently, Lightroom also uses SQLite, but I think a different schema.)

Naturally, I needed to check out the schema. Two ways spring to mind:
  1. Native access - via the SQLite facilities
  2. JDBC access.
A few little notes on each follow below.

Native SQLite Access
  1. download the executable from here. This gives you a zip. Simply extract the contents - a single .exe to a location of your choice.
  2. locate your PSE catalog location - an easy way is to use the Help -> System Info ... menu option.
  3. use the command sqlite3 filename
This gives you a simple command line interface. The commands are all "." prefixed - for example, use ".help" to get started.


There is a JDBC interface available. I decided to try the one available here. It was a simple matter of:
  1. create an Eclipse project (or IDE of choice)
  2. add the jar file to the class path
  3. use the sample code to start exploring
It does seem very straightforward. I'll post some code, etc after a bit more digging.