//TODO: difference between columns and reference columns + combo events
		public ForeignKeyConstraintEditorWidget (ISchemaProvider schemaProvider, SchemaActions action, ForeignKeyConstraintEditorSettings settings)
		{
			if (schemaProvider == null)
				throw new ArgumentNullException ("schemaProvider");
			if (settings == null)
				throw new ArgumentNullException ("settings");
			
			this.schemaProvider = schemaProvider;
			this.action = action;
			this.settings = settings;

			this.Build();

			store = new ListStore (typeof (string), typeof (string), typeof (bool), typeof (string), typeof (string), typeof (string), typeof (string), typeof (object));
			listFK.Model = store;
			
			storeActions = new ListStore (typeof (string), typeof (int));
			storeTables = new ListStore (typeof (string), typeof(TableSchema));
			
			if (settings.SupportsCascade)
				storeActions.AppendValues ("Cascade", (int)ForeignKeyAction.Cascade);
			if (settings.SupportsRestrict)
				storeActions.AppendValues ("Restrict", (int)ForeignKeyAction.Restrict);
			if (settings.SupportsNoAction)
				storeActions.AppendValues ("No Action", (int)ForeignKeyAction.NoAction);
			if (settings.SupportsSetNull)
				storeActions.AppendValues ("Set Null", (int)ForeignKeyAction.SetNull);
			if (settings.SupportsSetDefault)
				storeActions.AppendValues ("Set Default", (int)ForeignKeyAction.SetDefault);

			TreeViewColumn colName = new TreeViewColumn ();
			TreeViewColumn colRefTable = new TreeViewColumn ();
			TreeViewColumn colIsColumnConstraint = new TreeViewColumn ();
			TreeViewColumn colDeleteAction = new TreeViewColumn ();
			TreeViewColumn colUpdateAction = new TreeViewColumn ();
			
			colName.Title = AddinCatalog.GetString ("Name");
			colRefTable.Title = AddinCatalog.GetString ("Reference Table");
			colIsColumnConstraint.Title = AddinCatalog.GetString ("Column Constraint");
			colDeleteAction.Title = AddinCatalog.GetString ("Delete Action");
			colUpdateAction.Title = AddinCatalog.GetString ("Update Action");
			
			colRefTable.MinWidth = 120;
			
			CellRendererText nameRenderer = new CellRendererText ();
			CellRendererCombo refTableRenderer = new CellRendererCombo ();
			CellRendererToggle isColumnConstraintRenderer = new CellRendererToggle ();
			CellRendererCombo deleteActionRenderer = new CellRendererCombo ();
			CellRendererCombo updateActionRenderer = new CellRendererCombo ();
			
			nameRenderer.Editable = true;
			nameRenderer.Edited += new EditedHandler (NameEdited);
			
			refTableRenderer.Model = storeTables;
			refTableRenderer.TextColumn = 0;
			refTableRenderer.Editable = true;
			refTableRenderer.Edited += new EditedHandler (RefTableEdited);
			
			deleteActionRenderer.Model = storeActions;
			deleteActionRenderer.TextColumn = 0;
			deleteActionRenderer.Editable = true;
			deleteActionRenderer.Edited += new EditedHandler (DeleteActionEdited);
			
			updateActionRenderer.Model = storeActions;
			updateActionRenderer.TextColumn = 0;
			updateActionRenderer.Editable = true;
			updateActionRenderer.Edited += new EditedHandler (UpdateActionEdited);

			colName.PackStart (nameRenderer, true);
			colRefTable.PackStart (refTableRenderer, true);
			colIsColumnConstraint.PackStart (isColumnConstraintRenderer, true);
			colDeleteAction.PackStart (deleteActionRenderer, true);
			colUpdateAction.PackStart (updateActionRenderer, true);

			colName.AddAttribute (nameRenderer, "text", colNameIndex);
			colRefTable.AddAttribute (refTableRenderer, "text", colReferenceTableIndex);
			colIsColumnConstraint.AddAttribute (isColumnConstraintRenderer, "active", colIsColumnConstraintIndex);
			colDeleteAction.AddAttribute (deleteActionRenderer, "text", colDeleteActionIndex);			
			colUpdateAction.AddAttribute (updateActionRenderer, "text", colUpdateActionIndex);
			
			colIsColumnConstraint.Visible = false;
			listFK.AppendColumn (colName);
			listFK.AppendColumn (colRefTable);
			listFK.AppendColumn (colIsColumnConstraint);
			listFK.AppendColumn (colDeleteAction);
			listFK.AppendColumn (colUpdateAction);
			
			columnSelecter.ColumnToggled += new EventHandler (ColumnToggled);
			referenceColumnSelecter.ColumnToggled += new EventHandler (ReferenceColumnToggled);
			listFK.Selection.Changed += new EventHandler (SelectionChanged);
			
			ShowAll ();
		}
Esempio n. 2
0
 public ConstraintEditorSettings()
 {
     foreignKeySettings = new ForeignKeyConstraintEditorSettings();
     checkSettings      = new CheckConstraintEditorSettings();
 }
		public ConstraintEditorSettings ()
		{
			foreignKeySettings = new ForeignKeyConstraintEditorSettings ();
			checkSettings = new CheckConstraintEditorSettings ();
		}
        //TODO: difference between columns and reference columns + combo events
        public ForeignKeyConstraintEditorWidget(ISchemaProvider schemaProvider, SchemaActions action, ForeignKeyConstraintEditorSettings settings)
        {
            if (schemaProvider == null)
            {
                throw new ArgumentNullException("schemaProvider");
            }
            if (settings == null)
            {
                throw new ArgumentNullException("settings");
            }

            this.schemaProvider = schemaProvider;
            this.action         = action;
            this.settings       = settings;

            this.Build();

            store        = new ListStore(typeof(string), typeof(string), typeof(bool), typeof(string), typeof(string), typeof(string), typeof(string), typeof(object));
            listFK.Model = store;

            storeActions = new ListStore(typeof(string), typeof(int));
            storeTables  = new ListStore(typeof(string), typeof(TableSchema));

            if (settings.SupportsCascade)
            {
                storeActions.AppendValues("Cascade", (int)ForeignKeyAction.Cascade);
            }
            if (settings.SupportsRestrict)
            {
                storeActions.AppendValues("Restrict", (int)ForeignKeyAction.Restrict);
            }
            if (settings.SupportsNoAction)
            {
                storeActions.AppendValues("No Action", (int)ForeignKeyAction.NoAction);
            }
            if (settings.SupportsSetNull)
            {
                storeActions.AppendValues("Set Null", (int)ForeignKeyAction.SetNull);
            }
            if (settings.SupportsSetDefault)
            {
                storeActions.AppendValues("Set Default", (int)ForeignKeyAction.SetDefault);
            }

            TreeViewColumn colName               = new TreeViewColumn();
            TreeViewColumn colRefTable           = new TreeViewColumn();
            TreeViewColumn colIsColumnConstraint = new TreeViewColumn();
            TreeViewColumn colDeleteAction       = new TreeViewColumn();
            TreeViewColumn colUpdateAction       = new TreeViewColumn();

            colName.Title               = AddinCatalog.GetString("Name");
            colRefTable.Title           = AddinCatalog.GetString("Reference Table");
            colIsColumnConstraint.Title = AddinCatalog.GetString("Column Constraint");
            colDeleteAction.Title       = AddinCatalog.GetString("Delete Action");
            colUpdateAction.Title       = AddinCatalog.GetString("Update Action");

            colRefTable.MinWidth = 120;

            CellRendererText   nameRenderer               = new CellRendererText();
            CellRendererCombo  refTableRenderer           = new CellRendererCombo();
            CellRendererToggle isColumnConstraintRenderer = new CellRendererToggle();
            CellRendererCombo  deleteActionRenderer       = new CellRendererCombo();
            CellRendererCombo  updateActionRenderer       = new CellRendererCombo();

            nameRenderer.Editable = true;
            nameRenderer.Edited  += new EditedHandler(NameEdited);

            refTableRenderer.Model      = storeTables;
            refTableRenderer.TextColumn = 0;
            refTableRenderer.Editable   = true;
            refTableRenderer.Edited    += new EditedHandler(RefTableEdited);

            deleteActionRenderer.Model      = storeActions;
            deleteActionRenderer.TextColumn = 0;
            deleteActionRenderer.Editable   = true;
            deleteActionRenderer.Edited    += new EditedHandler(DeleteActionEdited);

            updateActionRenderer.Model      = storeActions;
            updateActionRenderer.TextColumn = 0;
            updateActionRenderer.Editable   = true;
            updateActionRenderer.Edited    += new EditedHandler(UpdateActionEdited);

            colName.PackStart(nameRenderer, true);
            colRefTable.PackStart(refTableRenderer, true);
            colIsColumnConstraint.PackStart(isColumnConstraintRenderer, true);
            colDeleteAction.PackStart(deleteActionRenderer, true);
            colUpdateAction.PackStart(updateActionRenderer, true);

            colName.AddAttribute(nameRenderer, "text", colNameIndex);
            colRefTable.AddAttribute(refTableRenderer, "text", colReferenceTableIndex);
            colIsColumnConstraint.AddAttribute(isColumnConstraintRenderer, "active", colIsColumnConstraintIndex);
            colDeleteAction.AddAttribute(deleteActionRenderer, "text", colDeleteActionIndex);
            colUpdateAction.AddAttribute(updateActionRenderer, "text", colUpdateActionIndex);

            colIsColumnConstraint.Visible = false;
            listFK.AppendColumn(colName);
            listFK.AppendColumn(colRefTable);
            listFK.AppendColumn(colIsColumnConstraint);
            listFK.AppendColumn(colDeleteAction);
            listFK.AppendColumn(colUpdateAction);

            columnSelecter.ColumnToggled          += new EventHandler(ColumnToggled);
            referenceColumnSelecter.ColumnToggled += new EventHandler(ReferenceColumnToggled);
            listFK.Selection.Changed += new EventHandler(SelectionChanged);

            ShowAll();
        }