Browse Source
git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@1418 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61shortcuts
22 changed files with 1341 additions and 47 deletions
@ -0,0 +1,27 @@
@@ -0,0 +1,27 @@
|
||||
using System.Reflection; |
||||
using System.Runtime.CompilerServices; |
||||
|
||||
// Information about this assembly is defined by the following
|
||||
// attributes.
|
||||
//
|
||||
// change them to the information which is associated with the assembly
|
||||
// you compile.
|
||||
|
||||
[assembly: AssemblyTitle("NRefactory Demo")] |
||||
[assembly: AssemblyDescription("Graphical application to demonstrate NRefactory")] |
||||
[assembly: AssemblyConfiguration("")] |
||||
[assembly: AssemblyCompany("icsharpcode.net")] |
||||
[assembly: AssemblyProduct("SharpDevelop")] |
||||
[assembly: AssemblyCopyright("2006, Daniel Grunwald")] |
||||
[assembly: AssemblyTrademark("")] |
||||
[assembly: AssemblyCulture("")] |
||||
|
||||
// The assembly version has following format :
|
||||
//
|
||||
// Major.Minor.Build.Revision
|
||||
//
|
||||
// You can specify all values by your own or you can build default build and revision
|
||||
// numbers with the '*' character (the default):
|
||||
|
||||
[assembly: AssemblyVersion("1.0.*")] |
||||
|
@ -0,0 +1,62 @@
@@ -0,0 +1,62 @@
|
||||
/* |
||||
* Created by SharpDevelop. |
||||
* User: Daniel Grunwald |
||||
* Date: ${DATE} |
||||
* Time: ${TIME} |
||||
*/ |
||||
namespace NRefactoryDemo |
||||
{ |
||||
partial class AstView : System.Windows.Forms.UserControl |
||||
{ |
||||
/// <summary>
|
||||
/// Designer variable used to keep track of non-visual components.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null; |
||||
|
||||
/// <summary>
|
||||
/// Disposes resources used by the control.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing) |
||||
{ |
||||
if (disposing) { |
||||
if (components != null) { |
||||
components.Dispose(); |
||||
} |
||||
} |
||||
base.Dispose(disposing); |
||||
} |
||||
|
||||
/// <summary>
|
||||
/// This method is required for Windows Forms designer support.
|
||||
/// Do not change the method contents inside the source code editor. The Forms designer might
|
||||
/// not be able to load this method if it was changed manually.
|
||||
/// </summary>
|
||||
private void InitializeComponent() |
||||
{ |
||||
this.tree = new System.Windows.Forms.TreeView(); |
||||
this.SuspendLayout(); |
||||
//
|
||||
// tree
|
||||
//
|
||||
this.tree.Dock = System.Windows.Forms.DockStyle.Fill; |
||||
this.tree.HideSelection = false; |
||||
this.tree.Location = new System.Drawing.Point(0, 0); |
||||
this.tree.Name = "tree"; |
||||
this.tree.ShowRootLines = false; |
||||
this.tree.Size = new System.Drawing.Size(186, 182); |
||||
this.tree.TabIndex = 0; |
||||
this.tree.KeyDown += new System.Windows.Forms.KeyEventHandler(this.TreeKeyDown); |
||||
//
|
||||
// AstView
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); |
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; |
||||
this.Controls.Add(this.tree); |
||||
this.Name = "AstView"; |
||||
this.Size = new System.Drawing.Size(186, 182); |
||||
this.ResumeLayout(false); |
||||
} |
||||
private System.Windows.Forms.TreeView tree; |
||||
} |
||||
} |
@ -0,0 +1,227 @@
@@ -0,0 +1,227 @@
|
||||
/* |
||||
* Created by SharpDevelop. |
||||
* User: Daniel Grunwald |
||||
* Date: 07.05.2006 |
||||
* Time: 18:25 |
||||
*/ |
||||
|
||||
using System; |
||||
using System.Collections; |
||||
using System.Windows.Forms; |
||||
using System.Reflection; |
||||
|
||||
using ICSharpCode.NRefactory.Parser.AST; |
||||
using ICSharpCode.NRefactory.Parser; |
||||
|
||||
namespace NRefactoryDemo |
||||
{ |
||||
public partial class AstView |
||||
{ |
||||
CompilationUnit unit; |
||||
|
||||
public CompilationUnit Unit { |
||||
get { |
||||
return unit; |
||||
} |
||||
set { |
||||
unit = value; |
||||
UpdateTree(); |
||||
} |
||||
} |
||||
|
||||
void UpdateTree() |
||||
{ |
||||
tree.Nodes.Clear(); |
||||
tree.Nodes.Add(new CollectionNode("CompilationUnit", unit.Children)); |
||||
tree.SelectedNode = tree.Nodes[0]; |
||||
} |
||||
|
||||
public AstView() |
||||
{ |
||||
InitializeComponent(); |
||||
} |
||||
|
||||
public void DeleteSelectedNode() |
||||
{ |
||||
if (tree.SelectedNode is ElementNode) { |
||||
INode element = (tree.SelectedNode as ElementNode).element; |
||||
if (tree.SelectedNode.Parent is CollectionNode) { |
||||
if (MessageBox.Show("Remove selected node from parent collection?", "Remove node", MessageBoxButtons.YesNo, MessageBoxIcon.Question) |
||||
== DialogResult.Yes) |
||||
{ |
||||
IList col = (tree.SelectedNode.Parent as CollectionNode).collection; |
||||
col.Remove(element); |
||||
(tree.SelectedNode.Parent as CollectionNode).Update(); |
||||
} |
||||
} else if (tree.SelectedNode.Parent is ElementNode) { |
||||
if (MessageBox.Show("Set selected property to null?", "Remove node", MessageBoxButtons.YesNo, MessageBoxIcon.Question) |
||||
== DialogResult.Yes) |
||||
{ |
||||
// get parent element
|
||||
element = (tree.SelectedNode.Parent as ElementNode).element; |
||||
string propertyName = (string)tree.SelectedNode.Tag; |
||||
element.GetType().GetProperty(propertyName).SetValue(element, null, null); |
||||
(tree.SelectedNode.Parent as ElementNode).Update(); |
||||
} |
||||
} |
||||
} else if (tree.SelectedNode is CollectionNode) { |
||||
if (MessageBox.Show("Remove all elements from selected collection?", "Clear collection", MessageBoxButtons.YesNo, MessageBoxIcon.Question) |
||||
== DialogResult.Yes) |
||||
{ |
||||
IList col = (tree.SelectedNode as CollectionNode).collection; |
||||
col.Clear(); |
||||
(tree.SelectedNode as CollectionNode).Update(); |
||||
} |
||||
} |
||||
} |
||||
|
||||
public void EditSelectedNode() |
||||
{ |
||||
TreeNode node = tree.SelectedNode; |
||||
while (!(node is ElementNode)) { |
||||
if (node == null) { |
||||
return; |
||||
} |
||||
node = node.Parent; |
||||
} |
||||
INode element = ((ElementNode)node).element; |
||||
using (EditDialog dlg = new EditDialog(element)) { |
||||
dlg.ShowDialog(); |
||||
} |
||||
((ElementNode)node).Update(); |
||||
} |
||||
|
||||
public void ApplyTransformation(IAstVisitor visitor) |
||||
{ |
||||
if (tree.SelectedNode == tree.Nodes[0]) { |
||||
visitor.Visit(unit, null); |
||||
UpdateTree(); |
||||
} else { |
||||
string name = visitor.GetType().Name; |
||||
ElementNode elementNode = tree.SelectedNode as ElementNode; |
||||
CollectionNode collectionNode = tree.SelectedNode as CollectionNode; |
||||
if (elementNode != null) { |
||||
if (MessageBox.Show(("Apply " + name + " to selected element '" + elementNode.Text + "'?"), |
||||
"Apply transformation", MessageBoxButtons.YesNo, MessageBoxIcon.Question) |
||||
== DialogResult.Yes) |
||||
{ |
||||
elementNode.element.AcceptVisitor(visitor, null); |
||||
elementNode.Update(); |
||||
} |
||||
} else if (collectionNode != null) { |
||||
if (MessageBox.Show(("Apply " + name + " to all elements in selected collection '" + collectionNode.Text + "'?"), |
||||
"Apply transformation", MessageBoxButtons.YesNo, MessageBoxIcon.Question) |
||||
== DialogResult.Yes) |
||||
{ |
||||
foreach (TreeNode subNode in collectionNode.Nodes) { |
||||
if (subNode is ElementNode) { |
||||
(subNode as ElementNode).element.AcceptVisitor(visitor, null); |
||||
} |
||||
} |
||||
collectionNode.Update(); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
static TreeNode CreateNode(object child) |
||||
{ |
||||
if (child == null) { |
||||
return new TreeNode("*null reference*"); |
||||
} else if (child is INode) { |
||||
return new ElementNode(child as INode); |
||||
} else { |
||||
return new TreeNode(child.ToString()); |
||||
} |
||||
} |
||||
|
||||
class CollectionNode : TreeNode |
||||
{ |
||||
internal IList collection; |
||||
string baseName; |
||||
|
||||
public CollectionNode(string text, IList children) : base(text) |
||||
{ |
||||
this.baseName = text; |
||||
this.collection = children; |
||||
Update(); |
||||
} |
||||
|
||||
public void Update() |
||||
{ |
||||
if (collection.Count == 0) { |
||||
Text = baseName + " (empty collection)"; |
||||
} else if (collection.Count == 1) { |
||||
Text = baseName + " (collection with 1 element)"; |
||||
} else { |
||||
Text = baseName + " (collection with " + collection.Count + " elements)"; |
||||
} |
||||
Nodes.Clear(); |
||||
foreach (object child in collection) { |
||||
Nodes.Add(CreateNode(child)); |
||||
} |
||||
Expand(); |
||||
} |
||||
} |
||||
|
||||
class ElementNode : TreeNode |
||||
{ |
||||
internal INode element; |
||||
|
||||
public ElementNode(INode node) |
||||
{ |
||||
this.element = node; |
||||
Update(); |
||||
} |
||||
|
||||
public void Update() |
||||
{ |
||||
Nodes.Clear(); |
||||
Type type = element.GetType(); |
||||
Text = type.Name; |
||||
if (Tag != null) { // HACK: after editing property element
|
||||
Text = Tag.ToString() + " = " + Text; |
||||
} |
||||
if (!(element is INullable && (element as INullable).IsNull)) { |
||||
AddProperties(type, element); |
||||
if (element.Children.Count > 0) { |
||||
Nodes.Add(new CollectionNode("Children", element.Children)); |
||||
} |
||||
} |
||||
} |
||||
|
||||
void AddProperties(Type type, INode node) |
||||
{ |
||||
if (type == typeof(AbstractNode)) |
||||
return; |
||||
foreach (PropertyInfo pi in type.GetProperties(BindingFlags.Instance | BindingFlags.Public)) { |
||||
if (pi.DeclaringType != type) // don't add derived properties
|
||||
continue; |
||||
if (pi.Name == "IsNull") |
||||
continue; |
||||
object value = pi.GetValue(node, null); |
||||
if (value is IList) { |
||||
Nodes.Add(new CollectionNode(pi.Name, (IList)value)); |
||||
} else if (value is string) { |
||||
Text += " " + pi.Name + "='" + value + "'"; |
||||
} else { |
||||
TreeNode treeNode = CreateNode(value); |
||||
treeNode.Text = pi.Name + " = " + treeNode.Text; |
||||
treeNode.Tag = pi.Name; |
||||
Nodes.Add(treeNode); |
||||
} |
||||
} |
||||
AddProperties(type.BaseType, node); |
||||
} |
||||
} |
||||
|
||||
void TreeKeyDown(object sender, KeyEventArgs e) |
||||
{ |
||||
if (e.KeyData == Keys.Delete) { |
||||
DeleteSelectedNode(); |
||||
} else if (e.KeyData == Keys.Space || e.KeyData == Keys.Enter) { |
||||
EditSelectedNode(); |
||||
} |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,120 @@
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<root> |
||||
<!-- |
||||
Microsoft ResX Schema |
||||
|
||||
Version 2.0 |
||||
|
||||
The primary goals of this format is to allow a simple XML format |
||||
that is mostly human readable. The generation and parsing of the |
||||
various data types are done through the TypeConverter classes |
||||
associated with the data types. |
||||
|
||||
Example: |
||||
|
||||
... ado.net/XML headers & schema ... |
||||
<resheader name="resmimetype">text/microsoft-resx</resheader> |
||||
<resheader name="version">2.0</resheader> |
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> |
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> |
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> |
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> |
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> |
||||
<value>[base64 mime encoded serialized .NET Framework object]</value> |
||||
</data> |
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> |
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> |
||||
<comment>This is a comment</comment> |
||||
</data> |
||||
|
||||
There are any number of "resheader" rows that contain simple |
||||
name/value pairs. |
||||
|
||||
Each data row contains a name, and value. The row also contains a |
||||
type or mimetype. Type corresponds to a .NET class that support |
||||
text/value conversion through the TypeConverter architecture. |
||||
Classes that don't support this are serialized and stored with the |
||||
mimetype set. |
||||
|
||||
The mimetype is used for serialized objects, and tells the |
||||
ResXResourceReader how to depersist the object. This is currently not |
||||
extensible. For a given mimetype the value must be set accordingly: |
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format |
||||
that the ResXResourceWriter will generate, however the reader can |
||||
read any of the formats listed below. |
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64 |
||||
value : The object must be serialized with |
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter |
||||
: and then encoded with base64 encoding. |
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64 |
||||
value : The object must be serialized with |
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter |
||||
: and then encoded with base64 encoding. |
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64 |
||||
value : The object must be serialized into a byte array |
||||
: using a System.ComponentModel.TypeConverter |
||||
: and then encoded with base64 encoding. |
||||
--> |
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> |
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> |
||||
<xsd:element name="root" msdata:IsDataSet="true"> |
||||
<xsd:complexType> |
||||
<xsd:choice maxOccurs="unbounded"> |
||||
<xsd:element name="metadata"> |
||||
<xsd:complexType> |
||||
<xsd:sequence> |
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" /> |
||||
</xsd:sequence> |
||||
<xsd:attribute name="name" use="required" type="xsd:string" /> |
||||
<xsd:attribute name="type" type="xsd:string" /> |
||||
<xsd:attribute name="mimetype" type="xsd:string" /> |
||||
<xsd:attribute ref="xml:space" /> |
||||
</xsd:complexType> |
||||
</xsd:element> |
||||
<xsd:element name="assembly"> |
||||
<xsd:complexType> |
||||
<xsd:attribute name="alias" type="xsd:string" /> |
||||
<xsd:attribute name="name" type="xsd:string" /> |
||||
</xsd:complexType> |
||||
</xsd:element> |
||||
<xsd:element name="data"> |
||||
<xsd:complexType> |
||||
<xsd:sequence> |
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> |
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> |
||||
</xsd:sequence> |
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> |
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> |
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> |
||||
<xsd:attribute ref="xml:space" /> |
||||
</xsd:complexType> |
||||
</xsd:element> |
||||
<xsd:element name="resheader"> |
||||
<xsd:complexType> |
||||
<xsd:sequence> |
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> |
||||
</xsd:sequence> |
||||
<xsd:attribute name="name" type="xsd:string" use="required" /> |
||||
</xsd:complexType> |
||||
</xsd:element> |
||||
</xsd:choice> |
||||
</xsd:complexType> |
||||
</xsd:element> |
||||
</xsd:schema> |
||||
<resheader name="resmimetype"> |
||||
<value>text/microsoft-resx</value> |
||||
</resheader> |
||||
<resheader name="version"> |
||||
<value>2.0</value> |
||||
</resheader> |
||||
<resheader name="reader"> |
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> |
||||
</resheader> |
||||
<resheader name="writer"> |
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> |
||||
</resheader> |
||||
</root> |
@ -0,0 +1,91 @@
@@ -0,0 +1,91 @@
|
||||
/* |
||||
* Created by SharpDevelop. |
||||
* User: Daniel Grunwald |
||||
* Date: ${DATE} |
||||
* Time: ${TIME} |
||||
*/ |
||||
namespace NRefactoryDemo |
||||
{ |
||||
partial class EditDialog : System.Windows.Forms.Form |
||||
{ |
||||
/// <summary>
|
||||
/// Designer variable used to keep track of non-visual components.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null; |
||||
|
||||
/// <summary>
|
||||
/// Disposes resources used by the form.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing) |
||||
{ |
||||
if (disposing) { |
||||
if (components != null) { |
||||
components.Dispose(); |
||||
} |
||||
} |
||||
base.Dispose(disposing); |
||||
} |
||||
|
||||
/// <summary>
|
||||
/// This method is required for Windows Forms designer support.
|
||||
/// Do not change the method contents inside the source code editor. The Forms designer might
|
||||
/// not be able to load this method if it was changed manually.
|
||||
/// </summary>
|
||||
private void InitializeComponent() |
||||
{ |
||||
this.propertyGrid = new System.Windows.Forms.PropertyGrid(); |
||||
this.panel1 = new System.Windows.Forms.Panel(); |
||||
this.okButton = new System.Windows.Forms.Button(); |
||||
this.panel1.SuspendLayout(); |
||||
this.SuspendLayout(); |
||||
//
|
||||
// propertyGrid
|
||||
//
|
||||
this.propertyGrid.Dock = System.Windows.Forms.DockStyle.Fill; |
||||
this.propertyGrid.HelpVisible = false; |
||||
this.propertyGrid.Location = new System.Drawing.Point(0, 0); |
||||
this.propertyGrid.Name = "propertyGrid"; |
||||
this.propertyGrid.PropertySort = System.Windows.Forms.PropertySort.Alphabetical; |
||||
this.propertyGrid.Size = new System.Drawing.Size(477, 436); |
||||
this.propertyGrid.TabIndex = 0; |
||||
this.propertyGrid.ToolbarVisible = false; |
||||
//
|
||||
// panel1
|
||||
//
|
||||
this.panel1.Controls.Add(this.okButton); |
||||
this.panel1.Dock = System.Windows.Forms.DockStyle.Bottom; |
||||
this.panel1.Location = new System.Drawing.Point(0, 436); |
||||
this.panel1.Name = "panel1"; |
||||
this.panel1.Size = new System.Drawing.Size(477, 38); |
||||
this.panel1.TabIndex = 1; |
||||
//
|
||||
// okButton
|
||||
//
|
||||
this.okButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); |
||||
this.okButton.DialogResult = System.Windows.Forms.DialogResult.OK; |
||||
this.okButton.Location = new System.Drawing.Point(390, 6); |
||||
this.okButton.Name = "okButton"; |
||||
this.okButton.Size = new System.Drawing.Size(75, 23); |
||||
this.okButton.TabIndex = 0; |
||||
this.okButton.Text = "OK"; |
||||
this.okButton.UseVisualStyleBackColor = true; |
||||
//
|
||||
// EditDialog
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); |
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; |
||||
this.CancelButton = this.okButton; |
||||
this.ClientSize = new System.Drawing.Size(477, 474); |
||||
this.Controls.Add(this.propertyGrid); |
||||
this.Controls.Add(this.panel1); |
||||
this.Name = "EditDialog"; |
||||
this.Text = "EditDialog"; |
||||
this.panel1.ResumeLayout(false); |
||||
this.ResumeLayout(false); |
||||
} |
||||
private System.Windows.Forms.PropertyGrid propertyGrid; |
||||
private System.Windows.Forms.Button okButton; |
||||
private System.Windows.Forms.Panel panel1; |
||||
} |
||||
} |
@ -0,0 +1,22 @@
@@ -0,0 +1,22 @@
|
||||
/* |
||||
* Created by SharpDevelop. |
||||
* User: Daniel Grunwald |
||||
* Date: 07.05.2006 |
||||
* Time: 19:57 |
||||
*/ |
||||
|
||||
using System; |
||||
using System.Drawing; |
||||
using System.Windows.Forms; |
||||
|
||||
namespace NRefactoryDemo |
||||
{ |
||||
public partial class EditDialog |
||||
{ |
||||
public EditDialog(object element) |
||||
{ |
||||
InitializeComponent(); |
||||
propertyGrid.SelectedObject = element; |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,120 @@
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<root> |
||||
<!-- |
||||
Microsoft ResX Schema |
||||
|
||||
Version 2.0 |
||||
|
||||
The primary goals of this format is to allow a simple XML format |
||||
that is mostly human readable. The generation and parsing of the |
||||
various data types are done through the TypeConverter classes |
||||
associated with the data types. |
||||
|
||||
Example: |
||||
|
||||
... ado.net/XML headers & schema ... |
||||
<resheader name="resmimetype">text/microsoft-resx</resheader> |
||||
<resheader name="version">2.0</resheader> |
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> |
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> |
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> |
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> |
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> |
||||
<value>[base64 mime encoded serialized .NET Framework object]</value> |
||||
</data> |
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> |
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> |
||||
<comment>This is a comment</comment> |
||||
</data> |
||||
|
||||
There are any number of "resheader" rows that contain simple |
||||
name/value pairs. |
||||
|
||||
Each data row contains a name, and value. The row also contains a |
||||
type or mimetype. Type corresponds to a .NET class that support |
||||
text/value conversion through the TypeConverter architecture. |
||||
Classes that don't support this are serialized and stored with the |
||||
mimetype set. |
||||
|
||||
The mimetype is used for serialized objects, and tells the |
||||
ResXResourceReader how to depersist the object. This is currently not |
||||
extensible. For a given mimetype the value must be set accordingly: |
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format |
||||
that the ResXResourceWriter will generate, however the reader can |
||||
read any of the formats listed below. |
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64 |
||||
value : The object must be serialized with |
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter |
||||
: and then encoded with base64 encoding. |
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64 |
||||
value : The object must be serialized with |
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter |
||||
: and then encoded with base64 encoding. |
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64 |
||||
value : The object must be serialized into a byte array |
||||
: using a System.ComponentModel.TypeConverter |
||||
: and then encoded with base64 encoding. |
||||
--> |
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> |
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> |
||||
<xsd:element name="root" msdata:IsDataSet="true"> |
||||
<xsd:complexType> |
||||
<xsd:choice maxOccurs="unbounded"> |
||||
<xsd:element name="metadata"> |
||||
<xsd:complexType> |
||||
<xsd:sequence> |
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" /> |
||||
</xsd:sequence> |
||||
<xsd:attribute name="name" use="required" type="xsd:string" /> |
||||
<xsd:attribute name="type" type="xsd:string" /> |
||||
<xsd:attribute name="mimetype" type="xsd:string" /> |
||||
<xsd:attribute ref="xml:space" /> |
||||
</xsd:complexType> |
||||
</xsd:element> |
||||
<xsd:element name="assembly"> |
||||
<xsd:complexType> |
||||
<xsd:attribute name="alias" type="xsd:string" /> |
||||
<xsd:attribute name="name" type="xsd:string" /> |
||||
</xsd:complexType> |
||||
</xsd:element> |
||||
<xsd:element name="data"> |
||||
<xsd:complexType> |
||||
<xsd:sequence> |
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> |
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> |
||||
</xsd:sequence> |
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> |
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> |
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> |
||||
<xsd:attribute ref="xml:space" /> |
||||
</xsd:complexType> |
||||
</xsd:element> |
||||
<xsd:element name="resheader"> |
||||
<xsd:complexType> |
||||
<xsd:sequence> |
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> |
||||
</xsd:sequence> |
||||
<xsd:attribute name="name" type="xsd:string" use="required" /> |
||||
</xsd:complexType> |
||||
</xsd:element> |
||||
</xsd:choice> |
||||
</xsd:complexType> |
||||
</xsd:element> |
||||
</xsd:schema> |
||||
<resheader name="resmimetype"> |
||||
<value>text/microsoft-resx</value> |
||||
</resheader> |
||||
<resheader name="version"> |
||||
<value>2.0</value> |
||||
</resheader> |
||||
<resheader name="reader"> |
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> |
||||
</resheader> |
||||
<resheader name="writer"> |
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> |
||||
</resheader> |
||||
</root> |
@ -0,0 +1,305 @@
@@ -0,0 +1,305 @@
|
||||
/* |
||||
* Created by SharpDevelop. |
||||
* User: Daniel Grunwald |
||||
* Date: 07.05.2006 |
||||
* Time: 18:09 |
||||
*/ |
||||
namespace NRefactoryDemo |
||||
{ |
||||
partial class MainForm : System.Windows.Forms.Form |
||||
{ |
||||
/// <summary>
|
||||
/// Designer variable used to keep track of non-visual components.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null; |
||||
|
||||
/// <summary>
|
||||
/// Disposes resources used by the form.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing) |
||||
{ |
||||
if (disposing) { |
||||
if (components != null) { |
||||
components.Dispose(); |
||||
} |
||||
} |
||||
base.Dispose(disposing); |
||||
} |
||||
|
||||
/// <summary>
|
||||
/// This method is required for Windows Forms designer support.
|
||||
/// Do not change the method contents inside the source code editor. The Forms designer might
|
||||
/// not be able to load this method if it was changed manually.
|
||||
/// </summary>
|
||||
private void InitializeComponent() |
||||
{ |
||||
this.splitContainer1 = new System.Windows.Forms.SplitContainer(); |
||||
this.codeTextBox = new System.Windows.Forms.TextBox(); |
||||
this.astPanel = new System.Windows.Forms.Panel(); |
||||
this.groupBox2 = new System.Windows.Forms.GroupBox(); |
||||
this.transformationComboBox = new System.Windows.Forms.ComboBox(); |
||||
this.applyTransformation = new System.Windows.Forms.Button(); |
||||
this.deleteSelectedNode = new System.Windows.Forms.Button(); |
||||
this.panel1 = new System.Windows.Forms.Panel(); |
||||
this.arrowUpPictureBox = new System.Windows.Forms.PictureBox(); |
||||
this.arrowDownPictureBox = new System.Windows.Forms.PictureBox(); |
||||
this.groupBox1 = new System.Windows.Forms.GroupBox(); |
||||
this.clearSpecialsButton = new System.Windows.Forms.Button(); |
||||
this.specialsLabel = new System.Windows.Forms.Label(); |
||||
this.generateVBButton = new System.Windows.Forms.Button(); |
||||
this.parseVBButton = new System.Windows.Forms.Button(); |
||||
this.generateCSharpButton = new System.Windows.Forms.Button(); |
||||
this.parseCSharpButton = new System.Windows.Forms.Button(); |
||||
this.editNodeButton = new System.Windows.Forms.Button(); |
||||
this.splitContainer1.Panel1.SuspendLayout(); |
||||
this.splitContainer1.Panel2.SuspendLayout(); |
||||
this.splitContainer1.SuspendLayout(); |
||||
this.groupBox2.SuspendLayout(); |
||||
this.panel1.SuspendLayout(); |
||||
((System.ComponentModel.ISupportInitialize)(this.arrowUpPictureBox)).BeginInit(); |
||||
((System.ComponentModel.ISupportInitialize)(this.arrowDownPictureBox)).BeginInit(); |
||||
this.groupBox1.SuspendLayout(); |
||||
this.SuspendLayout(); |
||||
//
|
||||
// splitContainer1
|
||||
//
|
||||
this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill; |
||||
this.splitContainer1.Location = new System.Drawing.Point(0, 0); |
||||
this.splitContainer1.Name = "splitContainer1"; |
||||
this.splitContainer1.Orientation = System.Windows.Forms.Orientation.Horizontal; |
||||
//
|
||||
// splitContainer1.Panel1
|
||||
//
|
||||
this.splitContainer1.Panel1.Controls.Add(this.codeTextBox); |
||||
this.splitContainer1.Panel1MinSize = 50; |
||||
//
|
||||
// splitContainer1.Panel2
|
||||
//
|
||||
this.splitContainer1.Panel2.Controls.Add(this.astPanel); |
||||
this.splitContainer1.Panel2.Controls.Add(this.groupBox2); |
||||
this.splitContainer1.Panel2.Controls.Add(this.panel1); |
||||
this.splitContainer1.Panel2MinSize = 150; |
||||
this.splitContainer1.Size = new System.Drawing.Size(512, 411); |
||||
this.splitContainer1.SplitterDistance = 146; |
||||
this.splitContainer1.TabIndex = 0; |
||||
//
|
||||
// codeTextBox
|
||||
//
|
||||
this.codeTextBox.Dock = System.Windows.Forms.DockStyle.Fill; |
||||
this.codeTextBox.Location = new System.Drawing.Point(0, 0); |
||||
this.codeTextBox.Multiline = true; |
||||
this.codeTextBox.Name = "codeTextBox"; |
||||
this.codeTextBox.Size = new System.Drawing.Size(512, 146); |
||||
this.codeTextBox.TabIndex = 0; |
||||
this.codeTextBox.Text = "using System;\r\nclass MainClass\r\n{\r\n // This is the entry method of the applicati" + |
||||
"on\r\n public static void Main()\r\n {\r\n Console.WriteLine(\"Hello, World!\");\r\n " + |
||||
" }\r\n}"; |
||||
//
|
||||
// astPanel
|
||||
//
|
||||
this.astPanel.Dock = System.Windows.Forms.DockStyle.Fill; |
||||
this.astPanel.Location = new System.Drawing.Point(128, 60); |
||||
this.astPanel.Name = "astPanel"; |
||||
this.astPanel.Size = new System.Drawing.Size(384, 201); |
||||
this.astPanel.TabIndex = 2; |
||||
//
|
||||
// groupBox2
|
||||
//
|
||||
this.groupBox2.Controls.Add(this.transformationComboBox); |
||||
this.groupBox2.Controls.Add(this.applyTransformation); |
||||
this.groupBox2.Controls.Add(this.editNodeButton); |
||||
this.groupBox2.Controls.Add(this.deleteSelectedNode); |
||||
this.groupBox2.Dock = System.Windows.Forms.DockStyle.Left; |
||||
this.groupBox2.Location = new System.Drawing.Point(0, 60); |
||||
this.groupBox2.Name = "groupBox2"; |
||||
this.groupBox2.Size = new System.Drawing.Size(128, 201); |
||||
this.groupBox2.TabIndex = 1; |
||||
this.groupBox2.TabStop = false; |
||||
this.groupBox2.Text = "Apply transformations"; |
||||
//
|
||||
// transformationComboBox
|
||||
//
|
||||
this.transformationComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; |
||||
this.transformationComboBox.DropDownWidth = 200; |
||||
this.transformationComboBox.FormattingEnabled = true; |
||||
this.transformationComboBox.Items.AddRange(new object[] { |
||||
"CSharpConstructsVisitor", |
||||
"ToVBNetConvertVisitor", |
||||
"VBNetConstructsConvertVisitor", |
||||
"ToCSharpConvertVisitor"}); |
||||
this.transformationComboBox.Location = new System.Drawing.Point(9, 78); |
||||
this.transformationComboBox.Name = "transformationComboBox"; |
||||
this.transformationComboBox.Size = new System.Drawing.Size(112, 21); |
||||
this.transformationComboBox.TabIndex = 2; |
||||
//
|
||||
// applyTransformation
|
||||
//
|
||||
this.applyTransformation.Location = new System.Drawing.Point(25, 105); |
||||
this.applyTransformation.Name = "applyTransformation"; |
||||
this.applyTransformation.Size = new System.Drawing.Size(96, 23); |
||||
this.applyTransformation.TabIndex = 3; |
||||
this.applyTransformation.Text = "Run visitor"; |
||||
this.applyTransformation.UseVisualStyleBackColor = true; |
||||
this.applyTransformation.Click += new System.EventHandler(this.ApplyTransformationClick); |
||||
//
|
||||
// deleteSelectedNode
|
||||
//
|
||||
this.deleteSelectedNode.Location = new System.Drawing.Point(9, 20); |
||||
this.deleteSelectedNode.Name = "deleteSelectedNode"; |
||||
this.deleteSelectedNode.Size = new System.Drawing.Size(110, 23); |
||||
this.deleteSelectedNode.TabIndex = 0; |
||||
this.deleteSelectedNode.Text = "Delete node"; |
||||
this.deleteSelectedNode.UseVisualStyleBackColor = true; |
||||
this.deleteSelectedNode.Click += new System.EventHandler(this.DeleteSelectedNodeClick); |
||||
//
|
||||
// panel1
|
||||
//
|
||||
this.panel1.Controls.Add(this.arrowUpPictureBox); |
||||
this.panel1.Controls.Add(this.arrowDownPictureBox); |
||||
this.panel1.Controls.Add(this.groupBox1); |
||||
this.panel1.Controls.Add(this.generateVBButton); |
||||
this.panel1.Controls.Add(this.parseVBButton); |
||||
this.panel1.Controls.Add(this.generateCSharpButton); |
||||
this.panel1.Controls.Add(this.parseCSharpButton); |
||||
this.panel1.Dock = System.Windows.Forms.DockStyle.Top; |
||||
this.panel1.Location = new System.Drawing.Point(0, 0); |
||||
this.panel1.Name = "panel1"; |
||||
this.panel1.Size = new System.Drawing.Size(512, 60); |
||||
this.panel1.TabIndex = 0; |
||||
//
|
||||
// arrowUpPictureBox
|
||||
//
|
||||
this.arrowUpPictureBox.Location = new System.Drawing.Point(404, 3); |
||||
this.arrowUpPictureBox.Name = "arrowUpPictureBox"; |
||||
this.arrowUpPictureBox.Size = new System.Drawing.Size(29, 54); |
||||
this.arrowUpPictureBox.TabIndex = 2; |
||||
this.arrowUpPictureBox.TabStop = false; |
||||
this.arrowUpPictureBox.Paint += new System.Windows.Forms.PaintEventHandler(this.ArrowUpPictureBoxPaint); |
||||
//
|
||||
// arrowDownPictureBox
|
||||
//
|
||||
this.arrowDownPictureBox.Location = new System.Drawing.Point(123, 3); |
||||
this.arrowDownPictureBox.Name = "arrowDownPictureBox"; |
||||
this.arrowDownPictureBox.Size = new System.Drawing.Size(29, 54); |
||||
this.arrowDownPictureBox.TabIndex = 2; |
||||
this.arrowDownPictureBox.TabStop = false; |
||||
this.arrowDownPictureBox.Paint += new System.Windows.Forms.PaintEventHandler(this.ArrowDownPictureBoxPaint); |
||||
//
|
||||
// groupBox1
|
||||
//
|
||||
this.groupBox1.Controls.Add(this.clearSpecialsButton); |
||||
this.groupBox1.Controls.Add(this.specialsLabel); |
||||
this.groupBox1.Location = new System.Drawing.Point(3, -2); |
||||
this.groupBox1.Name = "groupBox1"; |
||||
this.groupBox1.Size = new System.Drawing.Size(114, 59); |
||||
this.groupBox1.TabIndex = 4; |
||||
this.groupBox1.TabStop = false; |
||||
//
|
||||
// clearSpecialsButton
|
||||
//
|
||||
this.clearSpecialsButton.Location = new System.Drawing.Point(31, 30); |
||||
this.clearSpecialsButton.Name = "clearSpecialsButton"; |
||||
this.clearSpecialsButton.Size = new System.Drawing.Size(75, 23); |
||||
this.clearSpecialsButton.TabIndex = 1; |
||||
this.clearSpecialsButton.Text = "Clear"; |
||||
this.clearSpecialsButton.UseVisualStyleBackColor = true; |
||||
this.clearSpecialsButton.Click += new System.EventHandler(this.ClearSpecialsButtonClick); |
||||
//
|
||||
// specialsLabel
|
||||
//
|
||||
this.specialsLabel.Location = new System.Drawing.Point(6, 16); |
||||
this.specialsLabel.Name = "specialsLabel"; |
||||
this.specialsLabel.Size = new System.Drawing.Size(100, 23); |
||||
this.specialsLabel.TabIndex = 0; |
||||
this.specialsLabel.Text = "# specials saved"; |
||||
//
|
||||
// generateVBButton
|
||||
//
|
||||
this.generateVBButton.Location = new System.Drawing.Point(281, 31); |
||||
this.generateVBButton.Name = "generateVBButton"; |
||||
this.generateVBButton.Size = new System.Drawing.Size(117, 23); |
||||
this.generateVBButton.TabIndex = 3; |
||||
this.generateVBButton.Text = "Generate VB code"; |
||||
this.generateVBButton.UseVisualStyleBackColor = true; |
||||
this.generateVBButton.Click += new System.EventHandler(this.GenerateVBButtonClick); |
||||
//
|
||||
// parseVBButton
|
||||
//
|
||||
this.parseVBButton.Location = new System.Drawing.Point(158, 31); |
||||
this.parseVBButton.Name = "parseVBButton"; |
||||
this.parseVBButton.Size = new System.Drawing.Size(117, 23); |
||||
this.parseVBButton.TabIndex = 1; |
||||
this.parseVBButton.Text = "Parse VB code"; |
||||
this.parseVBButton.UseVisualStyleBackColor = true; |
||||
this.parseVBButton.Click += new System.EventHandler(this.ParseVBButtonClick); |
||||
//
|
||||
// generateCSharpButton
|
||||
//
|
||||
this.generateCSharpButton.Location = new System.Drawing.Point(281, 6); |
||||
this.generateCSharpButton.Name = "generateCSharpButton"; |
||||
this.generateCSharpButton.Size = new System.Drawing.Size(117, 23); |
||||
this.generateCSharpButton.TabIndex = 2; |
||||
this.generateCSharpButton.Text = "Generate C# code"; |
||||
this.generateCSharpButton.UseVisualStyleBackColor = true; |
||||
this.generateCSharpButton.Click += new System.EventHandler(this.GenerateCSharpButtonClick); |
||||
//
|
||||
// parseCSharpButton
|
||||
//
|
||||
this.parseCSharpButton.Location = new System.Drawing.Point(158, 6); |
||||
this.parseCSharpButton.Name = "parseCSharpButton"; |
||||
this.parseCSharpButton.Size = new System.Drawing.Size(117, 23); |
||||
this.parseCSharpButton.TabIndex = 0; |
||||
this.parseCSharpButton.Text = "Parse C# code"; |
||||
this.parseCSharpButton.UseVisualStyleBackColor = true; |
||||
this.parseCSharpButton.Click += new System.EventHandler(this.ParseCSharpButtonClick); |
||||
//
|
||||
// editNodeButton
|
||||
//
|
||||
this.editNodeButton.Location = new System.Drawing.Point(9, 49); |
||||
this.editNodeButton.Name = "editNodeButton"; |
||||
this.editNodeButton.Size = new System.Drawing.Size(110, 23); |
||||
this.editNodeButton.TabIndex = 1; |
||||
this.editNodeButton.Text = "Edit node"; |
||||
this.editNodeButton.UseVisualStyleBackColor = true; |
||||
this.editNodeButton.Click += new System.EventHandler(this.EditNodeButtonClick); |
||||
//
|
||||
// MainForm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); |
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; |
||||
this.ClientSize = new System.Drawing.Size(512, 411); |
||||
this.Controls.Add(this.splitContainer1); |
||||
this.Name = "MainForm"; |
||||
this.Text = "NRefactoryDemo"; |
||||
this.splitContainer1.Panel1.ResumeLayout(false); |
||||
this.splitContainer1.Panel1.PerformLayout(); |
||||
this.splitContainer1.Panel2.ResumeLayout(false); |
||||
this.splitContainer1.ResumeLayout(false); |
||||
this.groupBox2.ResumeLayout(false); |
||||
this.panel1.ResumeLayout(false); |
||||
((System.ComponentModel.ISupportInitialize)(this.arrowUpPictureBox)).EndInit(); |
||||
((System.ComponentModel.ISupportInitialize)(this.arrowDownPictureBox)).EndInit(); |
||||
this.groupBox1.ResumeLayout(false); |
||||
this.ResumeLayout(false); |
||||
} |
||||
private System.Windows.Forms.Button editNodeButton; |
||||
private System.Windows.Forms.ComboBox transformationComboBox; |
||||
private System.Windows.Forms.Button applyTransformation; |
||||
private System.Windows.Forms.Button deleteSelectedNode; |
||||
private System.Windows.Forms.Panel astPanel; |
||||
private System.Windows.Forms.GroupBox groupBox2; |
||||
private System.Windows.Forms.Button parseCSharpButton; |
||||
private System.Windows.Forms.Button generateCSharpButton; |
||||
private System.Windows.Forms.Button parseVBButton; |
||||
private System.Windows.Forms.Button generateVBButton; |
||||
private System.Windows.Forms.PictureBox arrowUpPictureBox; |
||||
private System.Windows.Forms.PictureBox arrowDownPictureBox; |
||||
private System.Windows.Forms.Label specialsLabel; |
||||
private System.Windows.Forms.Button clearSpecialsButton; |
||||
private System.Windows.Forms.GroupBox groupBox1; |
||||
private System.Windows.Forms.Panel panel1; |
||||
private System.Windows.Forms.TextBox codeTextBox; |
||||
private System.Windows.Forms.SplitContainer splitContainer1; |
||||
} |
||||
} |
@ -0,0 +1,135 @@
@@ -0,0 +1,135 @@
|
||||
/* |
||||
* Created by SharpDevelop. |
||||
* User: Daniel Grunwald |
||||
* Date: 07.05.2006 |
||||
* Time: 18:09 |
||||
*/ |
||||
|
||||
using System; |
||||
using System.Collections.Generic; |
||||
using System.Drawing; |
||||
using System.IO; |
||||
using System.Windows.Forms; |
||||
|
||||
using ICSharpCode.NRefactory.Parser; |
||||
using ICSharpCode.NRefactory.PrettyPrinter; |
||||
|
||||
namespace NRefactoryDemo |
||||
{ |
||||
/// <summary>
|
||||
/// Graphical application to demonstrate NRefactory.
|
||||
/// </summary>
|
||||
public partial class MainForm |
||||
{ |
||||
[STAThread] |
||||
public static void Main(string[] args) |
||||
{ |
||||
Application.EnableVisualStyles(); |
||||
Application.SetCompatibleTextRenderingDefault(false); |
||||
Application.Run(new MainForm()); |
||||
} |
||||
|
||||
AstView astView = new AstView(); |
||||
|
||||
public MainForm() |
||||
{ |
||||
// The InitializeComponent() call is required for Windows Forms designer support.
|
||||
InitializeComponent(); |
||||
astView.Dock = DockStyle.Fill; |
||||
astPanel.Controls.Add(astView); |
||||
ParseCSharpButtonClick(null, null); |
||||
transformationComboBox.SelectedIndex = 0; |
||||
} |
||||
|
||||
void ClearSpecialsButtonClick(object sender, EventArgs e) |
||||
{ |
||||
SetSpecials(new ISpecial[0]); |
||||
} |
||||
|
||||
IList<ISpecial> savedSpecialsList; |
||||
|
||||
void SetSpecials(IList<ISpecial> specialsList) |
||||
{ |
||||
savedSpecialsList = specialsList; |
||||
specialsLabel.Text = specialsList.Count + " specials saved"; |
||||
} |
||||
|
||||
void ArrowDownPictureBoxPaint(object sender, PaintEventArgs e) |
||||
{ |
||||
Size size = arrowDownPictureBox.Size; |
||||
e.Graphics.DrawLine(Pens.Black, size.Width / 2, 0, size.Width / 2, size.Height); |
||||
e.Graphics.DrawLine(Pens.Black, 0, size.Height - size.Width / 2, size.Width / 2, size.Height); |
||||
e.Graphics.DrawLine(Pens.Black, size.Width - 1, size.Height - size.Width / 2, size.Width / 2, size.Height); |
||||
} |
||||
|
||||
void ArrowUpPictureBoxPaint(object sender, PaintEventArgs e) |
||||
{ |
||||
Size size = arrowUpPictureBox.Size; |
||||
e.Graphics.DrawLine(Pens.Black, size.Width / 2, 0, size.Width / 2, size.Height); |
||||
e.Graphics.DrawLine(Pens.Black, 0, size.Width / 2, size.Width / 2, 0); |
||||
e.Graphics.DrawLine(Pens.Black, size.Width - 1, size.Width / 2, size.Width / 2, 0); |
||||
} |
||||
|
||||
void ParseCSharpButtonClick(object sender, EventArgs e) |
||||
{ |
||||
Parse(SupportedLanguage.CSharp, codeTextBox.Text); |
||||
} |
||||
|
||||
void ParseVBButtonClick(object sender, EventArgs e) |
||||
{ |
||||
Parse(SupportedLanguage.VBNet, codeTextBox.Text); |
||||
} |
||||
|
||||
void Parse(SupportedLanguage language, string text) |
||||
{ |
||||
using (IParser parser = ParserFactory.CreateParser(language, new StringReader(text))) { |
||||
parser.Parse(); |
||||
SetSpecials(parser.Lexer.SpecialTracker.RetrieveSpecials()); |
||||
astView.Unit = parser.CompilationUnit; |
||||
if (parser.Errors.count > 0) { |
||||
MessageBox.Show(parser.Errors.ErrorOutput, "Parse errors"); |
||||
} |
||||
} |
||||
} |
||||
|
||||
void GenerateCSharpButtonClick(object sender, EventArgs e) |
||||
{ |
||||
GenerateCode(new CSharpOutputVisitor()); |
||||
} |
||||
|
||||
void GenerateVBButtonClick(object sender, EventArgs e) |
||||
{ |
||||
GenerateCode(new VBNetOutputVisitor()); |
||||
} |
||||
|
||||
void GenerateCode(IOutputASTVisitor outputVisitor) |
||||
{ |
||||
using (SpecialNodesInserter.Install(savedSpecialsList, outputVisitor)) { |
||||
outputVisitor.Visit(astView.Unit, null); |
||||
} |
||||
codeTextBox.Text = outputVisitor.Text.Replace("\t", " "); |
||||
} |
||||
|
||||
void DeleteSelectedNodeClick(object sender, EventArgs e) |
||||
{ |
||||
astView.DeleteSelectedNode(); |
||||
} |
||||
|
||||
void ApplyTransformationClick(object sender, EventArgs e) |
||||
{ |
||||
try { |
||||
string typeName = typeof(ToCSharpConvertVisitor).Namespace + "." + transformationComboBox.SelectedItem.ToString(); |
||||
Type type = typeof(ToCSharpConvertVisitor).Assembly.GetType(typeName); |
||||
astView.ApplyTransformation((IAstVisitor)Activator.CreateInstance(type)); |
||||
} catch (Exception ex) { |
||||
MessageBox.Show(ex.ToString(), "Error"); |
||||
astView.Unit = astView.Unit; // complete refresh
|
||||
} |
||||
} |
||||
|
||||
void EditNodeButtonClick(object sender, EventArgs e) |
||||
{ |
||||
astView.EditSelectedNode(); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,120 @@
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<root> |
||||
<!-- |
||||
Microsoft ResX Schema |
||||
|
||||
Version 2.0 |
||||
|
||||
The primary goals of this format is to allow a simple XML format |
||||
that is mostly human readable. The generation and parsing of the |
||||
various data types are done through the TypeConverter classes |
||||
associated with the data types. |
||||
|
||||
Example: |
||||
|
||||
... ado.net/XML headers & schema ... |
||||
<resheader name="resmimetype">text/microsoft-resx</resheader> |
||||
<resheader name="version">2.0</resheader> |
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> |
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> |
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> |
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> |
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> |
||||
<value>[base64 mime encoded serialized .NET Framework object]</value> |
||||
</data> |
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> |
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> |
||||
<comment>This is a comment</comment> |
||||
</data> |
||||
|
||||
There are any number of "resheader" rows that contain simple |
||||
name/value pairs. |
||||
|
||||
Each data row contains a name, and value. The row also contains a |
||||
type or mimetype. Type corresponds to a .NET class that support |
||||
text/value conversion through the TypeConverter architecture. |
||||
Classes that don't support this are serialized and stored with the |
||||
mimetype set. |
||||
|
||||
The mimetype is used for serialized objects, and tells the |
||||
ResXResourceReader how to depersist the object. This is currently not |
||||
extensible. For a given mimetype the value must be set accordingly: |
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format |
||||
that the ResXResourceWriter will generate, however the reader can |
||||
read any of the formats listed below. |
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64 |
||||
value : The object must be serialized with |
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter |
||||
: and then encoded with base64 encoding. |
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64 |
||||
value : The object must be serialized with |
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter |
||||
: and then encoded with base64 encoding. |
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64 |
||||
value : The object must be serialized into a byte array |
||||
: using a System.ComponentModel.TypeConverter |
||||
: and then encoded with base64 encoding. |
||||
--> |
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> |
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> |
||||
<xsd:element name="root" msdata:IsDataSet="true"> |
||||
<xsd:complexType> |
||||
<xsd:choice maxOccurs="unbounded"> |
||||
<xsd:element name="metadata"> |
||||
<xsd:complexType> |
||||
<xsd:sequence> |
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" /> |
||||
</xsd:sequence> |
||||
<xsd:attribute name="name" use="required" type="xsd:string" /> |
||||
<xsd:attribute name="type" type="xsd:string" /> |
||||
<xsd:attribute name="mimetype" type="xsd:string" /> |
||||
<xsd:attribute ref="xml:space" /> |
||||
</xsd:complexType> |
||||
</xsd:element> |
||||
<xsd:element name="assembly"> |
||||
<xsd:complexType> |
||||
<xsd:attribute name="alias" type="xsd:string" /> |
||||
<xsd:attribute name="name" type="xsd:string" /> |
||||
</xsd:complexType> |
||||
</xsd:element> |
||||
<xsd:element name="data"> |
||||
<xsd:complexType> |
||||
<xsd:sequence> |
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> |
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> |
||||
</xsd:sequence> |
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> |
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> |
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> |
||||
<xsd:attribute ref="xml:space" /> |
||||
</xsd:complexType> |
||||
</xsd:element> |
||||
<xsd:element name="resheader"> |
||||
<xsd:complexType> |
||||
<xsd:sequence> |
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> |
||||
</xsd:sequence> |
||||
<xsd:attribute name="name" type="xsd:string" use="required" /> |
||||
</xsd:complexType> |
||||
</xsd:element> |
||||
</xsd:choice> |
||||
</xsd:complexType> |
||||
</xsd:element> |
||||
</xsd:schema> |
||||
<resheader name="resmimetype"> |
||||
<value>text/microsoft-resx</value> |
||||
</resheader> |
||||
<resheader name="version"> |
||||
<value>2.0</value> |
||||
</resheader> |
||||
<resheader name="reader"> |
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> |
||||
</resheader> |
||||
<resheader name="writer"> |
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> |
||||
</resheader> |
||||
</root> |
@ -0,0 +1,66 @@
@@ -0,0 +1,66 @@
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
||||
<PropertyGroup> |
||||
<OutputType>WinExe</OutputType> |
||||
<RootNamespace>NRefactoryDemo</RootNamespace> |
||||
<AssemblyName>NRefactoryDemo</AssemblyName> |
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> |
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> |
||||
<ProjectGuid>{63199047-9D5D-474C-B3CC-62ABBB071B67}</ProjectGuid> |
||||
</PropertyGroup> |
||||
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' "> |
||||
<BaseIntermediateOutputPath>obj\</BaseIntermediateOutputPath> |
||||
<IntermediateOutputPath>obj\Debug\</IntermediateOutputPath> |
||||
<OutputPath>bin\Debug\</OutputPath> |
||||
<Optimize>False</Optimize> |
||||
<DefineConstants>DEBUG;TRACE</DefineConstants> |
||||
<DebugSymbols>True</DebugSymbols> |
||||
<DebugType>Full</DebugType> |
||||
<CheckForOverflowUnderflow>True</CheckForOverflowUnderflow> |
||||
</PropertyGroup> |
||||
<PropertyGroup Condition=" '$(Configuration)' == 'Release' "> |
||||
<BaseIntermediateOutputPath>obj\</BaseIntermediateOutputPath> |
||||
<IntermediateOutputPath>obj\Release\</IntermediateOutputPath> |
||||
<OutputPath>bin\Release\</OutputPath> |
||||
<Optimize>True</Optimize> |
||||
<DefineConstants>TRACE</DefineConstants> |
||||
<DebugSymbols>False</DebugSymbols> |
||||
<DebugType>None</DebugType> |
||||
<CheckForOverflowUnderflow>False</CheckForOverflowUnderflow> |
||||
</PropertyGroup> |
||||
<ItemGroup> |
||||
<Reference Include="System" /> |
||||
<Reference Include="System.Data" /> |
||||
<Reference Include="System.Drawing" /> |
||||
<Reference Include="System.Windows.Forms" /> |
||||
<Reference Include="System.Xml" /> |
||||
<Reference Include="ICSharpCode.NRefactory"> |
||||
<HintPath>..\..\bin\ICSharpCode.NRefactory.dll</HintPath> |
||||
<SpecificVersion>False</SpecificVersion> |
||||
</Reference> |
||||
</ItemGroup> |
||||
<ItemGroup> |
||||
<Compile Include="MainForm.cs" /> |
||||
<Compile Include="MainForm.Designer.cs"> |
||||
<DependentUpon>MainForm.cs</DependentUpon> |
||||
</Compile> |
||||
<Compile Include="AssemblyInfo.cs" /> |
||||
<EmbeddedResource Include="MainForm.resx"> |
||||
<DependentUpon>MainForm.cs</DependentUpon> |
||||
</EmbeddedResource> |
||||
<Compile Include="AstView.Designer.cs"> |
||||
<DependentUpon>AstView.cs</DependentUpon> |
||||
</Compile> |
||||
<Compile Include="AstView.cs" /> |
||||
<EmbeddedResource Include="AstView.resx"> |
||||
<DependentUpon>AstView.cs</DependentUpon> |
||||
</EmbeddedResource> |
||||
<Compile Include="EditDialog.Designer.cs"> |
||||
<DependentUpon>EditDialog.cs</DependentUpon> |
||||
</Compile> |
||||
<Compile Include="EditDialog.cs" /> |
||||
<EmbeddedResource Include="EditDialog.resx"> |
||||
<DependentUpon>EditDialog.cs</DependentUpon> |
||||
</EmbeddedResource> |
||||
</ItemGroup> |
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.Targets" /> |
||||
</Project> |
@ -0,0 +1,16 @@
@@ -0,0 +1,16 @@
|
||||
Microsoft Visual Studio Solution File, Format Version 9.00 |
||||
# SharpDevelop 2.1.0.1394 |
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactoryDemo", "NRefactoryDemo.csproj", "{63199047-9D5D-474C-B3CC-62ABBB071B67}" |
||||
EndProject |
||||
Global |
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution |
||||
Debug|Any CPU = Debug|Any CPU |
||||
Release|Any CPU = Release|Any CPU |
||||
EndGlobalSection |
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution |
||||
{63199047-9D5D-474C-B3CC-62ABBB071B67}.Debug|Any CPU.Build.0 = Debug|Any CPU |
||||
{63199047-9D5D-474C-B3CC-62ABBB071B67}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
||||
{63199047-9D5D-474C-B3CC-62ABBB071B67}.Release|Any CPU.Build.0 = Release|Any CPU |
||||
{63199047-9D5D-474C-B3CC-62ABBB071B67}.Release|Any CPU.ActiveCfg = Release|Any CPU |
||||
EndGlobalSection |
||||
EndGlobal |
Loading…
Reference in new issue