/*-------------------------------------------------------------------------------------------------------------- * Copyright (c) insite-gmbh. All rights reserved. * Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------------------------*/ import { IMenuItem } from './menuItem'; import { Observable } from 'rxjs/Observable'; import { OpaqueToken, EventEmitter } from '@angular/core'; import { Router } from '@angular/router'; /** * Interface for menu providers * @interface IMenuProvider * @classdesc Interface for menu providers * @author insite-gmbh */ export interface IMenuProvider{ /** * Number of entries per given level (e.g. level = line, level = rootElements) */ maxEntriesPerLevel:number; /** * Subscribe to the menues, to get informed if the menus get changing * @method subscribeToEntriesFor * @param {IMenuItem} parent parent menu (null = main menu) */ subscribeToEntriesFor(parent:IMenuItem):Observable>; /** * This mehtod will be called if a submenu button was clicked. * @method applySelectAction * @param {IMenuItem} parent parent menu (null = main menu) * @return {Promise} return true if action completed successfully, otherwise false. */ applySelectAction(item:IMenuItem):Promise; /** * Call the method to select a menu from code byit's buttons * @method applySelectAction * @param {number} parent main menu button id * @param {number} child sub menu button id */ selectByButton(parent:number, child:number); /** * Call the method to select a menu from code by it's url * @method applySelectAction * @param {string} url url of the menu */ selectByUrl(url:string); /** * Get informed if the menu selection was changed. This will be called from the select from code methods to * handle it in the menu components. */ selectionChangedNotifier:EventEmitter; } export const IMENUPROVIDERSERVICE_TOKEN: OpaqueToken = new OpaqueToken('IMenuProviderService');