private void frameElements_SelectedIndexChanged(object sender, EventArgs e)
 {
     // show the verbnet linking from semlink
     currentMapping.Items.Clear();
     foreach (string verbNetRole in _semLink.GetVerbNetRolesForFrameNet(SelectedFrameElement.ToString()))
     {
         currentMapping.Items.Add("0." + verbNetRole);
     }
 }
        private void unlink_Click(object sender, EventArgs e)
        {
            // must have selected a verbnet role to unlink
            if (currentMapping.SelectedIndex == -1)
            {
                MessageBox.Show("Must first select a mapping to remove");
                return;
            }

            // make sure we know exactly what we're unlinking
            if (propBankArguments.SelectedIndex != -1 && frameElements.SelectedIndex != -1)
            {
                MessageBox.Show("Ambiguous unlinking:  to PropBank or FrameNet?");
                return;
            }

            // get verbnet role to be removed
            string verbNetRoleToRemove = SelectedCurrentMapping.Substring(2);

            // remove from propbank
            if (propBankArguments.SelectedIndex != -1)
            {
                // remove link
                _semLink.RemoveVerbNetRoleForPropBank(SelectedPropBankVerb + "." + SelectedPropBankRoleSet.ID + "." + SelectedPropBankRole.Number, verbNetRoleToRemove);

                // refresh display as if the user had clicked the propbank argument
                propBankArguments_SelectedIndexChanged(sender, e);

                // focus on argument list
                propBankArguments.Focus();
            }
            else if (frameElements.SelectedIndex != -1)
            {
                // remove link
                _semLink.RemoveVerbNetRoleForFrameElement(SelectedFrameElement.ToString(), verbNetRoleToRemove);

                // refresh display as if the user had clicked the frame element
                frameElements_SelectedIndexChanged(sender, e);

                // focus on frame elements
                frameElements.Focus();
            }
        }
        private void link_Click(object sender, EventArgs e)
        {
            // must have selected a verbnet role to link
            if (verbNetClasses.SelectedIndex == -1 || verbNetRoles.SelectedIndex == -1)
            {
                MessageBox.Show("Must first select a VerbNet role");
                return;
            }

            // make sure we know exactly what we're linking
            if (propBankArguments.SelectedIndex != -1 && frameElements.SelectedIndex != -1)
            {
                MessageBox.Show("Ambiguous linking:  to PropBank or FrameNet?");
                return;
            }

            // get verbnet role to be added
            string verbNetRoleToAdd = SelectedVerbNetClass.ID.Substring(2) + "." + SelectedVerbNetThematicRole;

            // link to propbank
            if (propBankArguments.SelectedIndex != -1)
            {
                // add mapping from selected propbank role to selected verbnet role
                _semLink.AddVerbNetRoleForPropBank(SelectedPropBankVerb + "." + SelectedPropBankRoleSet.ID + "." + SelectedPropBankRole.Number, verbNetRoleToAdd);

                // refresh display as if the user had clicked the propbank argument
                propBankArguments_SelectedIndexChanged(sender, e);
            }
            // link to framenet
            else if (frameElements.SelectedIndex != -1)
            {
                // add mapping from selected frame elemtn to selected verbnet role
                _semLink.AddVerbNetRoleForFrameNet(SelectedFrameElement.ToString(), verbNetRoleToAdd);

                // refresh display as if the user had clicked the frame element
                frameElements_SelectedIndexChanged(sender, e);
            }
        }