Skip to content
This repository was archived by the owner on Oct 16, 2020. It is now read-only.

Commit 7e3dd53

Browse files
committed
ResourceEditor: Fixed some issues with adding new items.
1 parent 22fe7c0 commit 7e3dd53

6 files changed

Lines changed: 47 additions & 43 deletions

File tree

src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Commands/AddNewFileCommand.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,21 +21,21 @@
2121
using System.Runtime.Serialization.Formatters.Binary;
2222

2323
using ICSharpCode.Core;
24-
using ICSharpCode.SharpDevelop;
25-
using ICSharpCode.SharpDevelop.Gui;
2624
using Microsoft.Win32;
2725
using ResourceEditor.ViewModels;
2826

2927
namespace ResourceEditor.Commands
3028
{
3129
class AddNewFileCommand : ResourceItemCommand
3230
{
31+
public override bool EmptySelectionAllowed {
32+
get {
33+
return true;
34+
}
35+
}
36+
3337
public override void ExecuteWithResourceItems(System.Collections.Generic.IEnumerable<ResourceItem> resourceItems)
3438
{
35-
// if (editor.ResourceList.WriteProtected) {
36-
// return;
37-
// }
38-
3939
var editor = ResourceEditor;
4040
OpenFileDialog fdiag = new OpenFileDialog();
4141
fdiag.AddExtension = true;
@@ -67,9 +67,9 @@ public override void ExecuteWithResourceItems(System.Collections.Generic.IEnumer
6767
continue;
6868
}
6969
var newResourceItem = new ResourceItem(editor, resname, tmp);
70+
newResourceItem.IsNew = true;
7071
editor.ResourceItems.Add(newResourceItem);
71-
editor.SelectedItems.Clear();
72-
editor.SelectedItems.Add(newResourceItem);
72+
editor.SelectItem(newResourceItem);
7373
}
7474
}
7575
}

src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Commands/AddStringEntryCommand.cs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,14 @@ namespace ResourceEditor.Commands
2424
{
2525
class AddStringCommand : ResourceItemCommand
2626
{
27+
public override bool EmptySelectionAllowed {
28+
get {
29+
return true;
30+
}
31+
}
32+
2733
public override void ExecuteWithResourceItems(System.Collections.Generic.IEnumerable<ResourceItem> resourceItems)
2834
{
29-
// if(editor.ResourceList.WriteProtected) {
30-
// return;
31-
// }
32-
//
3335
var editor = ResourceEditor;
3436
int count = 1;
3537
string newNameBase = "New string entry ";
@@ -48,8 +50,7 @@ public override void ExecuteWithResourceItems(System.Collections.Generic.IEnumer
4850
else
4951
item.SortingCriteria = item.Name;
5052
editor.ResourceItems.Add(item);
51-
editor.SelectedItems.Clear();
52-
editor.SelectedItems.Add(item);
53+
editor.SelectItem(item);
5354
editor.StartEditing();
5455
}
5556
}

src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Commands/ResourceItemCommand.cs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,15 @@ public virtual bool SupportsMultiSelections {
3939
}
4040
}
4141

42+
/// <summary>
43+
/// Defines whether this command is active when nothing is selected.
44+
/// </summary>
45+
public virtual bool EmptySelectionAllowed {
46+
get {
47+
return false;
48+
}
49+
}
50+
4251
/// <summary>
4352
/// Returns list of resource item types for which this command may be enabled or <c>null</c> to allow any type.
4453
/// </summary>
@@ -54,7 +63,7 @@ public override bool CanExecute(object parameter)
5463
return false;
5564

5665
var selectedResourceItems = GetSelectedItems();
57-
if (!selectedResourceItems.Any())
66+
if (!EmptySelectionAllowed && !selectedResourceItems.Any())
5867
return false;
5968
if (!SupportsMultiSelections && (selectedResourceItems.Count() > 1))
6069
return false;
@@ -75,7 +84,7 @@ public virtual bool CanExecuteWithResourceItems(IEnumerable<ResourceItem> resour
7584
public override void Execute(object parameter)
7685
{
7786
var selectedResourceItems = GetSelectedItems();
78-
if (!selectedResourceItems.Any())
87+
if (!EmptySelectionAllowed && !selectedResourceItems.Any())
7988
return;
8089
if (!SupportsMultiSelections && (selectedResourceItems.Count() > 1))
8190
return;

src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ViewModels/ResourceEditorViewModel.cs

Lines changed: 10 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,11 @@ void View_SelectionChanged(object sender, EventArgs e)
192192
view.SetItemView(null);
193193
}
194194
}
195+
196+
// When selection is changed, reset any new item marked with IsNew to pass the filter
197+
foreach (var newItem in ResourceItems.Where(ri => ri.IsNew)) {
198+
newItem.IsNew = false;
199+
}
195200
}
196201

197202
void OnChangedDirtyState(bool isDirty)
@@ -206,14 +211,13 @@ public void MakeDirty()
206211
OnChangedDirtyState(true);
207212
}
208213

214+
public void SelectItem(ResourceItem item)
215+
{
216+
view.SelectItem(item);
217+
}
218+
209219
public void StartEditing()
210220
{
211-
// if (editedResourceItem != null) {
212-
// editedResourceItem.IsEditing = false;
213-
// editedResourceItem = null;
214-
// originalNameOfEditedItem = null;
215-
// }
216-
217221
// Start editing currently selected item
218222
var firstSelectedItem = SelectedItems.OfType<ResourceItem>().FirstOrDefault();
219223
if (firstSelectedItem != null) {
@@ -228,26 +232,6 @@ void View_EditingStarted(object sender, EventArgs e)
228232
StartEditing();
229233
}
230234

231-
void View_EditingFinished(object sender, EventArgs e)
232-
{
233-
// if (editedResourceItem != null) {
234-
// editedResourceItem.IsEditing = false;
235-
// editedResourceItem = null;
236-
// originalNameOfEditedItem = null;
237-
// MakeDirty();
238-
// }
239-
}
240-
241-
void View_EditingCancelled(object sender, EventArgs e)
242-
{
243-
// if (editedResourceItem != null) {
244-
// editedResourceItem.IsEditing = false;
245-
// editedResourceItem.Name = originalNameOfEditedItem;
246-
// editedResourceItem = null;
247-
// originalNameOfEditedItem = null;
248-
// }
249-
}
250-
251235
void StartUpdate()
252236
{
253237
// When loading many items at once, temporarily unbind view from model

src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Views/IResourceEditorView.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
using System.Collections.ObjectModel;
2323
using System.Windows;
2424
using System.Windows.Input;
25+
using ResourceEditor.ViewModels;
2526

2627
namespace ResourceEditor.Views
2728
{
@@ -39,6 +40,8 @@ IList SelectedItems {
3940
get;
4041
}
4142

43+
void SelectItem(ResourceItem item);
44+
4245
event EventHandler EditingStarted;
4346

4447
void SetItemView(IResourceItemView view);
@@ -48,7 +51,7 @@ object DataContext {
4851
set;
4952
}
5053

51-
Predicate<ResourceEditor.ViewModels.ResourceItem> FilterPredicate {
54+
Predicate<ResourceItem> FilterPredicate {
5255
get;
5356
set;
5457
}

src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Views/ResourceEditorView.xaml.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,13 @@ public IList SelectedItems {
5050
}
5151
}
5252

53+
public void SelectItem(ResourceItem item)
54+
{
55+
SelectedItems.Clear();
56+
SelectedItems.Add(item);
57+
resourceItemsListView.ScrollIntoView(item);
58+
}
59+
5360
public void SetItemView(IResourceItemView view)
5461
{
5562
resourceItemViewGrid.Children.Clear();

0 commit comments

Comments
 (0)