Browse Source
git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@2235 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61shortcuts
10 changed files with 797 additions and 1 deletions
@ -0,0 +1,25 @@ |
|||||||
|
<?xml version="1.0" encoding="utf-8" ?> |
||||||
|
<AddIn name = "ClassWizard" |
||||||
|
author = "Itai Bar-Haim" |
||||||
|
url = "" |
||||||
|
description = "Visually add new classes to the project."> |
||||||
|
|
||||||
|
<Manifest> |
||||||
|
<Identity name="ClassWizard" version="@ClassWizard.dll"/> |
||||||
|
<Dependency addin="SharpDevelop" version="2.1"/> |
||||||
|
</Manifest> |
||||||
|
|
||||||
|
<Runtime> |
||||||
|
<Import assembly = "ClassWizard.dll"/> |
||||||
|
</Runtime> |
||||||
|
|
||||||
|
<Path name = "/SharpDevelop/Workbench/MainMenu/Project/ProjectAddMenu"> |
||||||
|
<Condition name = "ProjectActive" activeproject="*"> |
||||||
|
<MenuItem type = "Separator"/> |
||||||
|
<MenuItem id = "NewClass" |
||||||
|
label = "Class" |
||||||
|
class = "ClassWizard.AddNewClassCommand"/> |
||||||
|
</Condition> |
||||||
|
</Path> |
||||||
|
|
||||||
|
</AddIn> |
@ -0,0 +1,69 @@ |
|||||||
|
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
||||||
|
<PropertyGroup> |
||||||
|
<ProjectGuid>{8C59E80D-C4E4-4F36-9AD8-47C40F6E58B4}</ProjectGuid> |
||||||
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> |
||||||
|
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> |
||||||
|
<OutputType>Library</OutputType> |
||||||
|
<RootNamespace>ClassWizard</RootNamespace> |
||||||
|
<AssemblyName>ClassWizard</AssemblyName> |
||||||
|
</PropertyGroup> |
||||||
|
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' "> |
||||||
|
<OutputPath>bin\Debug\</OutputPath> |
||||||
|
<DebugSymbols>True</DebugSymbols> |
||||||
|
<DebugType>Full</DebugType> |
||||||
|
<CheckForOverflowUnderflow>True</CheckForOverflowUnderflow> |
||||||
|
<DefineConstants>DEBUG;TRACE</DefineConstants> |
||||||
|
</PropertyGroup> |
||||||
|
<PropertyGroup Condition=" '$(Configuration)' == 'Release' "> |
||||||
|
<OutputPath>bin\Release\</OutputPath> |
||||||
|
<DebugSymbols>False</DebugSymbols> |
||||||
|
<DebugType>None</DebugType> |
||||||
|
<CheckForOverflowUnderflow>False</CheckForOverflowUnderflow> |
||||||
|
<DefineConstants>TRACE</DefineConstants> |
||||||
|
</PropertyGroup> |
||||||
|
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.Targets" /> |
||||||
|
<ItemGroup> |
||||||
|
<Reference Include="System" /> |
||||||
|
<Reference Include="System.Data" /> |
||||||
|
<Reference Include="System.Drawing" /> |
||||||
|
<Reference Include="System.Windows.Forms" /> |
||||||
|
<Reference Include="System.Xml" /> |
||||||
|
</ItemGroup> |
||||||
|
<ItemGroup> |
||||||
|
<None Include="ClassWizard.addin"> |
||||||
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory> |
||||||
|
</None> |
||||||
|
<EmbeddedResource Include="Resources\ClassesList.xfrm" /> |
||||||
|
<EmbeddedResource Include="Resources\AddClassForm.xfrm" /> |
||||||
|
<Compile Include="..\..\..\..\Main\GlobalAssemblyInfo.cs"> |
||||||
|
<Link>Configuration\GlobalAssemblyInfo.cs</Link> |
||||||
|
</Compile> |
||||||
|
<Compile Include="Configuration\AssemblyInfo.cs" /> |
||||||
|
<Compile Include="Src\AddClassForm.cs" /> |
||||||
|
<Compile Include="Src\AddNewClassCommand.cs" /> |
||||||
|
<Compile Include="Src\AddNewInterfaceCommand.cs" /> |
||||||
|
<Compile Include="Src\ClassesList.cs" /> |
||||||
|
</ItemGroup> |
||||||
|
<ItemGroup> |
||||||
|
<ProjectReference Include="..\..\..\..\Libraries\ICSharpCode.TextEditor\Project\ICSharpCode.TextEditor.csproj"> |
||||||
|
<Project>{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D}</Project> |
||||||
|
<Name>ICSharpCode.TextEditor</Name> |
||||||
|
</ProjectReference> |
||||||
|
<ProjectReference Include="..\..\..\..\Libraries\NRefactory\Project\NRefactory.csproj"> |
||||||
|
<Project>{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}</Project> |
||||||
|
<Name>NRefactory</Name> |
||||||
|
</ProjectReference> |
||||||
|
<ProjectReference Include="..\..\..\..\Main\Base\Project\ICSharpCode.SharpDevelop.csproj"> |
||||||
|
<Project>{2748AD25-9C63-4E12-877B-4DCE96FBED54}</Project> |
||||||
|
<Name>ICSharpCode.SharpDevelop</Name> |
||||||
|
</ProjectReference> |
||||||
|
<ProjectReference Include="..\..\..\..\Main\Core\Project\ICSharpCode.Core.csproj"> |
||||||
|
<Project>{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}</Project> |
||||||
|
<Name>ICSharpCode.Core</Name> |
||||||
|
</ProjectReference> |
||||||
|
<ProjectReference Include="..\..\..\..\Main\ICSharpCode.SharpDevelop.Dom\Project\ICSharpCode.SharpDevelop.Dom.csproj"> |
||||||
|
<Project>{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}</Project> |
||||||
|
<Name>ICSharpCode.SharpDevelop.Dom</Name> |
||||||
|
</ProjectReference> |
||||||
|
</ItemGroup> |
||||||
|
</Project> |
@ -0,0 +1,20 @@ |
|||||||
|
// <file>
|
||||||
|
// <copyright see="prj:///doc/copyright.txt"/>
|
||||||
|
// <license see="prj:///doc/license.txt"/>
|
||||||
|
// <owner name="Itai Bar-Haim" email=""/>
|
||||||
|
// </file>
|
||||||
|
|
||||||
|
using System.Reflection; |
||||||
|
using System.Runtime.CompilerServices; |
||||||
|
using System.Runtime.InteropServices; |
||||||
|
|
||||||
|
// 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("ClassWizard")] |
||||||
|
[assembly: AssemblyDescription("")] |
||||||
|
[assembly: AssemblyConfiguration("")] |
||||||
|
[assembly: AssemblyTrademark("")] |
||||||
|
[assembly: AssemblyCulture("")] |
@ -0,0 +1,215 @@ |
|||||||
|
<Components version="1.0"> |
||||||
|
<System.Windows.Forms.Form> |
||||||
|
<Name value="AddClassForm" /> |
||||||
|
<MinimumSize value="365, 342" /> |
||||||
|
<ControlBox value="False" /> |
||||||
|
<Text value="Add New Class" /> |
||||||
|
<ClientSize value="{Width=357, Height=308}" /> |
||||||
|
<Controls> |
||||||
|
<System.Windows.Forms.CheckBox> |
||||||
|
<Name value="isSealedCheckBox" /> |
||||||
|
<Location value="232, 194" /> |
||||||
|
<Text value="Sealed" /> |
||||||
|
<TabIndex value="15" /> |
||||||
|
<Size value="61, 20" /> |
||||||
|
<UseVisualStyleBackColor value="True" /> |
||||||
|
<Anchor value="Bottom, Left" /> |
||||||
|
</System.Windows.Forms.CheckBox> |
||||||
|
<System.Windows.Forms.CheckBox> |
||||||
|
<Name value="isStaticCheckBox" /> |
||||||
|
<Location value="165, 193" /> |
||||||
|
<Text value="Static" /> |
||||||
|
<TabIndex value="8" /> |
||||||
|
<Size value="61, 20" /> |
||||||
|
<UseVisualStyleBackColor value="True" /> |
||||||
|
<Anchor value="Bottom, Left" /> |
||||||
|
</System.Windows.Forms.CheckBox> |
||||||
|
<System.Windows.Forms.CheckBox> |
||||||
|
<Name value="isAbstractCheckBox" /> |
||||||
|
<Location value="84, 193" /> |
||||||
|
<Text value="Abstract" /> |
||||||
|
<TabIndex value="7" /> |
||||||
|
<Size value="75, 20" /> |
||||||
|
<UseVisualStyleBackColor value="True" /> |
||||||
|
<Anchor value="Bottom, Left" /> |
||||||
|
</System.Windows.Forms.CheckBox> |
||||||
|
<System.Windows.Forms.ComboBox> |
||||||
|
<Name value="namespaceComboBox" /> |
||||||
|
<Size value="261, 21" /> |
||||||
|
<TabIndex value="0" /> |
||||||
|
<Sorted value="True" /> |
||||||
|
<FormattingEnabled value="True" /> |
||||||
|
<Location value="84, 11" /> |
||||||
|
<Anchor value="Top, Left, Right" /> |
||||||
|
</System.Windows.Forms.ComboBox> |
||||||
|
<System.Windows.Forms.Label> |
||||||
|
<Name value="label5" /> |
||||||
|
<Location value="12, 14" /> |
||||||
|
<Text value="Namespace:" /> |
||||||
|
<Size value="67, 13" /> |
||||||
|
<AutoSize value="True" /> |
||||||
|
<TabIndex value="14" /> |
||||||
|
</System.Windows.Forms.Label> |
||||||
|
<System.Windows.Forms.CheckBox> |
||||||
|
<Name value="isPartialCheckBox" /> |
||||||
|
<Location value="299, 193" /> |
||||||
|
<Text value="Partial" /> |
||||||
|
<TabIndex value="9" /> |
||||||
|
<Size value="61, 20" /> |
||||||
|
<UseVisualStyleBackColor value="True" /> |
||||||
|
<Anchor value="Bottom, Left" /> |
||||||
|
</System.Windows.Forms.CheckBox> |
||||||
|
<System.Windows.Forms.ComboBox> |
||||||
|
<Name value="visibilityComboBox" /> |
||||||
|
<Size value="123, 21" /> |
||||||
|
<TabIndex value="6" /> |
||||||
|
<FormattingEnabled value="True" /> |
||||||
|
<DropDownStyle value="DropDownList" /> |
||||||
|
<Location value="84, 166" /> |
||||||
|
<Anchor value="Bottom, Left" /> |
||||||
|
</System.Windows.Forms.ComboBox> |
||||||
|
<System.Windows.Forms.Label> |
||||||
|
<Name value="label4" /> |
||||||
|
<Location value="8, 169" /> |
||||||
|
<Text value="Visibility:" /> |
||||||
|
<Anchor value="Bottom, Left" /> |
||||||
|
<Size value="46, 13" /> |
||||||
|
<AutoSize value="True" /> |
||||||
|
<TabIndex value="11" /> |
||||||
|
</System.Windows.Forms.Label> |
||||||
|
<System.Windows.Forms.Button> |
||||||
|
<Name value="selectInterfacesButton" /> |
||||||
|
<Location value="320, 141" /> |
||||||
|
<Text value="..." /> |
||||||
|
<Anchor value="Bottom, Right" /> |
||||||
|
<UseVisualStyleBackColor value="True" /> |
||||||
|
<Size value="25, 19" /> |
||||||
|
<TabIndex value="5" /> |
||||||
|
</System.Windows.Forms.Button> |
||||||
|
<System.Windows.Forms.ListBox> |
||||||
|
<Name value="implementedInterfacesListBox" /> |
||||||
|
<Size value="230, 69" /> |
||||||
|
<TabIndex value="4" /> |
||||||
|
<HorizontalScrollbar value="True" /> |
||||||
|
<FormattingEnabled value="True" /> |
||||||
|
<Location value="84, 90" /> |
||||||
|
<Anchor value="Top, Bottom, Left, Right" /> |
||||||
|
</System.Windows.Forms.ListBox> |
||||||
|
<System.Windows.Forms.Button> |
||||||
|
<Name value="selectClassButton" /> |
||||||
|
<Location value="319, 64" /> |
||||||
|
<Text value="..." /> |
||||||
|
<Anchor value="Top, Right" /> |
||||||
|
<UseVisualStyleBackColor value="True" /> |
||||||
|
<Size value="25, 19" /> |
||||||
|
<TabIndex value="3" /> |
||||||
|
</System.Windows.Forms.Button> |
||||||
|
<System.Windows.Forms.TextBox> |
||||||
|
<Name value="inheritFromTextBox" /> |
||||||
|
<TabIndex value="2" /> |
||||||
|
<Size value="230, 20" /> |
||||||
|
<Location value="84, 64" /> |
||||||
|
<Anchor value="Top, Left, Right" /> |
||||||
|
</System.Windows.Forms.TextBox> |
||||||
|
<System.Windows.Forms.Button> |
||||||
|
<Name value="browseButton" /> |
||||||
|
<Location value="320, 221" /> |
||||||
|
<Text value="..." /> |
||||||
|
<Anchor value="Bottom, Right" /> |
||||||
|
<UseVisualStyleBackColor value="True" /> |
||||||
|
<Size value="25, 19" /> |
||||||
|
<TabIndex value="11" /> |
||||||
|
</System.Windows.Forms.Button> |
||||||
|
<System.Windows.Forms.ComboBox> |
||||||
|
<Name value="existingFilesComboBox" /> |
||||||
|
<Size value="214, 21" /> |
||||||
|
<TabIndex value="12" /> |
||||||
|
<Sorted value="True" /> |
||||||
|
<FormattingEnabled value="True" /> |
||||||
|
<DropDownStyle value="DropDownList" /> |
||||||
|
<Location value="131, 246" /> |
||||||
|
<Anchor value="Bottom, Left, Right" /> |
||||||
|
</System.Windows.Forms.ComboBox> |
||||||
|
<System.Windows.Forms.RadioButton> |
||||||
|
<Name value="addToFileRadioButton" /> |
||||||
|
<Location value="8, 247" /> |
||||||
|
<Text value="Add to existing file:" /> |
||||||
|
<Anchor value="Bottom, Left" /> |
||||||
|
<UseVisualStyleBackColor value="True" /> |
||||||
|
<Size value="113, 17" /> |
||||||
|
<AutoSize value="True" /> |
||||||
|
<TabIndex value="10" /> |
||||||
|
</System.Windows.Forms.RadioButton> |
||||||
|
<System.Windows.Forms.TextBox> |
||||||
|
<Name value="newFileNameTextBox" /> |
||||||
|
<TabIndex value="10" /> |
||||||
|
<Size value="183, 20" /> |
||||||
|
<Location value="131, 220" /> |
||||||
|
<Anchor value="Bottom, Left, Right" /> |
||||||
|
</System.Windows.Forms.TextBox> |
||||||
|
<System.Windows.Forms.RadioButton> |
||||||
|
<Name value="createNewFileRadioButton" /> |
||||||
|
<TabStop value="True" /> |
||||||
|
<Location value="8, 221" /> |
||||||
|
<Checked value="True" /> |
||||||
|
<Text value="Create in new file:" /> |
||||||
|
<Anchor value="Bottom, Left" /> |
||||||
|
<UseVisualStyleBackColor value="True" /> |
||||||
|
<Size value="109, 17" /> |
||||||
|
<AutoSize value="True" /> |
||||||
|
<TabIndex value="8" /> |
||||||
|
</System.Windows.Forms.RadioButton> |
||||||
|
<System.Windows.Forms.Button> |
||||||
|
<Name value="cancelButton" /> |
||||||
|
<DialogResult value="Cancel" /> |
||||||
|
<Location value="270, 273" /> |
||||||
|
<Text value="Cancel" /> |
||||||
|
<Anchor value="Bottom, Right" /> |
||||||
|
<UseVisualStyleBackColor value="True" /> |
||||||
|
<Size value="75, 23" /> |
||||||
|
<TabIndex value="14" /> |
||||||
|
</System.Windows.Forms.Button> |
||||||
|
<System.Windows.Forms.Button> |
||||||
|
<Name value="okButton" /> |
||||||
|
<DialogResult value="OK" /> |
||||||
|
<Location value="189, 273" /> |
||||||
|
<Text value="OK" /> |
||||||
|
<Anchor value="Bottom, Right" /> |
||||||
|
<UseVisualStyleBackColor value="True" /> |
||||||
|
<Size value="75, 23" /> |
||||||
|
<TabIndex value="13" /> |
||||||
|
</System.Windows.Forms.Button> |
||||||
|
<System.Windows.Forms.Label> |
||||||
|
<Name value="label3" /> |
||||||
|
<Location value="12, 90" /> |
||||||
|
<Text value="Implements:" /> |
||||||
|
<Size value="63, 13" /> |
||||||
|
<AutoSize value="True" /> |
||||||
|
<TabIndex value="5" /> |
||||||
|
</System.Windows.Forms.Label> |
||||||
|
<System.Windows.Forms.Label> |
||||||
|
<Name value="label2" /> |
||||||
|
<Location value="12, 67" /> |
||||||
|
<Text value="Inherit from:" /> |
||||||
|
<Size value="62, 13" /> |
||||||
|
<AutoSize value="True" /> |
||||||
|
<TabIndex value="3" /> |
||||||
|
</System.Windows.Forms.Label> |
||||||
|
<System.Windows.Forms.Label> |
||||||
|
<Name value="label1" /> |
||||||
|
<Location value="12, 41" /> |
||||||
|
<Text value="Class Name:" /> |
||||||
|
<Size value="66, 13" /> |
||||||
|
<AutoSize value="True" /> |
||||||
|
<TabIndex value="1" /> |
||||||
|
</System.Windows.Forms.Label> |
||||||
|
<System.Windows.Forms.TextBox> |
||||||
|
<Name value="classNameTextBox" /> |
||||||
|
<TabIndex value="1" /> |
||||||
|
<Size value="261, 20" /> |
||||||
|
<Location value="84, 38" /> |
||||||
|
<Anchor value="Top, Left, Right" /> |
||||||
|
</System.Windows.Forms.TextBox> |
||||||
|
</Controls> |
||||||
|
</System.Windows.Forms.Form> |
||||||
|
</Components> |
@ -0,0 +1,39 @@ |
|||||||
|
<Components version="1.0"> |
||||||
|
<System.Windows.Forms.Form> |
||||||
|
<Name value="form1" /> |
||||||
|
<ControlBox value="False" /> |
||||||
|
<Text value="Select Class To Inherit" /> |
||||||
|
<ClientSize value="{Width=292, Height=266}" /> |
||||||
|
<Controls> |
||||||
|
<System.Windows.Forms.Button> |
||||||
|
<Name value="cancelButton" /> |
||||||
|
<DialogResult value="Cancel" /> |
||||||
|
<Location value="205, 231" /> |
||||||
|
<Text value="Cancel" /> |
||||||
|
<Anchor value="Bottom, Right" /> |
||||||
|
<UseVisualStyleBackColor value="True" /> |
||||||
|
<Size value="75, 23" /> |
||||||
|
<TabIndex value="15" /> |
||||||
|
</System.Windows.Forms.Button> |
||||||
|
<System.Windows.Forms.Button> |
||||||
|
<Name value="okButton" /> |
||||||
|
<Enabled value="False" /> |
||||||
|
<DialogResult value="OK" /> |
||||||
|
<Location value="124, 231" /> |
||||||
|
<Text value="OK" /> |
||||||
|
<Anchor value="Bottom, Right" /> |
||||||
|
<UseVisualStyleBackColor value="True" /> |
||||||
|
<Size value="75, 23" /> |
||||||
|
<TabIndex value="14" /> |
||||||
|
</System.Windows.Forms.Button> |
||||||
|
<System.Windows.Forms.TreeView> |
||||||
|
<Name value="classesTreeView" /> |
||||||
|
<Size value="268, 213" /> |
||||||
|
<TabIndex value="13" /> |
||||||
|
<PathSeparator value="." /> |
||||||
|
<Location value="12, 12" /> |
||||||
|
<Anchor value="Top, Bottom, Left, Right" /> |
||||||
|
</System.Windows.Forms.TreeView> |
||||||
|
</Controls> |
||||||
|
</System.Windows.Forms.Form> |
||||||
|
</Components> |
@ -0,0 +1,189 @@ |
|||||||
|
/* |
||||||
|
* Created by SharpDevelop. |
||||||
|
* User: itai |
||||||
|
* Date: 12/22/2006 |
||||||
|
* Time: 3:34 PM |
||||||
|
* |
||||||
|
* To change this template use Tools | Options | Coding | Edit Standard Headers. |
||||||
|
*/ |
||||||
|
|
||||||
|
using System; |
||||||
|
using System.IO; |
||||||
|
using System.Windows.Forms; |
||||||
|
|
||||||
|
using ICSharpCode.SharpDevelop; |
||||||
|
using ICSharpCode.Core; |
||||||
|
using ICSharpCode.SharpDevelop.Project; |
||||||
|
using ICSharpCode.SharpDevelop.Gui.XmlForms; |
||||||
|
using ICSharpCode.SharpDevelop.Gui; |
||||||
|
using ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor; |
||||||
|
using ICSharpCode.SharpDevelop.Dom; |
||||||
|
using ICSharpCode.NRefactory.Ast; |
||||||
|
using ICSharpCode.SharpDevelop.Dom.Refactoring; |
||||||
|
using ICSharpCode.SharpDevelop.Refactoring; |
||||||
|
|
||||||
|
namespace ClassWizard |
||||||
|
{ |
||||||
|
public class AddClassForm : BaseSharpDevelopForm |
||||||
|
{ |
||||||
|
public AddClassForm() |
||||||
|
{ |
||||||
|
SetupFromXmlStream(this.GetType().Assembly.GetManifestResourceStream("ClassWizard.Resources.AddClassForm.xfrm")); |
||||||
|
Get<Button>("ok").Click += OkButtonClick; |
||||||
|
Get<RadioButton>("createNewFile").CheckedChanged += FileCreationModeChanged; |
||||||
|
Get<RadioButton>("addToFile").CheckedChanged += FileCreationModeChanged; |
||||||
|
Get<Button>("selectClass").Click += SelectClassButtonClick; |
||||||
|
Get<Button>("selectInterfaces").Click += SelectInterfacesButtonClick; |
||||||
|
|
||||||
|
ComboBox visibility = Get<ComboBox>("visibility"); |
||||||
|
visibility.Items.Add("Public"); |
||||||
|
visibility.Items.Add("Private"); |
||||||
|
visibility.Items.Add("Protected"); |
||||||
|
visibility.Items.Add("Internal"); |
||||||
|
visibility.SelectedIndex = 0; |
||||||
|
|
||||||
|
classes.ClassType = ICSharpCode.SharpDevelop.Dom.ClassType.Class; |
||||||
|
classes.SelectMultiple = false; |
||||||
|
|
||||||
|
interfaces.ClassType = ICSharpCode.SharpDevelop.Dom.ClassType.Interface; |
||||||
|
interfaces.SelectMultiple = true; |
||||||
|
} |
||||||
|
|
||||||
|
private ClassesListDialog classes = new ClassesListDialog(); |
||||||
|
private ClassesListDialog interfaces = new ClassesListDialog(); |
||||||
|
|
||||||
|
protected override void OnShown(EventArgs e) |
||||||
|
{ |
||||||
|
IProject proj = ProjectService.CurrentProject; |
||||||
|
IProjectContent projCont = proj.CreateProjectContent(); |
||||||
|
classes.Project = proj; |
||||||
|
interfaces.Project = proj; |
||||||
|
|
||||||
|
ComboBox existingFiles = Get<ComboBox>("existingFiles"); |
||||||
|
existingFiles.Items.Clear(); |
||||||
|
foreach (ProjectItem projectItem in ProjectService.CurrentProject.Items) |
||||||
|
{ |
||||||
|
if (projectItem.ItemType == ItemType.Compile) |
||||||
|
existingFiles.Items.Add(FileUtility.GetRelativePath(proj.Directory, projectItem.FileName)); |
||||||
|
} |
||||||
|
|
||||||
|
ComboBox namespaces = Get<ComboBox>("namespace"); |
||||||
|
namespaces.Items.Clear(); |
||||||
|
|
||||||
|
foreach (string nsn in projCont.NamespaceNames) |
||||||
|
namespaces.Items.Add(nsn); |
||||||
|
|
||||||
|
base.OnShown(e); |
||||||
|
} |
||||||
|
|
||||||
|
void OkButtonClick(object sender, EventArgs e) |
||||||
|
{ |
||||||
|
IProject proj = ProjectService.CurrentProject; |
||||||
|
|
||||||
|
NamespaceDeclaration domNS = new NamespaceDeclaration(Get<ComboBox>("namespace").Text); |
||||||
|
domNS.AddChild(new UsingDeclaration("System")); |
||||||
|
domNS.AddChild(new UsingDeclaration("System.Collections.Generic")); |
||||||
|
|
||||||
|
Modifiers mods = Modifiers.None; |
||||||
|
|
||||||
|
if (Get<CheckBox>("isStatic").Checked) |
||||||
|
mods |= Modifiers.Static; |
||||||
|
|
||||||
|
if (Get<CheckBox>("isAbstract").Checked) |
||||||
|
mods |= Modifiers.Abstract; |
||||||
|
|
||||||
|
if (Get<CheckBox>("isSealed").Checked) |
||||||
|
mods |= Modifiers.Sealed; |
||||||
|
|
||||||
|
if (Get<CheckBox>("isPartial").Checked) |
||||||
|
mods |= Modifiers.Partial; |
||||||
|
|
||||||
|
ComboBox visibility = Get<ComboBox>("visibility"); |
||||||
|
switch (visibility.SelectedIndex) |
||||||
|
{ |
||||||
|
case 0: mods |= Modifiers.Public; break; |
||||||
|
case 1: mods |= Modifiers.Private; break; |
||||||
|
case 2: mods |= Modifiers.Protected; break; |
||||||
|
case 3: mods |= Modifiers.Internal; break; |
||||||
|
} |
||||||
|
|
||||||
|
TypeDeclaration domType = new TypeDeclaration(mods, null); |
||||||
|
domType.Name = Get<TextBox>("className").Text; |
||||||
|
domType.Type = ICSharpCode.NRefactory.Ast.ClassType.Class; |
||||||
|
|
||||||
|
ListBox ifacesList = Get<ListBox>("implementedInterfaces"); |
||||||
|
foreach (string c in ifacesList.Items) |
||||||
|
domType.BaseTypes.Add(new TypeReference(c)); |
||||||
|
|
||||||
|
domNS.AddChild(domType); |
||||||
|
|
||||||
|
if (Get<RadioButton>("createNewFile").Checked) |
||||||
|
{ |
||||||
|
StreamWriter sw; |
||||||
|
string filename = Get<TextBox>("newFileName").Text; |
||||||
|
|
||||||
|
if (!Path.HasExtension(filename)) |
||||||
|
filename += "." + proj.LanguageProperties.CodeDomProvider.FileExtension; |
||||||
|
|
||||||
|
filename = Path.Combine(proj.Directory, filename); |
||||||
|
sw = File.CreateText(filename); |
||||||
|
sw.Write(proj.LanguageProperties.CodeGenerator.GenerateCode(domNS, String.Empty)); |
||||||
|
sw.Close(); |
||||||
|
|
||||||
|
FileProjectItem fpi = new FileProjectItem(proj, ItemType.Compile); |
||||||
|
fpi.FileName = filename; |
||||||
|
ProjectService.AddProjectItem(proj, fpi); |
||||||
|
ProjectBrowserPad.Instance.ProjectBrowserControl.RefreshView(); |
||||||
|
proj.Save(); |
||||||
|
} |
||||||
|
else |
||||||
|
{ |
||||||
|
string filename = Path.Combine(proj.Directory, Get<ComboBox>("existingFiles").Text); |
||||||
|
IWorkbenchWindow wbw = FileService.OpenFile(filename); |
||||||
|
|
||||||
|
proj.LanguageProperties.CodeGenerator.InsertCodeAtEnd(DomRegion.Empty, GetDocument(wbw), new AbstractNode[] { domNS }); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
private static IDocument GetDocument(IWorkbenchWindow workbenchWindow) |
||||||
|
{ |
||||||
|
ITextEditorControlProvider provider1 = workbenchWindow.ViewContent as ITextEditorControlProvider; |
||||||
|
if (provider1 == null) |
||||||
|
{ |
||||||
|
return null; |
||||||
|
} |
||||||
|
return new TextEditorDocument (provider1.TextEditorControl.Document); |
||||||
|
} |
||||||
|
|
||||||
|
void SelectClassButtonClick(object sender, EventArgs e) |
||||||
|
{ |
||||||
|
if (classes.ShowDialog()) |
||||||
|
{ |
||||||
|
Get<TextBox>("inheritFrom").Text = classes.SelectedClasses[0].FullyQualifiedName; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
void SelectInterfacesButtonClick(object sender, EventArgs e) |
||||||
|
{ |
||||||
|
if (interfaces.ShowDialog()) |
||||||
|
{ |
||||||
|
ListBox ifacesList = Get<ListBox>("implementedInterfaces"); |
||||||
|
foreach (IClass c in interfaces.SelectedClasses) |
||||||
|
{ |
||||||
|
ifacesList.Items.Add(c.FullyQualifiedName); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
void FileCreationModeChanged(object sender, EventArgs e) |
||||||
|
{ |
||||||
|
bool createNewState = Get<RadioButton>("createNewFile").Checked; |
||||||
|
bool addToFileState = Get<RadioButton>("addToFile").Checked; |
||||||
|
|
||||||
|
Get<TextBox>("newFileName").Enabled = createNewState; |
||||||
|
Get<Button>("browse").Enabled = createNewState; |
||||||
|
Get<ComboBox>("existingFiles").Enabled = addToFileState; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
@ -0,0 +1,34 @@ |
|||||||
|
/* |
||||||
|
* Created by SharpDevelop. |
||||||
|
* User: itai |
||||||
|
* Date: 12/22/2006 |
||||||
|
* Time: 5:34 PM |
||||||
|
* |
||||||
|
* To change this template use Tools | Options | Coding | Edit Standard Headers. |
||||||
|
*/ |
||||||
|
using System; |
||||||
|
using System.Windows.Forms; |
||||||
|
|
||||||
|
using ICSharpCode.Core; |
||||||
|
using ICSharpCode.SharpDevelop.Gui; |
||||||
|
|
||||||
|
namespace ClassWizard |
||||||
|
{ |
||||||
|
/// <summary>
|
||||||
|
/// Description of AddNewClassCommand
|
||||||
|
/// </summary>
|
||||||
|
public class AddNewClassCommand : AbstractCommand |
||||||
|
{ |
||||||
|
/// <summary>
|
||||||
|
/// Starts the command
|
||||||
|
/// </summary>
|
||||||
|
public override void Run() |
||||||
|
{ |
||||||
|
using (AddClassForm form = new AddClassForm()) |
||||||
|
{ |
||||||
|
form.Owner = (Form) WorkbenchSingleton.Workbench; |
||||||
|
form.ShowDialog(WorkbenchSingleton.MainForm); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,13 @@ |
|||||||
|
namespace ClassWizard |
||||||
|
{ |
||||||
|
using System; |
||||||
|
using System.Collections.Generic; |
||||||
|
using ICSharpCode.Core; |
||||||
|
|
||||||
|
public class AddNewInterfaceCommand : AbstractCommand |
||||||
|
{ |
||||||
|
public override void Run() |
||||||
|
{ |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,185 @@ |
|||||||
|
/* |
||||||
|
* Created by SharpDevelop. |
||||||
|
* User: itai |
||||||
|
* Date: 12/23/2006 |
||||||
|
* Time: 8:27 PM |
||||||
|
* |
||||||
|
* To change this template use Tools | Options | Coding | Edit Standard Headers. |
||||||
|
*/ |
||||||
|
|
||||||
|
using System; |
||||||
|
using System.Collections.Generic; |
||||||
|
using System.Windows.Forms; |
||||||
|
|
||||||
|
using ICSharpCode.SharpDevelop; |
||||||
|
using ICSharpCode.SharpDevelop.Project; |
||||||
|
using ICSharpCode.SharpDevelop.Gui.XmlForms; |
||||||
|
using ICSharpCode.SharpDevelop.Dom; |
||||||
|
|
||||||
|
namespace ClassWizard |
||||||
|
{ |
||||||
|
public class ClassesListDialog |
||||||
|
{ |
||||||
|
private class ClassesList : BaseSharpDevelopForm |
||||||
|
{ |
||||||
|
IClass baseClass; |
||||||
|
public ClassesList() : this (null) {} |
||||||
|
|
||||||
|
public ClassesList(IClass baseClass) |
||||||
|
{ |
||||||
|
this.baseClass = baseClass; |
||||||
|
SetupFromXmlStream(this.GetType().Assembly.GetManifestResourceStream("ClassWizard.Resources.ClassesList.xfrm")); |
||||||
|
treeView = Get<TreeView>("classes"); |
||||||
|
treeView.BeforeCheck += ClassesTreeViewBeforeCheck; |
||||||
|
treeView.AfterCheck += ClassesTreeViewAfterCheck; |
||||||
|
treeView.AfterSelect += ClassesTreeViewAfterCheck; |
||||||
|
} |
||||||
|
|
||||||
|
private TreeView treeView; |
||||||
|
|
||||||
|
public void InitializeClasses(IProject project, ClassType ct) |
||||||
|
{ |
||||||
|
IProjectContent pc = ParserService.GetProjectContent(project); |
||||||
|
|
||||||
|
treeView.Nodes.Clear(); |
||||||
|
|
||||||
|
AddClasses (pc, ct, false); |
||||||
|
|
||||||
|
foreach (IProjectContent rpc in pc.ReferencedContents) |
||||||
|
AddClasses (rpc, ct, false); |
||||||
|
} |
||||||
|
|
||||||
|
void AddClasses (IProjectContent pc, ClassType ct, bool allowSealed) |
||||||
|
{ |
||||||
|
if (pc.Classes == null) return; |
||||||
|
foreach (IClass c in pc.Classes) |
||||||
|
{ |
||||||
|
if (c.ClassType == ct && (!c.IsSealed || (c.IsSealed && allowSealed))) |
||||||
|
{ |
||||||
|
if (baseClass == null || (baseClass != null && c.IsTypeInInheritanceTree(baseClass))) |
||||||
|
{ |
||||||
|
TreeNode node = AddItemToTreeView(c.FullyQualifiedName); |
||||||
|
if (node != null) |
||||||
|
node.Tag = c; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
TreeNode AddItemToTreeView (string item) |
||||||
|
{ |
||||||
|
string[] path = item.Split(treeView.PathSeparator[0]); |
||||||
|
TreeNodeCollection tnc = treeView.Nodes; |
||||||
|
TreeNode ret = null; |
||||||
|
foreach (string pathitem in path) |
||||||
|
{ |
||||||
|
if (tnc != null) |
||||||
|
{ |
||||||
|
TreeNode tn; |
||||||
|
if (!tnc.ContainsKey(pathitem)) |
||||||
|
{ |
||||||
|
tn = tnc.Add(pathitem, pathitem); |
||||||
|
ret = tn; |
||||||
|
} |
||||||
|
else |
||||||
|
tn = tnc[pathitem]; |
||||||
|
if (tn == null) |
||||||
|
{ |
||||||
|
MessageBox.Show("Treenode is null: " + pathitem + "\n" + item); |
||||||
|
} |
||||||
|
tnc = tn.Nodes; |
||||||
|
} |
||||||
|
} |
||||||
|
return ret; |
||||||
|
} |
||||||
|
|
||||||
|
void ClassesTreeViewBeforeCheck (object sender, TreeViewCancelEventArgs e) |
||||||
|
{ |
||||||
|
e.Cancel = (e.Node.Nodes != null && e.Node.Nodes.Count > 0); |
||||||
|
} |
||||||
|
|
||||||
|
void ClassesTreeViewAfterCheck (object sender, TreeViewEventArgs e) |
||||||
|
{ |
||||||
|
IClass c = (IClass) e.Node.Tag; |
||||||
|
if (SelectMultiple) |
||||||
|
{ |
||||||
|
if (e.Node.Checked && !selectedItems.Contains(c)) |
||||||
|
selectedItems.Add(c); |
||||||
|
else if (!e.Node.Checked && selectedItems.Contains(c)) |
||||||
|
selectedItems.Remove(c); |
||||||
|
} |
||||||
|
else |
||||||
|
{ |
||||||
|
selectedItems.Clear(); |
||||||
|
if (treeView.SelectedNode.Nodes == null || treeView.SelectedNode.Nodes.Count == 0) |
||||||
|
selectedItems.Add((IClass)treeView.SelectedNode.Tag); |
||||||
|
} |
||||||
|
Get<Button>("ok").Enabled = (selectedItems.Count > 0); |
||||||
|
} |
||||||
|
|
||||||
|
public bool SelectMultiple |
||||||
|
{ |
||||||
|
get { return treeView.CheckBoxes; } |
||||||
|
set { treeView.CheckBoxes = value; } |
||||||
|
} |
||||||
|
|
||||||
|
List<IClass> selectedItems = new List<IClass>(); |
||||||
|
|
||||||
|
public IList<IClass> SelectedClasses |
||||||
|
{ |
||||||
|
get { return selectedItems; } |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
ClassesList classesList = new ClassesList(); |
||||||
|
ClassType classType; |
||||||
|
IProject project; |
||||||
|
|
||||||
|
bool initialized = false; |
||||||
|
|
||||||
|
public ClassesListDialog() {} |
||||||
|
|
||||||
|
public bool ShowDialog() |
||||||
|
{ |
||||||
|
if (!initialized) |
||||||
|
{ |
||||||
|
classesList.InitializeClasses(project, classType); |
||||||
|
initialized = true; |
||||||
|
} |
||||||
|
|
||||||
|
classesList.ShowDialog(); |
||||||
|
return classesList.DialogResult == DialogResult.OK; |
||||||
|
} |
||||||
|
|
||||||
|
public ClassType ClassType |
||||||
|
{ |
||||||
|
get { return classType; } |
||||||
|
set |
||||||
|
{ |
||||||
|
initialized &= classType == value; |
||||||
|
classType = value; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
public IProject Project |
||||||
|
{ |
||||||
|
get { return project; } |
||||||
|
set |
||||||
|
{ |
||||||
|
initialized &= project == value; |
||||||
|
project = value; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
public bool SelectMultiple |
||||||
|
{ |
||||||
|
get { return classesList.SelectMultiple; } |
||||||
|
set { classesList.SelectMultiple = value; } |
||||||
|
} |
||||||
|
|
||||||
|
public IList<IClass> SelectedClasses |
||||||
|
{ |
||||||
|
get { return classesList.SelectedClasses; } |
||||||
|
} |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue