303 lines
		
	
	
		
			9.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			303 lines
		
	
	
		
			9.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| ##|TYPE Template
 | |
| ##|UNIQUEID 9fcabf5d-31fd-4546-8750-b6c1f7b89087
 | |
| ##|TITLE Learning Example
 | |
| ##|NAMESPACE 
 | |
| ##|SOURCE_TYPE Source
 | |
| ##|OUTPUT_LANGUAGE C#
 | |
| ##|GUI_ENGINE .Net Script
 | |
| ##|GUI_LANGUAGE C#
 | |
| ##|GUI_BEGIN
 | |
| 
 | |
| public class GeneratedGui : DotNetScriptGui
 | |
| {
 | |
| 	public GeneratedGui(ZeusContext context) : base(context) {}
 | |
| 
 | |
| 	//-----------------------------------------
 | |
| 	// The User Interface Entry Point
 | |
| 	//-----------------------------------------
 | |
| 	public override void Setup()
 | |
| 	{
 | |
| 		if ( !input.Contains( "chooseTables" ) || !input.Contains( "txtPath" ) ||
 | |
| 				( !input.Contains( "chkClass" ) && !input.Contains( "chkNaming" ) ) )
 | |
| 		{
 | |
| 			if(context.Objects.ContainsKey("DnpUtils"))DnpUtils.ReadInputFromCache(context);
 | |
| 			// UI Form Layout
 | |
| 			ui.Title = "CSLA Object Mapping";
 | |
| 			ui.Width = 600;
 | |
| 			ui.Height = 450;
 | |
| 			// Output Path Label, TextBox and Button
 | |
| 			GuiLabel label1 = ui.AddLabel( "label1", "Select the output path:", "Select the output path in the field below." );
 | |
| 			// label1.Width = 200;
 | |
| 			GuiTextBox outputPath = ui.AddTextBox( "outputPath", GetDefault("defaultOutputPath"), "Select the Output Path." );
 | |
| 			outputPath.Width = 450;
 | |
| 			GuiFilePicker selectPath = ui.AddFilePicker( "selectPath", "Select Path", "Select the Output Path.", "outputPath", true );
 | |
| 			selectPath.Top = outputPath.Top;
 | |
| 			selectPath.Width = 100;
 | |
| 			selectPath.Left = outputPath.Left + outputPath.Width + 20;
 | |
| 			// Namespace Label and TextBox
 | |
| 			GuiLabel label2 = ui.AddLabel( "label2", "Namespace: ",  "Provide your objects namespace." );
 | |
| 			label2.Width = 280;
 | |
| 			GuiTextBox classNamespace = ui.AddTextBox( "classNamespace", "Volian.Object.Library", "Provide your objects namespace." );				
 | |
| 			classNamespace.Width = 280;
 | |
| 			// Member Prefix Label and TextBox
 | |
| 			GuiLabel label3 = ui.AddLabel( "label3", "Member prefix: ", "Provide your member prefix." );
 | |
| 			label3.Width = 100;
 | |
| 			label3.Top = label2.Top;
 | |
| 			label3.Left = label2.Width + 20;
 | |
| 			GuiTextBox memberPrefix = ui.AddTextBox( "memberPrefix", "_", "Provide your member prefix." );
 | |
| 			memberPrefix.Width = 100;
 | |
| 			memberPrefix.Top = classNamespace.Top;
 | |
| 			memberPrefix.Left = classNamespace.Width + 20;
 | |
|       // Database Connection Name Label and TextBox  
 | |
| 			GuiLabel label3A = ui.AddLabel( "label3A", "dbConnection: ", "Provide a Connection Name." );
 | |
| 			label3A.Width = 150;
 | |
| 			label3A.Top = label3.Top;
 | |
| 			label3A.Left = label3.Left+label3.Width + 10;
 | |
| 			GuiTextBox dbConnection = ui.AddTextBox( "dbConnection", "VEPROMS", "Provide a Connection Name." );
 | |
| 			dbConnection.Width = 150;
 | |
| 			dbConnection.Top = memberPrefix.Top;
 | |
| 			dbConnection.Left = memberPrefix.Left + memberPrefix.Width + 10;
 | |
|              
 | |
| 			// Setup Database selection combobox.
 | |
| 			GuiLabel label4 = ui.AddLabel( "label4", "Select a database:", "Select a database in the dropdown below." );
 | |
| 			label4.Width = 280;
 | |
| 			GuiComboBox chooseDatabase = ui.AddComboBox( "chooseDatabase", "Select a database." );
 | |
| 			chooseDatabase.Width = 280;
 | |
| 			
 | |
| 			GuiCheckBox chkPrimary = MakeGuiCheckBox( "chkPrimary", "Primary Keys", true, "Show Primary Keys",100 );
 | |
| 			chkPrimary.Checked = false;
 | |
| 			GuiCheckBox chkColumns = MakeGuiCheckBox( "chkColumns", "Columns", true, "Show Columns" ,150,chkPrimary,200,0);
 | |
| 			chkColumns.Checked = false;
 | |
| 			GuiCheckBox chkFK = MakeGuiCheckBox( "chkFK", "Foreign Keys", true, "Show Foreign Keys" ,150,chkPrimary,400,0);
 | |
| 			chkFK.Checked = false;
 | |
| 			// Setup Tables selection multi-select listbox.
 | |
| 			GuiLabel label7 = ui.AddLabel( "label7", "Select tables:", "Select tables from the listbox below." );
 | |
| 			//label7.Top = chkInternal.Top + 20;
 | |
| 			GuiListBox chooseTables = ui.AddListBox( "chooseTables", "Select tables." );
 | |
| 			chooseTables.Height = 120;
 | |
| 	
 | |
| 			// Setup Views selection multi-select listbox.
 | |
| 			//GuiLabel label8 = ui.AddLabel( "label8", "Select views:", "Select views from the listbox below." );
 | |
| 			//GuiListBox chooseViews = ui.AddListBox( "chooseViews", "Select views." );
 | |
| 			//chooseViews.Height = 80;
 | |
| 			
 | |
| 			// Attach the onchange event to the cmbDatabases control.
 | |
| 			setupDatabaseDropdown( chooseDatabase );
 | |
| 			GuiLabel labelTest = ui.AddLabel( "labelTest", "Status: Select CheckBox to Run",  "Checkbox must be selected first" );
 | |
| 			chooseDatabase.AttachEvent( "onchange", "chooseDatabase_onchange" );
 | |
| 			chkPrimary.AttachEvent( "onclick", "checkbox_onclick" );
 | |
| 			chkColumns.AttachEvent( "onclick", "checkbox_onclick" );
 | |
| 			chkFK.AttachEvent( "onclick", "checkbox_onclick" );
 | |
| 			chooseTables.AttachEvent( "onchange", "chooseTable_onclick" );
 | |
| 			ui.ShowGui = true;
 | |
| 			GuiButton btnOK = ui.AddButton( "OK", "OK", "Generate Code" );
 | |
| 			btnOK.ClosesForm = true;
 | |
| 			btnOK.Enabled = false;
 | |
| 		}
 | |
| 		else 
 | |
| 		{
 | |
| 			ui.ShowGui = false;
 | |
| 		}
 | |
| 	}
 | |
| 	public void setupDatabaseDropdown( GuiComboBox Databases )
 | |
| 	{
 | |
| 		try 
 | |
| 		{	
 | |
| 			if( MyMeta.IsConnected )
 | |
| 			{
 | |
| 				Databases.BindData( MyMeta.Databases );
 | |
| 				if( MyMeta.DefaultDatabase != null ) 
 | |
| 				{
 | |
| 					Databases.SelectedValue = MyMeta.DefaultDatabase.Alias;
 | |
| 					bindTables( Databases.SelectedValue );
 | |
| 					bindViews( Databases.SelectedValue );
 | |
| 				}
 | |
| 			}
 | |
| 		}
 | |
| 		catch
 | |
| 		{
 | |
| 		}
 | |
| 	}
 | |
| 	
 | |
| 	public void bindTables( string sDatabase )
 | |
| 	{
 | |
| 		//int count = 0;
 | |
| 	
 | |
| 		GuiListBox lstTables = ui["chooseTables"] as GuiListBox;
 | |
| 		
 | |
| 		try 
 | |
| 		{	
 | |
| 			IDatabase db = MyMeta.Databases[sDatabase];
 | |
| 			lstTables.BindData(db.Tables);
 | |
| 		}
 | |
| 		catch
 | |
| 		{
 | |
| 		}
 | |
| 	}
 | |
| 	
 | |
| 	public void bindViews( string sDatabase )
 | |
| 	{
 | |
| 		//int count = 0;
 | |
| 	
 | |
| 		GuiListBox lstViews = ui["chooseViews"] as GuiListBox;
 | |
| 		
 | |
| 		try 
 | |
| 		{	
 | |
| 			IDatabase db = MyMeta.Databases[sDatabase];
 | |
| 			lstViews.BindData( db.Views );
 | |
| 		}
 | |
| 		catch
 | |
| 		{
 | |
| 		}
 | |
| 	}
 | |
| 	
 | |
| 	public void chooseDatabase_onchange( GuiComboBox control )
 | |
| 	{
 | |
| 		//int count = 0;
 | |
| 
 | |
| 		GuiComboBox cmbDatabases = ui["chooseDatabase"] as GuiComboBox;
 | |
| 	
 | |
| 		bindTables( cmbDatabases.SelectedText );
 | |
| 		bindViews( cmbDatabases.SelectedText );
 | |
| 		GuiTextBox dbConnection = ui["dbConnection"] as GuiTextBox;
 | |
| 		dbConnection.Text=cmbDatabases.SelectedText;
 | |
| 		GuiTextBox classNamespace = ui["classNamespace"] as GuiTextBox;
 | |
| 		classNamespace.Text=cmbDatabases.SelectedText + ".Object.Library";
 | |
| 		Status = string.Format("chooseDatabase_onchange");
 | |
| 	}
 | |
| 	private string Status
 | |
| 	{
 | |
| 		set
 | |
| 		{
 | |
| 			GuiLabel labelTest = ui["labelTest"] as GuiLabel;
 | |
| 			labelTest.Text = value;
 | |
| 		}
 | |
| 	}
 | |
| 	private GuiButton btnOK
 | |
| 	{
 | |
| 		get
 | |
| 		{
 | |
| 			foreach(IGuiControl ctrl in ui)
 | |
| 			{
 | |
| 				if(ctrl.GetType().Name == "GuiButton"){
 | |
| 					return ctrl as GuiButton;
 | |
| 				}
 | |
| 			}
 | |
| 			return null;
 | |
| 		}
 | |
| 	}
 | |
| 	public void SetupOkButton()
 | |
| 	{
 | |
| 		Status = string.Format("checkBox_onchange");
 | |
| 		GuiCheckBox chkPrimary= ui["chkPrimary"] as GuiCheckBox;
 | |
| 		GuiCheckBox chkColumns= ui["chkColumns"] as GuiCheckBox;
 | |
| 		GuiCheckBox chkFK= ui["chkFK"] as GuiCheckBox;
 | |
| 		GuiLabel labelTest = ui["labelTest"] as GuiLabel;
 | |
| 		string status = "";
 | |
| 		if(chkPrimary.Checked)status+=", " + chkPrimary.Text;
 | |
| 		if(chkColumns.Checked)status+=", " + chkColumns.Text;
 | |
| 		if(chkFK.Checked)status+=", " + chkFK.Text;
 | |
| 		if(status == "")
 | |
| 		{
 | |
| 			btnOK.Enabled = false;
 | |
| 			Status="Status: Select CheckBox to Run";
 | |
| 		}
 | |
| 		else
 | |
| 		{
 | |
| 			GuiListBox lb = ui["chooseTables"] as GuiListBox;
 | |
| 			if(lb.SelectedItems.Count > 0)
 | |
| 			{
 | |
| 				btnOK.Enabled = true;
 | |
| 				Status = string.Format("Will process: {0} {1}",status.Substring(2),lb.SelectedItems.Count);
 | |
| 			}
 | |
| 			else
 | |
| 			{
 | |
| 				Status = "Select one or more tables to process.";
 | |
| 				btnOK.Enabled = false;
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| 	public void checkbox_onclick( GuiCheckBox control )
 | |
| 	{
 | |
| 		SetupOkButton();
 | |
| 	}
 | |
| 	public void chooseTable_onclick( GuiListBox control )
 | |
| 	{
 | |
| 		SetupOkButton();
 | |
| 	}
 | |
| 	private string GetDefault(string sName)
 | |
| 	{
 | |
| 		if( input.Contains( sName ) ) 
 | |
| 		{
 | |
| 			return input[sName].ToString();
 | |
| 		}
 | |
| 		return "";
 | |
| 	}
 | |
| 	<%#FILE MakeGuiCheckBox.cs %>
 | |
| 
 | |
| }
 | |
| ##|GUI_END
 | |
| ##|BODY_MODE Markup
 | |
| ##|BODY_ENGINE .Net Script
 | |
| ##|BODY_LANGUAGE C#
 | |
| ##|BODY_TAG_START <%
 | |
| ##|BODY_TAG_END %>
 | |
| ##|BODY_BEGIN
 | |
| <%
 | |
| public class GeneratedTemplate : DotNetScriptTemplate
 | |
| {
 | |
| 	public GeneratedTemplate(ZeusContext context) : base(context) {}
 | |
| 	//---------------------------------------------------
 | |
| 	// Render() is where you want to write your logic    
 | |
| 	//---------------------------------------------------
 | |
| 	public override void Render()
 | |
| 	{
 | |
| 		string dbName = input["chooseDatabase"].ToString();
 | |
| 		ArrayList selectedTables = input["chooseTables"] as ArrayList;
 | |
| 		foreach(string tblName in selectedTables)
 | |
| 		{
 | |
| 			ITable tbl = MyMeta.Databases[dbName].Tables[tblName];
 | |
| 			if((bool)input["chkPrimary"])PrimaryKeys(tbl);
 | |
| 			if((bool)input["chkColumns"])Details(tbl);
 | |
| 			if((bool)input["chkFK"])ForeignKeys(tbl);
 | |
| 		}
 | |
| 	}
 | |
| 	private void PrimaryKeys(ITable tbl)
 | |
| 	{
 | |
| 		output.writeln("Table - " + tbl.Name);
 | |
| 		foreach(IColumn col in tbl.PrimaryKeys)
 | |
| 		{
 | |
| 			output.writeln("  Column - " + col.Name);
 | |
| 		}
 | |
| 	}
 | |
| 	private void Details(ITable tbl)
 | |
| 	{
 | |
| 		Details(tbl,0);
 | |
| 	}
 | |
| 	private void Details(ITable tbl, int indent)
 | |
| 	{
 | |
| 		string sPad = "".PadRight(indent * 2);
 | |
| %>		<%=sPad%> Table - <%=tbl.Name%><%
 | |
| 		foreach(IColumn col in tbl.Columns)
 | |
| 		{
 | |
| 			%>
 | |
| 			<%=sPad%> Column - <%=col.Name%> <%=col.DataTypeNameComplete%><%
 | |
| 		}
 | |
| 	}
 | |
| 	private void ForeignKeys(ITable tbl)
 | |
| 	{
 | |
| 		output.writeln("Table - " + tbl.Name);
 | |
| 		foreach(IForeignKey fk in tbl.ForeignKeys)
 | |
| 		{
 | |
| 			%>
 | |
| 	ForeignKey - <%=fk.Name%>
 | |
| 		Primary
 | |
| <%Details(fk.PrimaryTable,6);%>
 | |
| 		Foreign
 | |
| <%Details(fk.ForeignTable,6);%><%
 | |
| 		}
 | |
| 	}
 | |
| }
 | |
| %>
 | |
| ##|BODY_END
 | 
