For locking I'm really not sure. I know there exist blocking scenario when the same client would lock record twice, but I described it in choices and I didn't want to break the must requirements - there was something like the
thread must block on already locked record...
For gui I make nice design with extensible framework, but without eye candies and comboboxes etc.