
com.cedarsoft.spring.rcp.hierarchy.AbstractHierarchyLayer Maven / Gradle / Ivy
package com.cedarsoft.spring.rcp.hierarchy;
import com.cedarsoft.lookup.DynamicLookup;
import com.cedarsoft.lookup.Lookup;
import com.cedarsoft.utils.CachingChildDetector;
import com.cedarsoft.utils.ChildDetector;
import com.cedarsoft.utils.Renderer;
import org.jetbrains.annotations.NotNull;
/**
*
*/
public abstract class AbstractHierarchyLayer implements HierarchyLayer
{
@NotNull
private final DynamicLookup lookup = new DynamicLookup();
protected void registerChildDetector( @NotNull ChildDetector
childDetector ) {
lookup.addValue( childDetector );
}
protected void registerRenderer( @NotNull Renderer
renderer ) {
lookup.addValue( renderer );
}
protected void registerDetailsComponentProvider( @NotNull DetailsProvider
provider ) {
lookup.addValue( provider );
}
protected void registerTitleComponentProvider( @NotNull TitleProvider
provider ) {
lookup.addValue( provider );
}
@Override
@NotNull
public Lookup getLookup() {
return lookup;
}
@Override
public void handleModified( @NotNull Object parent ) {
ChildDetector, ?> detector = lookup.lookup( ChildDetector.class );
if ( detector != null ) {
if ( detector instanceof CachingChildDetector ) {
( ( CachingChildDetector