2009-01-05 18:31:21 -05:00
|
|
|
! Copyright (C) 2008, 2009 Slava Pestov
|
2008-12-19 03:37:40 -05:00
|
|
|
! See http://factorcode.org/license.txt for BSD license.
|
|
|
|
USING: accessors kernel delegate fry sequences
|
2008-12-22 01:54:08 -05:00
|
|
|
models models.search models.delay calendar locals
|
2008-12-19 03:37:40 -05:00
|
|
|
ui.gadgets.editors ui.gadgets.labels ui.gadgets.scrollers
|
|
|
|
ui.gadgets.tables ui.gadgets.tracks ui.gadgets.borders
|
2009-02-02 01:00:45 -05:00
|
|
|
ui.gadgets.buttons ui.gadgets ;
|
2008-12-19 03:37:40 -05:00
|
|
|
IN: ui.gadgets.search-tables
|
|
|
|
|
|
|
|
TUPLE: search-field < track field ;
|
|
|
|
|
|
|
|
: clear-search-field ( search-field -- )
|
|
|
|
field>> editor>> clear-editor ;
|
|
|
|
|
|
|
|
: <clear-button> ( search-field -- button )
|
|
|
|
"X" swap '[ drop _ clear-search-field ] <roll-button> ;
|
|
|
|
|
|
|
|
: <search-field> ( model -- gadget )
|
2009-02-02 01:00:45 -05:00
|
|
|
horizontal search-field new-track
|
2008-12-19 03:37:40 -05:00
|
|
|
{ 5 5 } >>gap
|
|
|
|
"Search:" <label> f track-add
|
|
|
|
swap <model-field> 10 >>min-width >>field
|
|
|
|
dup field>> 1 track-add
|
|
|
|
dup <clear-button> f track-add ;
|
|
|
|
|
|
|
|
TUPLE: search-table < track table field ;
|
|
|
|
|
2009-01-16 17:39:32 -05:00
|
|
|
! A protocol with customizable slots
|
|
|
|
SLOT-PROTOCOL: table-protocol
|
|
|
|
renderer
|
|
|
|
filled-column
|
|
|
|
column-alignment
|
|
|
|
action
|
|
|
|
hook
|
|
|
|
font
|
|
|
|
text-color
|
|
|
|
selection-color
|
|
|
|
focus-border-color
|
|
|
|
mouse-color
|
|
|
|
column-line-color
|
|
|
|
selection-required?
|
|
|
|
selected-value ;
|
2008-12-19 03:37:40 -05:00
|
|
|
|
|
|
|
CONSULT: table-protocol search-table table>> ;
|
|
|
|
|
|
|
|
:: <search-table> ( values quot -- gadget )
|
|
|
|
f <model> :> search
|
2009-02-02 01:00:45 -05:00
|
|
|
vertical search-table new-track
|
2008-12-19 03:37:40 -05:00
|
|
|
values >>model
|
|
|
|
search <search-field> >>field
|
2009-02-02 01:00:45 -05:00
|
|
|
dup field>> { 2 2 } <filled-border> f track-add
|
2008-12-22 01:54:08 -05:00
|
|
|
values search 500 milliseconds <delay> quot <search> <table> >>table
|
2008-12-19 03:37:40 -05:00
|
|
|
dup table>> <scroller> 1 track-add ;
|
|
|
|
|
|
|
|
M: search-table model-changed
|
|
|
|
nip field>> clear-search-field ;
|