/// <summary> /// Handle launching of the environment chooser. /// </summary> /// <remarks> /// Subclasses should override this method, if the SimpleListChooser is not suitable. /// </remarks> protected override void HandleChooser() { // get all valid environments var candidates = new HashSet<ICmObject>(); foreach (var env in m_cache.LangProject.PhonologicalDataOA.EnvironmentsOS) { ConstraintFailure failure; if (env.CheckConstraints(PhEnvironmentTags.kflidStringRepresentation, false, out failure)) candidates.Add(env); } string displayWs = "analysis vernacular"; IPhEnvironment selectedEnv = null; if (m_configurationNode != null) { XmlNode node = m_configurationNode.SelectSingleNode("deParams"); if (node != null) displayWs = XmlUtils.GetAttributeValue(node, "ws", "analysis vernacular").ToLower(); } var labels = ObjectLabel.CreateObjectLabels(m_cache, candidates.OrderBy(e => e.ShortName), null, displayWs); using (var chooser = new SimpleListChooser(m_persistProvider, labels, m_fieldName, m_mediator.HelpTopicProvider)) { chooser.Cache = m_cache; chooser.TextParamHvo = m_cache.LangProject.PhonologicalDataOA.Hvo; chooser.SetHelpTopic(Slice.GetChooserHelpTopicID(Slice.HelpTopicID)); chooser.InitializeExtras(m_configurationNode, m_mediator); DialogResult res = chooser.ShowDialog(); if (res != DialogResult.Cancel) { chooser.HandleAnyJump(); if (chooser.ChosenOne != null) selectedEnv = chooser.ChosenOne.Object as IPhEnvironment; } } // return focus to the view m_view.Select(); if (selectedEnv != null) { int cellId = -1; UndoableUnitOfWorkHelper.Do(MEStrings.ksRuleUndoUpdateEnv, MEStrings.ksRuleRedoUpdateEnv, selectedEnv, () => { cellId = UpdateEnvironment(selectedEnv); }); ReconstructView(cellId, -1, true); } }