/// <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; }
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; }
/// <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; }
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; }
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; }
/// <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; }
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); }