public int Exec(ref Guid pguidCmdGroup, uint nCmdID, uint nCmdexecopt, IntPtr pvaIn, IntPtr pvaOut) { if (pguidCmdGroup == SQLiteCommandHandler.guidSQLiteCmdSet) { switch ((cmdid)nCmdID) { case cmdid.Triggers: ViewHolder holder = new ViewHolder(_view); _pg.SelectedObject = holder; _pg.SelectedGridItem = _pg.SelectedGridItem.Parent.GridItems[0]; CommitQueryBuilder(); TriggerEditor ted = new TriggerEditor(_view); ted.EditValue((ITypeDescriptorContext)_pg.SelectedGridItem, (System.IServiceProvider)_pg.SelectedGridItem, _pg.SelectedGridItem.Value); return VSConstants.S_OK; } } if (_qbole != null) return _qbole.Exec(ref pguidCmdGroup, nCmdID, nCmdexecopt, pvaIn, pvaOut); return (int)(Microsoft.VisualStudio.OLE.Interop.Constants.OLECMDERR_E_NOTSUPPORTED); }
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); }