Handles a TreeCombo control (Widgets assembly) for use in selecting inflection classes.
Inheritance: PopupTreeManager
Exemplo n.º 1
0
		public InflectionClassEditor()
		{
			m_InflectionClassTreeManager = null;
			m_tree = new TreeCombo();
			m_tree.TreeLoad += new EventHandler(m_tree_TreeLoad);
			//	Handle AfterSelect event in m_tree_TreeLoad() through m_pOSPopupTreeManager
		}
Exemplo n.º 2
0
        protected override TreeNode MakeMenuItems(PopupTree popupTree, int hvoTarget)
        {
            int tagNamePOS = UseAbbr ?
                             CmPossibilityTags.kflidAbbreviation :
                             CmPossibilityTags.kflidName;

            List <HvoTreeNode> relevantPartsOfSpeech = new List <HvoTreeNode>();

            InflectionClassPopupTreeManager.GatherPartsOfSpeech(Cache, List.Hvo,
                                                                CmPossibilityListTags.kflidPossibilities,
                                                                CmPossibilityTags.kflidSubPossibilities,
                                                                PartOfSpeechTags.kflidInflectableFeats,
                                                                tagNamePOS, WritingSystem,
                                                                relevantPartsOfSpeech);
            relevantPartsOfSpeech.Sort();
            TreeNode match = null;

            foreach (HvoTreeNode item in relevantPartsOfSpeech)
            {
                popupTree.Nodes.Add(item);
                var pos = Cache.ServiceLocator.GetInstance <IPartOfSpeechRepository>().GetObject(item.Hvo);
                foreach (IFsFeatStruc fs in pos.ReferenceFormsOC)
                {
                    // Note: beware of using fs.ShortName. That can be
                    // absolutely EMPTY (if the user has turned off the 'Show Abbreviation as its label'
                    // field for both the feature category and value).
                    // ChooserName shows the short name if it is non-empty, otherwise the long name.
                    HvoTreeNode node = new HvoTreeNode(fs.ChooserNameTS, fs.Hvo);
                    item.Nodes.Add(node);
                    if (fs.Hvo == hvoTarget)
                    {
                        match = node;
                    }
                }
                item.Nodes.Add(new HvoTreeNode(
                                   TsStringUtils.MakeString(LexTextControls.ksChooseInflFeats, Cache.WritingSystemFactory.UserWs),
                                   kMore));
            }
            return(match);
        }
Exemplo n.º 3
0
		private void m_tree_TreeLoad(object sender, EventArgs e)
		{
			if (m_InflectionClassTreeManager == null)
			{
				m_InflectionClassTreeManager = new InflectionClassPopupTreeManager(m_tree, m_cache, m_mediator, false, (Form)m_mediator.PropertyTable.GetValue("window"), m_displayWs);
				m_InflectionClassTreeManager.AfterSelect += new TreeViewEventHandler(m_pOSPopupTreeManager_AfterSelect);
			}
			m_InflectionClassTreeManager.LoadPopupTree(0);
		}
Exemplo n.º 4
0
		/// <summary>
		/// Executes in two distinct scenarios.
		///
		/// 1. If disposing is true, the method has been called directly
		/// or indirectly by a user's code via the Dispose method.
		/// Both managed and unmanaged resources can be disposed.
		///
		/// 2. If disposing is false, the method has been called by the
		/// runtime from inside the finalizer and you should not reference (access)
		/// other managed objects, as they already have been garbage collected.
		/// Only unmanaged resources can be disposed.
		/// </summary>
		/// <param name="disposing"></param>
		/// <remarks>
		/// If any exceptions are thrown, that is fine.
		/// If the method is being done in a finalizer, it will be ignored.
		/// If it is thrown by client code calling Dispose,
		/// it needs to be handled by fixing the bug.
		///
		/// If subclasses override this method, they should call the base implementation.
		/// </remarks>
		protected virtual void Dispose(bool disposing)
		{
			System.Diagnostics.Debug.WriteLineIf(!disposing, "****** Missing Dispose() call for " + GetType().Name + ". ****** ");
			// Must not be run more than once.
			if (m_isDisposed)
				return;

			if (disposing)
			{
				// Dispose managed resources here.
				if (m_tree != null)
				{
					m_tree.Load -= new EventHandler(m_tree_TreeLoad);
					m_tree.Dispose();
				}
				if (m_InflectionClassTreeManager != null)
				{
					m_InflectionClassTreeManager.AfterSelect -= new TreeViewEventHandler(m_pOSPopupTreeManager_AfterSelect);
					m_InflectionClassTreeManager.Dispose();
				}
			}

			// Dispose unmanaged resources here, whether disposing is true or false.
			m_selectedLabel = null;
			m_tree = null;
			m_InflectionClassTreeManager = null;
			m_mediator = null;
			m_cache = null;

			m_isDisposed = true;
		}