public static void DisplayLoaderDialog(IMongoDbLoaderDlgVm mod) { MongoLoaderDlgVM model = (MongoLoaderDlgVM)mod; MongoDbLoaderDLG dlg = new MongoDbLoaderDLG(); EventHandler tmp = (o, e) => dlg.Close(); dlg.DataContext = model; model.Closing += tmp; dlg.ShowDialog(); model.Closing -= tmp; dlg.DataContext = null; }
/// <summary> /// Occurs when this command is clicked /// </summary> public override void OnClick() { try { IMongoDbLoaderDlgVm dbDialog = UIUtils.GetLoaderVM(); ButtonInfo browseBtn; browseBtn.OnClick = () => { string result = UIUtils.BrowseToFile(null, "Connection File to MongoDB (.mongoconn)|*.mongoconn", false); if (String.IsNullOrEmpty(result)) { return; } string connInfoStr = ConnectionUtilities.DecodeConnFile(result); MongoDBConnInfo connInfo = ConnectionUtilities.ParseConnectionString(connInfoStr); dbDialog.DatabaseText = connInfo.DBName; dbDialog.ServerText = connInfo.Connection.ToString(); dbDialog.File = result; }; browseBtn.IsEnabled = null; dbDialog.SetBrowse(browseBtn); IGxObject ipSelectedItem = null; ButtonInfo browseToFC; browseToFC.OnClick = () => { IGxDialog ipBrowser = new GxDialog(); ipBrowser.ObjectFilter = (IGxObjectFilter) new GxFilterPointFeatureClasses(); ipBrowser.AllowMultiSelect = false; IEnumGxObject ipTempSelected; if (ipBrowser.DoModalOpen(0, out ipTempSelected)) { if (null != ipTempSelected) { ipSelectedItem = ipTempSelected.Next(); dbDialog.FCConn = ipSelectedItem.FullName; } } }; browseToFC.IsEnabled = null; dbDialog.SetSourceBrowse(browseToFC); ButtonInfo okBtn; okBtn.OnClick = (() => { if (ipSelectedItem == null) { return; } string connString = dbDialog.File; if (String.IsNullOrEmpty(connString)) { return; } dbDialog.Close(); IName ipSrcName = ipSelectedItem.InternalObjectName; IFeatureClass ipSrc = (IFeatureClass)ipSrcName.Open(); IEnvelope ipExtent = ((IGeoDataset)ipSrc).Extent; MongoDBWorkspacePluginFactory factory = new MongoDBWorkspacePluginFactory(); MongoDBWorkspace ws = factory.OpenMongoDBWorkspace(connString); MongoDBDataset target = ws.CreateDataset(ipSelectedItem.BaseName, DataLoadUtilities.GetCreatableFields(ipSrc.Fields), ipExtent); DataLoadUtilities.LoadData(ipSrc, target); }); okBtn.IsEnabled = null; dbDialog.SetOk(okBtn); ButtonInfo cancelBtn; cancelBtn.OnClick = () => { dbDialog.Close(); }; cancelBtn.IsEnabled = null; dbDialog.SetCancel(cancelBtn); UIUtils.DisplayLoaderDialog(dbDialog); } catch (Exception ex) { System.Diagnostics.Trace.WriteLine(ex.Message); } }