2015-09-09 14:32 GMT+02:00 Yuriy Tymchuk <[email protected]>: > Hi, > > as NautilusMethodSelected contains also an information about protocol, > class, package; > NautilusProtocolSelected contains an information about class and package; > . > . > . > > I’ve inherited NautilusClassSelected from NautilusPackageSelected and > NautilusProtocolSelected from NautilusClassSelected… to remove duplication. > But as announcement subscription also includes it’s subclasses, if you > subscribe to NautilusPackageSelected, you end up receiving also > NautilusClassSelected, NautilusProtocolSelected and NautilusMethodSelected. >
> What is a good way to resolve this (I can simply separate all the classes, > but maybe there is something important from conceptual point of view)? > I didn't know announcments are working that way, but it may make sense if you want to group announcments (register once for "WindowAnnouncement" and receiving all kind of subannouncements (WindowClosed/WindowOpened ...) What we could do (maybe this is a bit overkill): - make an announcements hierarchy (NautilusPackageAnnouncement -> NautiulusClassAnnouncement ...) but never subscribe to this Announcemnts - create sub classes for every "kind" NautilusPackageAnnouncement subclass: NautilusPackageChangedAnnouncement NautilusPackageAnnouncement subclass: NautilusPackageSelectedAnnouncement NautilusClassAnnouncement subclass: NautilusClassSelectedAnnouncement NautilusClassAnnouncement subclass: NautilusClassChangedAnnouncement And only subscribe to this subclasses. That way we are using the hierarchy of Announcement classes for removing of duplicated code, but only register and announce the "leaf"-nodes (NautilusClassChangedAnnouncement / NautilusPackageChangedAnnouncement...) what do you think? > > Uko >
