using System;
using System.Threading.Tasks;
using DTS.Common.Base;
using Microsoft.Practices.Prism.Regions;
// ReSharper disable InconsistentNaming
// ReSharper disable CheckNamespace
namespace DTS.Common
{
public interface IDTSRegionManager : IRegionManager
{
///
/// Adds View to the Main Region.
///
/// The View definition.
/// The parameter which uses to initialize the View.
void AddView(ViewDefinition viewDefinition, object parameter);
///
/// Adds View to the Main Region.
///
/// The View definition.
/// The parameter which uses to initialize the View.
/// A value indicating whether to allow to create the multiple views.
void AddView(ViewDefinition viewDefinition, object parameter, bool allowMultipleInstances);
///
/// Adds View to the Main Region asynchronously.
///
/// The View definition.
/// The parameter which uses to initialize the service.
Task AddViewAsync(ViewDefinition viewDefinition, object parameter);
///
/// Adds View to the Main Region asynchronously.
///
/// The View definition.
/// The parameter which uses to initialize the View.
/// A value indicating whether to allow to create the multiple views.
Task AddViewAsync(ViewDefinition viewDefinition, object parameter, bool allowMultipleInstances);
///
/// Removes View from the Main Region.
///
/// The View-model.
void RemoveView(IBaseViewModel viewModel);
///
/// Removes View from the specified region by name
///
///
void RemoveViewByRegionName(string regionName);
///
/// Reloads data for the specified View.
///
/// Type of the View's interface.
/// The parameter which uses to initialize the View.
void RefreshView(Type interfaceForView, object parameter);
///
/// Reloads data for the specified View asynchronously.
///
/// Type of the View's interface.
/// The parameter which uses to initialize the View.
Task RefreshViewAsync(Type interfaceForView, object parameter);
}
}