using afIocusing gfxusing fwt** Resources are navigatable objects that may be represented by an URI.** For example, the Explorer application has a 'FileResource' and a 'HttpResource'.@Jsmixin Resource {** The URI that equates to this resource.abstract Uri uri()** A short human readable name for this resource - does not need to be unique.**** 'name' is typically displayed in tabs and tables.abstract Str name()** An (optional) icon that represents this resource.virtual Image? icon(){null}** A display name for the resource.** File resources may show their OS specific variant rather than Fantom's canonical URI form.**** The display name is displayed in the address bar.**** Defaults to 'uri.toStr'.virtual Str displayName(){ Url(uri).minusFrag.toStr}** By populating an existing menu, it allows Panels to create the initial menu.virtual Menu populatePopup(Menu menu){ menu }** Return child resources. Used by 'ResourceTree'.** The returned strings should be resolvable by 'Reflux'. ** ** Defaults to empty list.virtual Uri[] children(){ Uri#.emptyList }** Override to manually resolve children. ** Do this if you have cached values for the children, or want to override with a 'once' method.** If 'null' is returned, the child is resolved through Reflux.** Overriding this method is an optional optimisation hook.virtual Resource? resolveChild(Uri childUri){null}** Override to manually resolve the parent. ** Do this if you have a cached value, or want to override with a 'once' method.** If 'null' is returned, the parent is resolved through Reflux.** Overriding this method is an optional optimisation hook.virtual Resource? resolveParent(){null}** Return the parent resource. Root resources should return 'null'. ** The returned string should be resolvable by 'Reflux'. ** ** Used by 'ResourceTree'.** ** Defaults to 'null'.virtual Uri? parent(){null}** If generating child resources is in-efficient, override this method for optimisation. ** ** Defaults to 'children.size > 0'. virtual Bool hasChildren(){ children.size > 0 }** The Views that may display this resource.**** Defaults to empty list.virtual Type[] viewTypes(){ Type#.emptyList }** Compares the resource URIs (minus any frags).override Bool equals(Obj? that){ Url(uri).minusFrag == Url((that as Resource)?.uri).minusFrag}** Returns a hash of the resource URI (minus any frag).override Int hash(){ Url(uri).minusFrag.hash}** Returns a comparison of the resource URIs (minus any frags).override Int compare(Obj that){ uri <=> (that as Resource)?.uri} @NoDocoverride Str toStr(){ uri.toStr }}