Do we need this double-check?  Ditto for the one below in render()...  If someone's trying to construct an ImageViewer for something that's not a file, other things are probably going to go wrong anyway.  (For example, getImageHolder() will return null which means its caller will most likely crash anyway).  And again, it might also make it harder to pinpoint bugs by having the failures occur later, farther away from the root cause code.