protected function parsePalettes(IMetaModelDataDefinition $container)
{
$inputScreen = $this->getInputScreenDetails();
$metaModel = $this->getMetaModel();
if ($container->hasDefinition(PalettesDefinitionInterface::NAME)) {
$palettesDefinition = $container->getDefinition(PalettesDefinitionInterface::NAME);
} else {
$palettesDefinition = new DefaultPalettesDefinition();
$container->setDefinition(PalettesDefinitionInterface::NAME, $palettesDefinition);
}
$palette = new Palette();
$palette->setName('default')->setCondition(new DefaultPaletteCondition());
$palettesDefinition->addPalette($palette);
foreach ($inputScreen->getLegends() as $legendName => $legend) {
$paletteLegend = new Legend($legendName);
$paletteLegend->setInitialVisibility($legend['visible']);
$palette->addLegend($paletteLegend);
$this->translator->setValue($legendName . '_legend', $legend['name'], $container->getName());
foreach ($legend['properties'] as $propertyName) {
$property = new Property($propertyName);
$paletteLegend->addProperty($property);
$propInfo = $inputScreen->getProperty($propertyName);
$chain = new PropertyConditionChain();
$property->setEditableCondition($chain);
$chain->addCondition(new BooleanCondition(!(isset($propInfo['info']['readonly']) && $propInfo['info']['readonly'])));
if ($metaModel->hasVariants() && !$metaModel->getAttribute($propertyName)->get('isvariant')) {
$chain->addCondition(new PropertyValueCondition('varbase', 1));
}
$extra = $propInfo['info'];
$chain = new PropertyConditionChain();
$property->setVisibleCondition($chain);
$chain->addCondition(new BooleanCondition(!(isset($extra['doNotShow']) && $extra['doNotShow'] || isset($extra['hideInput']) && $extra['hideInput'])));
$propertyConditions = $inputScreen->getConditionsFor($propertyName);
if ($propertyConditions !== null) {
$chain->addCondition($propertyConditions);
}
// If variants, do show only if allowed.
if ($metaModel->hasVariants()) {
$chain->addCondition(new IsVariantAttribute());
}
}
}
}