I've talked with Dmitry and we agreed, then clicking on preset itself to select it is quite useful from interface viewpoint too. So we all agree with you on this one.
I'll try to finalize here:
In there database there will be 2+ presets:
- default (without name as for now)
- sandbox (used for temporary data storage)
- user preset 1
- user preset 2
- ....
- user preset N
Sandbox preset won't be visible in menus, but it will be used to temporarily store columns/filters/per-page until user decides to save them under preset of his choice OR create new preset. Sandbox preset will be used ONLY, when user has selected "user preset X". This will ensure, that "user preset X" isn't unintentionally changed by system until user decides to do that manually. When user is using "user preset X" and decides to create a new preset or update existing one, then all data from sandbox preset will be copied to the destination preset.
Switching to "user preset X" will overwrite sandbox preset contents with contents from selected preset. Then sandbox preset will be used to store any change user will made and to protect "user preset X" for unintended changes.
When default preset is selected, then changes will be saved directly to it without use of sandbox preset. This will ensure backwards compatibility and grid will work as before when presets are not used at all. When user is using default preset and decides to create a new preset or update existing one, then all data from default preset will be copied to destination preset.
Technically current preset name will be stored in session, but actual preset data read/write operations will happen on sandbox preset, when "user preset X" is being used.
Visually I agree with Dmitry's version of Phil's proposal:
Presets
-- user preset A - [update] - [x]
-- user preset B - [update] - [x]
-- create new preset...
Where "Presets" is top submenu under current "View Menu". Maybe update and delete links will be more intuitive if replaced with nice small icons, maybe like our save/cancel toolbar buttons, but smaller.
Yes, we can ask user confirmation before actually deleting preset from database. Maybe preset deletion won't be causing page refresh so I can quickly delete more then one of them.
Option of displaying presets in left menu is temporarily discarded due inability to fully control it.