eventDispatcher = $event_dispatcher; $this->entityTypeManager = $entity_type_manager; $this->setConfiguration($configuration); } /** * {@inheritdoc} */ public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) { return new static( $configuration, $plugin_id, $plugin_definition, $container->get('event_dispatcher'), $container->get('entity_type.manager') ); } /** * {@inheritdoc} */ public function defaultConfiguration() { return []; } /** * {@inheritdoc} */ public function getConfiguration() { return array_diff_key( $this->configuration, ['entity_browser_id' => 0] ); } /** * {@inheritdoc} */ public function setConfiguration(array $configuration) { $this->configuration = NestedArray::mergeDeep( $this->defaultConfiguration(), $configuration ); } /** * {@inheritdoc} */ public function calculateDependencies() { return []; } /** * {@inheritdoc} */ public function label() { $this->label; } /** * {@inheritdoc} */ public function validate(array &$form, FormStateInterface $form_state) {} /** * {@inheritdoc} */ public function submit(array &$form, FormStateInterface $form_state) {} /** * {@inheritdoc} */ public function checkPreselectionSupport() { if (!$this->getPluginDefinition()['acceptPreselection']) { throw new ConfigException('Used entity browser selection display does not support preselection.'); } } /** * {@inheritdoc} */ public function supportsJsCommands() { return $this->getPluginDefinition()['js_commands']; } /** * Marks selection as done - sets value in form state and dispatches event. */ protected function selectionDone(FormStateInterface $form_state) { $form_state->set(['entity_browser', 'selection_completed'], TRUE); $this->eventDispatcher->dispatch( Events::DONE, new SelectionDoneEvent( $this->configuration['entity_browser_id'], $form_state->get(['entity_browser', 'instance_uuid']) )); } }