Browse Source

Switching to use TreeViewAdv instead of TreeListView. Work in progress.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@2393 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Itar Bar-Haim 19 years ago
parent
commit
1b325f01ae
  1. 109
      src/AddIns/DisplayBindings/ClassDiagram/ClassEditor/ClassEditor.Designer.cs
  2. 554
      src/AddIns/DisplayBindings/ClassDiagram/ClassEditor/ClassEditor.cs
  3. 16
      src/AddIns/DisplayBindings/ClassDiagram/ClassEditor/ClassEditor.csproj
  4. 37
      src/AddIns/DisplayBindings/ClassDiagram/ClassEditor/ClassEditor.resx

109
src/AddIns/DisplayBindings/ClassDiagram/ClassEditor/ClassEditor.Designer.cs generated

@ -36,15 +36,124 @@ namespace ClassDiagram @@ -36,15 +36,124 @@ namespace ClassDiagram
/// </summary>
private void InitializeComponent()
{
this.membersList = new Aga.Controls.Tree.TreeViewAdv();
this.nameCol = new Aga.Controls.Tree.TreeColumn();
this.typeCol = new Aga.Controls.Tree.TreeColumn();
this.modifierCol = new Aga.Controls.Tree.TreeColumn();
this.summaryCol = new Aga.Controls.Tree.TreeColumn();
this._icon = new Aga.Controls.Tree.NodeControls.NodeIcon();
this._name = new Aga.Controls.Tree.NodeControls.NodeTextBox();
this._type = new Aga.Controls.Tree.NodeControls.NodeComboBox();
this._modifiers = new Aga.Controls.Tree.NodeControls.NodeComboBox();
this._summary = new Aga.Controls.Tree.NodeControls.NodeTextBox();
this.SuspendLayout();
//
// membersList
//
this.membersList.BackColor = System.Drawing.SystemColors.Window;
this.membersList.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.membersList.Columns.Add(this.nameCol);
this.membersList.Columns.Add(this.typeCol);
this.membersList.Columns.Add(this.modifierCol);
this.membersList.Columns.Add(this.summaryCol);
this.membersList.Cursor = System.Windows.Forms.Cursors.Default;
this.membersList.DefaultToolTipProvider = null;
this.membersList.Dock = System.Windows.Forms.DockStyle.Fill;
this.membersList.DragDropMarkColor = System.Drawing.Color.Black;
this.membersList.FullRowSelect = true;
this.membersList.LineColor = System.Drawing.SystemColors.ControlDark;
this.membersList.Location = new System.Drawing.Point(0, 0);
this.membersList.Model = null;
this.membersList.Name = "membersList";
this.membersList.NodeControls.Add(this._icon);
this.membersList.NodeControls.Add(this._name);
this.membersList.NodeControls.Add(this._type);
this.membersList.NodeControls.Add(this._modifiers);
this.membersList.NodeControls.Add(this._summary);
this.membersList.Search.BackColor = System.Drawing.Color.Pink;
this.membersList.Search.FontColor = System.Drawing.Color.Black;
this.membersList.SelectedNode = null;
this.membersList.ShowLines = false;
this.membersList.Size = new System.Drawing.Size(603, 299);
this.membersList.TabIndex = 0;
this.membersList.Text = "treeViewAdv1";
this.membersList.UseColumns = true;
this.membersList.NodeMouseDoubleClick += new System.EventHandler<Aga.Controls.Tree.TreeNodeAdvMouseEventArgs>(this.MembersListNodeMouseDoubleClick);
//
// nameCol
//
this.nameCol.Header = "Name";
this.nameCol.SortOrder = System.Windows.Forms.SortOrder.None;
this.nameCol.Width = 80;
//
// typeCol
//
this.typeCol.Header = "Type";
this.typeCol.SortOrder = System.Windows.Forms.SortOrder.None;
this.typeCol.Width = 80;
//
// modifierCol
//
this.modifierCol.Header = "Modifier";
this.modifierCol.SortOrder = System.Windows.Forms.SortOrder.None;
this.modifierCol.Width = 80;
//
// summaryCol
//
this.summaryCol.Header = "Summary";
this.summaryCol.SortOrder = System.Windows.Forms.SortOrder.None;
this.summaryCol.Width = 320;
//
// _icon
//
this._icon.DataPropertyName = "MemberIcon";
this._icon.IncrementalSearchEnabled = false;
this._icon.ParentColumn = this.nameCol;
//
// _name
//
this._name.DataPropertyName = "MemberName";
this._name.EditEnabled = true;
this._name.ParentColumn = this.nameCol;
//
// _type
//
this._type.DataPropertyName = "MemberType";
this._type.EditEnabled = true;
this._type.ParentColumn = this.typeCol;
//
// _modifiers
//
this._modifiers.DataPropertyName = "MemberModifier";
this._modifiers.EditEnabled = true;
this._modifiers.ParentColumn = this.modifierCol;
this._modifiers.EditorShowing += new System.ComponentModel.CancelEventHandler(this._modifiersEditorShowing);
//
// _summary
//
this._summary.DataPropertyName = "MemberSummary";
this._summary.EditEnabled = true;
this._summary.ParentColumn = this.summaryCol;
this._summary.Trimming = System.Drawing.StringTrimming.EllipsisCharacter;
//
// ClassEditor
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.membersList);
this.Name = "ClassEditor";
this.Size = new System.Drawing.Size(603, 299);
this.ResumeLayout(false);
}
private Aga.Controls.Tree.NodeControls.NodeIcon _icon;
private Aga.Controls.Tree.NodeControls.NodeComboBox _modifiers;
private Aga.Controls.Tree.NodeControls.NodeComboBox _type;
private Aga.Controls.Tree.NodeControls.NodeTextBox _summary;
private Aga.Controls.Tree.NodeControls.NodeTextBox _name;
private Aga.Controls.Tree.TreeViewAdv membersList;
private Aga.Controls.Tree.TreeColumn nameCol;
private Aga.Controls.Tree.TreeColumn typeCol;
private Aga.Controls.Tree.TreeColumn modifierCol;
private Aga.Controls.Tree.TreeColumn summaryCol;
}
}

554
src/AddIns/DisplayBindings/ClassDiagram/ClassEditor/ClassEditor.cs

@ -23,23 +23,20 @@ using ICSharpCode.SharpDevelop.Project; @@ -23,23 +23,20 @@ using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor;
using ICSharpCode.TextEditor;
using Aga.Controls.Tree;
using Aga.Controls.Tree.NodeControls;
namespace ClassDiagram
{
/// <summary>
/// Description of UserControl1.
/// </summary>
public partial class ClassEditor
{
TreeListView membersList = new TreeListView();
VisibilityModifiersEditor visibilityModifierEditor = new VisibilityModifiersEditor();
ParameterModifiersEditor parameterModifierEditor = new ParameterModifiersEditor();
System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(ClassEditor));
Dictionary<Type, TreeListViewItem> addMemberItems = new Dictionary<Type, TreeListViewItem>();
Dictionary<IMethod, TreeListViewItem> addParameterItems = new Dictionary<IMethod, TreeListViewItem>();
Dictionary<Type, Node> addMemberItems = new Dictionary<Type, Node>();
Dictionary<IMethod, Node> addParameterItems = new Dictionary<IMethod, Node>();
Dictionary<ClassType, Action<IClass>> classTypeGroupCreators = new Dictionary<ClassType, Action<IClass>>();
IClass currClass;
@ -52,107 +49,295 @@ namespace ClassDiagram @@ -52,107 +49,295 @@ namespace ClassDiagram
public event EventHandler<IMemberEventArgs> ClassMemberAdded = delegate {};
TreeListViewItem editedItem = null;
TreeModel model = new TreeModel();
ColumnHeader nameCol;
ColumnHeader typeCol;
ColumnHeader modifierCol;
ColumnHeader summaryCol;
//TreeListViewItem editedItem = null;
/*
TreeColumn nameCol = new TreeColumn("Name", 100);
TreeColumn typeCol = new TreeColumn("Type", 100);
TreeColumn modifierCol = new TreeColumn("Modifier", 100);
TreeColumn summaryCol = new TreeColumn("Summary", 100);
*/
public ClassEditor()
private class GroupNode : Node
{
//
// The InitializeComponent() call is required for Windows Forms designer support.
//
InitializeComponent();
public GroupNode(Type groupType, string title)
: base (title)
{
this.groupType = groupType;
}
nameCol = membersList.Columns.Add("Name");
typeCol = membersList.Columns.Add("Type");
modifierCol = membersList.Columns.Add("Modifier");
summaryCol = membersList.Columns.Add("Summary");
Type groupType;
nameCol.Width = 160;
typeCol.Width = 100;
modifierCol.Width = 100;
summaryCol.Width = 200;
public Type GroupType {
get { return groupType; }
}
try
public string MemberName
{
membersList.SmallImageList = ClassBrowserIconService.ImageList;
get { return base.Text; }
}
catch
}
private class MemberNode : Node
{
public MemberNode(IMember member, IAmbience ambience, ClassEditor editor)
{
membersList.SmallImageList = new ImageList();
this.member = member;
this.ambience = ambience;
this.editor = editor;
UpdateValues();
}
//TODO - check with the #D documentation how to add new icons correctly.
membersList.SmallImageList.Images.Add("OpenBrace", (Bitmap)resources.GetObject("openbrace"));
membersList.SmallImageList.Images.Add("Comma", (Bitmap)resources.GetObject("comma"));
membersList.SmallImageList.Images.Add("CloseBrace", (Bitmap)resources.GetObject("closebrace"));
membersList.SmallImageList.Images.Add("EmptyBraces", (Bitmap)resources.GetObject("emptybraces"));
membersList.LabelEdit = true;
membersList.Sorting = SortOrder.None;
membersList.ShowPlusMinus = true;
membersList.FullRowSelect = true;
void UpdateValues()
{
IMethod methodMember = member as IMethod;
IEvent eventMember = member as IEvent;
IProperty propertyMember = member as IProperty;
IField fieldMember = member as IField;
int iconIndex = -1;
try
{
iconIndex = ClassBrowserIconService.GetIcon(member);
}
catch {}
if (iconIndex > -1)
icon = ClassBrowserIconService.ImageList.Images[iconIndex];
if (methodMember != null)
{
if (methodMember.IsConstructor)
{
if (methodMember.DeclaringType != null)
memberName = methodMember.DeclaringType.Name;
else
memberName = methodMember.Name;
}
else
memberName = methodMember.Name;
}
if (eventMember != null) memberName = eventMember.Name;
if (propertyMember != null) memberName = ambience.Convert(propertyMember);
if (fieldMember != null) memberName = ambience.Convert(fieldMember);
}
membersList.Items.Sortable = false;
membersList.HeaderStyle = ColumnHeaderStyle.Nonclickable;
IAmbience ambience;
IMember member;
ClassEditor editor;
membersList.DoubleClick += HandleDoubleClick;
membersList.BeforeLabelEdit += BeforeEdit;
membersList.AfterLabelEdit += AfterEdit;
public IMember Member
{
get { return member; }
set { member = value; UpdateValues(); }
}
Controls.Add(membersList);
membersList.Dock = DockStyle.Fill;
private string memberName;
public string MemberName
{
get { return memberName; }
set
{
IMemberModificationEventArgs mmea = new IMemberModificationEventArgs(member, Modification.Name, value);
editor.EmitMemberModified(mmea);
}
}
classTypeGroupCreators.Add(ClassType.Class, SetClassGroups);
classTypeGroupCreators.Add(ClassType.Interface, SetClassGroups);
classTypeGroupCreators.Add(ClassType.Struct, SetClassGroups);
classTypeGroupCreators.Add(ClassType.Enum, SetEnumGroups);
classTypeGroupCreators.Add(ClassType.Delegate, SetDelegateGroups);
//classTypeGroupCreators[ClassType.Module] = SetClassGroups; //???
protected Image icon;
public Image MemberIcon
{
get { return icon; }
}
public string MemberType
{
get { return ambience.Convert(member.ReturnType); }
set
{
IMemberModificationEventArgs mmea = new IMemberModificationEventArgs(member, Modification.Type, value);
editor.EmitMemberModified(mmea);
}
}
public string MemberModifiers
{
get { return member.Modifiers.ToString(); }
set
{
IMemberModificationEventArgs mmea = new IMemberModificationEventArgs(member, Modification.Modifier, value);
editor.EmitMemberModified(mmea);
}
}
public string MemberSummary
{
get { return ClassEditor.GetSummary(member); }
set
{
IMemberModificationEventArgs mmea = new IMemberModificationEventArgs(member, Modification.Summary, value);
editor.EmitMemberModified(mmea);
}
}
}
private void HandleDoubleClick (object sender, EventArgs e)
private class ParameterNode : Node
{
if (membersList.SelectedItems.Count == 0) return;
public ParameterNode(IParameter parameter, IAmbience ambience, Image icon, ClassEditor editor)
{
this.ambience = ambience;
this.icon = icon;
this.parameter = parameter;
this.editor = editor;
UpdateMethod();
}
IAmbience ambience;
IParameter parameter;
IMethod method;
ClassEditor editor;
private void UpdateMethod()
{
MemberNode member = this.Parent as MemberNode;
if (member != null)
method = member.Member as IMethod;
}
TreeListViewItem item = membersList.SelectedItems[0];
public IParameter Parameter {
get { return parameter; }
set
{
parameter = value;
UpdateMethod();
}
}
if (addMemberItems.ContainsValue(item))
public string MemberName
{
/* IAmbience ambience = GetAmbience();
item.SubItems.Add(ambience.Convert(VoidReturnType.Instance));
item.SubItems.Add(ModifierEnum.Public.ToString());
item.SubItems.Add("");
item.Text = "[method name]";
item.BeginEdit(0);*/
get { return parameter.Name; }
set
{
IParameterModificationEventArgs pmea = new IParameterModificationEventArgs(method, parameter, Modification.Name, value);
editor.EmitParameterModified(pmea);
}
}
protected Image icon;
public Image MemberIcon
{
get { return icon; }
set { icon = value; }
}
else if (addParameterItems.ContainsValue(item))
public string MemberType
{
get { return ambience.Convert(parameter.ReturnType); }
set
{
IParameterModificationEventArgs pmea = new IParameterModificationEventArgs(method, parameter, Modification.Type, value);
editor.EmitParameterModified(pmea);
}
}
else
public string MemberModifiers
{
IMember itemMember = item.Tag as IMember;
IParameter itemParameter = item.Tag as IParameter;
if (itemMember != null)
get { return parameter.Modifiers.ToString(); }
set
{
MemberActivated(this, new IMemberEventArgs(itemMember));
IParameterModificationEventArgs pmea = new IParameterModificationEventArgs(method, parameter, Modification.Modifier, value);
editor.EmitParameterModified(pmea);
}
else if (itemParameter != null)
}
public string MemberSummary
{
get { return ClassEditor.GetSummary(parameter); }
set
{
IMethod method = item.Parent.Tag as IMethod;
if (method != null)
ParameterActivated(this, new IParameterEventArgs(method, itemParameter));
IParameterModificationEventArgs pmea = new IParameterModificationEventArgs(method, parameter, Modification.Summary, value);
editor.EmitParameterModified(pmea);
}
}
}
private class AddParameterNode : Node
{
public AddParameterNode (Image icon) : base ("<Add Parameter>")
{
this.icon = icon;
}
Image icon;
public Image Icon {
get { return icon; }
}
public string MemberName
{
get { return base.Text; }
}
}
public ClassEditor()
{
//
// The InitializeComponent() call is required for Windows Forms designer support.
//
InitializeComponent();
membersList.Model = model;
// try
// {
// membersList.SmallImageList = ClassBrowserIconService.ImageList;
// }
// catch
// {
// membersList.SmallImageList = new ImageList();
// }
//TODO - check with the #D documentation how to add new icons correctly.
//membersList.SmallImageList.Images.Add("OpenBrace", (Bitmap)resources.GetObject("openbrace"));
//membersList.SmallImageList.Images.Add("Comma", (Bitmap)resources.GetObject("comma"));
//membersList.SmallImageList.Images.Add("CloseBrace", (Bitmap)resources.GetObject("closebrace"));
//membersList.SmallImageList.Images.Add("EmptyBraces", (Bitmap)resources.GetObject("emptybraces"));
// membersList.DoubleClick += HandleDoubleClick;
// membersList.BeforeLabelEdit += BeforeEdit;
// membersList.AfterLabelEdit += AfterEdit;
Controls.Add(membersList);
membersList.Dock = DockStyle.Fill;
classTypeGroupCreators.Add(ClassType.Class, SetClassGroups);
classTypeGroupCreators.Add(ClassType.Interface, SetClassGroups);
classTypeGroupCreators.Add(ClassType.Struct, SetClassGroups);
classTypeGroupCreators.Add(ClassType.Enum, SetEnumGroups);
classTypeGroupCreators.Add(ClassType.Delegate, SetDelegateGroups);
//classTypeGroupCreators[ClassType.Module] = SetClassGroups; //???
}
private void HandleDoubleClick (object sender, EventArgs e)
{
}
internal void EmitMemberModified(IMemberModificationEventArgs e)
{
MemberModified(this, e);
}
internal void EmitParameterModified(IParameterModificationEventArgs e)
{
ParameterModified(this, e);
}
/*
private void BeforeEdit(object sender, TreeListViewBeforeLabelEditEventArgs e)
{
editedItem = membersList.SelectedItems[0];
editedItem = model.Nodes[membersList.SelectedNodes[0].Index];
IMember itemMember = editedItem.Tag as IMember;
IParameter itemParameter = editedItem.Tag as IParameter;
@ -202,10 +387,10 @@ namespace ClassDiagram @@ -202,10 +387,10 @@ namespace ClassDiagram
e.Cancel = true;
}
}
*/
private void AfterEdit (object sender, TreeListViewLabelEditEventArgs e)
{
IProjectContent pc = ProjectService.CurrentProject.CreateProjectContent();
/*
Modification modification = Modification.None;
if (e.ColumnIndex == nameCol.Index)
{
@ -229,7 +414,9 @@ namespace ClassDiagram @@ -229,7 +414,9 @@ namespace ClassDiagram
}
if (e.Cancel) return;
*/
/*
IProjectContent pc = ProjectService.CurrentProject.CreateProjectContent();
IMember member = null;
if (addMemberItems.ContainsValue(editedItem))
@ -268,7 +455,8 @@ namespace ClassDiagram @@ -268,7 +455,8 @@ namespace ClassDiagram
ClassMemberAdded(this, memberargs);
return;
}
*/
/*
member = editedItem.Tag as IMember;
IParameter parameter = editedItem.Tag as IParameter;
if (member != null)
@ -295,6 +483,7 @@ namespace ClassDiagram @@ -295,6 +483,7 @@ namespace ClassDiagram
{
e.Cancel = true;
}
*/
}
private void SetClassGroups (IClass classType)
@ -317,7 +506,7 @@ namespace ClassDiagram @@ -317,7 +506,7 @@ namespace ClassDiagram
public void SetClass (IClass classType)
{
membersList.BeginUpdate();
membersList.Items.Clear();
model.Nodes.Clear();
currClass = classType;
if (classType != null)
@ -326,15 +515,15 @@ namespace ClassDiagram @@ -326,15 +515,15 @@ namespace ClassDiagram
membersList.EndUpdate();
}
private TreeListViewItem AddGroup<MT>(string title, ICollection<MT> members) where MT : IMember
private Node AddGroup<MT>(string title, ICollection<MT> members) where MT : IMember
{
if (members == null) return null;
TreeListViewItem group = new TreeListViewItem(title);
group.ForeColor = Color.Gray;
group.Font = new Font(group.Font, FontStyle.Bold);
group.Items.Sortable = false;
group.Tag = typeof(MT);
GroupNode group = new GroupNode(typeof(MT), title);
//TreeListViewItem group = new TreeListViewItem(title);
// group.ForeColor = Color.Gray;
// group.Font = new Font(group.Font, FontStyle.Bold);
// group.Items.Sortable = false;
// group.Tag = typeof(MT);
IAmbience ambience = GetAmbience();
@ -342,77 +531,28 @@ namespace ClassDiagram @@ -342,77 +531,28 @@ namespace ClassDiagram
{
foreach (IMember member in members)
{
TreeListViewItem memberItem = CreateMemberItem(member, ambience);
IMethod methodMember = memberItem.Tag as IMethod;
group.Items.Add(memberItem);
MemberNode memberItem = CreateMemberItem(member, ambience);
group.Nodes.Add(memberItem);
IMethod methodMember = memberItem.Member as IMethod;
if (methodMember != null)
FillParams (memberItem, methodMember);
memberItem.SubItems.Add(ambience.Convert(member.ReturnType));
memberItem.SubItems.Add(member.Modifiers.ToString());
memberItem.SubItems.Add(GetSummary(member));
}
}
AddAddItem(typeof(MT), group);
membersList.Items.Add(group);
model.Nodes.Add(group);
return group;
}
private TreeListViewItem CreateMemberItem(IMember member, IAmbience ambience)
private MemberNode CreateMemberItem(IMember member, IAmbience ambience)
{
IMethod methodMember = member as IMethod;
IEvent eventMember = member as IEvent;
IProperty propertyMember = member as IProperty;
IField fieldMember = member as IField;
int icon = -1;
try
{
icon = ClassBrowserIconService.GetIcon(member);
}
catch {}
string memberName = "";
if (methodMember != null)
{
if (methodMember.IsConstructor)
{
if (methodMember.DeclaringType != null)
{
memberName = methodMember.DeclaringType.Name;
}
else
{
memberName = methodMember.Name;
}
}
else
{
memberName = methodMember.Name;
}
}
if (eventMember != null)
{
memberName = eventMember.Name;
}
if (propertyMember != null) memberName = ambience.Convert(propertyMember);
if (fieldMember != null) memberName = ambience.Convert(fieldMember);
TreeListViewItem memberItem = new TreeListViewItem(memberName, icon);
memberItem.Items.Sortable = false;
memberItem.Items.SortOrder = SortOrder.None;
memberItem.Tag = member;
MemberNode memberItem = new MemberNode(member, ambience, this);
return memberItem;
}
private void AddAddItem(Type memberType, TreeListViewItem group)
private void AddAddItem(Type memberType, GroupNode group)
{
string str = "";
@ -421,54 +561,65 @@ namespace ClassDiagram @@ -421,54 +561,65 @@ namespace ClassDiagram
else if (memberType == typeof(IProperty)) str = "<add property>";
else if (memberType == typeof(IField)) str = "<add field>";
TreeListViewItem addNewMember = new TreeListViewItem(str);
addNewMember.ForeColor = SystemColors.GrayText;
group.Items.Add(addNewMember);
Node addNewMember = new Node(str); // TODO set color
//addNewMember.ForeColor = SystemColors.GrayText;
group.Nodes.Add(addNewMember);
addMemberItems[memberType] = addNewMember;
}
private void ConvertAddItemToMemberItem(TreeListViewItem addItem, IMember member, IAmbience ambience)
private void ConvertAddItemToMemberItem(Node addItem, IMember member, IAmbience ambience)
{
//addItem.
// addItem.ForeColor = SystemColors.ControlText;
// addItem.SubItems.Add(ambience.Convert(member.ReturnType));
// addItem.SubItems.Add(member.Modifiers.ToString());
// addItem.SubItems.Add(GetSummary(member));
}
private static string GetSummary (IDecoration decoration)
{
return GetSummary(decoration.Documentation, @"/docroot/summary");
}
private static string GetSummary (IParameter parameter)
{
addItem.ForeColor = SystemColors.ControlText;
addItem.SubItems.Add(ambience.Convert(member.ReturnType));
addItem.SubItems.Add(member.Modifiers.ToString());
addItem.SubItems.Add(GetSummary(member));
return GetSummary(parameter.Documentation, @"/docroot/param[@name='"+parameter.Name+"']");
}
private string GetSummary (IDecoration decoration)
private static string GetSummary (string documentation, string xpath)
{
StringReader strReader = new StringReader("<docroot>" + decoration.Documentation + "</docroot>");
StringReader strReader = new StringReader("<docroot>" + documentation + "</docroot>");
XmlDocument doc = new XmlDocument();
doc.Load(strReader);
XPathNavigator nav = doc.CreateNavigator();
XPathNodeIterator ni = nav.Select(@"/docroot/summary");
XPathNodeIterator ni = nav.Select(xpath);
if (ni.MoveNext())
return ni.Current.InnerXml;
else
return String.Empty;
}
private void FillParams(TreeListViewItem item, IMethod method)
private void FillParams(MemberNode item, IMethod method)
{
string imageKey = "OpenBrace";
Image comma = (Image)resources.GetObject("Comma");
Image openBrace = (Image)resources.GetObject("OpenBrace");
Image closeBrace = (Image)resources.GetObject("CloseBrace");
Image emptyBraces = (Image)resources.GetObject("EmptyBraces");
Image currentImage = openBrace;
foreach (IParameter param in method.Parameters)
{
TreeListViewItem parameter = new TreeListViewItem(param.Name);
parameter.ImageKey = imageKey;
parameter.SubItems.Add (param.ReturnType.Name);
parameter.SubItems.Add (param.Modifiers.ToString());
parameter.SubItems.Add (param.Documentation);
item.Items.Add(parameter);
parameter.Tag = param;
imageKey = "Comma";
}
TreeListViewItem addParam = new TreeListViewItem("<add parameter>");
if (imageKey == "OpenBrace")
addParam.ImageKey = "EmptyBraces";
ParameterNode parameter = new ParameterNode(param, GetAmbience(), currentImage, this);
currentImage = comma;
item.Nodes.Add(parameter);
}
if (currentImage == openBrace)
currentImage = emptyBraces;
else
addParam.ImageKey = "CloseBrace";
addParam.ForeColor = Color.Gray;
item.Items.Add (addParam);
currentImage = closeBrace;
AddParameterNode addParam = new AddParameterNode(currentImage);
// addParam.ForeColor = Color.Gray;
item.Nodes.Add(addParam);
addParameterItems[method] = addParam;
}
@ -498,6 +649,69 @@ namespace ClassDiagram @@ -498,6 +649,69 @@ namespace ClassDiagram
else
return null;
}
void _modifiersEditorShowing(object sender, CancelEventArgs e)
{
MemberNode memberItem = membersList.SelectedNode.Tag as MemberNode;
ParameterNode parameterItem = membersList.SelectedNode.Tag as ParameterNode;
if (memberItem != null)
{
_modifiers.DropDownItems.Clear();
_modifiers.DropDownItems.Add(ICSharpCode.NRefactory.Ast.Modifiers.Public);
_modifiers.DropDownItems.Add(ICSharpCode.NRefactory.Ast.Modifiers.Private);
_modifiers.DropDownItems.Add(ICSharpCode.NRefactory.Ast.Modifiers.Protected);
_modifiers.DropDownItems.Add(ICSharpCode.NRefactory.Ast.Modifiers.Internal);
}
else if (parameterItem != null)
{
_modifiers.DropDownItems.Add(ParameterModifiers.In);
_modifiers.DropDownItems.Add(ParameterModifiers.Out);
_modifiers.DropDownItems.Add(ParameterModifiers.Ref);
_modifiers.DropDownItems.Add(ParameterModifiers.Params);
_modifiers.DropDownItems.Add(ParameterModifiers.Optional);
}
else
e.Cancel = true;
}
void MembersListNodeMouseDoubleClick(object sender, TreeNodeAdvMouseEventArgs e)
{
MemberNode memberItem = e.Node.Tag as MemberNode;
if (memberItem == null) return;
if (addMemberItems.ContainsValue(memberItem))
{
/* IAmbience ambience = GetAmbience();
item.SubItems.Add(ambience.Convert(VoidReturnType.Instance));
item.SubItems.Add(ModifierEnum.Public.ToString());
item.SubItems.Add("");
item.Text = "[method name]";
item.BeginEdit(0);*/
}
else if (addParameterItems.ContainsValue(memberItem))
{
}
else
{
IParameter itemParameter = memberItem.Member as IParameter;
if (itemParameter != null)
{
MemberNode methodNode = memberItem.Parent as MemberNode;
if (methodNode != null)
{
IMethod method = methodNode.Member as IMethod;
if (method != null)
ParameterActivated(this, new IParameterEventArgs(method, itemParameter));
}
}
else
{
MemberActivated(this, new IMemberEventArgs(memberItem.Member));
}
}
}
}
public enum Modification { None, Name, Type, Modifier, Summary }

16
src/AddIns/DisplayBindings/ClassDiagram/ClassEditor/ClassEditor.csproj

@ -56,6 +56,10 @@ @@ -56,6 +56,10 @@
<Project>{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}</Project>
<Name>NRefactory</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\..\Libraries\TreeViewAdv\Aga.Controls\Aga.Controls.csproj">
<Project>{E73BB233-D88B-44A7-A98F-D71EE158381D}</Project>
<Name>Aga.Controls</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\..\Main\Base\Project\ICSharpCode.SharpDevelop.csproj">
<Project>{2748AD25-9C63-4E12-877B-4DCE96FBED54}</Project>
<Name>ICSharpCode.SharpDevelop</Name>
@ -71,10 +75,22 @@ @@ -71,10 +75,22 @@
<Name>ICSharpCode.SharpDevelop.Dom</Name>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\..\..\..\Main\ICSharpCode.SharpDevelop.Widgets\Project\ICSharpCode.SharpDevelop.Widgets.csproj">
<Project>{8035765F-D51F-4A0C-A746-2FD100E19419}</Project>
<Name>ICSharpCode.SharpDevelop.Widgets</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\Misc\AddinScout\Project\AddinScout.csproj">
<Project>{4B8F0F98-8BE1-402B-AA8B-C8D548577B38}</Project>
<Name>AddinScout</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\Misc\Debugger\TreeListView\Project\TreeListView.csproj">
<Project>{B08385CD-F0CC-488C-B4F4-EEB34B6D2688}</Project>
<Name>TreeListView</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\Misc\UnitTesting\UnitTesting.csproj">
<Project>{1F261725-6318-4434-A1B1-6C70CE4CD324}</Project>
<Name>UnitTesting</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.Targets" />
</Project>

37
src/AddIns/DisplayBindings/ClassDiagram/ClassEditor/ClassEditor.resx

@ -117,41 +117,4 @@ @@ -117,41 +117,4 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="closebrace" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
Qk32AAAAAAAAAHYAAAAoAAAAEAAAABAAAAABAAQAAAAAAAAAAADEDgAAxA4AABAAAAAQAAAAAAAA/wAA
gP8AgAD/AICA/4AAAP+AAID/gIAA/4CAgP/AwMD/AAD//wD/AP8A/////wAA//8A/////wD/////////
////////////8I/////////4CP////////8H/////////wD/////////AP////////8A/////////wD/
////////AP////////8A/////////wD/////////AP////////8H////////+Aj////////wj///////
////////
</value>
</data>
<data name="comma" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
Qk32AAAAAAAAAHYAAAAoAAAAEAAAABAAAAABAAQAAAAAAAAAAADEDgAAxA4AABAAAAAQAAAAAAAA/wAA
gP8AgAD/AICA/4AAAP+AAID/gIAA/4CAgP/AwMD/AAD//wD/AP8A/////wAA//8A/////wD/////////
////////////8A//////////AP////////8A////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////
</value>
</data>
<data name="openbrace" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
Qk32AAAAAAAAAHYAAAAoAAAAEAAAABAAAAABAAQAAAAAAAAAAADEDgAAxA4AABAAAAAQAAAAAAAA/wAA
gP8AgAD/AICA/4AAAP+AAID/gIAA/4CAgP/AwMD/AAD//wD/AP8A/////wAA//8A/////wD/////////
////////////+A////////+Aj////////3D/////////AP////////8A/////////wD/////////AP//
//////8A/////////wD/////////AP////////8A/////////3D/////////gI/////////4D///////
////////
</value>
</data>
<data name="emptybraces" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
Qk32AAAAAAAAAHYAAAAoAAAAEAAAABAAAAABAAQAAAAAAAAAAADEDgAAxA4AABAAAAAQAAAAAAAA/wAA
gP8AgAD/AICA/4AAAP+AAID/gIAA/4CAgP/AwMD/AAD//wD/AP8A/////wAA//8A/////wD/////////
//////////+A//8I////+Aj//4CP///3D///8H////AP///wD///8A////AP///wD///8A////AP///w
D///8A////AP///wD///8A////AP///wD///8A////AP///3D///8H////gI//+Aj////4D//wj/////
////////
</value>
</data>
</root>
Loading…
Cancel
Save