/* * CollectionEditor.cs - The base class for the visual type editors * * Part of PropertyGrid - A Gtk# widget that displays and allows * editing of all of an object's public properties * * Authors: * Michael Hutchinson * * Copyright (C) 2005 Michael Hutchinson * * This sourcecode is licenced under The MIT License: * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the * "Software"), to deal in the Software without restriction, including * without limitation the rights to use, copy, modify, merge, publish, * distribute, sublicense, and/or sell copies of the Software, and to permit * persons to whom the Software is furnished to do so, subject to the * following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE * USE OR OTHER DEALINGS IN THE SOFTWARE. */ using System; using Gtk; using System.ComponentModel; using System.ComponentModel.Design; using System.Collections; namespace MonoDevelop.Components.PropertyGrid.PropertyEditors { class CollectionEditor : PropertyEditorCell { //TODO: Support for multiple object types private Type[] types; protected override void Initialize () { base.Initialize (); this.types = new Type[] { EditorManager.GetCollectionItemType (Property.PropertyType) }; } protected virtual Type[] NewItemTypes () { return types; } public override bool DialogueEdit { get { return true; } } public override bool EditsReadOnlyObject { get { return true; } } protected override string GetValueText () { return MonoDevelop.Core.GettextCatalog.GetString ("(Collection)"); } public override void LaunchDialogue () { //the Type in the collection IList collection = (IList) Value; string displayName = Property.DisplayName; //populate list with existing items ListStore itemStore = new ListStore (typeof (object), typeof (int), typeof (string)); for (int i=0; i