public override void ExecuteWithResourceItems(System.Collections.Generic.IEnumerable<ResourceItem> resourceItems)
		{
			var editor = ResourceEditor;
			OpenFileDialog fdiag = new OpenFileDialog();
			fdiag.AddExtension = true;
			fdiag.Filter = StringParser.Parse("${res:SharpDevelop.FileFilter.AllFiles}|*.*");
			fdiag.Multiselect = true;
			fdiag.CheckFileExists = true;
			
			if ((bool)fdiag.ShowDialog()) {
				foreach (string filename in fdiag.FileNames) {
					string oresname = Path.ChangeExtension(Path.GetFileName(filename), null);
					if (oresname == "")
						oresname = "new";
					
					string resname = oresname;
					
					int i = 0;
					TestName:
					if (editor.ContainsResourceName(resname)) {
						if (i == 10) {
							continue;
						}
						i++;
						resname = oresname + "_" + i;
						goto TestName;
					}
					
					object tmp = LoadResource(filename);
					if (tmp == null) {
						continue;
					}
					var newResourceItem = new ResourceItem(editor, resname, tmp);
					newResourceItem.IsNew = true;
					editor.ResourceItems.Add(newResourceItem);
					editor.SelectItem(newResourceItem);
				}
			}
		}
        public void Paste()
        {
            IDataObject dob = Clipboard.GetDataObject();

            if (dob == null)
            {
                return;
            }

            if (dob.GetDataPresent(typeof(Hashtable).FullName))
            {
                Hashtable tmphash = (Hashtable)dob.GetData(typeof(Hashtable));
                foreach (DictionaryEntry entry in tmphash)
                {
                    object       resourceValue = GetClonedResource(entry.Value);
                    ResourceItem item;

                    if (!resourceItemNames.Contains((string)entry.Key))
                    {
                        item = new ResourceItem(this, entry.Key.ToString(), resourceValue);
                    }
                    else
                    {
                        int    count       = 1;
                        string newNameBase = entry.Key + " ";
                        string newName     = newNameBase + count;

                        while (resourceItemNames.Contains(newName))
                        {
                            count++;
                            newName = newNameBase + count;
                        }
                        item = new ResourceItem(this, newName, resourceValue);
                    }
                    resourceItems.Add(item);
                    SelectItem(item);
                }
            }
        }
 public void SelectItem(ResourceItem item)
 {
     view.SelectItem(item);
 }
		public void SelectItem(ResourceItem item)
		{
			SelectedItems.Clear();
			SelectedItems.Add(item);
			resourceItemsListView.ScrollIntoView(item);
		}
		void Button_Click(object sender, RoutedEventArgs e)
		{
			if (resourceItem != null) {
				if (resourceItem.UpdateFromFile()) {
					ResourceItem = resourceItem;
				}
			}
		}
		public void Paste()
		{
			IDataObject dob = Clipboard.GetDataObject();
			if (dob == null)
				return;
			
			if (dob.GetDataPresent(typeof(Hashtable).FullName)) {
				Hashtable tmphash = (Hashtable)dob.GetData(typeof(Hashtable));
				foreach (DictionaryEntry entry in tmphash) {
					object resourceValue = GetClonedResource(entry.Value);
					ResourceItem item;
					
					if (!resourceItemNames.Contains((string)entry.Key)) {
						item = new ResourceItem(this, entry.Key.ToString(), resourceValue);
					} else {
						int count = 1;
						string newNameBase = entry.Key + " ";
						string newName = newNameBase + count;
						
						while (resourceItemNames.Contains(newName)) {
							count++;
							newName = newNameBase + count;
						}
						item = new ResourceItem(this, newName, resourceValue);
					}
					resourceItems.Add(item);
					SelectItem(item);
				}
			}
		}
		public void AddBooleanEntry()
		{
			int count = 1;
			string newNameBase = "New boolean entry ";
			string newName = newNameBase + count;
			
			while (ContainsResourceName(newName)) {
				count++;
				newName = newNameBase + count;
			}
			
			var selectedItem = GetSelectedItems().FirstOrDefault();
			ResourceItem item = new ResourceItem(this, newName, false);
			item.IsNew = true;
			if (selectedItem != null)
				item.SortingCriteria = selectedItem.Name;
			else
				item.SortingCriteria = item.Name;
			ResourceItems.Add(item);
			SelectItem(item);
			StartEditing();
		}
		public void StartEditing()
		{
			// Start editing currently selected item
			var firstSelectedItem = SelectedItems.OfType<ResourceItem>().FirstOrDefault();
			if (firstSelectedItem != null) {
				editedResourceItem = firstSelectedItem;
				originalNameOfEditedItem = editedResourceItem.Name;
				firstSelectedItem.IsEditing = true;
			}
		}
		public void SelectItem(ResourceItem item)
		{
			view.SelectItem(item);
		}