private void ExecuteOpenInHexViewerCommand(object cmdParam)
        {
            GpdFile gpd = SelectedFile.Name == _profile.TitleId + ".gpd"
                              ? _profile.ProfileInfo as GpdFile
                              : _profile.GetGameFile(SelectedFile.Name);

            if (gpd != null)
            {
                var mli = new ModuleLoadInfo
                {
                    ModuleName    = "HexViewer",
                    Title         = SelectedFile.Name,
                    LoadCommand   = LoadCommand.Load,
                    LoadParameter = new Tuple <byte[], BinMap>(gpd.Binary.ReadAll(), gpd.BinMap)
                };
                EventAggregator.GetEvent <ModuleOpenEvent>().Publish(new ModuleOpenEventArgs(mli));
            }
        }
        /// <summary>
        /// Gets the current View of the given module and sets its ViewModel as the data context of the ModuleProperties module
        /// </summary>
        /// <param name="loadInfo"></param>
        public void SetModuleContext(ModuleLoadInfo loadInfo)
        {
            ModuleViewBase view = null;

            if (loadInfo != null)
            {
                view = loadInfo.RenderedView;
                if (view == null)
                {
                    string moduleName = loadInfo.ModuleName;
                    string viewName   = loadInfo.ViewName ?? moduleName;

                    IModulePresentation module = TryResolve <IModulePresentation>(moduleName);
                    if (module != null)
                    {
                        view = module.GetView(viewName) as ModuleViewBase;
                    }
                }
            }
            ModuleViewModelBase viewModel = view == null ? null : view.DataContext as ModuleViewModelBase;

            eventAggregator.GetEvent <ActivateModuleContextEvent>().Publish(viewModel);
        }
 public ModuleOpenEventArgs(ModuleLoadInfo loadInfo)
 {
     LoadInfo = loadInfo;
 }
        /// <summary>
        /// Display a module the specified region with the given view.
        /// </summary>
        /// <param name="loadInfo">module load descriptor</param>
        /// <exception cref="ArgumentNullException">Empty module name.</exception>
        public void DisplayModule(ModuleLoadInfo loadInfo)
        {
            string moduleName = loadInfo.ModuleName;
            string regionName = loadInfo.RegionName;
            string viewName   = loadInfo.ViewName ?? loadInfo.ModuleName;

            if (string.IsNullOrEmpty(moduleName))
            {
                throw new ArgumentNullException(moduleName, "Illegal module name to load.");
            }
            ModuleViewBase currentView;

            try
            {
                moduleManager.LoadModule(moduleName);
                IModulePresentation module = TryResolve <IModulePresentation>(moduleName);

                if (module != null)
                {
                    IRegion region = regionManager.Regions[regionName];
                    currentView = (ModuleViewBase)region.GetView(viewName);

                    if (currentView == null)
                    {
                        currentView = (ModuleViewBase)module.GetView(viewName);
                        if (currentView.ViewModel != null)
                        {
                            currentView.ViewModel.LoadInfo = loadInfo;
                        }
                        else
                        {
                            // TODO rerdelyi 100705: some action should be taken, e.g. throw exception
                        }
                        loadInfo.RenderedView = currentView;
                        region.Add(currentView, viewName);
                        region.Activate(currentView);
                        currentView.LoadData(loadInfo.LoadCommand, loadInfo.LoadParameter);
                    }
                    else
                    {
                        // TODO rerdelyi 100705: some action should be taken, e.g. throw exception
                    }

                    //string statusBarRegionName = regionName + STATUSBAR;
                    //string statusBarViewName = viewName + STATUSBAR;

                    //if (regionManager.Regions.ContainsRegionWithName(statusBarRegionName))
                    //{
                    //    IRegion statusBarRegion = regionManager.Regions[statusBarRegionName];
                    //    if (statusBarRegion != null && statusBarRegion.GetView(statusBarViewName) == null)
                    //    {
                    //        var statusBar = module.GetStatusBar(viewName);
                    //        statusBar.DataContext = currentView.ViewModel;
                    //        statusBarRegion.Add(statusBar, statusBarViewName);
                    //        statusBarRegion.Activate(statusBar);
                    //    }
                    //}
                }
                else
                {
                    throw new MissingMemberException(string.Format("Unable to display \"{0}\" module.", moduleName));
                }
            }

            catch (Exception ex)
            {
                throw new Exception(string.Format("Unable to display \"{0}\" module.", moduleName), ex);
            }
        }
 public ModuleCloseEventArgs(ModuleLoadInfo loadInfo, bool force)
 {
     LoadInfo = loadInfo;
     Force    = force;
 }
 public ModuleCloseEventArgs(ModuleLoadInfo loadInfo)
     : this(loadInfo, false)
 {
 }