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 @@ @@ -98,7 +98,7 @@
</Compile>
<Compile Include="Src\GenerateCode.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\InsertCtorDialog.xaml.cs">
<DependentUpon>InsertCtorDialog.xaml</DependentUpon>
@ -116,7 +116,6 @@ @@ -116,7 +116,6 @@
<DependentUpon>OverrideToStringMethodDialog.xaml</DependentUpon>
<SubType>Code</SubType>
</Compile>
<Compile Include="Src\Gui\Wrapper.cs" />
<Compile Include="Src\InsertCtorSnippetRefactoring.cs" />
<Compile Include="Src\MenuItemFactories\ResolveAttribute.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 @@ -25,9 +25,9 @@ namespace SharpRefactoring.Gui
/// </summary>
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)
{
InitializeComponent();
@ -48,7 +48,7 @@ namespace SharpRefactoring.Gui @@ -48,7 +48,7 @@ namespace SharpRefactoring.Gui
BlockStatement block = new BlockStatement();
foreach (CtorParamWrapper w in filtered) {
foreach (PropertyOrFieldWrapper w in filtered) {
if (w.AddCheckForNull) {
if (w.Type.IsReferenceType == true)
block.AddChild(
@ -84,7 +84,7 @@ namespace SharpRefactoring.Gui @@ -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))));
AnchorElement parameterListElement = context.ActiveElements
@ -192,14 +192,14 @@ namespace SharpRefactoring.Gui @@ -192,14 +192,14 @@ namespace SharpRefactoring.Gui
void SelectAllChecked(object sender, System.Windows.RoutedEventArgs e)
{
foreach (CtorParamWrapper param in parameterList) {
foreach (PropertyOrFieldWrapper param in parameterList) {
param.IsSelected = true;
}
}
void SelectAllUnchecked(object sender, System.Windows.RoutedEventArgs e)
{
foreach (CtorParamWrapper param in parameterList) {
foreach (PropertyOrFieldWrapper param in parameterList) {
param.IsSelected = false;
}
}

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

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@
<local:AbstractInlineRefactorDialog x:Class="SharpRefactoring.Gui.OverrideToStringMethodDialog"
<gui:AbstractInlineRefactorDialog x:Class="SharpRefactoring.Gui.OverrideToStringMethodDialog"
Header="{sd:Localize AddIns.SharpRefactoring.OverrideToStringMethod}"
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:widgets="http://icsharpcode.net/sharpdevelop/widgets"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
@ -9,10 +9,19 @@ @@ -9,10 +9,19 @@
<TextBlock DockPanel.Dock="Top" Margin="3"
Text="{sd:Localize AddIns.SharpRefactoring.OverrideToStringMethod.Description}"
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.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>
<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>
</local:AbstractInlineRefactorDialog>
</gui:AbstractInlineRefactorDialog>

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

@ -20,7 +20,7 @@ namespace SharpRefactoring.Gui @@ -20,7 +20,7 @@ namespace SharpRefactoring.Gui
/// </summary>
public partial class OverrideToStringMethodDialog : AbstractInlineRefactorDialog
{
List<Wrapper<IField>> fields;
List<PropertyOrFieldWrapper> 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 @@ -29,15 +29,15 @@ namespace SharpRefactoring.Gui
InitializeComponent();
this.baseCall = baseCall;
this.fields = fields.Select(f => new Wrapper<IField>() { Entity = f }).ToList();
this.listBox.ItemsSource = this.fields.Select(i => i.Create(null));
this.fields = fields.Select(f => new PropertyOrFieldWrapper(f) { IsSelected = true }).ToList();
this.listBox.ItemsSource = this.fields;
}
protected override string GenerateCode(LanguageProperties language, IClass currentClass)
{
string[] fields = this.fields
.Where(f => f.IsChecked)
.Select(f2 => f2.Entity.Name)
.Where(f => f.IsSelected)
.Select(f2 => f2.MemberName)
.ToArray();
Ast.PrimitiveExpression formatString = new Ast.PrimitiveExpression(GenerateFormatString(currentClass, language.CodeGenerator, fields));
@ -70,6 +70,24 @@ namespace SharpRefactoring.Gui @@ -70,6 +70,24 @@ namespace SharpRefactoring.Gui
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)
{
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; @@ -16,14 +16,14 @@ using ICSharpCode.SharpDevelop.Editor;
namespace SharpRefactoring.Gui
{
public class CtorParamWrapper : INotifyPropertyChanged
public class PropertyOrFieldWrapper : INotifyPropertyChanged
{
/// <summary>
/// Underlying member. Always IField or IProperty.
/// </summary>
readonly IMember member;
public CtorParamWrapper(IMember member)
public PropertyOrFieldWrapper(IMember member)
{
if (member == null || member.ReturnType == null)
throw new ArgumentNullException("field");

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

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

Loading…
Cancel
Save