1 ! Copyright (C) 2009 Slava Pestov.
2 ! See https://factorcode.org/license.txt for BSD license.
3 USING: accessors arrays assocs definitions.icons help
4 help.topics kernel math.rectangles models.arrow namespaces
5 sequences tools.crossref ui.gadgets ui.gadgets.glass
6 ui.gadgets.labeled ui.gadgets.search-tables ui.gadgets.tables
7 ui.gadgets.wrappers ui.gestures ui.images ui.operations ui.theme
9 FROM: ui.gadgets.wrappers => wrapper ;
10 IN: ui.tools.browser.popups
12 SINGLETON: link-renderer
14 M: link-renderer row-columns
15 drop first2 [ definition-icon <image-name> ] dip 2array ;
17 M: link-renderer row-value drop first ;
19 TUPLE: links-popup < wrapper ;
21 : <links-table> ( model quot -- table )
23 @ sort-articles [ article-title ] zip-with
24 ] <arrow> link-renderer [ second ] <search-table> dup table>>
25 [ invoke-primary-operation ] >>action
27 t >>selection-required?
33 : <links-popup> ( model quot title -- gadget )
34 [ <links-table> white-interior ] dip
35 popup-color <framed-labeled-gadget> links-popup new-wrapper ;
38 { T{ key-down f f "ESC" } [ hide-glass ] }
43 : show-links-popup ( browser-gadget quot title -- )
44 [ dup model>> ] 2dip <links-popup>
45 [ hand-loc get-global point>rect show-glass ] [ request-focus ] bi ; inline
47 : com-show-outgoing-links ( browser-gadget -- )
48 [ uses ] "Outgoing links" show-links-popup ;
50 : com-show-incoming-links ( browser-gadget -- )
51 [ usage ] "Incoming links" show-links-popup ;