Browse Source

ResourceEditor: Fixed some issues with adding new items.

pull/517/head
Andreas Weizel 12 years ago
parent
commit
7e3dd539c0
  1. 16
      src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Commands/AddNewFileCommand.cs
  2. 13
      src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Commands/AddStringEntryCommand.cs
  3. 13
      src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Commands/ResourceItemCommand.cs
  4. 36
      src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ViewModels/ResourceEditorViewModel.cs
  5. 5
      src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Views/IResourceEditorView.cs
  6. 7
      src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Views/ResourceEditorView.xaml.cs

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

@ -21,8 +21,6 @@ using System.IO;
using System.Runtime.Serialization.Formatters.Binary; using System.Runtime.Serialization.Formatters.Binary;
using ICSharpCode.Core; using ICSharpCode.Core;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Gui;
using Microsoft.Win32; using Microsoft.Win32;
using ResourceEditor.ViewModels; using ResourceEditor.ViewModels;
@ -30,12 +28,14 @@ namespace ResourceEditor.Commands
{ {
class AddNewFileCommand : ResourceItemCommand class AddNewFileCommand : ResourceItemCommand
{ {
public override bool EmptySelectionAllowed {
get {
return true;
}
}
public override void ExecuteWithResourceItems(System.Collections.Generic.IEnumerable<ResourceItem> resourceItems) public override void ExecuteWithResourceItems(System.Collections.Generic.IEnumerable<ResourceItem> resourceItems)
{ {
// if (editor.ResourceList.WriteProtected) {
// return;
// }
var editor = ResourceEditor; var editor = ResourceEditor;
OpenFileDialog fdiag = new OpenFileDialog(); OpenFileDialog fdiag = new OpenFileDialog();
fdiag.AddExtension = true; fdiag.AddExtension = true;
@ -67,9 +67,9 @@ namespace ResourceEditor.Commands
continue; continue;
} }
var newResourceItem = new ResourceItem(editor, resname, tmp); var newResourceItem = new ResourceItem(editor, resname, tmp);
newResourceItem.IsNew = true;
editor.ResourceItems.Add(newResourceItem); editor.ResourceItems.Add(newResourceItem);
editor.SelectedItems.Clear(); editor.SelectItem(newResourceItem);
editor.SelectedItems.Add(newResourceItem);
} }
} }
} }

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

@ -24,12 +24,14 @@ namespace ResourceEditor.Commands
{ {
class AddStringCommand : ResourceItemCommand class AddStringCommand : ResourceItemCommand
{ {
public override bool EmptySelectionAllowed {
get {
return true;
}
}
public override void ExecuteWithResourceItems(System.Collections.Generic.IEnumerable<ResourceItem> resourceItems) public override void ExecuteWithResourceItems(System.Collections.Generic.IEnumerable<ResourceItem> resourceItems)
{ {
// if(editor.ResourceList.WriteProtected) {
// return;
// }
//
var editor = ResourceEditor; var editor = ResourceEditor;
int count = 1; int count = 1;
string newNameBase = "New string entry "; string newNameBase = "New string entry ";
@ -48,8 +50,7 @@ namespace ResourceEditor.Commands
else else
item.SortingCriteria = item.Name; item.SortingCriteria = item.Name;
editor.ResourceItems.Add(item); editor.ResourceItems.Add(item);
editor.SelectedItems.Clear(); editor.SelectItem(item);
editor.SelectedItems.Add(item);
editor.StartEditing(); editor.StartEditing();
} }
} }

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

@ -39,6 +39,15 @@ namespace ResourceEditor.Commands
} }
} }
/// <summary>
/// Defines whether this command is active when nothing is selected.
/// </summary>
public virtual bool EmptySelectionAllowed {
get {
return false;
}
}
/// <summary> /// <summary>
/// Returns list of resource item types for which this command may be enabled or <c>null</c> to allow any type. /// Returns list of resource item types for which this command may be enabled or <c>null</c> to allow any type.
/// </summary> /// </summary>
@ -54,7 +63,7 @@ namespace ResourceEditor.Commands
return false; return false;
var selectedResourceItems = GetSelectedItems(); var selectedResourceItems = GetSelectedItems();
if (!selectedResourceItems.Any()) if (!EmptySelectionAllowed && !selectedResourceItems.Any())
return false; return false;
if (!SupportsMultiSelections && (selectedResourceItems.Count() > 1)) if (!SupportsMultiSelections && (selectedResourceItems.Count() > 1))
return false; return false;
@ -75,7 +84,7 @@ namespace ResourceEditor.Commands
public override void Execute(object parameter) public override void Execute(object parameter)
{ {
var selectedResourceItems = GetSelectedItems(); var selectedResourceItems = GetSelectedItems();
if (!selectedResourceItems.Any()) if (!EmptySelectionAllowed && !selectedResourceItems.Any())
return; return;
if (!SupportsMultiSelections && (selectedResourceItems.Count() > 1)) if (!SupportsMultiSelections && (selectedResourceItems.Count() > 1))
return; return;

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

@ -192,6 +192,11 @@ namespace ResourceEditor.ViewModels
view.SetItemView(null); view.SetItemView(null);
} }
} }
// When selection is changed, reset any new item marked with IsNew to pass the filter
foreach (var newItem in ResourceItems.Where(ri => ri.IsNew)) {
newItem.IsNew = false;
}
} }
void OnChangedDirtyState(bool isDirty) void OnChangedDirtyState(bool isDirty)
@ -206,14 +211,13 @@ namespace ResourceEditor.ViewModels
OnChangedDirtyState(true); OnChangedDirtyState(true);
} }
public void StartEditing() public void SelectItem(ResourceItem item)
{ {
// if (editedResourceItem != null) { view.SelectItem(item);
// editedResourceItem.IsEditing = false; }
// editedResourceItem = null;
// originalNameOfEditedItem = null;
// }
public void StartEditing()
{
// Start editing currently selected item // Start editing currently selected item
var firstSelectedItem = SelectedItems.OfType<ResourceItem>().FirstOrDefault(); var firstSelectedItem = SelectedItems.OfType<ResourceItem>().FirstOrDefault();
if (firstSelectedItem != null) { if (firstSelectedItem != null) {
@ -228,26 +232,6 @@ namespace ResourceEditor.ViewModels
StartEditing(); StartEditing();
} }
void View_EditingFinished(object sender, EventArgs e)
{
// if (editedResourceItem != null) {
// editedResourceItem.IsEditing = false;
// editedResourceItem = null;
// originalNameOfEditedItem = null;
// MakeDirty();
// }
}
void View_EditingCancelled(object sender, EventArgs e)
{
// if (editedResourceItem != null) {
// editedResourceItem.IsEditing = false;
// editedResourceItem.Name = originalNameOfEditedItem;
// editedResourceItem = null;
// originalNameOfEditedItem = null;
// }
}
void StartUpdate() void StartUpdate()
{ {
// When loading many items at once, temporarily unbind view from model // When loading many items at once, temporarily unbind view from model

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

@ -22,6 +22,7 @@ using System.Collections.Generic;
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
using System.Windows; using System.Windows;
using System.Windows.Input; using System.Windows.Input;
using ResourceEditor.ViewModels;
namespace ResourceEditor.Views namespace ResourceEditor.Views
{ {
@ -39,6 +40,8 @@ namespace ResourceEditor.Views
get; get;
} }
void SelectItem(ResourceItem item);
event EventHandler EditingStarted; event EventHandler EditingStarted;
void SetItemView(IResourceItemView view); void SetItemView(IResourceItemView view);
@ -48,7 +51,7 @@ namespace ResourceEditor.Views
set; set;
} }
Predicate<ResourceEditor.ViewModels.ResourceItem> FilterPredicate { Predicate<ResourceItem> FilterPredicate {
get; get;
set; set;
} }

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

@ -50,6 +50,13 @@ namespace ResourceEditor.Views
} }
} }
public void SelectItem(ResourceItem item)
{
SelectedItems.Clear();
SelectedItems.Add(item);
resourceItemsListView.ScrollIntoView(item);
}
public void SetItemView(IResourceItemView view) public void SetItemView(IResourceItemView view)
{ {
resourceItemViewGrid.Children.Clear(); resourceItemViewGrid.Children.Clear();

Loading…
Cancel
Save