         md_edit_ids = @store.get('md_edit_ids')
         if md_edit_ids.contains(id)
             return
-        if not @store.is_cell_editable(id)
-            throw CellWriteProtectedException
+        return if @store.check_edit_protection(id, @)
         @setState(md_edit_ids : md_edit_ids.add(id))
 
     set_md_cell_not_editing: (id) =>

    # Set the input of the given cell in the syncdb, which will also change the store.
    # Might throw a CellWriteProtectedException
    set_cell_input: (id, input, save=true) =>
        @_checked_set
            type  : 'cell'
            id    : id
            input : input

            @move_cursor_before(selected[0])
        not_deletable = 0
        for id in selected
            if not @store.is_cell_deletable(id)
                not_deletable += 1
            else
                @_delete({type:'cell', id:id}, false)
        if sync
            @_sync()
        if not_deletable > 0
