-
Notifications
You must be signed in to change notification settings - Fork 2
/
TODO.txt
395 lines (347 loc) · 10.2 KB
/
TODO.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
Master
------
x Base Setup
x Repository
x Library Template
x Build File
x Core System
x Event System
x Active Regions
x Dummy UI Element (Bang)
x Basic UI Components
x Button
x Toggle
x Slider
x Divider
x Label
x Widgets with Labels
x API Refinement
x Events (Mouse, Keyboard)
x Class Hierarchy
x Element Construction Pattern
x Callback Pattern
* Advanced Features
x Theme
x Automatic Layout
* Auto Connection (given a name, connects to methods or variables)
* Saving State
* Layout Adjustment
* Drawing Performance Optimization (Redraw only when changed)
* Multiple Layout Modes
* Keyboard shortcuts
* More UI Elements
x Vertical Slider
* Range Slider
* Text Input
* Radio Button
* XY Pad
* Label Button
* Label Toggle
* Drop Down List
* Docs
x Readme
* Code
* User Documentation
* Website
System
------
x fix preprocessor (welcomeMessage() not working) -> works on clean & build (non-fast)
x compiler warnings: [unchecked], [rawtypes]
x Proper dist and tagging
* Logger instead of System.out
* Faster build (reuse preprocessed files/tmp)
Documentation
-------------
* mention to use public callbacks in case something doesn't work (SecurityNanager)
Event System
------------
x List of Events
x Review Event Systems
x Processing
x OpenFrameworks
x ofxUI
x Mouse Events
x Support for different mouse buttons
* Keyboard Events
* Notion of Focus for a widget
Class Hierarchy / API
---------------------
* Main Class (PUI)
* Singleton vs. multiple instances
* Element Base Class / Widget
* Elements/Widgets
* Handle Events from PUI
* Data/State/Model
* Presentation/Rendering/View
* User Drawing
* User Event handling
* Event/Callback Pattern
* User controlled drawing
* User Events
* Widget creation (without classes)
X API Revision
--------------
x The matrix might be changed when the draw callback comes
x Widget Constructor: PUI as first Argument
x Revise public API (what should the user see)
x should UIEvents really be public? maybe just protected
x support for labeled widgets
x Generator Functions for Widgets in PUI
/ widget names (e.g. for label, id, auto connect)
/ how to best encapsulate base widget state (active, hover, pressed, focus, ...). who needs to see it?
/ how to encapsulate special element state (slider value, ...)
/ user callbacks
/ which events are defined -> documented, convention onEvent
/ callback arguments (whole object, relevant value, nothing)
/ element draw override (disable standard draw)
/ Modular Generator function: ui.new( "com.martinleopold.pui.widget.Bang", x, y, … );
/ Widgets in own package: com.martinleopold.pui.widget
/ PGraphics instead of PApplet? -> Can't use events then.
x Main Class
x show/hide ui
x test ui size and position
/ test ui drawing independence of sketch transformations
x Widgets
x constructor possibilities
x widgets with labels
x labels with 3 sizes
x Theme System
x add more themes
/ widgets need to be able to have a different theme?
x Grid System
x Default Sizes for widgets (based on grid)
x Padding based on grid
x Issues
/ OpenGL: widgedts don't render
x newRow(), newColumn() with Labels
x Labels optional for widgets
x Top down
x Base API
x Base Widgets (Slider, Button, Toggle, Label, Divider)
x Callbacks
/ Auto Connect
x Theme System
x Grid Layout
X Test Release
------------
x widgets with labels
x more themes
x theme api (PUI)
x grid: widget dimensions, grid api (PUI)
x public api review
x docs
X PUI API (now / later)
---------
x close public API
x static init
x chainability
x widget creation / generators
x remove layout debug out
x set grid, padding
x set theme
X Widget API (now / later)
------------
x remove UIEvents (forces public on ui callbacks methods)
/ name
x label size
x remove label interactions
/ create widgets without PUI ?
/ slider set min/max
x label sizes
X Revision 1/2
--------------
x on normal build create dist/pUI-xxx.zip (and delete old ones)
x loop through onDraw, onMouse (from Widget), label, noLabel (from WidgetWithLabel) with return type of respective class
/ override these 4 methods in all sub classes to return the correct type
x or use generics + getThis()
base methods don't need to be overridden in each subclass (only getThis)
widget needs to be subclassed using generics ??
x warnings: [unckecked], [rawtypes]
/ add credits to reza ali (visuals/theme)
* javadocs
x javadocs should only show public API
x exclude events package
x hide inner class ProcessingEventHandler -> exclude doclet
/ TWidget return type should show as actual class
X Layout
x how to deal with custom widget sizes and positions?
/ layout direction
/ should setting grid, font, padding have an effect on widgets created before?
x size(): next layout element starts to low
x at relayout (after size()) height of the element is higher (+10)
x position(): also has to big a gap
x widgets with labels: no gap after
x pinned algo: need to try next row (it might fit before the pin)
x pin algo: correctly set for next insertion point
x window padding at the bottom not respected
x layout: private functions for placing (w/o padding, setting next, etc)
x revise: setPosition and public position (and setSize/size)
x position() and size() should work in grid units
x placement bug w/position(1,1). pUI_test_9
x pinning algo bug: newColumn() with a pinned element. nextColumn() called too early!
x pinning algo bug: b3 placed next to big button
/ PUI
x custom size
x add default font as TTF
/ retrieve widgets
/ remove "add" prefix from widget generators?
/ theme
x overridable bg color
x review color themes (text not legible, bg color too light
/ Theme constants in PUI object ?
x review themes and define a specific background color for pui.
/ Widgets
x custom size
x custom position
/ state as methods instead of public fields?
/ connect should also work with methods (not only fields)
/ callbacks for multiple method signatures (e.g. Slider and float)
/ label position
/ name (default label, auto connect, retrieval)
/ widgets without PUI?
/ overridable themes
x custom drawing disables vanilla drawing? (-> needs access to state)
/ Slider
x min/max support
x vertical slider
/ show value in the UI ?
x review/fix slider mouseover
x Misc
x draw label without background
x divider needs to be resized
x can label be drawn with highlight color in certain circumstances for widget with label??
X Next
------
x Review TODOs
x List of Questions / Decisions
x Review Florians Feedback
x Release Revision 2 (v0.2)
General
* javadocs: TWidget return type should show as actual class
* remove events package from imports -> compile into separate events.jar
* different standard font
PUI
x test ui drawing independence of sketch transformations
* Modular Generator function: ui.new( "com.martinleopold.pui.widget.Bang", x, y, … );
* OpenGL: widgedts don't render
* retrieve widgets
* PGraphics rendering target can be set, in which case the rendering of the PGraphics into the canvas is disable
Layout
x redo column width, add a column gap
x it's apparent from pinning, that there is more space in a column than is used.
* outside placement warning doesn't work anymore, because of relayout
* layout direction
* rethink layout engine (difference between actual widget coordinates and internal ones. -> windowPadding)
* maybe rethink with pinning in mind, from the get-go
* infinite loop when adding a huge button (bigger than window)
Widgets
x element draw override: disable standard draw
* names (retrieval, auto connect, label)
* flexible callback arguments (no args, one value, whole object)
* be tolerant with existence of callbacks (i.e. don't fail when it doesn't exist)
* state as methods instead of public fields?
* connect should also work with methods (not only fields)
* callbacks for multiple method signatures (e.g. Slider and float)
* label position
* name (default label, auto connect, retrieval)
* widgets without PUI?
* overridable themes
* callbacks on specific objects: PUI.addButton().connect(thatObject,"methodOfThatObject");
* for onDraw() to be usable: need to access x,y,width,height,label
* warn if no callback could be attached
* output info when callbacks are attached
* connect to specific objects
* individual padding
Label
* background should wrap the whole text (including descenders)
Slider
* show value
? ability to connect to an int
Extra Widgets
* Text Input
* Range Slider
* Radio, Button
* MultiToggle, ToggleMatrix
* 2D Pad
* Graph
* (Knob)
Docs
* HTML Docs
* Demo Program ("real world example")
* Examples (Which?)
* Create own widgets
* Check out Docco: http://thelogbox.com/javascript-docco-for-java-files/
X Revision 2
------------
x changes since v0.1
Revision 3 (Friday 18.10.2013)
----------
x make decisions
x revise widget data API (*)
x auto connect (*)
* revise theme system (*)
* revise method naming
(*) ... has progress
Revision 4 (Friday 25.10.2013)
----------
* extra widgets
* range slider (!)
* text input (!)
* color picker
* multi select / drop down
Revision 5
----------
* Docs
* Sample program
X Next
------
x redo column width, add a column gap
x build p5 git
x update to jdk 7u40
x revert to 2.0.3
x find error
x submit patch
x OpenGL: widgedts don't render
x isolate problem : resetMatrix()
x post issue on github
x test with newest p5 build : issue persists
x fix onDraw()
x check doc tool (docco)
x connection utils
x how to callback void methods
x find callback methods only once, on event creation, not on every event
x connect to field (obj, name, type)
x connect to method (obj, name, args...)
x auto connect (obj, name, field type, args..., widget?)
x review features (what is necessary? what is an extension and can wait?)
x ask opinions on fields vs. methods
x make decisions
x revise widget constructors
x auto connect and callback options
10/17
-----
x incorporate feedback from Florian, Ben.
x discuss w/Florian
x new widget state / accessors
x new connection options for all widgets
/ theme revision
10/21
-----
x notes from pixdance project
10/22
-----
x color picker
10/25
-----
x fix opengl rendering
x fix P2D/P3D font rendering
x theme class revision
x method naming
x put out rev.3
x add opacity to color picker
x add label to color picker
x theme designer sketch
x default theme legibility
x check fonts w/beniamin
x colorpicker: lock on to slider on mousedown
x key support for button and toggle