         n = (info for info in @props.file_use_list when info.notify).length
         update_global_notify_count(n)
 
+    render_show_all: ->
+        if @_num_missing
+            <Button key="show_all" onClick={(e)=>e.preventDefault(); @setState(show_all:true)}>
+                Show {@_num_missing} more
+            </Button>
+
+    render_show_less: ->
+        n = @_visible_list.length - SHORTLIST_LENGTH
+        if n > 0
+            <Button key="show_less" onClick={(e)=>e.preventDefault(); @setState(show_all:false)}>
+                Show {n} less
+            </Button>
+
+    render_toggle_all: ->
+        <div key='toggle_all' style={textAlign:'center', marginTop:'2px'}>
+            {if @state.show_all then @render_show_less() else @render_show_all()}
+        </div>
+
     render: ->
+        setTimeout(resize_notification_list, 0)
         @render_number()
         <div>
             <Row key='top'>

        account_id    : rtypes.string.isRequired

    getInitialState: ->
        search : ''
        cursor : 0

    render_search_box: ->
        <span key='search_box' className='smc-file-use-notifications-search' >
            <SearchInput
                placeholder   = "Search..."
                default_value = {@state.search}
                on_change     = {(value)=>@setState(search:value); setTimeout(resize_notification_list, 0)}
                on_submit     = {@open_selected}
                on_escape     = {(before)=>if not before then hide_notification_list();@setState(cursor:0)}
                on_up         = {=>@setState(cursor: Math.max(0, @state.cursor-1))}

MARK_SEEN_TIME_S = 3
# Length to truncate project title and filename to.
TRUNCATE_LENGTH = 50
# Number of notifications to show if "Show All" isn't clicked
SHORTLIST_LENGTH = 7


# standard modules
