private void Timer_Tick(object sender, EventArgs e0) { QueryColumn qc; if (!Timer.Enabled) { return; } Timer.Enabled = false; MouseEventArgs e = LastMouseDownEventArgs; Point p = new Point(e.X, e.Y); GridHitInfo ghi = FieldGridView.CalcHitInfo(p); int ri = ghi.RowHandle; if (ri < 0) { return; } GridColumn gc = ghi.Column; if (gc == null) { return; } int c = gc.AbsoluteIndex; DataRow dRow = FieldDataTable.Rows[ri]; ColumnMapMsx i = dRow["ColumnMapMsxRefCol"] as ColumnMapMsx; // currently item if (i == null) { qc = null; } else { qc = i.QueryColumn; } if (Lex.Eq(gc.FieldName, "FieldDatabaseTableCol") || Lex.Eq(gc.FieldName, "FieldDatabaseColumnCol")) { FieldSelectorControl fieldSelector = new FieldSelectorControl(); fieldSelector.QueryColumn = qc; p = this.PointToScreen(p); SelectColumnOptions sco = new SelectColumnOptions(); sco.ExcludeImages = true; sco.FirstTableKeyOnly = true; sco.SelectFromQueryOnly = true; sco.IncludeNoneItem = true; DialogResult dr = fieldSelector.SelectColumnFromQuery(Query, fieldSelector.QueryColumn, sco, p.X, p.Y, out qc); if (dr != DialogResult.OK) { return; } if (qc != null) { if (i == null) { i = new ColumnMapMsx(); } i.QueryColumn = qc; dRow["FieldSelectedCol"] = true; dRow["ColumnMapMsxRefCol"] = i; dRow["FieldDatabaseTableCol"] = qc.QueryTable.ActiveLabel; dRow["FieldDatabaseColumnCol"] = qc.ActiveLabel; FieldGrid.RefreshDataSource(); } else // set to none { dRow["ColumnMapMsxRefCol"] = null; dRow["FieldDatabaseTableCol"] = dRow["FieldDatabaseColumnCol"] = ""; } if (ri == FieldDataTable.Rows.Count - 1) { // add blank row at end if needed dRow = FieldDataTable.NewRow(); FieldDataTable.Rows.Add(dRow); } } //else if (Lex.Eq(gc.FieldName, "EditAxisPropertiesCol")) //{ // DialogResult dr = AxisOptionsDialog.ShowDialog(ax); // if (dr == DialogResult.OK) Changed = true; //} return; }
private void GridView_MouseUp_Callback(object state) { ColumnMapMsx cm; QueryColumn qc; QnfEnum subColumn; DialogResult dr; string newSpotfireName; MouseEventArgs e = state as MouseEventArgs; if (e == null) return; Point p = new Point(e.X, e.Y); GridHitInfo gridHitInfo = FieldGridView.CalcHitInfo(p); GridViewInfo gridViewInfo = FieldGridView.GetViewInfo() as GridViewInfo; GridCellInfo gridCellInfo = gridViewInfo.GetGridCellInfo(gridHitInfo); int ri = gridHitInfo.RowHandle; if (ri < 0) return; GridColumn gc = gridHitInfo.Column; if (gc == null) return; int c = gc.AbsoluteIndex; if (SelectSingleColumn) // just do a simple single column selection { UpdateSelectSingleColumnData(ri); return; } DataRow dRow = FieldDataTable.Rows[ri]; //DataMap.ColumnMapList.Items[ri]; cm = dRow["ColumnMapMsxRefField"] as ColumnMapMsx; // get ColumnMap for current item if (cm == null) throw new Exception("Null ColumnMapMsxRefField"); //if (cm == null) qc = null; //else qc = cm.QueryColumn; qc = cm.QueryColumn; subColumn = cm.SubColumn; // Rename column if (gc == SpotfireColNameCol) { RenameColumn(ri); return; } // Commands checked below are only available if editing of the mapping is allowed if (!CanEditMapping) return; // Select which Mobius column maps to a Spotfire Column if (gc == MobiusTableNameCol || gc == MobiusColNameCol) // select Mobius column to match if defining mapping { string role = dRow["OriginalSpotfireColNameField"] as string; if (Lex.IsUndefined(role)) return; // can only assign cols with "roles" from the original template analysis string spotfireName = ""; FieldSelectorControl fieldSelector = new FieldSelectorControl(); fieldSelector.QueryColumn = qc; SelectColumnOptions flags = new SelectColumnOptions(); flags.ExcludeImages = true; flags.FirstTableKeyOnly = true; flags.SelectFromQueryOnly = true; flags.QnSubcolsToInclude = QnfEnum.Split | QnfEnum.Qualifier | QnfEnum.NumericValue | QnfEnum.NValue; // split QualifiedNumbers flags.IncludeNoneItem = true; flags.AllowedDataTypes = DataTableMapMsx.GetMetaColumnTypesCompatibleWithSpotfireColumn(cm.SpotfireColumn, allowCompoundId: (ri == 0)); p = FieldGrid.PointToScreen(p); if (CurrentMap.QueryTable != null) // select from single query table only dr = fieldSelector.SelectColumnFromQueryTable(CurrentMap.QueryTable, qc, flags, p.X, p.Y, out qc, out subColumn); else // select from any table in the query dr = fieldSelector.SelectColumnFromQuery(Query, qc, flags, p.X, p.Y, out qc, out subColumn); if (dr != DialogResult.OK) return; cm.QueryColumn = qc; // new query column mapped to if (qc != null) // assigning a new QueryColumn { dRow["MobiusTableNameField"] = qc.QueryTable.ActiveLabel; dRow["MobiusColNameField"] = qc.ActiveLabel; newSpotfireName = CurrentMap.AssignUniqueSpotfireColumnName(qc.ActiveLabel); dRow["SpotfireColNameField"] = newSpotfireName; // update grid cm.SpotfireColumnName = newSpotfireName; // store new name //if (Lex.Ne(cm.SpotfireColumnName, newSpotfireName)) // changing name? //{ // cm.NewSpotfireColumnName = newSpotfireName; // store new name //} cm.MobiusFileColumnName = qc.MetaTableDotMetaColumnName + ColumnMapParms.SpotfireExportExtraColNameSuffix; } else // set to none (e.g. null col) { dRow["MobiusTableNameField"] = ""; dRow["MobiusColNameField"] = ""; newSpotfireName = CurrentMap.AssignUniqueSpotfireColumnName("None"); dRow["SpotfireColNameField"] = newSpotfireName; // update grid cm.SpotfireColumnName = newSpotfireName; // update map //cm.NewSpotfireColumnName = newSpotfireName; // update map cm.MobiusFileColumnName = ""; // not mapped to a col } FieldGrid.RefreshDataSource(); SVM.RemapDataTable(CurrentMap); // update spotfire view accordingly UpdateFieldGridDataTable(); cm.NewSpotfireColumnName = ""; // clear new name used for rename (needed?) } return; }