Collapsible does not share common class structure with HorizontalCollapsible
These two widgets share similar overall API, but do not implement a common interface or extend an abstract class. Joining these two with a common interface could shorten both of their implementations (no code duplication) and simplify tools like LML.
I agree. It's kind of messy now because there is CollapsibleWidget (since 0.3.1) and HorizontalCollapsibleWidget (since 1.2.5). Not sure what to do, I could either:
- break API; rename
CollapsibleWidgettoVerticalCollapsibleWidgetand addCollapsibleWidgetinterface. If we do renaming we can also consider droppingWidgetsuffix, not sure if it servers any purpose here - do not rename and add
Collapsibleinterface. I would rather avoidIprefix for interfaces
What do you think would be better?
There's always abstract class AbstractCollapsibleWidget, where you could move the common code. You wouldn't break the API (although this might make sense for naming consistence) and would only slightly affect both of their class hierarchies. This shouldn't be an issue for most users.
But yeah, if you're not afraid to break the API - or keep the classes deprecated for the next release - I'd probably go with Collapsible interface, AbstractCollapsible providing basic method implementations (because we all love Java 6 and lack of default methods) and the actual widgets named HorizontalCollapsible/VerticalCollapsible for code conciseness.