package com.jivesoftware.os.amza.sync.deployable;
import com.google.common.collect.Lists;
import com.jivesoftware.os.amza.api.partition.PartitionName;
import com.jivesoftware.os.amza.sync.deployable.region.AmzaStatusRegionInput;
import com.jivesoftware.os.amza.ui.region.ChromeRegion;
import com.jivesoftware.os.amza.ui.region.HeaderRegion;
import com.jivesoftware.os.amza.ui.region.ManagePlugin;
import com.jivesoftware.os.amza.ui.region.PageRegion;
import com.jivesoftware.os.amza.ui.soy.SoyRenderer;
import java.util.List;
/**
*
*/
public class AmzaSyncUIService {
private final SoyRenderer renderer;
private final HeaderRegion headerRegion;
private final PageRegion<Void> adminRegion;
private final PageRegion<AmzaStatusRegionInput> statusRegion;
private final List<ManagePlugin> plugins = Lists.newCopyOnWriteArrayList();
public AmzaSyncUIService(
SoyRenderer renderer,
HeaderRegion headerRegion,
PageRegion<Void> adminRegion,
PageRegion<AmzaStatusRegionInput> statusRegion) {
this.renderer = renderer;
this.headerRegion = headerRegion;
this.adminRegion = adminRegion;
this.statusRegion = statusRegion;
}
private <I, R extends PageRegion<I>> ChromeRegion<I, R> chrome(R region) {
return new ChromeRegion<>("soy.amza.chrome.chromeRegion", renderer, headerRegion, plugins, region);
}
public String render() {
return chrome(adminRegion).render(null);
}
public String renderStatus(AmzaStatusRegionInput input) {
return chrome(statusRegion).render(input);
}
}