internal Unique(Column col, DataRow row) { _column = col; if (row != null) { _isUnique = (row.IsNull("UNIQUE") == false) ? (bool)row["UNIQUE"] : false; } }
public int Exec(ref Guid pguidCmdGroup, uint nCmdID, uint nCmdexecopt, IntPtr pvaIn, IntPtr pvaOut) { if (pguidCmdGroup == VSConstants.GUID_VSStandardCommandSet97) { switch ((VSConstants.VSStd97CmdID)nCmdID) { case VSConstants.VSStd97CmdID.GenerateChangeScript: { using (ChangeScriptDialog dlg = new ChangeScriptDialog(_table.Name, (_dirty == true) ? GetChangeScript() : String.Empty, _table.OriginalSql)) { dlg.ShowDialog(this); } } return VSConstants.S_OK; case VSConstants.VSStd97CmdID.PrimaryKey: bool newVal = IsPkSelected(); if (newVal == false) { _table.PrimaryKey.Columns.Clear(); foreach (Column c in _propertyGrid.SelectedObjects) { IndexColumn newcol = new IndexColumn(_table.PrimaryKey, null); newcol.Column = c.ColumnName; _table.PrimaryKey.Columns.Add(newcol); } } else { foreach (Column c in _propertyGrid.SelectedObjects) { foreach (IndexColumn ic in _table.PrimaryKey.Columns) { if (String.Compare(c.ColumnName, ic.Column, StringComparison.OrdinalIgnoreCase) == 0) { _table.PrimaryKey.Columns.Remove(ic); break; } } } } _dataGrid_SelectionChanged(this, EventArgs.Empty); _dataGrid.Invalidate(); MakeDirty(); return VSConstants.S_OK; case VSConstants.VSStd97CmdID.Cut: _clipRows = SelectedRows; foreach (DataGridViewRow row in _clipRows) { _dataGrid.Rows.Remove(row); _table.Columns.Remove(row.Tag as Column); MakeDirty(); } Clipboard.SetData("SQLiteTableDesigner", Caption); RefreshToolbars(); return VSConstants.S_OK; case VSConstants.VSStd97CmdID.Copy: _clipRows = SelectedRows; Clipboard.SetData("SQLiteTableDesigner", Caption); RefreshToolbars(); return VSConstants.S_OK; case VSConstants.VSStd97CmdID.Paste: DataGridViewRow[] arr = GetClipboardRows(); int rowIndex = _dataGrid.CurrentRow.Index; _dataGrid.EndEdit(); for (int n = arr.Length - 1; n > -1; n--) { DataGridViewRow row = arr[n]; Column c = row.Tag as Column; bool hasCol = false; foreach (Column oc in _table.Columns) { if (String.Compare(c.ColumnName, oc.ColumnName, StringComparison.OrdinalIgnoreCase) == 0) { hasCol = true; break; } } _dataGrid.Rows.Insert(rowIndex, 1); DataGridViewRow newrow = _dataGrid.Rows[rowIndex]; if (hasCol == true) { Column oc = c; c = new Column(_table, newrow); int num = 1; while (String.IsNullOrEmpty(c.ColumnName) == true) { bool found = false; string proposed = String.Format(CultureInfo.InvariantCulture, "{0}{1}", oc.ColumnName, num); foreach (Column cc in _table.Columns) { if (String.Compare(cc.ColumnName, proposed, StringComparison.OrdinalIgnoreCase) == 0) { found = true; break; } } if (found == true) { num++; } else c.ColumnName = proposed; } c.AllowNulls = oc.AllowNulls; c.Collate = oc.Collate; c.DataType = oc.DataType; c.DefaultValue = oc.DefaultValue; c.Unique.Enabled = oc.Unique.Enabled; c.Unique.Conflict = oc.Unique.Conflict; } c.Parent = newrow; newrow.Tag = c; newrow.SetValues(c.ColumnName, c.DataType, c.AllowNulls); _table.Columns.Insert(rowIndex, c); } MakeDirty(); _dataGrid.Invalidate(); return VSConstants.S_OK; } } else if (pguidCmdGroup == SQLiteCommandHandler.guidDavinci) { switch ((VSConstants.VSStd97CmdID)nCmdID) { case VSConstants.VSStd97CmdID.ManageIndexes: EditorHolder holder = new EditorHolder(_table); _pg.SelectedObject = holder; _pg.SelectedGridItem = _pg.SelectedGridItem.Parent.GridItems[0]; IndexEditor ed = new IndexEditor(_table); ed.EditValue((ITypeDescriptorContext)_pg.SelectedGridItem, (System.IServiceProvider)_pg.SelectedGridItem, _pg.SelectedGridItem.Value); _dataGrid_SelectionChanged(this, EventArgs.Empty); _dataGrid.Invalidate(); return VSConstants.S_OK; case VSConstants.VSStd97CmdID.ManageRelationships: holder = new EditorHolder(_table); _pg.SelectedObject = holder; _pg.SelectedGridItem = _pg.SelectedGridItem.Parent.GridItems[1]; ForeignKeyEditor fed = new ForeignKeyEditor(_table); fed.EditValue((ITypeDescriptorContext)_pg.SelectedGridItem, (System.IServiceProvider)_pg.SelectedGridItem, _pg.SelectedGridItem.Value); return VSConstants.S_OK; case VSConstants.VSStd97CmdID.ManageConstraints: holder = new EditorHolder(_table); _pg.SelectedObject = holder; _pg.SelectedGridItem = _pg.SelectedGridItem.Parent.GridItems[2]; CheckEditor ced = new CheckEditor(_table); ced.EditValue((ITypeDescriptorContext)_pg.SelectedGridItem, (System.IServiceProvider)_pg.SelectedGridItem, _pg.SelectedGridItem.Value); return VSConstants.S_OK; case VSConstants.VSStd97CmdID.AlignRight: // Insert Column _dataGrid.EndEdit(); _dataGrid.Rows.Insert(_dataGrid.SelectedRows[0].Index, 1); return VSConstants.S_OK; case VSConstants.VSStd97CmdID.AlignToGrid: // Delete Column _dataGrid.EndEdit(); int deleted = 0; while (_dataGrid.SelectedRows.Count > 0) { try { DataGridViewRow row = _dataGrid.SelectedRows[0]; Column c = row.Tag as Column; row.Selected = false; if (c != null) { _table.Columns.Remove(c); deleted++; } _dataGrid.Rows.Remove(row); } catch { } } if (deleted > 0) MakeDirty(); return VSConstants.S_OK; } } else if (pguidCmdGroup == SQLiteCommandHandler.guidSQLiteCmdSet) { switch ((cmdid)nCmdID) { case cmdid.Triggers: EditorHolder holder = new EditorHolder(_table); _pg.SelectedObject = holder; _pg.SelectedGridItem = _pg.SelectedGridItem.Parent.GridItems[3]; TriggerEditor ted = new TriggerEditor(_table); ted.EditValue((ITypeDescriptorContext)_pg.SelectedGridItem, (System.IServiceProvider)_pg.SelectedGridItem, _pg.SelectedGridItem.Value); return VSConstants.S_OK; } } return (int)(Microsoft.VisualStudio.OLE.Interop.Constants.OLECMDERR_E_NOTSUPPORTED); }
internal Unique(Column col) : this(col, null) { }
private void _dataGrid_CellValidated(object sender, DataGridViewCellEventArgs e) { DataGridViewRow row = _dataGrid.Rows[e.RowIndex]; Column col = row.Tag as Column; if (col == null && row.IsNewRow == false) { col = new Column(_table, row); row.Tag = col; _table.Columns.Insert(row.Index, col); _dataGrid_SelectionChanged(this, new EventArgs()); } if (col != null) col.CellValueChanged(e.RowIndex, e.ColumnIndex); RefreshToolbars(); }