/*
 * Copyright (C) 2018 Robert Bosch GmbH Copyright (C) 2018 Robert Bosch Manufacturing Solutions GmbH, Germany. All rights reserved.
 */

import { InjectionToken } from '@angular/core';
import { DrawInteractionMode } from '../generic-maps/open-layers-map/interactions/modes/draw-interaction-mode';
import { ModificationInteractionMode } from '../generic-maps/open-layers-map/interactions/modes/modification-interaction-mode';
import { SelectionInteractionMode } from '../generic-maps/open-layers-map/interactions/modes/selection-interaction-mode';
import { TranslationInteractionMode } from '../generic-maps/open-layers-map/interactions/modes/translation-interaction-mode';

export type Supplier<T> = () => T;

export const SELECT_INTERACTION = new InjectionToken<Supplier<SelectionInteractionMode>>('SelectionInteractionMode');
export const MODIFY_INTERACTION = new InjectionToken<Supplier<ModificationInteractionMode>>(
  'ModificationInteractionMode'
);
export const MOVE_INTERACTION = new InjectionToken<Supplier<TranslationInteractionMode>>('TranslationInteractionMode');
export const BOUNDARY_ADD_INTERACTION = new InjectionToken<Supplier<DrawInteractionMode>>('BoundaryAddInteractionMode');
export const POSITION_ADD_INTERACTION = new InjectionToken<Supplier<DrawInteractionMode>>('PositionAddInteractionMode');

export const POSITION_REMOVE_ACTION = new InjectionToken<Supplier<boolean>>('RemovePositionAction');
export const BOUNDARY_REMOVE_ACTION = new InjectionToken<Supplier<boolean>>('RemoveBoundaryAction');
