Browse Source

removed Wrapper<T> and created proper DataTemplate for OverrideToStringMethodDialog

pull/1/head
Siegfried Pammer 15 years ago
parent
commit
ffc76842c1
  1. 3
      src/AddIns/Misc/SharpRefactoring/Project/SharpRefactoring.csproj
  2. 12
      src/AddIns/Misc/SharpRefactoring/Project/Src/Gui/InsertCtorDialog.xaml.cs
  3. 19
      src/AddIns/Misc/SharpRefactoring/Project/Src/Gui/OverrideToStringMethodDialog.xaml
  4. 28
      src/AddIns/Misc/SharpRefactoring/Project/Src/Gui/OverrideToStringMethodDialog.xaml.cs
  5. 4
      src/AddIns/Misc/SharpRefactoring/Project/Src/Gui/PropertyOrFieldWrapper.cs
  6. 46
      src/AddIns/Misc/SharpRefactoring/Project/Src/Gui/Wrapper.cs
  7. 8
      src/AddIns/Misc/SharpRefactoring/Project/Src/InsertCtorSnippetRefactoring.cs

3
src/AddIns/Misc/SharpRefactoring/Project/SharpRefactoring.csproj

@ -98,7 +98,7 @@
</Compile> </Compile>
<Compile Include="Src\GenerateCode.cs" /> <Compile Include="Src\GenerateCode.cs" />
<Compile Include="Src\Gui\AbstractInlineRefactorDialog.cs" /> <Compile Include="Src\Gui\AbstractInlineRefactorDialog.cs" />
<Compile Include="Src\Gui\CtorParamWrapper.cs" /> <Compile Include="Src\Gui\PropertyOrFieldWrapper.cs" />
<Compile Include="Src\Gui\InlineRefactorSnippetElement.cs" /> <Compile Include="Src\Gui\InlineRefactorSnippetElement.cs" />
<Compile Include="Src\Gui\InsertCtorDialog.xaml.cs"> <Compile Include="Src\Gui\InsertCtorDialog.xaml.cs">
<DependentUpon>InsertCtorDialog.xaml</DependentUpon> <DependentUpon>InsertCtorDialog.xaml</DependentUpon>
@ -116,7 +116,6 @@
<DependentUpon>OverrideToStringMethodDialog.xaml</DependentUpon> <DependentUpon>OverrideToStringMethodDialog.xaml</DependentUpon>
<SubType>Code</SubType> <SubType>Code</SubType>
</Compile> </Compile>
<Compile Include="Src\Gui\Wrapper.cs" />
<Compile Include="Src\InsertCtorSnippetRefactoring.cs" /> <Compile Include="Src\InsertCtorSnippetRefactoring.cs" />
<Compile Include="Src\MenuItemFactories\ResolveAttribute.cs" /> <Compile Include="Src\MenuItemFactories\ResolveAttribute.cs" />
<Compile Include="Src\MenuItemFactories\ResolveExtensionMethod.cs" /> <Compile Include="Src\MenuItemFactories\ResolveExtensionMethod.cs" />

12
src/AddIns/Misc/SharpRefactoring/Project/Src/Gui/InsertCtorDialog.xaml.cs

@ -25,9 +25,9 @@ namespace SharpRefactoring.Gui
/// </summary> /// </summary>
public partial class InsertCtorDialog : AbstractInlineRefactorDialog public partial class InsertCtorDialog : AbstractInlineRefactorDialog
{ {
IList<CtorParamWrapper> parameterList; IList<PropertyOrFieldWrapper> parameterList;
public InsertCtorDialog(InsertionContext context, ITextEditor editor, ITextAnchor anchor, IClass current, IList<CtorParamWrapper> possibleParameters) public InsertCtorDialog(InsertionContext context, ITextEditor editor, ITextAnchor anchor, IClass current, IList<PropertyOrFieldWrapper> possibleParameters)
: base(context, editor, anchor) : base(context, editor, anchor)
{ {
InitializeComponent(); InitializeComponent();
@ -48,7 +48,7 @@ namespace SharpRefactoring.Gui
BlockStatement block = new BlockStatement(); BlockStatement block = new BlockStatement();
foreach (CtorParamWrapper w in filtered) { foreach (PropertyOrFieldWrapper w in filtered) {
if (w.AddCheckForNull) { if (w.AddCheckForNull) {
if (w.Type.IsReferenceType == true) if (w.Type.IsReferenceType == true)
block.AddChild( block.AddChild(
@ -84,7 +84,7 @@ namespace SharpRefactoring.Gui
} }
} }
foreach (CtorParamWrapper w in filtered) foreach (PropertyOrFieldWrapper w in filtered)
block.AddChild(new ExpressionStatement(new AssignmentExpression(new MemberReferenceExpression(new ThisReferenceExpression(), w.MemberName), AssignmentOperatorType.Assign, new IdentifierExpression(w.ParameterName)))); block.AddChild(new ExpressionStatement(new AssignmentExpression(new MemberReferenceExpression(new ThisReferenceExpression(), w.MemberName), AssignmentOperatorType.Assign, new IdentifierExpression(w.ParameterName))));
AnchorElement parameterListElement = context.ActiveElements AnchorElement parameterListElement = context.ActiveElements
@ -192,14 +192,14 @@ namespace SharpRefactoring.Gui
void SelectAllChecked(object sender, System.Windows.RoutedEventArgs e) void SelectAllChecked(object sender, System.Windows.RoutedEventArgs e)
{ {
foreach (CtorParamWrapper param in parameterList) { foreach (PropertyOrFieldWrapper param in parameterList) {
param.IsSelected = true; param.IsSelected = true;
} }
} }
void SelectAllUnchecked(object sender, System.Windows.RoutedEventArgs e) void SelectAllUnchecked(object sender, System.Windows.RoutedEventArgs e)
{ {
foreach (CtorParamWrapper param in parameterList) { foreach (PropertyOrFieldWrapper param in parameterList) {
param.IsSelected = false; param.IsSelected = false;
} }
} }

19
src/AddIns/Misc/SharpRefactoring/Project/Src/Gui/OverrideToStringMethodDialog.xaml

@ -1,7 +1,7 @@
<local:AbstractInlineRefactorDialog x:Class="SharpRefactoring.Gui.OverrideToStringMethodDialog" <gui:AbstractInlineRefactorDialog x:Class="SharpRefactoring.Gui.OverrideToStringMethodDialog"
Header="{sd:Localize AddIns.SharpRefactoring.OverrideToStringMethod}" Header="{sd:Localize AddIns.SharpRefactoring.OverrideToStringMethod}"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:local="clr-namespace:SharpRefactoring.Gui" xmlns:gui="clr-namespace:SharpRefactoring.Gui"
xmlns:sd="http://icsharpcode.net/sharpdevelop/core" xmlns:sd="http://icsharpcode.net/sharpdevelop/core"
xmlns:widgets="http://icsharpcode.net/sharpdevelop/widgets" xmlns:widgets="http://icsharpcode.net/sharpdevelop/widgets"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
@ -9,10 +9,19 @@
<TextBlock DockPanel.Dock="Top" Margin="3" <TextBlock DockPanel.Dock="Top" Margin="3"
Text="{sd:Localize AddIns.SharpRefactoring.OverrideToStringMethod.Description}" Text="{sd:Localize AddIns.SharpRefactoring.OverrideToStringMethod.Description}"
TextWrapping="Wrap" /> TextWrapping="Wrap" />
<widgets:UniformGridWithSpacing Columns="2" Margin="3" DockPanel.Dock="Bottom" HorizontalAlignment="Center"> <widgets:UniformGridWithSpacing Columns="3" Margin="3" DockPanel.Dock="Bottom" HorizontalAlignment="Center">
<Button Content="{sd:Localize Global.OKButtonText}" Click="OKButtonClick" Style="{x:Static sd:GlobalStyles.ButtonStyle}" /> <Button Content="{sd:Localize Global.OKButtonText}" Click="OKButtonClick" Style="{x:Static sd:GlobalStyles.ButtonStyle}" />
<Button Content="{sd:Localize Global.CancelButtonText}" Click="CancelButtonClick" Style="{x:Static sd:GlobalStyles.ButtonStyle}" /> <Button Content="{sd:Localize Global.CancelButtonText}" Click="CancelButtonClick" Style="{x:Static sd:GlobalStyles.ButtonStyle}" />
<ToggleButton Content="{sd:Localize Global.SelectAllButtonText}" IsChecked="{Binding AllSelected, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type gui:OverrideToStringMethodDialog}}, Mode=OneWay}" Checked="SelectAllChecked" Unchecked="SelectAllUnchecked" />
</widgets:UniformGridWithSpacing> </widgets:UniformGridWithSpacing>
<ListBox Margin="4" x:Name="listBox" /> <ListBox Margin="4" x:Name="listBox">
<ListBox.ItemTemplate>
<DataTemplate>
<CheckBox
Content="{Binding Text}"
IsChecked="{Binding IsSelected, Mode=TwoWay}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</DockPanel> </DockPanel>
</local:AbstractInlineRefactorDialog> </gui:AbstractInlineRefactorDialog>

28
src/AddIns/Misc/SharpRefactoring/Project/Src/Gui/OverrideToStringMethodDialog.xaml.cs

@ -20,7 +20,7 @@ namespace SharpRefactoring.Gui
/// </summary> /// </summary>
public partial class OverrideToStringMethodDialog : AbstractInlineRefactorDialog public partial class OverrideToStringMethodDialog : AbstractInlineRefactorDialog
{ {
List<Wrapper<IField>> fields; List<PropertyOrFieldWrapper> fields;
string baseCall; string baseCall;
public OverrideToStringMethodDialog(InsertionContext context, ITextEditor editor, ITextAnchor startAnchor, ITextAnchor anchor, IList<IField> fields, string baseCall) public OverrideToStringMethodDialog(InsertionContext context, ITextEditor editor, ITextAnchor startAnchor, ITextAnchor anchor, IList<IField> fields, string baseCall)
@ -29,15 +29,15 @@ namespace SharpRefactoring.Gui
InitializeComponent(); InitializeComponent();
this.baseCall = baseCall; this.baseCall = baseCall;
this.fields = fields.Select(f => new Wrapper<IField>() { Entity = f }).ToList(); this.fields = fields.Select(f => new PropertyOrFieldWrapper(f) { IsSelected = true }).ToList();
this.listBox.ItemsSource = this.fields.Select(i => i.Create(null)); this.listBox.ItemsSource = this.fields;
} }
protected override string GenerateCode(LanguageProperties language, IClass currentClass) protected override string GenerateCode(LanguageProperties language, IClass currentClass)
{ {
string[] fields = this.fields string[] fields = this.fields
.Where(f => f.IsChecked) .Where(f => f.IsSelected)
.Select(f2 => f2.Entity.Name) .Select(f2 => f2.MemberName)
.ToArray(); .ToArray();
Ast.PrimitiveExpression formatString = new Ast.PrimitiveExpression(GenerateFormatString(currentClass, language.CodeGenerator, fields)); Ast.PrimitiveExpression formatString = new Ast.PrimitiveExpression(GenerateFormatString(currentClass, language.CodeGenerator, fields));
@ -70,6 +70,24 @@ namespace SharpRefactoring.Gui
return "[" + currentClass.Name + fieldsString + "]"; return "[" + currentClass.Name + fieldsString + "]";
} }
void SelectAllChecked(object sender, System.Windows.RoutedEventArgs e)
{
foreach (PropertyOrFieldWrapper field in fields) {
field.IsSelected = true;
}
}
void SelectAllUnchecked(object sender, System.Windows.RoutedEventArgs e)
{
foreach (PropertyOrFieldWrapper field in fields) {
field.IsSelected = false;
}
}
public bool AllSelected {
get { return fields.All(f => f.IsSelected); }
}
protected override void CancelButtonClick(object sender, System.Windows.RoutedEventArgs e) protected override void CancelButtonClick(object sender, System.Windows.RoutedEventArgs e)
{ {
base.CancelButtonClick(sender, e); base.CancelButtonClick(sender, e);

4
src/AddIns/Misc/SharpRefactoring/Project/Src/Gui/CtorParamWrapper.cs → src/AddIns/Misc/SharpRefactoring/Project/Src/Gui/PropertyOrFieldWrapper.cs

@ -16,14 +16,14 @@ using ICSharpCode.SharpDevelop.Editor;
namespace SharpRefactoring.Gui namespace SharpRefactoring.Gui
{ {
public class CtorParamWrapper : INotifyPropertyChanged public class PropertyOrFieldWrapper : INotifyPropertyChanged
{ {
/// <summary> /// <summary>
/// Underlying member. Always IField or IProperty. /// Underlying member. Always IField or IProperty.
/// </summary> /// </summary>
readonly IMember member; readonly IMember member;
public CtorParamWrapper(IMember member) public PropertyOrFieldWrapper(IMember member)
{ {
if (member == null || member.ReturnType == null) if (member == null || member.ReturnType == null)
throw new ArgumentNullException("field"); throw new ArgumentNullException("field");

46
src/AddIns/Misc/SharpRefactoring/Project/Src/Gui/Wrapper.cs

@ -1,46 +0,0 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using ICSharpCode.Core;
using ICSharpCode.NRefactory.Ast;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Dom.Refactoring;
using ICSharpCode.SharpDevelop.Editor;
namespace SharpRefactoring.Gui
{
class Wrapper<T> where T : IEntity
{
public T Entity { get; set; }
public bool IsChecked { get; set; }
public object Create(Action<Wrapper<T>> checkChange)
{
CheckBox box = new CheckBox() {
Content = Entity.ProjectContent.Language.GetAmbience().Convert(Entity)
};
box.Checked += delegate {
this.IsChecked = true;
if (checkChange != null)
checkChange(this);
};
box.Unchecked += delegate {
this.IsChecked = false;
if (checkChange != null)
checkChange(this);
};
return box;
}
}
}

8
src/AddIns/Misc/SharpRefactoring/Project/Src/InsertCtorSnippetRefactoring.cs

@ -54,7 +54,7 @@ namespace SharpRefactoring
if (current == null) if (current == null)
return null; return null;
List<CtorParamWrapper> parameters = CreateCtorParams(current).ToList(); List<PropertyOrFieldWrapper> parameters = CreateCtorParams(current).ToList();
ITextAnchor anchor = textEditor.Document.CreateAnchor(context.InsertionPosition); ITextAnchor anchor = textEditor.Document.CreateAnchor(context.InsertionPosition);
anchor.MovementType = AnchorMovementType.BeforeInsertion; anchor.MovementType = AnchorMovementType.BeforeInsertion;
@ -66,19 +66,19 @@ namespace SharpRefactoring
return dialog; return dialog;
} }
IEnumerable<CtorParamWrapper> CreateCtorParams(IClass sourceClass) IEnumerable<PropertyOrFieldWrapper> CreateCtorParams(IClass sourceClass)
{ {
int i = 0; int i = 0;
foreach (var f in sourceClass.Fields.Where(field => !field.IsConst && field.IsStatic == sourceClass.IsStatic)) { foreach (var f in sourceClass.Fields.Where(field => !field.IsConst && field.IsStatic == sourceClass.IsStatic)) {
yield return new CtorParamWrapper(f) { Index = i, IsSelected = true }; yield return new PropertyOrFieldWrapper(f) { Index = i, IsSelected = true };
i++; i++;
} }
foreach (var p in sourceClass.Properties.Where(prop => prop.CanSet && !prop.IsIndexer foreach (var p in sourceClass.Properties.Where(prop => prop.CanSet && !prop.IsIndexer
&& PropertyRefactoringMenuBuilder.IsAutomaticProperty(prop) && PropertyRefactoringMenuBuilder.IsAutomaticProperty(prop)
&& prop.IsStatic == sourceClass.IsStatic)) { && prop.IsStatic == sourceClass.IsStatic)) {
yield return new CtorParamWrapper(p) { Index = i, IsSelected = true }; yield return new PropertyOrFieldWrapper(p) { Index = i, IsSelected = true };
i++; i++;
} }
} }

Loading…
Cancel
Save