using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
namespace PropertyGenerator
{
/// <summary>
/// Summary description for Form1.
/// </summary>
public class FrmMain : System.Windows.Forms.Form
{
private System.Windows.Forms.TextBox txtSource;
private System.Windows.Forms.Button btnGenerate;
private System.Windows.Forms.TextBox txtResult;
private System.Windows.Forms.TextBox txtMember;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.ComboBox cboLanguageFrom;
private System.Windows.Forms.TextBox txtStartingCharPos;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.ComboBox cboLanguageTo;
private System.Windows.Forms.CheckBox cbxProperty;
private System.Windows.Forms.CheckBox chkCreateRegion;
private CheckBox chkEquals;
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;
public FrmMain()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
//
// TODO: Add any constructor code after InitializeComponent call
//
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.txtResult = new System.Windows.Forms.TextBox();
this.txtSource = new System.Windows.Forms.TextBox();
this.btnGenerate = new System.Windows.Forms.Button();
this.txtMember = new System.Windows.Forms.TextBox();
this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
this.cboLanguageFrom = new System.Windows.Forms.ComboBox();
this.label4 = new System.Windows.Forms.Label();
this.txtStartingCharPos = new System.Windows.Forms.TextBox();
this.label5 = new System.Windows.Forms.Label();
this.cboLanguageTo = new System.Windows.Forms.ComboBox();
this.cbxProperty = new System.Windows.Forms.CheckBox();
this.chkCreateRegion = new System.Windows.Forms.CheckBox();
this.chkEquals = new System.Windows.Forms.CheckBox();
this.SuspendLayout();
//
// txtResult
//
this.txtResult.Location = new System.Drawing.Point(301, 0);
this.txtResult.Multiline = true;
this.txtResult.Name = "txtResult";
this.txtResult.Size = new System.Drawing.Size(300, 300);
this.txtResult.TabIndex = 1;
//
// txtSource
//
this.txtSource.Location = new System.Drawing.Point(-1, 0);
this.txtSource.Multiline = true;
this.txtSource.Name = "txtSource";
this.txtSource.Size = new System.Drawing.Size(300, 300);
this.txtSource.TabIndex = 0;
//
// btnGenerate
//
this.btnGenerate.Location = new System.Drawing.Point(510, 341);
this.btnGenerate.Name = "btnGenerate";
this.btnGenerate.Size = new System.Drawing.Size(75, 23);
this.btnGenerate.TabIndex = 2;
this.btnGenerate.Text = "Generate";
this.btnGenerate.Click += new System.EventHandler(this.btnGenerate_Click);
//
// txtMember
//
this.txtMember.Location = new System.Drawing.Point(72, 344);
this.txtMember.Name = "txtMember";
this.txtMember.Size = new System.Drawing.Size(136, 20);
this.txtMember.TabIndex = 3;
//
// label1
//
this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label1.Location = new System.Drawing.Point(8, 347);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(64, 23);
this.label1.TabIndex = 4;
this.label1.Text = "Member";
//
// label2
//
this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label2.Location = new System.Drawing.Point(216, 347);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(120, 23);
this.label2.TabIndex = 5;
this.label2.Text = "dont forget . (Dot)";
//
// label3
//
this.label3.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label3.Location = new System.Drawing.Point(8, 318);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(64, 23);
this.label3.TabIndex = 6;
this.label3.Text = "Language";
//
// cboLanguageFrom
//
this.cboLanguageFrom.Items.AddRange(new object[] {
"VB.NET",
"C#",
"Java"});
this.cboLanguageFrom.Location = new System.Drawing.Point(72, 318);
this.cboLanguageFrom.Name = "cboLanguageFrom";
this.cboLanguageFrom.Size = new System.Drawing.Size(136, 21);
this.cboLanguageFrom.TabIndex = 7;
//
// label4
//
this.label4.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label4.Location = new System.Drawing.Point(347, 347);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(118, 23);
this.label4.TabIndex = 8;
this.label4.Text = "Starting char position";
//
// txtStartingCharPos
//
this.txtStartingCharPos.Location = new System.Drawing.Point(472, 344);
this.txtStartingCharPos.Name = "txtStartingCharPos";
this.txtStartingCharPos.Size = new System.Drawing.Size(32, 20);
this.txtStartingCharPos.TabIndex = 9;
this.txtStartingCharPos.Text = "0";
//
// label5
//
this.label5.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label5.Location = new System.Drawing.Point(219, 318);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(32, 23);
this.label5.TabIndex = 10;
this.label5.Text = "To";
//
// cboLanguageTo
//
this.cboLanguageTo.Items.AddRange(new object[] {
"VB.NET",
"C#",
"Java"});
this.cboLanguageTo.Location = new System.Drawing.Point(251, 318);
this.cboLanguageTo.Name = "cboLanguageTo";
this.cboLanguageTo.Size = new System.Drawing.Size(136, 21);
this.cboLanguageTo.TabIndex = 11;
//
// cbxProperty
//
this.cbxProperty.Checked = true;
this.cbxProperty.CheckState = System.Windows.Forms.CheckState.Checked;
this.cbxProperty.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.cbxProperty.Location = new System.Drawing.Point(408, 304);
this.cbxProperty.Name = "cbxProperty";
this.cbxProperty.Size = new System.Drawing.Size(104, 24);
this.cbxProperty.TabIndex = 12;
this.cbxProperty.Text = "Property";
//
// chkCreateRegion
//
this.chkCreateRegion.Checked = true;
this.chkCreateRegion.CheckState = System.Windows.Forms.CheckState.Checked;
this.chkCreateRegion.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.chkCreateRegion.Location = new System.Drawing.Point(408, 322);
this.chkCreateRegion.Name = "chkCreateRegion";
this.chkCreateRegion.Size = new System.Drawing.Size(104, 24);
this.chkCreateRegion.TabIndex = 13;
this.chkCreateRegion.Text = "Create Region";
//
// chkEquals
//
this.chkEquals.Checked = true;
this.chkEquals.CheckState = System.Windows.Forms.CheckState.Checked;
this.chkEquals.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.chkEquals.Location = new System.Drawing.Point(510, 306);
this.chkEquals.Name = "chkEquals";
this.chkEquals.Size = new System.Drawing.Size(73, 24);
this.chkEquals.TabIndex = 14;
this.chkEquals.Text = "Equals";
//
// FrmMain
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(592, 373);
this.Controls.Add(this.chkEquals);
this.Controls.Add(this.txtStartingCharPos);
this.Controls.Add(this.chkCreateRegion);
this.Controls.Add(this.cbxProperty);
this.Controls.Add(this.cboLanguageTo);
this.Controls.Add(this.label5);
this.Controls.Add(this.label4);
this.Controls.Add(this.cboLanguageFrom);
this.Controls.Add(this.label3);
this.Controls.Add(this.label2);
this.Controls.Add(this.label1);
this.Controls.Add(this.txtMember);
this.Controls.Add(this.btnGenerate);
this.Controls.Add(this.txtResult);
this.Controls.Add(this.txtSource);
this.Name = "FrmMain";
this.Text = "Generator";
this.Load += new System.EventHandler(this.FrmMain_Load);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new FrmMain());
}
private void btnGenerate_Click(object sender, System.EventArgs e)
{
int pos=Convert.ToInt32(txtStartingCharPos.Text.Trim());
String[] sCodes;
sCodes = txtSource.Text.Split('\n');
String sResult="";
String sEquals = "";
foreach (String sCode in sCodes)
{
String[] sToken;
sToken=sCode.Trim().Split(' ');
switch (cboLanguageFrom.SelectedIndex)
{
case 0:
if (cbxProperty.Checked)
{
switch (cboLanguageTo.SelectedIndex)
{
case 0: sResult+=
"Public Property "+ sToken[1].Substring(pos) + "() As " + sToken[3] + "\n"+
" Get\n"+
" Return Me."+ txtMember.Text + sToken[1] +"\n"+
" End Get\n"+
" Set(ByVal Value As "+ sToken[3] + ")\n"+
" Me."+ txtMember.Text + sToken[1] + " = Value\n"+
" End Set\n"+
"End Property\n\n";
break;
case 1: sResult+=
"public "+sToken[3]+" "+sToken[1].Substring(pos)+"\n"+
"{\n"+
" get\n"+
" {\n"+
" return "+ txtMember.Text + sToken[1] +";\n"+
" }\n"+
" set\n"+
" {\n"+
" "+ txtMember.Text + sToken[1]+ " = value;\n"+
" }\n"+
"}\n";
break;
case 2: sResult+=
"public "+ sToken[3] +" get"+ sToken[1].Substring(pos) +"() {\n"+
" return "+ txtMember.Text + sToken[1] +";\n"+
"}\n"+
"public void set"+ sToken[1].Substring(pos) +"("+ sToken[3] +" "+ sToken[1].ToLower()[2] + sToken[1].Substring(3)+") {\n"+
" "+ txtMember.Text + sToken[1] +" = "+ sToken[1].ToLower()[pos] + sToken[1].Substring(pos+1) +";\n"+
"}\n\n";
break;
}
}
else
{
switch (cboLanguageTo.SelectedIndex)
{
case 0: sResult+=
"Public Property "+ sToken[1].Substring(pos) + "() As " + sToken[3] + "\n"+
" Get\n"+
" Return Me."+ txtMember.Text + sToken[1] +"\n"+
" End Get\n"+
" Set(ByVal Value As "+ sToken[3] + ")\n"+
" Me."+ txtMember.Text + sToken[1] + " = Value\n"+
" End Set\n"+
"End Property\n\n";
break;
case 1:
case 2: sResult+=
"protected "+sToken[3]+" "+sToken[1]+";\n";
break;
}
}
break;
case 1:
if (cbxProperty.Checked || chkEquals.Checked)
{
switch (cboLanguageTo.SelectedIndex)
{
case 0: sResult+=
"Public Property "+ sToken[1].Substring(pos) + "() As " + sToken[3] + "\n"+
" Get\n"+
" Return Me."+ txtMember.Text + sToken[1] +"\n"+
" End Get\n"+
" Set(ByVal Value As "+ sToken[3] + ")\n"+
" Me."+ txtMember.Text + sToken[1] + " = Value\n"+
" End Set\n"+
"End Property\n\n";
break;
case 1:
string sTemp = sToken[2].Substring(pos, sToken[2].Length - (pos + 1));
string s1stChar = sTemp[0].ToString().ToUpper();
sTemp = s1stChar + sTemp.Substring(1);
sResult+=
"public "+sToken[1]+" "+ sTemp +"\n"+
"{\n"+
" get\n"+
" {\n"+
" return "+ txtMember.Text + sToken[2] +"\n"+
" }\n"+
" set\n"+
" {\n"+
" "+ txtMember.Text + sToken[2].Substring(0,sToken[2].Length-1)+ " = value;\n"+
" }\n"+
"}\n";
string sCheckMember = sToken[2].Replace(";", "");
sEquals +=
"if (" + sCheckMember + " == null ? item." + sCheckMember + " != null : !" + sCheckMember + ".Equals(item." + sCheckMember + " ))\n" +
" return false;\n";
break;
case 2: sResult+=
"public "+ sToken[1] +" get"+ sToken[2].Substring(pos, sToken[2].Length-(pos+1)) +"() {\n"+
" return "+ txtMember.Text + sToken[2] +"\n"+
"}\n"+
"public void set"+ sToken[2].Substring(pos, sToken[2].Length-(pos+1)) +"("+ sToken[1] +" "+ sToken[2].ToLower()[3] + sToken[2].Substring(4, sToken[2].Length-5)+") {\n"+
" "+ txtMember.Text + sToken[2].Substring(0, sToken[2].Length-1) +" = "+ sToken[2].ToLower()[3] + sToken[2].Substring(4, sToken[2].Length-5) +";\n"+
"}\n\n";
break;
}
}
else
{
switch (cboLanguageTo.SelectedIndex)
{
case 0: sResult+=
"Public Property "+ sToken[1].Substring(pos) + "() As " + sToken[3] + "\n"+
" Get\n"+
" Return Me."+ txtMember.Text + sToken[1] +"\n"+
" End Get\n"+
" Set(ByVal Value As "+ sToken[3] + ")\n"+
" Me."+ txtMember.Text + sToken[1] + " = Value\n"+
" End Set\n"+
"End Property\n\n";
break;
case 1:
case 2: sResult+=
"protected "+sToken[3]+" "+sToken[1]+";\n";
break;
}
}
break;
}
}
if (!cbxProperty.Checked)
{
sResult = "";
}
if (chkCreateRegion.Checked)
{
switch(cboLanguageTo.SelectedIndex)
{
case 0:
case 1:
sResult= "#region C#-Style\n\n" + sResult +
"\n#endregion C#-Style";
break;
case 2:
sResult= "#region Java-Style\n\n" + sResult +
"\n#endregion Java-Style";
break;
}
}
if (chkEquals.Checked)
{
sEquals =
"public Boolean Equals(Object item)\n" +
"{\n" +
" if (this == item)\n" +
" return true;\n" + sEquals +
" return true;\n" +
"}\n";
switch (cboLanguageTo.SelectedIndex)
{
case 0:
case 1:
sResult = sResult + sEquals;
break;
case 2:
break;
}
}
txtResult.Text=sResult;
}
private void FrmMain_Load(object sender, System.EventArgs e)
{
cboLanguageFrom.SelectedIndex=1;
cboLanguageTo.SelectedIndex=1;
}
}
}
PS: There are free refactoring tools comes with VS 2005+, but not for VS 2002/2003, check http://msdn.microsoft.com/en-us/library/ms379618(v=vs.80).aspx
No comments:
Post a Comment