SwingX Task List


Task
Comments
Status

Documentation

most of the methods are not properly documented even in its JavaDoc. This needs to be changed, the library is too complicated for the “see sources for the logic” type of learning. There are 3 levels of documentation that need to be addressed, listed in order of importance:

A) HowTo's, code snippets, tip & tricks, etc Patrick's started a wiki with JXTable HowTo
started
B) JavaDoc

C) High level "whitepaper" documentation

Other Meta-Issues

I18n: all strings and resources definitions should be replaced with the call to UIManager, even if these are bogus calls. Good example is JXDatePicker. added a default swingx framework properties file and made the LookAndFeelAddons load it.
see JXTable for an example
started
UI:Classes which don't have their own UI but use existing Swing components for UI (like *dialogs) should be checked for the UI changing procedure. Ensure proper behavior when changing look and feels for all components. special care needed for all components which are only temporarily contained in the container hierarchy (mostly renderers, editors)
see JXTable for an example
started
Code cleanup: there is a lot of the commented code that became obsolete and non-actual. For the easiness of future development is would be nice to clean up all the code.
foreever in progress...........
Coding Style: reformat all components according one coding style? Currently some components are looks like garbage in terms of indentation. The coding style will be the same as is used by Swing and the JDK development team. Coding guidelines must be written and published on the SwingLabs website, and be used throughout the swinglabs projects. (TODO Insert link to coding style)

"Eat our own food" - Consistently use JXPanel (or other JX* where available) throughout SwingX and throughout the demos.




Code - swingx

* improve searching facilities: add reusable FindModel The current name is "PatternModel"
started
* PaintUtils: move to swingx.utils
done
* JXRootPane: there are links in JavaDoc that leads to “org.jdesktop.swing.*” sometime during community cleanup
done
* JXTable
- extract tableHeader related behaviour into JXTableHeader; make sure we can add header grouping later on
done
- improve column configuration (need some pluggable Configurator which is arbitrarily dumb by default but can be replaced if the context is MetaData-aware) The basic support is added: ColumnFactory in swingx and ColumnFactoryExt in databinding. Need to be filled with value...
done
- move some of the interactive tests into the demos to demonstrate the capabilities The demos are JXTableDemo and DecoratorDemo
done
- bug fixing (todo - list and prioritize most annoying misbehaviour)
 #169 - header renderer must not override LF specific look
not sure if it is completely solved
related issues: #25 - JN'Table and Mac
done
#227 (fun) - expose auto-resize in columnControl
added localizable bound actions to JXTable's actionMap, used in ColumnControl
done
 #85 cleanup in setTableHeader
removed - use super: JXTableHeader takes care of swingx specifics
done
 #101 position of re-showing columns - fixed?

done
#109 cursor shape?

done
 #192 visibility tracking in column control - fixed?

done
#11-swingx - add api to sort programmatically (interactive sorter)

postponed
#119 setModel and sorting - exception?

done
#125 setFilters(null) and update?

done
 #149 individual rowheights lost when sorting/filtering
added RowSizing for coordinate mapping between model/view
dirty: rowModel private to super - reflection with access mod needed
started
 #187 keep sorter when filtering
solved during filter/sorter overhaul
done
* JXTreeTable tree method exposure (todo - list most wanted methods) in discussion
 #186 - getRowForPath

done
#62, #200, #203 -- access to listeners

done
 #70 - convertValueToText (can be closed?)

open
* JXTreeTable bugs

#52 - visible gridlines? columnMargin == 1?

open
 #120 - collapse while editing --> datacorruption

open
#131 - renderer, setRowHeight?

postponed
#136 - support setRowHeight(int, int)

postponed
#10(swingx) - treetable not updated on property change

done
#204 - support sorting/filtering

postponed
* Replace JXHyperlink code with code from JXHyperlinkButton (merge with L2FProd?). Clean up. Use JXHyperlink as the final name
done
* summarize hyperlink spec from forum discussion

* use/enable hyperlink in JXList/JXTree/JXTreeTable done for JXList, JXTable
started
* cleanup LinkRenderer (respect and visualize selection, focused state), possible rename

* merge Thomas' autocomplete into SwingX
done
* JXGlassPane: dismiss on arbitrary click? dismiss on Esc?

* remove JXListPanel (auto-insert into Scrollpane is JN* behaviour)
done
* consistently use JXPanel (or other JX* where available) throughout swingx (and demos)
started
* extract logic from view in JX<special>Dialogs/Panels

* status of JXStatusBar?

* status of MouseMessagingHandler? really use the long description (probably doesn't fit into the visible part of a textfield/label)? relation to RolloverProducer?

* remove ScrollUp*, (replace ScrollUpLayout with VerticalLayout)
done
* add JXCollapsible, JXTaskPane, JXTaskPaneContainer
done



Code - swingx.util

* SwingWorker, EOL it, need to know when to kill it (in Mustang, in separate SwingLabs project) (UPDATE: I looked into SwingWorker, it is only being used by JDNC right now. I'd like to get it out of SwingX since there is another SwingLabs project for it, and SwingX doesn't require it)

* Remove UIManagerUtils in favor of AddOn support

* Build in preferences support
postponed
* Spatial - the name has the notion of 3D when in fact it's an area in a plane, remove and use Rectangle instead

* Refactor WindowUtils as needed

* Link needs to be refactored as HyperlinkModel renamed LinkModel, moved into swingx
done

Code - swingx.plaf

* add per-component LF support (ComponentAddon/LFAddOn)
done
* change components with ui-delegates (JXTitledPanel, ...) to use the addon api
done
* Remove ScrollUp PLAF support
done
* Refactor JXTitledPanel PLAF support. Use gradient laf, except on Mac use Glossy laf

Code - swingx.decorator

* use functors

* try to further abstract the filter/sort/highlight pipelining functionality for re-use across "collection views" (table, list, tree) moved responsibility for interactive sorter into pipeline
abstracted Selection for model/view coordinate mapping of selection
added filter support to JXList
started
* Pipelines need to be mutable, modifiable (there's an issue filed about it as well), but I'm not too convinced that this is an easy to implement enhancement, probably there's a reason they are not Highlighter/-Pipeline is changed to fire a state change on modification/mutation

* bug fixing (todo - list of most prominent misbehaviour)
#222 patternfilter exception


#189, #221, #214 sorting and classcastexception (fix suggested)

done
#218 - allow mutable pipelines (add/remove filters)


Code - swingx.calendar

* move DateSpan & DateUtils to swingx.util

* move JXMonthView to swingx

* finish implementing new LAF for components (Josh Outwater)

Code - swingx.border

* confirm code review on MatteBorderExt

* Implement Romain's DropShadowBorder code for alternate width shadows

Code - swingx.auth

* SaveMode should be an Enum

* Need more convenience methods

* I don't like embedding the Dialog in a JXLoginPanel

* Why are we using a class for the resource bundle instead of a file?

* Check Shai Almog's login dialog enhancements

Code - swingx.action

* Debug makes no sense here, should be moved or removed

* Rename "TargetableAction" and "BoundAction"

* Change so Swing components are targetable without having to implement "Targetable"

* Consider changing "Targetable" to use an ActionMap instead of it's current 3 methods

* Look into simplifying the architecture
future

Code - swingx.icon

* Consider moving these?




---------------------------------------------------------------------




Thoughts

swingx.decorator

* Filtering

- Can filters modify data? no

- The first two sorting "serious problem" bullets in the online documentation are straw men

- Sorting is weird -- sorters within and without a pipeline?

- Filter should not be stateful!!!!