提交 08f85242 编写于 作者: I Ivan Basov

dialog ui update

上级 7cc728c0
......@@ -6,8 +6,9 @@
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vs="clr-namespace:Microsoft.VisualStudio.PlatformUI;assembly=Microsoft.VisualStudio.Shell.15.0" xmlns:changesignature="clr-namespace:Microsoft.VisualStudio.LanguageServices.Implementation.ChangeSignature"
Height="300" Width="600"
MinHeight="300" MinWidth="600"
Height="300" Width="500"
MinHeight="300" MinWidth="500"
MaxHeight="400" MaxWidth="600"
Title="{Binding ElementName=dialog, Path=AddParameterDialogTitle}"
HasHelpButton="False"
ResizeMode="CanResizeWithGrip"
......@@ -15,11 +16,7 @@
HasDialogFrame="True"
WindowStartupLocation="CenterOwner">
<Window.Resources>
<Thickness x:Key="labelPadding">0, 5, 0, 2</Thickness>
<Thickness x:Key="okCancelButtonPadding">9,2,9,2</Thickness>
<Thickness x:Key="selectDeselectButtonPadding">9,2,9,2</Thickness>
<Thickness x:Key="cellPadding">4 0 8 0</Thickness>
<Thickness x:Key="textboxPadding">2</Thickness>
</Window.Resources>
<Grid Name="ContentGrid" Margin="11,6,11,11">
<Grid.RowDefinitions>
......@@ -27,24 +24,28 @@
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Grid Grid.Row="0" Name="Table" Margin="11,6,11,11">
<Grid Grid.Row="0" Name="Table">
<Grid.RowDefinitions>
<RowDefinition Height="50"/>
<RowDefinition Height="50"/>
<RowDefinition Height="50"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100" />
<ColumnDefinition Width="400" />
<ColumnDefinition Width="350" />
</Grid.ColumnDefinitions>
<Label Grid.Row="0" Grid.Column="0" Content="{Binding ElementName=dialog, Path=TypeNameLabel}" />
<Border Grid.Row="0" Grid.Column="1" BorderThickness="1" Margin="6,0,0,0"> <ContentControl x:Name="TypeContentControl" Focusable="True" PreviewKeyDown="TypeNameContentControl_PreviewKeyDown" Margin="100,0,100,15" BorderBrush="{DynamicResource {x:Static SystemColors.InactiveBorderBrushKey}}" /> </Border>
<Border Grid.Row="0" Grid.Column="1" BorderThickness="1" Margin="5,5,5,5">
<ContentControl x:Name="TypeContentControl" Focusable="True" Margin="0,0,0,0" PreviewKeyDown="TypeNameContentControl_PreviewKeyDown"/>
</Border>
<Label Grid.Row="1" Grid.Column="0" Content="{Binding ElementName=dialog, Path=ParameterNameLabel}" />
<Border Grid.Row="1" Grid.Column="1" BorderThickness="1" Margin="6,0,0,0"> <ContentControl x:Name="NameContentControl" Focusable="True" PreviewKeyDown="TypeNameContentControl_PreviewKeyDown" Margin="100,0,100,15" BorderBrush="{DynamicResource {x:Static SystemColors.InactiveBorderBrushKey}}" /> </Border>
<Border Grid.Row="1" Grid.Column="1" BorderThickness="1" Margin="5,5,5,5">
<ContentControl x:Name="NameContentControl" Focusable="True" Margin="0,0,0,0" PreviewKeyDown="TypeNameContentControl_PreviewKeyDown"/>
</Border>
<Label Grid.Row="2" Grid.Column="0" Content="{Binding ElementName=dialog, Path=CallsiteValueLabel}" />
<TextBox Grid.Row="2" Grid.Column="1" Width="200" Text="{Binding CallsiteValue, Mode=TwoWay}" Margin="100,0,100,15" />
<TextBox Grid.Row="2" Grid.Column="1" Text="{Binding CallsiteValue, Mode=TwoWay}" Margin="5,5,5,5" />
</Grid>
<StackPanel Grid.Row="1"
HorizontalAlignment="Right"
......
......@@ -16,17 +16,6 @@ internal partial class AddParameterDialog : DialogWindow
public readonly AddParameterDialogViewModel ViewModel;
private readonly IntellisenseTextBoxViewModel _typeIntellisenseTextBoxView;
private readonly IntellisenseTextBoxViewModel _nameIntellisenseTextBoxView;
private bool _isValid;
private bool IsValid
{
get { return _isValid; }
set
{
this.OKButton.IsEnabled = value;
_isValid = value;
}
}
public string OK { get { return ServicesVSResources.OK; } }
public string Cancel { get { return ServicesVSResources.Cancel; } }
......@@ -50,9 +39,6 @@ private bool IsValid
this.Loaded += AddParameterDialog_Loaded;
DataContext = ViewModel;
// This is for Add. For edit, it should be true by default.
_isValid = false;
InitializeComponent();
}
......@@ -65,8 +51,6 @@ private void AddParameterDialog_Loaded(object sender, RoutedEventArgs e)
IntellisenseTextBox nameTextBox = new IntellisenseTextBox(
_nameIntellisenseTextBoxView, NameContentControl);
this.NameContentControl.Content = nameTextBox;
this.OKButton.IsEnabled = _isValid;
}
private void OK_Click(object sender, RoutedEventArgs e)
......@@ -74,6 +58,7 @@ private void OK_Click(object sender, RoutedEventArgs e)
if (ViewModel.TrySubmit())
{
ViewModel.TypeName = ((IntellisenseTextBox)TypeContentControl.Content).Text;
ViewModel.ParameterName = ((IntellisenseTextBox)NameContentControl.Content).Text;
DialogResult = true;
}
}
......@@ -113,15 +98,5 @@ private void TypeNameContentControl_PreviewKeyDown(object sender, KeyEventArgs e
}
}
}
private void TextBox_ParameterNameChanged(object sender, System.Windows.Controls.TextChangedEventArgs e)
{
// check for empty
// check for starting with non-letter
// check for special symbols
// check for matching other parameter names
// if not valid and _isValid, then _isValid = false;
// if valid and !_isValid, then validate all controls
}
}
}
......@@ -23,8 +23,8 @@ internal class ChangeSignatureDialogViewModel : AbstractNotifyPropertyChanged
private readonly ParameterConfiguration _originalParameterConfiguration;
private readonly ParameterViewModel _thisParameter;
private readonly List<ParameterViewModel> _parameterGroup1;
private readonly List<ParameterViewModel> _parameterGroup2;
private readonly List<ParameterViewModel> _parametersWithoutDefaultValues;
private readonly List<ParameterViewModel> _parametersWithDefaultValues;
private readonly ParameterViewModel _paramsParameter;
private HashSet<ParameterViewModel> _disabledParameters = new HashSet<ParameterViewModel>();
public readonly int InsertPosition;
......@@ -58,8 +58,8 @@ internal class ChangeSignatureDialogViewModel : AbstractNotifyPropertyChanged
_declarationParts = symbol.ToDisplayParts(s_symbolDeclarationDisplayFormat);
_parameterGroup1 = parameters.ParametersWithoutDefaultValues.Select(p => new ExistingParameterViewModel(this, p, initialIndex++)).ToList<ParameterViewModel>();
_parameterGroup2 = parameters.RemainingEditableParameters.Select(p => new ExistingParameterViewModel(this, p, initialIndex++)).ToList<ParameterViewModel>();
_parametersWithoutDefaultValues = parameters.ParametersWithoutDefaultValues.Select(p => new ExistingParameterViewModel(this, p, initialIndex++)).ToList<ParameterViewModel>();
_parametersWithDefaultValues = parameters.RemainingEditableParameters.Select(p => new ExistingParameterViewModel(this, p, initialIndex++)).ToList<ParameterViewModel>();
if (parameters.ParamsParameter != null)
{
......@@ -159,7 +159,7 @@ public bool CanEdit
}
// Cannot edit params parameter
if (index >= (_thisParameter == null ? 0 : 1) + _parameterGroup1.Count + _parameterGroup2.Count)
if (index >= (_thisParameter == null ? 0 : 1) + _parametersWithoutDefaultValues.Count + _parametersWithDefaultValues.Count)
{
return false;
}
......@@ -172,7 +172,8 @@ internal void Remove()
{
if (AllParameters[_selectedIndex.Value] is AddedParameterViewModel)
{
AllParameters.Remove(AllParameters[_selectedIndex.Value]);
ParameterViewModel parameterToRemove = AllParameters[_selectedIndex.Value];
_parametersWithoutDefaultValues.Remove(parameterToRemove);
}
else
{
......@@ -190,7 +191,7 @@ internal void Restore()
internal void AddParameter(AddedParameter addedParameter)
{
_parameterGroup1.Add(new AddedParameterViewModel(this, addedParameter));
_parametersWithoutDefaultValues.Add(new AddedParameterViewModel(this, addedParameter));
RemoveRestoreNotifyPropertyChanged();
}
......@@ -213,8 +214,8 @@ internal ParameterConfiguration GetParameterConfiguration()
{
return new ParameterConfiguration(
_originalParameterConfiguration.ThisParameter,
_parameterGroup1.Where(p => !p.IsRemoved).Select(p => p.CreateParameter()).ToList(),
_parameterGroup2.Where(p => !p.IsRemoved).Select(p => p.CreateParameter()).ToList(),
_parametersWithoutDefaultValues.Where(p => !p.IsRemoved).Select(p => p.CreateParameter()).ToList(),
_parametersWithDefaultValues.Where(p => !p.IsRemoved).Select(p => p.CreateParameter()).ToList(),
(_paramsParameter == null || _paramsParameter.IsRemoved) ? null : (_paramsParameter as ExistingParameterViewModel).CreateParameter(),
selectedIndex: -1);
}
......@@ -312,8 +313,8 @@ public List<ParameterViewModel> AllParameters
list.Add(_thisParameter);
}
list.AddRange(_parameterGroup1);
list.AddRange(_parameterGroup2);
list.AddRange(_parametersWithoutDefaultValues);
list.AddRange(_parametersWithDefaultValues);
if (_paramsParameter != null)
{
......@@ -335,7 +336,7 @@ public bool CanMoveUp
var index = SelectedIndex.Value;
index = _thisParameter == null ? index : index - 1;
if (index <= 0 || index == _parameterGroup1.Count || index >= _parameterGroup1.Count + _parameterGroup2.Count)
if (index <= 0 || index == _parametersWithoutDefaultValues.Count || index >= _parametersWithoutDefaultValues.Count + _parametersWithDefaultValues.Count)
{
return false;
}
......@@ -355,7 +356,7 @@ public bool CanMoveDown
var index = SelectedIndex.Value;
index = _thisParameter == null ? index : index - 1;
if (index < 0 || index == _parameterGroup1.Count - 1 || index >= _parameterGroup1.Count + _parameterGroup2.Count - 1)
if (index < 0 || index == _parametersWithoutDefaultValues.Count - 1 || index >= _parametersWithoutDefaultValues.Count + _parametersWithDefaultValues.Count - 1)
{
return false;
}
......@@ -370,7 +371,7 @@ internal void MoveUp()
var index = SelectedIndex.Value;
index = _thisParameter == null ? index : index - 1;
Move(index < _parameterGroup1.Count ? _parameterGroup1 : _parameterGroup2, index < _parameterGroup1.Count ? index : index - _parameterGroup1.Count, delta: -1);
Move(index < _parametersWithoutDefaultValues.Count ? _parametersWithoutDefaultValues : _parametersWithDefaultValues, index < _parametersWithoutDefaultValues.Count ? index : index - _parametersWithoutDefaultValues.Count, delta: -1);
}
internal void MoveDown()
......@@ -379,7 +380,7 @@ internal void MoveDown()
var index = SelectedIndex.Value;
index = _thisParameter == null ? index : index - 1;
Move(index < _parameterGroup1.Count ? _parameterGroup1 : _parameterGroup2, index < _parameterGroup1.Count ? index : index - _parameterGroup1.Count, delta: 1);
Move(index < _parametersWithoutDefaultValues.Count ? _parametersWithoutDefaultValues : _parametersWithDefaultValues, index < _parametersWithoutDefaultValues.Count ? index : index - _parametersWithoutDefaultValues.Count, delta: 1);
}
private void Move(List<ParameterViewModel> list, int index, int delta)
......@@ -410,7 +411,7 @@ private IList<ParameterViewModel> GetSelectedGroup()
{
var index = SelectedIndex;
index = _thisParameter == null ? index : index - 1;
return index < _parameterGroup1.Count ? _parameterGroup1 : index < _parameterGroup1.Count + _parameterGroup2.Count ? _parameterGroup2 : SpecializedCollections.EmptyList<ParameterViewModel>();
return index < _parametersWithoutDefaultValues.Count ? _parametersWithoutDefaultValues : index < _parametersWithoutDefaultValues.Count + _parametersWithDefaultValues.Count ? _parametersWithDefaultValues : SpecializedCollections.EmptyList<ParameterViewModel>();
}
public bool IsOkButtonEnabled
......@@ -673,13 +674,13 @@ public bool NeedsBottomBorder
return true;
}
if (this == changeSignatureDialogViewModel._parameterGroup1.LastOrDefault() &&
(changeSignatureDialogViewModel._parameterGroup2.Any() || changeSignatureDialogViewModel._paramsParameter != null))
if (this == changeSignatureDialogViewModel._parametersWithoutDefaultValues.LastOrDefault() &&
(changeSignatureDialogViewModel._parametersWithDefaultValues.Any() || changeSignatureDialogViewModel._paramsParameter != null))
{
return true;
}
if (this == changeSignatureDialogViewModel._parameterGroup2.LastOrDefault() &&
if (this == changeSignatureDialogViewModel._parametersWithDefaultValues.LastOrDefault() &&
changeSignatureDialogViewModel._paramsParameter != null)
{
return true;
......
......@@ -101,7 +101,7 @@ public AddedParameterResult GetAddedParameter(Document document, int insertPosit
var documentText = sourceText.ToString();
var rolesCollection1 = new[] { PredefinedTextViewRoles.Editable, PredefinedTextViewRoles.Interactive,
AddParameterTextViewRole,AddParameterTypeTextViewRole };
AddParameterTextViewRole, AddParameterTypeTextViewRole };
var rolesCollection2 = new[] { PredefinedTextViewRoles.Editable, PredefinedTextViewRoles.Interactive,
AddParameterTextViewRole, AddParameterNameTextViewRole };
var rolesCollections = new[] { rolesCollection1, rolesCollection2 };
......
......@@ -5,7 +5,6 @@
using System.Threading;
using System.Threading.Tasks;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.Formatting;
using Microsoft.CodeAnalysis.Host.Mef;
using Microsoft.CodeAnalysis.Text;
using Microsoft.VisualStudio.Editor;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册