Browse Source

Add context menu to class browser.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@354 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 20 years ago
parent
commit
7d4f14a9aa
  1. 23
      AddIns/ICSharpCode.SharpDevelop.addin
  2. 2
      src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
  3. 2
      src/Main/Base/Project/Src/Dom/Implementations/DefaultCompilationUnit.cs
  4. 13
      src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/Nodes/ClassNode.cs
  5. 73
      src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/Nodes/MemberNode.cs
  6. 18
      src/Main/Base/Project/Src/TextEditor/Commands/ClassBookmarkMenuBuilder.cs
  7. 32
      src/Main/Base/Project/Src/TextEditor/Commands/ClassMemberMenuBuilder.cs
  8. 5
      src/Main/Base/Project/Src/TextEditor/Commands/ParserBookmarkMenuBuilderBase.cs
  9. 8
      src/Main/Base/Project/Src/TextEditor/Commands/ProjectCommands.cs
  10. 2
      src/Main/Base/Project/Src/TextEditor/Gui/Editor/TextEditorDisplayBinding.cs

23
AddIns/ICSharpCode.SharpDevelop.addin

@ -1437,15 +1437,12 @@ @@ -1437,15 +1437,12 @@
<Class id ="XmlFormatter" class = "ICSharpCode.SharpDevelop.DefaultEditor.XmlFormattingStrategy"/>
</Path>
<Path name = "/SharpDevelop/Views/ProjectBrowser/ContextMenu/ProjectBrowserNode">
<!-- AddIn to the project browser context menu -->
<Condition name = "ProjectActive" activeproject="*">
<MenuItem id = "ExportToHtml"
insertafter = "GenerateDocumentation"
insertbefore = "SetAsStartupProjectSeparator"
label = "${res:ProjectComponent.ContextMenu.HtmlExport}"
class = "ICSharpCode.SharpDevelop.DefaultEditor.Commands.ExportProjectToHtml"/>
</Condition>
<Path name = "/SharpDevelop/Pads/ProjectBrowser/ContextMenu/ProjectNode">
<MenuItem id = "ExportToHtml"
insertafter = "AddSeparator"
insertbefore = "SetAsStartupProjectSeparator"
label = "${res:ProjectComponent.ContextMenu.HtmlExport}"
class = "ICSharpCode.SharpDevelop.DefaultEditor.Commands.ExportProjectToHtml"/>
</Path>
<Path name = "/SharpDevelop/Workbench/DisplayBindings">
@ -1463,6 +1460,14 @@ @@ -1463,6 +1460,14 @@
<MenuItem id = "MenuBuilder" type="Builder" class = "ICSharpCode.SharpDevelop.DefaultEditor.Commands.ClassBookmarkMenuBuilder" />
</Path>
<Path name = "/SharpDevelop/Pads/ClassBrowser/MemberContextMenu">
<MenuItem id = "MenuBuilder" type="Builder" class = "ICSharpCode.SharpDevelop.DefaultEditor.Commands.ClassMemberMenuBuilder" />
</Path>
<Path name = "/SharpDevelop/Pads/ClassBrowser/ClassContextMenu">
<MenuItem id = "MenuBuilder" type="Builder" class = "ICSharpCode.SharpDevelop.DefaultEditor.Commands.ClassBookmarkMenuBuilder" />
</Path>
<Path name = "/SharpDevelop/ViewContent/DefaultTextEditor/ContextMenu">
<MenuItem id = "Cut"
label = "${res:XML.TextAreaContextMenu.Cut}"

2
src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj

@ -661,7 +661,7 @@ @@ -661,7 +661,7 @@
</Compile>
<Compile Include="Src\TextEditor\Bookmarks\BookmarkConverter.cs" />
<Compile Include="Src\TextEditor\Bookmarks\ClassMemberBookmark.cs" />
<Compile Include="Src\Commands\ClassMemberMenuBuilder.cs" />
<Compile Include="Src\TextEditor\Commands\ClassMemberMenuBuilder.cs" />
<Compile Include="Src\Services\RefactoringService\RefactoringService.cs" />
<Compile Include="Src\Services\RefactoringService\Reference.cs" />
<Compile Include="Src\Services\ProjectService\ParseableFileContentEnumerator.cs" />

2
src/Main/Base/Project/Src/Dom/Implementations/DefaultCompilationUnit.cs

@ -24,7 +24,7 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -24,7 +24,7 @@ namespace ICSharpCode.SharpDevelop.Dom
bool errorsDuringCompile = false;
object tag = null;
string fileName = "";
string fileName = null;
IProjectContent projectContent;
public string FileName {

13
src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/Nodes/ClassNode.cs

@ -40,6 +40,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -40,6 +40,7 @@ namespace ICSharpCode.SharpDevelop.Gui
{
sortOrder = 3;
this.ContextmenuAddinTreePath = "/SharpDevelop/Pads/ClassBrowser/ClassContextMenu";
this.project = project;
this.c = c;
Text = c.Name;
@ -81,23 +82,19 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -81,23 +82,19 @@ namespace ICSharpCode.SharpDevelop.Gui
}
foreach (IMethod method in c.Methods) {
new MemberNode(c, method).AddTo(this);
new MemberNode(method).AddTo(this);
}
foreach (IProperty property in c.Properties) {
new MemberNode(c, property).AddTo(this);
}
foreach (IIndexer indexer in c.Indexer) {
new MemberNode(c, indexer).AddTo(this);
new MemberNode(property).AddTo(this);
}
foreach (IField field in c.Fields) {
new MemberNode(c, field).AddTo(this);
new MemberNode(field).AddTo(this);
}
foreach (IEvent e in c.Events) {
new MemberNode(c, e).AddTo(this);
new MemberNode(e).AddTo(this);
}
UpdateVisibility();
}

73
src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/Nodes/MemberNode.cs

@ -49,75 +49,58 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -49,75 +49,58 @@ namespace ICSharpCode.SharpDevelop.Gui
}
}
public MemberNode(IClass declaringType, IMethod method)
IMember member;
public IMember Member {
get {
return member;
}
}
void InitMemberNode(IMember member)
{
this.member = member;
this.ContextmenuAddinTreePath = "/SharpDevelop/Pads/ClassBrowser/MemberContextMenu";
declaringType = member.DeclaringType;
modifiers = member.Modifiers;
if (member.Region != null) {
line = member.Region.BeginLine;
column = member.Region.BeginColumn;
}
}
public MemberNode(IMethod method)
{
InitMemberNode(method);
sortOrder = 10;
this.declaringType = declaringType;
modifiers = method.Modifiers;
Text = AppendReturnType(GetAmbience().Convert(method), method.ReturnType);
SelectedImageIndex = ImageIndex = ClassBrowserIconService.GetIcon(method);
if (method.Region != null) {
line = method.Region.BeginLine;
column = method.Region.BeginColumn;
}
}
public MemberNode(IClass declaringType, IProperty property)
public MemberNode(IProperty property)
{
InitMemberNode(property);
sortOrder = 12;
this.declaringType = declaringType;
modifiers = property.Modifiers;
Text = AppendReturnType(GetAmbience().Convert(property), property.ReturnType);
SelectedImageIndex = ImageIndex = ClassBrowserIconService.GetIcon(property);
if (property.Region != null) {
line = property.Region.BeginLine;
column = property.Region.BeginColumn;
}
}
public MemberNode(IClass declaringType, IIndexer indexer)
{
sortOrder = 13;
this.declaringType = declaringType;
modifiers = indexer.Modifiers;
Text = AppendReturnType(GetAmbience().Convert(indexer), indexer.ReturnType);
SelectedImageIndex = ImageIndex = ClassBrowserIconService.GetIcon(indexer);
if (indexer.Region != null) {
line = indexer.Region.BeginLine;
column = indexer.Region.BeginColumn;
}
}
public MemberNode(IClass declaringType, IField field)
public MemberNode(IField field)
{
InitMemberNode(field);
sortOrder = 11;
this.declaringType = declaringType;
modifiers = field.Modifiers;
Text = AppendReturnType(GetAmbience().Convert(field), field.ReturnType);
SelectedImageIndex = ImageIndex = ClassBrowserIconService.GetIcon(field);
if (field.Region != null) {
line = field.Region.BeginLine;
column = field.Region.BeginColumn;
}
}
public MemberNode(IClass declaringType, IEvent e)
public MemberNode(IEvent e)
{
InitMemberNode(e);
sortOrder = 14;
this.declaringType = declaringType;
modifiers = e.Modifiers;
Text = AppendReturnType(GetAmbience().Convert(e), e.ReturnType);
SelectedImageIndex = ImageIndex = ClassBrowserIconService.GetIcon(e);
if (e.Region != null) {
line = e.Region.BeginLine;
column = e.Region.BeginColumn;
}
}
IAmbience GetAmbience()

18
src/Main/Base/Project/Src/TextEditor/Commands/ClassBookmarkMenuBuilder.cs

@ -30,13 +30,21 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands @@ -30,13 +30,21 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands
public ToolStripItem[] BuildSubmenu(Codon codon, object owner)
{
MenuCommand cmd;
ClassBookmark bookmark = (ClassBookmark)owner;
IClass c = bookmark.Class;
IClass c;
ClassNode classNode = owner as ClassNode;
if (classNode != null) {
c = classNode.Class;
} else {
ClassBookmark bookmark = (ClassBookmark)owner;
c = bookmark.Class;
}
List<ToolStripItem> list = new List<ToolStripItem>();
cmd = new MenuCommand("${res:SharpDevelop.Refactoring.RenameCommand}", Rename);
cmd.Tag = c;
list.Add(cmd);
if (!IsReadOnly(c)) {
cmd = new MenuCommand("${res:SharpDevelop.Refactoring.RenameCommand}", Rename);
cmd.Tag = c;
list.Add(cmd);
}
if (c.BaseTypes.Count > 0) {
cmd = new MenuCommand("${res:SharpDevelop.Refactoring.GoToBaseCommand}", GoToBase);

32
src/Main/Base/Project/Src/Commands/ClassMemberMenuBuilder.cs → src/Main/Base/Project/Src/TextEditor/Commands/ClassMemberMenuBuilder.cs

@ -30,15 +30,23 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands @@ -30,15 +30,23 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands
public ToolStripItem[] BuildSubmenu(Codon codon, object owner)
{
MenuCommand cmd;
ClassMemberBookmark bookmark = (ClassMemberBookmark)owner;
IMember member = bookmark.Member;
IMember member;
MemberNode memberNode = owner as MemberNode;
if (memberNode != null) {
member = memberNode.Member;
} else {
ClassMemberBookmark bookmark = (ClassMemberBookmark)owner;
member = bookmark.Member;
}
IMethod method = member as IMethod;
List<ToolStripItem> list = new List<ToolStripItem>();
if (method == null || !method.IsConstructor) {
cmd = new MenuCommand("${res:SharpDevelop.Refactoring.RenameCommand}", Rename);
cmd.Tag = member;
list.Add(cmd);
if (!IsReadOnly(member.DeclaringType)) {
cmd = new MenuCommand("${res:SharpDevelop.Refactoring.RenameCommand}", Rename);
cmd.Tag = member;
list.Add(cmd);
}
}
if (member.IsOverride) {
cmd = new MenuCommand("${res:SharpDevelop.Refactoring.GoToBaseClassCommand}", GoToBase);
@ -70,12 +78,14 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands @@ -70,12 +78,14 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands
cmd.Tag = foundProperty;
list.Add(cmd);
} else {
cmd = new MenuCommand("${res:SharpDevelop.Refactoring.CreateGetter}", CreateGetter);
cmd.Tag = member;
list.Add(cmd);
cmd = new MenuCommand("${res:SharpDevelop.Refactoring.CreateProperty}", CreateProperty);
cmd.Tag = member;
list.Add(cmd);
if (!IsReadOnly(member.DeclaringType)) {
cmd = new MenuCommand("${res:SharpDevelop.Refactoring.CreateGetter}", CreateGetter);
cmd.Tag = member;
list.Add(cmd);
cmd = new MenuCommand("${res:SharpDevelop.Refactoring.CreateProperty}", CreateProperty);
cmd.Tag = member;
list.Add(cmd);
}
}
}

5
src/Main/Base/Project/Src/TextEditor/Commands/ParserBookmarkMenuBuilderBase.cs

@ -38,6 +38,11 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands @@ -38,6 +38,11 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands
return new ProvidedDocumentInformation(strategy, fileName, 0);
}
protected bool IsReadOnly(IClass c)
{
return c.CompilationUnit.FileName == null;
}
protected TextEditorControl JumpToDefinition(IMember member)
{
IViewContent viewContent = null;

8
src/Main/Base/Project/Src/TextEditor/Commands/ProjectCommands.cs

@ -26,10 +26,14 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands @@ -26,10 +26,14 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands
{
public class ExportProjectToHtml : AbstractMenuCommand
{
public override bool IsEnabled {
get {
return false;
}
}
public override void Run()
{
// TODO: New Projectfile system.
// IProjectService projectService = (IProjectService)ICSharpCode.Core.ServiceManager.Services.GetService(typeof(IProjectService));
// if (projectService.CurrentSelectedProject != null) {
// ExportProjectToHtmlDialog ephd = new ExportProjectToHtmlDialog(projectService.CurrentSelectedProject);

2
src/Main/Base/Project/Src/TextEditor/Gui/Editor/TextEditorDisplayBinding.cs

@ -474,7 +474,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor @@ -474,7 +474,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
bool IsClassMemberBookmark(Bookmark b)
{
return b is Bookmarks.ClassMemberBookmark;
return b is Bookmarks.ClassMemberBookmark || b is Bookmarks.ClassBookmark;
}
#region ICSharpCode.SharpDevelop.Gui.IClipboardHandler interface implementation

Loading…
Cancel
Save