Use local event monitor for key equivalent view

This ensures we get all key events, for example in the bundle item chooser window the pop-up button’s menu would previously see the key down event before the key equivalent view, so enabling recording and pressing ⌘1-3 would not record that key equivalent, but instead activate the corresponding (pop-up) menu item.
Use NSTextInputContext instead of NSInputManager

The latter has been deprecated since 10.6 but hasn’t given any deprecation warnings (and it’s not like I’m eager to touch the NSTextInput protocol implementation, as I just barely understand how this stuff is supposed to work).
Look for process id file from 2.0-alpha.9553 and earlier

This is only when updating from an earlier version: Previously we would not find the pid file from the old instance and thus not tell it to quit.
Avoid clash with NSCell’s keyEquivalent property

The rationale for the ‘string’ suffix is that our properties are things to be displayed rather than behavioral properties.
Move highlight_ranges.h to ui subfolder

Only sources in the ui folder use this code and was previously including it from a parent folder, which breaks the hierarchical ordering of sources: you can include child folders, not ancestors.
Retrieve the sheet delegate if present in main window
Remove no longer used option for the Commit Window

Originally, the "--ask" option was used in the previous commit window to change the NSTextField above the text view; however, no SCM bundles (in textmate's repos) currently uses it.
Use dictionary literals
Table view sends ‘selection changed’ accessibility notification

Since we have the ‘drawAsHighlighted’ property it makes sense to make it post the accessibility notification when this property is set to YES and we do not have focus, rather than have the controller which change our selection be responsible for this.

A minor disadvantage is that there are multiple ways to change a table view’s selection. We assume that ‘selectRowIndexes:extend:’ is the canonical way to do it (and all code that wants to trigger VO notifications should use that method).
Setup the OakChooser controller as window’s next responder

This means any unhandled keyDown: ends up being overridable by OakChooser.
Refactor how we send text field movement keys to a table view

The code is now easier to reuse.
Render bundle item table view as focused for key equivalent input

This is only when we are not recording a key, and the table view will be properly rendered as highlighted in this mode.
Better first responder observing for shared focus with table view
Set key equivalent view to have “shared focus” with table view
Send diffs to a separate window
Rework the commit window as a sheet (document modal)

Previously, the commit window was changed from a "always on top" window to a more typical window that could be minimized or sent to the background. While this made viewing the diffs more convenient, we could easily loose track of it or at worst end up with multiple dangling commit windows. By making it document modal, this prevents dangling windows. Furthermore, since the commit window is now attached to the main project window and the file browser already has the SCM status, we hide the file list by default and dropped the action button. Users can choose to show the file list via a checkbox and the action button's menu is still available via the file list's context menu.
Commit button title summarizes the number of files to be committed
Change checkbox to a disclosure button
Disclosure/Checkbox remembers state
CommitWindow: Make text view first responder after dismissing table