Example #1
0
        /// <summary>
        /// Handle mouse interaction with cells
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>

        public void MoleculeGrid_MouseDown(object sender, MouseEventArgs e)
        {
            int gri = MoleculeGrid.LastMouseDownRowIdx;

            if (gri < 0 || gri >= StructureList.Count)
            {
                return;
            }

            if (e.Button == MouseButtons.Left)             // left click
            {
                MoleculeListItem sli = StructureList[gri];
                if (ListItemSelectedCallback != null)                  // callback defined?
                {
                    ListItemSelectedCallback(sli);
                }
            }

            else if (e.Button == MouseButtons.Right)
            {
                RtClickMenu.Show(WindowsHelper.GetMousePosition());;
            }

            return;
        }
Example #2
0
        public void Setup(
            MoleculeList structureList,
            ListItemSelectedDelegate itemSelectedCallback)
        {
            DataTableMx dt;
            DataRowMx   dr;

            InSetup = true;

            StructureList            = structureList;
            ListItemSelectedCallback = itemSelectedCallback;

// Create DataTable if not done yet

            if (DataTable == null)
            {
                dt        = new DataTableMx();
                DataTable = dt;                 // save ref to table
                dt.Columns.Add("NameCol", typeof(string));
                dt.Columns.Add("StructureCol", typeof(MoleculeMx));
                dt.Columns.Add("DateCol", typeof(DateTime));
                dt.Columns.Add("StructureTypeCol", typeof(string));

                MoleculeGrid.SetupDefaultQueryManager(dt);                 // setup underlying QueryManager/QueryTable for current type
                MoleculeGrid.SetupUnboundColumns(dt);
            }

            dt = DataTable;

// Add rows to DataTable

            bool saveEnabled = dt.EnableDataChangedEventHandlers(false);             // turn off change events while filling

            if (structureList == null)
            {
                InSetup = false; return;
            }

            for (int ri = 0; ri < structureList.Count; ri++)             // fill in the grid
            {
                MoleculeListItem sli = structureList[ri];

                dr = dt.NewRow();

                dr["NameCol"]          = sli.Name;
                dr["StructureCol"]     = sli.Molecule;
                dr["DateCol"]          = sli.UpdateDate;
                dr["StructureTypeCol"] = sli.MoleculeType;

                dt.Rows.Add(dr);
            }

            MoleculeGrid.DataSource = dt;             // make the data visible
            BandedGridView.ClearSelection();
            dt.EnableDataChangedEventHandlers(saveEnabled);
            InSetup = false;
            return;
        }
Example #3
0
        /// <summary>
        /// AddToFavoritesList
        /// </summary>
        /// <param name="molEditorCtl"></param>
        /// <param name="searchType"></param>

        public static void AddToFavoritesList(
            MoleculeControl molEditorCtl,
            StructureSearchType searchType)
        {
            MoleculeListItem sli = null;
            DialogResult     dr;

            MoleculeMx mol = molEditorCtl.Molecule;

            if (MoleculeMx.IsUndefined(mol))
            {
                return;
            }

            mol = mol.Clone();             // make a copy for the list

            sli = FindStructure(mol, GetFavoriteStructuresList());
            if (sli != null)
            {
                dr = MessageBoxMx.Show("The current molecule already exists in Favorites list under the name: " + sli.Name + "\r\n" +
                                       "Do you still want the add the current query molecule to the Favorites list?", "Molecule already in Favorites", MessageBoxButtons.YesNoCancel);

                if (dr != DialogResult.Yes)
                {
                    return;
                }
            }

            string name = molEditorCtl.GetTemporaryStructureTag();

            name = InputBoxMx.Show("Enter the name that you want to assign to the molecule", "Enter Name", name);
            if (Lex.IsUndefined(name))
            {
                return;
            }

            sli              = new MoleculeListItem();
            sli.Name         = name;
            sli.Molecule     = mol;
            sli.UpdateDate   = DateTime.Now;
            sli.MoleculeType = StructureSearchTypeUtil.StructureSearchTypeToExternalName(searchType);
            FavoritesList.ItemList.Insert(0, sli);

            SaveStructureList(FavoritesList, FavoritesPreferencesParmName);
            return;
        }
Example #4
0
        private void ViewMoleculeInNewWindowMenuItem_Click(object sender, EventArgs e)
        {
            int gri = MoleculeGrid.LastMouseDownRowIdx;

            if (gri < 0 || gri >= StructureList.Count)
            {
                return;
            }
            MoleculeListItem sli = StructureList[gri];

            if (!MoleculeMx.IsDefined(sli.Molecule))
            {
                return;
            }
            MoleculeViewer.ShowMolecule(sli.Molecule);

            return;
        }
Example #5
0
        void ListItemSelectedCallback(MoleculeListItem sli)
        {
            if (MolEditorCtl == null)
            {
                return;
            }

            if (sli == null)
            {
                DialogResult = DialogResult.Cancel;
                return;
            }

            MoleculeMx mol = sli.Molecule;

            MolEditorCtl.SetPrimaryTypeAndValue(mol.PrimaryFormat, mol.PrimaryValue);
            MolEditorCtl.TagString = sli.Name + "\t" + sli.Molecule.PrimaryValue;             // store name to use if molecule is unchanged
            DialogResult           = DialogResult.OK;
        }
Example #6
0
        /// <summary>
        /// AddToMruList
        /// </summary>
        /// <param name="molEditorCtl"></param>
        /// <param name="searchType"></param>

        public static void AddToMruList(
            MoleculeControl molEditorCtl,
            StructureSearchType searchType)
        {
            MoleculeListItem sli = null;
            DialogResult     dr;

            MoleculeMx mol = molEditorCtl.Molecule;

            if (Lex.IsUndefined(mol.PrimaryValue))
            {
                return;
            }

            mol = mol.Clone();             // make a copy of the mol

            sli = FindStructure(mol, GetMruMoleculesList());
            if (sli != null)
            {
                MruList.ItemList.Remove(sli);
            }

            sli              = new MoleculeListItem();
            sli.Name         = molEditorCtl.GetTemporaryStructureTag();     // get any associated pre-edit mol name
            sli.Molecule     = mol;
            sli.UpdateDate   = DateTime.Now;
            sli.MoleculeType = StructureSearchTypeUtil.StructureSearchTypeToExternalName(searchType);
            MruList.ItemList.Insert(0, sli);

            while (MruList.Count > MaxMruItems)
            {
                MruList.ItemList.RemoveAt(MaxMruItems - 1);
            }

            SaveStructureList(MruList, MruPreferencesParmName);
            return;
        }
Example #7
0
        public static MoleculeListItem FindStructure(
            MoleculeMx query,
            MoleculeList csl)
        {
            MoleculeListItem sli = null;

            StructureMatcher sm = new StructureMatcher();

            for (int si = 0; si < csl.Count; si++)
            {
                sli = csl[si];
                if (sli.Molecule == null || sli.Molecule.IsNull)
                {
                    continue;
                }

                if (sm.IsFSSMatch(query, sli.Molecule))
                {
                    return(sli);
                }
            }

            return(null);
        }