/**
* Given two components, anchor the first one to the second.
*
* @param Component $component
* @param Component $target_component
* @access private
*/
private function anchor_together($component, $target_component)
{
if ($target_component->is_anchor_target()) {
return;
}
$component->set_json('anchor', array('targetComponentIdentifier' => $target_component->uid(), 'targetAnchorPosition' => 'center', 'rangeStart' => 0, 'rangeLength' => 1));
// Given $component, find out the opposite position.
$other_position = null;
if (Component::ANCHOR_AUTO == $component->get_anchor_position()) {
$other_position = 'left' == $this->get_setting('body_orientation') ? Component::ANCHOR_LEFT : Component::ANCHOR_RIGHT;
} else {
$other_position = Component::ANCHOR_LEFT == $component->get_anchor_position() ? Component::ANCHOR_RIGHT : Component::ANCHOR_LEFT;
}
$target_component->set_anchor_position($other_position);
// The anchor method adds the required layout, thus making the actual
// anchoring. This must be called after using the UID, because we need to
// distinguish target components from anchor ones and components with
// UIDs are always anchor targets.
$target_component->anchor();
$component->anchor();
}