File: NpgsqlGuiProvider.cs

package info (click to toggle)
monodevelop-database 2.4%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 4,156 kB
  • ctags: 4,150
  • sloc: cs: 25,982; xml: 4,061; makefile: 840; sh: 646
file content (127 lines) | stat: -rw-r--r-- 4,205 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
//
// Authors:
//    Ben Motmans  <ben.motmans@gmail.com>
//
// Copyright (c) 2007 Ben Motmans
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
//

using Gtk;
using System;
using System.Data;
using System.Collections.Generic;
using MonoDevelop.Database.Designer;
using MonoDevelop.Database.Components;

namespace MonoDevelop.Database.Sql.Npgsql
{
	public class NpgsqlGuiProvider : IGuiProvider
	{
		public bool ShowCreateDatabaseDialog (IDbFactory factory)
		{
			NpgsqlCreateDatabaseDialog dialog = new NpgsqlCreateDatabaseDialog (factory);
			int resp;
			do {
				resp = dialog.Run ();
			} while (resp != (int)ResponseType.Cancel && 
				    	     resp != (int)ResponseType.Ok && 
				    		resp != (int)ResponseType.DeleteEvent);
			dialog.Destroy ();
			if (resp == (int)ResponseType.Ok)
				return true;
			else
				return false;

		}

		public bool ShowAddConnectionDialog (IDbFactory factory)
		{
			DatabaseConnectionSettingsDialog dlg = new DatabaseConnectionSettingsDialog (factory);
			return RunDialog (dlg);
		}
		
		public bool ShowEditConnectionDialog (IDbFactory factory, 
		                                      DatabaseConnectionSettings settings, 
		                                      out DatabaseConnectionSettings newSettings)
		{
			DatabaseConnectionSettingsDialog dlg = new DatabaseConnectionSettingsDialog (factory, settings);
			bool result = RunDialog (dlg);
			if (result)
				newSettings = dlg.ConnectionSettings;
			else
				newSettings = null;			
			return result;
		}

		public bool ShowTableEditorDialog (IEditSchemaProvider schemaProvider, TableSchema table, bool create)
		{
			TableEditorSettings settings = new TableEditorSettings ();
			TableEditorDialog dlg = new TableEditorDialog (schemaProvider, create, settings);
			dlg.Initialize (table);

			return RunDialog (dlg);
		}

		public bool ShowViewEditorDialog (IEditSchemaProvider schemaProvider, ViewSchema view, bool create)
		{
			ViewEditorSettings settings = new ViewEditorSettings ();
			ViewEditorDialog dlg = new ViewEditorDialog (schemaProvider, create, settings);
			dlg.Initialize (view);

			return RunDialog (dlg);
		}

		public bool ShowProcedureEditorDialog (IEditSchemaProvider schemaProvider, ProcedureSchema procedure, bool create)
		{
			ProcedureEditorSettings settings = new ProcedureEditorSettings ();
			ProcedureEditorDialog dlg = new ProcedureEditorDialog (schemaProvider, create, settings);
			dlg.Initialize (procedure);

			return RunDialog (dlg);
		}

		public bool ShowUserEditorDialog (IEditSchemaProvider schemaProvider, UserSchema user, bool create)
		{
			return false; //TODO: implement ShowUserEditorDialog
		}

		private bool RunDialog (Dialog dlg)
		{
			bool result = false;
			// If the Preview Dialog is canceled, don't execute and don't close the Editor Dialog.
			try {	
				int resp;
					do {
						resp = dlg.Run ();
				    } while (resp != (int)ResponseType.Cancel && 
				    	     resp != (int)ResponseType.Ok && 
				    		resp != (int)ResponseType.DeleteEvent);
					
				if (resp == (int)ResponseType.Ok)
					result = true;
				else
					result = false;
			} finally {
				dlg.Destroy ();
			}
			return result;
		}
	}
}