Browse Source

ResourceEditor: Fixed some issues with adding new items.

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

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

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

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

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

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

@ -192,6 +192,11 @@ namespace ResourceEditor.ViewModels @@ -192,6 +192,11 @@ namespace ResourceEditor.ViewModels
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)
@ -206,14 +211,13 @@ namespace ResourceEditor.ViewModels @@ -206,14 +211,13 @@ namespace ResourceEditor.ViewModels
OnChangedDirtyState(true);
}
public void SelectItem(ResourceItem item)
{
view.SelectItem(item);
}
public void StartEditing()
{
// if (editedResourceItem != null) {
// editedResourceItem.IsEditing = false;
// editedResourceItem = null;
// originalNameOfEditedItem = null;
// }
// Start editing currently selected item
var firstSelectedItem = SelectedItems.OfType<ResourceItem>().FirstOrDefault();
if (firstSelectedItem != null) {
@ -228,26 +232,6 @@ namespace ResourceEditor.ViewModels @@ -228,26 +232,6 @@ namespace ResourceEditor.ViewModels
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()
{
// 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; @@ -22,6 +22,7 @@ using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Windows;
using System.Windows.Input;
using ResourceEditor.ViewModels;
namespace ResourceEditor.Views
{
@ -39,6 +40,8 @@ namespace ResourceEditor.Views @@ -39,6 +40,8 @@ namespace ResourceEditor.Views
get;
}
void SelectItem(ResourceItem item);
event EventHandler EditingStarted;
void SetItemView(IResourceItemView view);
@ -48,7 +51,7 @@ namespace ResourceEditor.Views @@ -48,7 +51,7 @@ namespace ResourceEditor.Views
set;
}
Predicate<ResourceEditor.ViewModels.ResourceItem> FilterPredicate {
Predicate<ResourceItem> FilterPredicate {
get;
set;
}

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

@ -50,6 +50,13 @@ namespace ResourceEditor.Views @@ -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)
{
resourceItemViewGrid.Children.Clear();

Loading…
Cancel
Save