vis-ui icon indicating copy to clipboard operation
vis-ui copied to clipboard

Collapsible does not share common class structure with HorizontalCollapsible

Open czyzby opened this issue 9 years ago • 2 comments

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.

czyzby avatar Apr 02 '17 14:04 czyzby

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 CollapsibleWidget to VerticalCollapsibleWidget and add CollapsibleWidget interface. If we do renaming we can also consider dropping Widget suffix, not sure if it servers any purpose here
  • do not rename and add Collapsible interface. I would rather avoid I prefix for interfaces

What do you think would be better?

kotcrab avatar Apr 05 '17 18:04 kotcrab

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.

czyzby avatar Apr 05 '17 20:04 czyzby