rbcurse 1.5.0 → 1.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. data/Makefile +21 -0
  2. data/Manifest.txt +6 -0
  3. data/README.markdown +6 -4
  4. data/TODO +372 -0
  5. data/TODO2.txt +121 -0
  6. data/VERSION +1 -1
  7. data/examples/README.txt +67 -0
  8. data/examples/abasiclist.rb +33 -0
  9. data/examples/alpmenu.rb +42 -0
  10. data/examples/app.rb +859 -0
  11. data/examples/app.sample +17 -0
  12. data/examples/appdirtree.rb +74 -0
  13. data/examples/appemail.rb +191 -0
  14. data/examples/appemaillb.rb +308 -0
  15. data/examples/appgcompose.rb +315 -0
  16. data/examples/atree.rb +64 -0
  17. data/examples/common/file.rb +40 -0
  18. data/examples/common/rmail.rb +257 -0
  19. data/examples/data.txt +683 -0
  20. data/examples/data/README.markdown +9 -0
  21. data/examples/data/brew.txt +38 -0
  22. data/examples/data/color.2 +37 -0
  23. data/examples/data/gemlist.txt +60 -0
  24. data/examples/data/lotr.txt +12 -0
  25. data/examples/data/ports.txt +136 -0
  26. data/examples/data/tasks.txt +27 -0
  27. data/examples/data/todocsv.csv +28 -0
  28. data/examples/data/unix1.txt +21 -0
  29. data/examples/data/unix2.txt +11 -0
  30. data/examples/dbdemo.rb +495 -0
  31. data/examples/deprecated/appgmail.rb +952 -0
  32. data/examples/deprecated/splitp.rb +56 -0
  33. data/examples/deprecated/testscrolllb.rb +86 -0
  34. data/examples/deprecated/testscrollp.rb +88 -0
  35. data/examples/deprecated/testscrollta.rb +80 -0
  36. data/examples/deprecated/testscrolltable.rb +165 -0
  37. data/examples/deprecated/testsplit.rb +87 -0
  38. data/examples/deprecated/testsplit2.rb +123 -0
  39. data/examples/deprecated/testsplit3.rb +215 -0
  40. data/examples/deprecated/testsplit3_1.rb +244 -0
  41. data/examples/deprecated/testsplit3a.rb +215 -0
  42. data/examples/deprecated/testsplit3b.rb +237 -0
  43. data/examples/deprecated/testsplitta.rb +148 -0
  44. data/examples/deprecated/testsplittv.rb +142 -0
  45. data/examples/deprecated/testsplittvv.rb +144 -0
  46. data/examples/deprecated/testtpane.rb +215 -0
  47. data/examples/deprecated/testtpane2.rb +145 -0
  48. data/examples/deprecated/testtpanetable.rb +203 -0
  49. data/examples/dirtree.rb +88 -0
  50. data/examples/experimental/resultsetdemo.rb +280 -0
  51. data/examples/experimental/testmform.rb +35 -0
  52. data/examples/experimental/testscroller.rb +117 -0
  53. data/examples/experimental/teststackflow.rb +111 -0
  54. data/examples/menu1.rb +112 -0
  55. data/examples/multispl.rb +86 -0
  56. data/examples/newmessagebox.rb +131 -0
  57. data/examples/newtabbedwindow.rb +100 -0
  58. data/examples/newtesttabp.rb +121 -0
  59. data/examples/qdfilechooser.rb +68 -0
  60. data/examples/rfe.rb +1239 -0
  61. data/examples/rfe_renderer.rb +121 -0
  62. data/examples/sqlc.rb +454 -0
  63. data/examples/sqlm.rb +437 -0
  64. data/examples/sqlt.rb +408 -0
  65. data/examples/status.txt +68 -0
  66. data/examples/table1.rb +24 -0
  67. data/examples/term2.rb +84 -0
  68. data/examples/test1.rb +239 -0
  69. data/examples/test2.rb +674 -0
  70. data/examples/testapp.rb +44 -0
  71. data/examples/testapp2.rb +58 -0
  72. data/examples/testchars.rb +137 -0
  73. data/examples/testcombo.rb +91 -0
  74. data/examples/testkeypress.rb +66 -0
  75. data/examples/testlistbox.rb +113 -0
  76. data/examples/testmenu.rb +101 -0
  77. data/examples/testmulticomp.rb +70 -0
  78. data/examples/testmulticontainer.rb +94 -0
  79. data/examples/testmultispl.rb +199 -0
  80. data/examples/testree.rb +106 -0
  81. data/examples/testtable.rb +264 -0
  82. data/examples/testtabp.rb +107 -0
  83. data/examples/testtodo.rb +584 -0
  84. data/examples/testvimsplit.rb +112 -0
  85. data/examples/testwsshortcuts.rb +64 -0
  86. data/examples/testwsshortcuts2.rb +126 -0
  87. data/examples/todo.db +0 -0
  88. data/examples/todo.yml +191 -0
  89. data/examples/viewtodo.rb +574 -0
  90. data/lib/rbcurse/deprecated/README.markdown +12 -0
  91. data/lib/rbcurse/deprecated/rpad.rb +375 -0
  92. data/lib/rbcurse/deprecated/rscrollpane.rb +512 -0
  93. data/lib/rbcurse/deprecated/rsplitpane.rb +894 -0
  94. data/lib/rbcurse/deprecated/rsplitpane2.rb +1009 -0
  95. data/lib/rbcurse/deprecated/rviewport.rb +204 -0
  96. data/lib/rbcurse/deprecated/widgets/mapper.rb +130 -0
  97. data/lib/rbcurse/deprecated/widgets/rmessagebox.rb +348 -0
  98. data/lib/rbcurse/deprecated/widgets/rtabbedpane.rb +1158 -0
  99. data/lib/rbcurse/deprecated/widgets/rtabbedwindow.rb +167 -0
  100. data/lib/rbcurse/deprecated/widgets/scrollable.rb +301 -0
  101. data/lib/rbcurse/deprecated/widgets/stdscrwindow.rb +309 -0
  102. data/lib/ver/keyboard2.rb +170 -0
  103. data/test/test_rbcurse.rb +0 -0
  104. metadata +131 -9
@@ -0,0 +1,112 @@
1
+ # This is a new kind of splitpane, inspired by the vim editor.
2
+ # I was deeply frustrated with the Java kind of splitpane,
3
+ # which requires splitpanes within splitpanes to get several split.
4
+ # This is an attempt at getting many splits, keeping them at one level
5
+ # and keeping the interface as simple as possible, with minimal input
6
+ # from user.
7
+ # It usually takes a listbox or textview or textarea.
8
+ # It can also take an array, or string or hash.
9
+ # It supports moving the split, and increasing or decreasing the current box to some extent.
10
+ # Typically if the split is vertical, add stacks the components, one below the other.
11
+ # If horizontal, if will flow the components, to the right of previous. This can be overriden by passing
12
+ # type as :STACK or :FLOW.
13
+ #
14
+ # This does not support changing the orientation at run time, that's nice for demos, but a pain
15
+ # to get right, and results in a lot of extra code, meaning more bugs.
16
+ # TODO: create a class that contains component array and a pointer so it can give next/prev
17
+ # i am tired of maintaining this everywhere.
18
+ require 'rbcurse'
19
+ require 'rbcurse/extras/widgets/rlistbox'
20
+ require 'rbcurse/core/widgets/rtextview'
21
+ require 'rbcurse/extras/widgets/rvimsplit'
22
+
23
+ if $0 == __FILE__
24
+ class Tester
25
+ def initialize
26
+ acolor = $reversecolor
27
+ end
28
+ def run
29
+ @window = VER::Window.root_window
30
+ @form = Form.new @window
31
+
32
+ h = 20; w = 75; t = 3; l = 4
33
+
34
+ vf = :H
35
+ @vim = VimSplit.new @form, {:row => 2, :col => 5, :width => :EXPAND, :height => 25, :orientation => vf, :weight => 0.6}
36
+ lb = Listbox.new nil, :list => ["ruby","perl","lisp","java", "scala"] , :name => "mylist"
37
+ lb1 = Listbox.new nil, :list => ["roger","borg","laver","edberg", "sampras","ashe"] , :name => "mylist1"
38
+
39
+ lb2 = Listbox.new nil, :list => `gem list --local`.split("\n") , :name => "mylist2"
40
+
41
+ alist = %w[ ruby perl python java jruby macruby rubinius rails rack sinatra gawk zsh bash groovy]
42
+ str = "Hello people of this world.\nThis is a textbox.\nUse arrow keys, j/k/h/l/gg/G/C-a/C-e/C-d/C-b\n"
43
+ str << alist.join("\n")
44
+ stfl = vf == :V ? :FLOW : :STACK
45
+ @vim.add lb, :FIRST, :AUTO
46
+ @vim.add lb1, :FIRST, :AUTO #nil #0.7:AUTO
47
+ @vim.add ["mercury","venus","earth","mars","jupiter", "saturn"], :FIRST, :AUTO
48
+ @vim.add alist, :FIRST, 0.4, stfl
49
+ #@vim.add alist, :FIRST, nil, stfl
50
+ @vim.add alist.shuffle, :FIRST, 0.6, stfl
51
+ @vim.add lb2, :SECOND, :AUTO
52
+ @vim.add str, :SECOND, :AUTO
53
+ ok_button = Button.new @form do
54
+ text "+"
55
+ name "+"
56
+ row 27
57
+ col 10
58
+ end
59
+ #ok_button.command { |form| @vim.weight(@vim.weight + 0.1) }
60
+ ok_button.command { @vim.increase_weight }
61
+
62
+
63
+ k_button = Button.new @form do
64
+ text "-"
65
+ name "-"
66
+ row 27
67
+ col 17
68
+ end
69
+ #k_button.command { |form| @vim.weight( @vim.weight - 0.1) }
70
+ k_button.command { |form| @vim.decrease_weight }
71
+
72
+ #
73
+ @help = "F10 to quit. "
74
+ RubyCurses::Label.new @form, {'text' => @help, "row" => 1, "col" => 2, "color" => "yellow"}
75
+ @form.repaint
76
+ @window.wrefresh
77
+ Ncurses::Panel.update_panels
78
+ ctr = 0
79
+ row = 2
80
+ while((ch = @window.getchar()) != Ncurses::KEY_F10 )
81
+ ret = @form.handle_key(ch)
82
+ @window.wrefresh
83
+ #ret = @vim.handle_key ch
84
+ if ret == :UNHANDLED
85
+ str = keycode_tos ch
86
+ $log.debug " UNHANDLED #{str} by Vim #{ret} "
87
+ end
88
+ end
89
+
90
+ @window.destroy
91
+
92
+ end
93
+ end
94
+ include RubyCurses
95
+ include RubyCurses::Utils
96
+ # Initialize curses
97
+ begin
98
+ # XXX update with new color and kb
99
+ VER::start_ncurses # this is initializing colors via ColorMap.setup
100
+ $log = Logger.new("rbc13.log")
101
+ $log.level = Logger::DEBUG
102
+ n = Tester.new
103
+ n.run
104
+ rescue => ex
105
+ ensure
106
+ VER::stop_ncurses
107
+ p ex if ex
108
+ puts(ex.backtrace.join("\n")) if ex
109
+ $log.debug( ex) if ex
110
+ $log.debug(ex.backtrace.join("\n")) if ex
111
+ end
112
+ end
@@ -0,0 +1,64 @@
1
+ # this is a test program, tests out tabbed panes. type F1 to exit
2
+ #
3
+ require 'rbcurse'
4
+ require 'rbcurse/core/util/widgetshortcuts'
5
+
6
+ include RubyCurses
7
+
8
+ class SetupMessagebox
9
+ include RubyCurses::WidgetShortcuts
10
+ def initialize config={}, &block
11
+ @window = VER::Window.root_window
12
+ @form = Form.new @window
13
+ end
14
+ def run
15
+ _create_form
16
+ @form.repaint
17
+ @window.wrefresh
18
+ while ((ch = @window.getchar()) != 999)
19
+ break if ch == ?\C-q.getbyte(0)
20
+ @form.handle_key ch
21
+ @window.wrefresh
22
+ end
23
+ end
24
+ def _create_form
25
+ widget_shortcuts_init
26
+ stack :margin_top => 2, :margin_left => 3, :width => 50 , :color => :cyan, :bgcolor => :black do
27
+ label :text => " Details ", :color => :blue, :attr => :reverse, :width => :expand, :justify => :center
28
+ blank
29
+ field :text => "john", :attr => :reverse, :label => "%15s" % ["Name: "]
30
+ field :label => "%15s" % ["Address: "], :width => 15, :attr => :reverse
31
+ check :text => "Using version control", :value => true, :onvalue => "yes", :offvalue => "no"
32
+ check :text => "Upgraded to Lion", :value => false, :onvalue => "yes", :offvalue => "no"
33
+ blank
34
+ radio :text => "Linux", :value => "LIN", :group => :os
35
+ radio :text => "OSX", :value => "OSX", :group => :os
36
+ radio :text => "Window", :value => "Win", :group => :os
37
+ flow :margin_top => 2, :margin_left => 4, :item_width => 15 do
38
+ button :text => "Ok"
39
+ button :text => "Cancel"
40
+ button :text => "Apply"
41
+ end
42
+ end
43
+ end
44
+
45
+ end
46
+ if $0 == __FILE__
47
+ # Initialize curses
48
+ begin
49
+ # XXX update with new color and kb
50
+ VER::start_ncurses # this is initializing colors via ColorMap.setup
51
+ $log = Logger.new((File.join(ENV["LOGDIR"] || "./" ,"rbc13.log")))
52
+ $log.level = Logger::DEBUG
53
+ tp = SetupMessagebox.new()
54
+ buttonindex = tp.run
55
+ $log.debug "XXX: MESSAGEBOX retirned #{buttonindex} "
56
+ rescue => ex
57
+ ensure
58
+ VER::stop_ncurses
59
+ p ex if ex
60
+ p(ex.backtrace.join("\n")) if ex
61
+ $log.debug( ex) if ex
62
+ $log.debug(ex.backtrace.join("\n")) if ex
63
+ end
64
+ end
@@ -0,0 +1,126 @@
1
+ # this is a test program, tests out widget shortcuts. type C-q to exit
2
+ #
3
+ require 'rbcurse'
4
+ require 'rbcurse/core/util/widgetshortcuts'
5
+
6
+ include RubyCurses
7
+ include RubyCurses::Utils
8
+
9
+ class SetupMessagebox
10
+ include RubyCurses::WidgetShortcuts
11
+ def initialize config={}, &block
12
+ @window = VER::Window.root_window
13
+ @form = Form.new @window
14
+ end
15
+ def run
16
+ _create_form
17
+ @form.repaint
18
+ @window.wrefresh
19
+ catch(:close) do
20
+ while ((ch = @window.getchar()) != 999)
21
+ break if ch == ?\C-q.getbyte(0)
22
+ @form.handle_key ch
23
+ @window.wrefresh
24
+ end
25
+ end # catch
26
+ end
27
+ def _create_form
28
+ widget_shortcuts_init
29
+ stack :margin_top => 1, :width => :expand do
30
+ label :text => " Details ", :color => :cyan, :attr => :reverse, :width => :expand, :justify => :center
31
+ flow :margin_top => 1, :margin_left => 4, :item_width => 50 do
32
+ stack :margin_top => 0, :margin_left => 3, :width => 50 , :color => :cyan, :bgcolor => :black do
33
+ box do
34
+ field :text => "steve", :attr => :reverse, :label => "%15s" % ["Name: "]
35
+ field :label => "%15s" % ["Address: "], :width => 15, :attr => :reverse
36
+ blank
37
+ check :text => "Using version control", :value => true, :onvalue => "yes", :offvalue => "no" do |eve|
38
+ unless eve.item.value
39
+ alert "NO VC! We need to talk"
40
+ end
41
+ end
42
+ check :text => "Upgraded to Lion", :value => false, :onvalue => "yes", :offvalue => "no" do |eve|
43
+ unless eve.item.value
44
+ alert "You goin back to Snow Leopard?"
45
+ end
46
+ end
47
+ end # box
48
+ end
49
+ stack :margin_top => 0, :margin_left => 3, :width => 50 , :color => :cyan, :bgcolor => :black do
50
+ box :title => "OS Maintenance", :margin_left => 2 do
51
+ radio :text => "Linux", :value => "LIN", :group => :os
52
+ radio :text => "OSX", :value => "OSX", :group => :os
53
+ radio :text => "Window", :value => "Win", :group => :os
54
+ blank
55
+ flow :item_width => 15 do
56
+ button :text => "Install" do
57
+ # you can avoid this by giving the radio buttons your own Variable (see test2.rb)
58
+ choice = @variables[:os].value
59
+ case choice
60
+ when ""
61
+ alert "Select an OS"
62
+ when "OSX", "LIN"
63
+ alert "Good choice"
64
+ else
65
+ alert "Pfft !"
66
+ end
67
+ end
68
+ button :text => "Uninstall"
69
+ button :text => "Delete"
70
+ end
71
+ end # box
72
+ end
73
+ end # flow
74
+ #button :text => "Execute"
75
+ text = [" #[reverse]Unix Philosophy #[end] ",
76
+ "#[fg=green, underline]Eric Raymond#[end] in his book, #[fg=green, underline]The Art of Unix Programming#[end] summarized the Unix philosophy.",
77
+ " ",
78
+ "Rule of #[fg=yellow]Modularity#[end]: Write simple parts connected by clean interfaces.",
79
+ "Rule of #[fg=blue]Clarity#[end]: #[bold]Clarity#[end] is better than cleverness.",
80
+ "Rule of #[fg=red]Separation#[end]: Separate #[bold]policy#[end] from mechanism; separate interfaces from engines.",
81
+ "Rule of #[fg=green]Simplicity#[end]: Design for #[bold]simplicity;#[end] add complexity only where you must.",
82
+ "Rule of #[fg=magenta]Parsimony#[end]: Write a big program only when it is clear by demonstration that nothing else will do.",
83
+ "Rule of #[fg=cyan]Representation#[end]: Fold knowledge into #[bold]data#[end] so program logic can be stupid and robust"]
84
+ text << "For more check: #[underline]http://en.wikipedia.org/wiki/Unix_philosophy#Eric_Raymond#[end]"
85
+ formatted = []
86
+ #text.each { |line| formatted << @window.convert_to_chunk(line) }
87
+
88
+ #textview :text => formatted
89
+ #textview do |t| t.formatted_text(text, :tmux) end
90
+ t = textview :title => 'tmux format'
91
+ t.formatted_text(text, :tmux)
92
+ t1 = textview :title => 'ansi formatted document'
93
+ text = File.open("data/color.2","r").readlines
94
+ t1.formatted_text(text, :ansi)
95
+
96
+ flow do
97
+ #box do
98
+ button :text => " Ok " do alert "Pressed okay" end
99
+ button :text => "Cancel" do confirm "Do you wish to Quit?" ; throw :close; end
100
+ button :text => "Apply "
101
+ #end
102
+ end
103
+
104
+ end
105
+
106
+ end
107
+ end
108
+ if $0 == __FILE__
109
+ # Initialize curses
110
+ begin
111
+ # XXX update with new color and kb
112
+ VER::start_ncurses # this is initializing colors via ColorMap.setup
113
+ $log = Logger.new((File.join(ENV["LOGDIR"] || "./" ,"rbc13.log")))
114
+ $log.level = Logger::DEBUG
115
+ tp = SetupMessagebox.new()
116
+ buttonindex = tp.run
117
+ $log.debug "XXX: MESSAGEBOX retirned #{buttonindex} "
118
+ rescue => ex
119
+ ensure
120
+ VER::stop_ncurses
121
+ p ex if ex
122
+ p(ex.backtrace.join("\n")) if ex
123
+ $log.debug( ex) if ex
124
+ $log.debug(ex.backtrace.join("\n")) if ex
125
+ end
126
+ end
data/examples/todo.db ADDED
Binary file
data/examples/todo.yml ADDED
@@ -0,0 +1,191 @@
1
+ ---
2
+ - - FIXME
3
+ - MSGBOX
4
+ - 5
5
+ - "Confirm dialog: box vertical line overwritten in 2 spots"
6
+ - TODO
7
+ - - FIXME
8
+ - MSGBOX
9
+ - 5
10
+ - "Confirm dialog: use normal key as hotkey also"
11
+ - TODO
12
+ - 2009-01-20 11:44:49.753534 +05:30
13
+ - - FIXME
14
+ - MSGBOX
15
+ - 5
16
+ - "Confirm dialog: arrow keys not navigating anylonger"
17
+ - TODO
18
+ - 2009-01-20 11:45:27.031136 +05:30
19
+ - - FIXME
20
+ - GEN
21
+ - 9
22
+ - Message Box sizing
23
+ - TODO
24
+ - 2009-01-22 20:39:21.220964 +05:30
25
+ - - DONE
26
+ - LIST
27
+ - 5
28
+ - case insensitive char search in list and combo
29
+ - TESTED
30
+ - 2009-02-21 20:43:05.662213 +05:30
31
+ - - DONE
32
+ - LIST
33
+ - 5
34
+ - case insensitive char search in list and combo
35
+ - TESTED
36
+ - 2009-02-21 20:44:29.277384 +05:30
37
+ - - DONE
38
+ - TABLE
39
+ - 5
40
+ - increase the maxlen of this field please. Let us see how it goes.
41
+ - TESTED
42
+ - - DONE
43
+ - TABLE
44
+ - 5
45
+ - Can we disable down arrow in Chkbox in table?
46
+ - TESTED
47
+ - 2009-01-19 00:00:00.242912 +05:30
48
+ - - DONE
49
+ - TABLE
50
+ - 0
51
+ - editing on enter
52
+ - TESTED
53
+ - 2009-01-19 01:37:00.242912 +05:30
54
+ - - DONE
55
+ - TABLE
56
+ - 5
57
+ - cell editors pcol is not being reset each time
58
+ - TESTED
59
+ - 2009-01-19 17:47:00.419937 +05:30
60
+ - - DONE
61
+ - TABLE
62
+ - 5
63
+ - Use TAB for intercell navig. use M-TAB for next f
64
+ - TESTED
65
+ - 2009-01-20 00:38:19.606544 +05:30
66
+ - - DONE
67
+ - TABLE
68
+ - 5
69
+ - Searching
70
+ - TESTED
71
+ - 2009-02-21 20:42:10.140948 +05:30
72
+ - - DONE
73
+ - TABLE
74
+ - 3
75
+ - Columns editable or not
76
+ - TESTED
77
+ - 2009-02-21 20:43:10.386261 +05:30
78
+ - - DONE
79
+ - TABLE
80
+ - 1
81
+ - Any way to start a table with no data and pop late
82
+ - TODO
83
+ - 2009-02-21 20:43:33.172668 +05:30
84
+ - - DONE
85
+ - TABLE
86
+ - 3
87
+ - Columns editable or not
88
+ - TESTED
89
+ - 2009-02-21 20:44:33.451462 +05:30
90
+ - - DONE
91
+ - TABLE
92
+ - 1
93
+ - Any way to start a table with no data and pop late
94
+ - TODO
95
+ - 2009-02-21 20:44:48.137930 +05:30
96
+ - - DONE
97
+ - GEN
98
+ - 5
99
+ - Make widget of Keylabelprinter
100
+ - TESTED
101
+ - 2009-01-20 00:38:43.052790 +05:30
102
+ - - DONE
103
+ - GEN
104
+ - 5
105
+ - "Added Action class shared by Button Menuitem "
106
+ - TESTED
107
+ - 2009-01-22 18:08:28.026892 +05:30
108
+ - - DONE
109
+ - GEN
110
+ - 5
111
+ - "Added PopupMenu 2009-01-22 18:09 "
112
+ - TESTED
113
+ - 2009-01-22 18:09:34.437147 +05:30
114
+ - - TODO
115
+ - LIST
116
+ - 0
117
+ - call on_enter and on_leave of component
118
+ - TOTEST
119
+ - 2009-01-19 15:38:27.091120 +05:30
120
+ - - TODO
121
+ - LIST
122
+ - 5
123
+ - case insensitive char search in list and combo
124
+ - TESTED
125
+ - - TODO
126
+ - TABLE
127
+ - 3
128
+ - Columns editable or not
129
+ - TESTED
130
+ - - TODO
131
+ - TABLE
132
+ - 1
133
+ - Any way to start a table with no data and pop late
134
+ - TODO
135
+ - - TODO
136
+ - TABLE
137
+ - 1
138
+ - table.set_data should check if models already created.
139
+ - TODO
140
+ - - TODO
141
+ - TABLE
142
+ - 5
143
+ - Set column_class in TableColumn, to avoid hassles
144
+ - TODO
145
+ - - TODO
146
+ - TABLE
147
+ - 2
148
+ - Table sorting and filtering is required - using VIEW
149
+ - TODO
150
+ - - TODO
151
+ - TABLE
152
+ - 5
153
+ - Table height and col widths auto sizing or FILLING extra space.
154
+ - TODO
155
+ - - TODO
156
+ - TEXTAREA
157
+ - 9
158
+ - "Textarea: wrap options NONE, COLUMN"
159
+ - TODO
160
+ - 2009-01-20 01:04:15.084400 +05:30
161
+ - - TODO
162
+ - GEN
163
+ - 5
164
+ - Modified should check if value changed, not UP etc
165
+ - TOTEST
166
+ - - TODO
167
+ - GEN
168
+ - 5
169
+ - Give a decent FileChooser and FileSaver
170
+ - TODO
171
+ - - TODO
172
+ - GEN
173
+ - 5
174
+ - Focus Traversable vs focusable
175
+ - TODO
176
+ - - TODO
177
+ - GEN
178
+ - 5
179
+ - "Action class: fire event for listeners"
180
+ - TODO
181
+ - 2009-01-22 20:09:50.624075 +05:30
182
+ - - TODO
183
+ - FIELD
184
+ - 5
185
+ - "Field: OVERWRITE Mode"
186
+ - TODO
187
+ - - TODO
188
+ - FIELD
189
+ - 5
190
+ - "Field: Auto-skip when reaching end of maxlen"
191
+ - TODO