Browse Source

SideTab updates

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@2668 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Russell Wilkins 18 years ago
parent
commit
c52097bcb7
  1. 17
      src/AddIns/DisplayBindings/WorkflowDesigner/Project/Src/Gui/ViewContentControl.cs
  2. 17
      src/AddIns/DisplayBindings/WorkflowDesigner/Project/Src/Services/EventBindingService/WorkflowDesignerEventBindingService.cs
  3. 14
      src/AddIns/DisplayBindings/WorkflowDesigner/Project/Src/Services/TypeProviderService.cs
  4. 11
      src/AddIns/DisplayBindings/WorkflowDesigner/Project/Src/Services/WorkflowSideTabService.cs
  5. 5
      src/AddIns/DisplayBindings/WorkflowDesigner/Project/WorkflowDesigner.csproj

17
src/AddIns/DisplayBindings/WorkflowDesigner/Project/Src/Gui/ViewContentControl.cs

@ -19,6 +19,7 @@ using System.Drawing.Design; @@ -19,6 +19,7 @@ using System.Drawing.Design;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop;
using ICSharpCode.TextEditor;
using ICSharpCode.TextEditor.Document;
using ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor;
@ -37,6 +38,7 @@ namespace WorkflowDesigner @@ -37,6 +38,7 @@ namespace WorkflowDesigner
private DesignSurface designSurface;
private BasicDesignerLoader loader;
private IViewContent viewContent;
private bool addedSideTab;
public ViewContentControl(IViewContent viewContent)
{
@ -47,8 +49,6 @@ namespace WorkflowDesigner @@ -47,8 +49,6 @@ namespace WorkflowDesigner
this.viewContent = viewContent;
WorkflowSideTabService.AddViewContent(this.viewContent);
}
public IDesignerHost DesignerHost {
@ -81,6 +81,15 @@ namespace WorkflowDesigner @@ -81,6 +81,15 @@ namespace WorkflowDesigner
internal void LoadWorkflow(BasicDesignerLoader loader)
{
StatusBarService.SetMessage("Loading workflow " + Path.GetFileName(viewContent.PrimaryFileName) + "...");
Application.UseWaitCursor = true;
Application.DoEvents();
if (!addedSideTab){
WorkflowSideTabService.AddViewContent(this.viewContent);
addedSideTab = true;
}
this.loader = loader;
try {
@ -96,6 +105,7 @@ namespace WorkflowDesigner @@ -96,6 +105,7 @@ namespace WorkflowDesigner
} catch (Exception e) {
TextBox errorText = new TextBox();
errorText.Multiline = true;
errorText.ScrollBars = ScrollBars.Both;
if (!designSurface.IsLoaded && designSurface.LoadErrors != null) {
errorText.Text = "Error loading designer:\r\n\r\n";
foreach(Exception le in designSurface.LoadErrors) {
@ -113,6 +123,9 @@ namespace WorkflowDesigner @@ -113,6 +123,9 @@ namespace WorkflowDesigner
title.Text = "Failed to load designer. Check the source code for syntax errors and check if all references are available.";
title.Dock = DockStyle.Top;
Controls.Add(title);
} finally {
StatusBarService.SetMessage(String.Empty);
Application.UseWaitCursor = false;
}
}

17
src/AddIns/DisplayBindings/WorkflowDesigner/Project/Src/Services/EventBindingService/WorkflowDesignerEventBindingService.cs

@ -45,14 +45,14 @@ namespace WorkflowDesigner @@ -45,14 +45,14 @@ namespace WorkflowDesigner
{
string codeFileName;
protected WorkflowDesignerEventBindingService(IServiceProvider provider, string codeSeparationFileName)
protected WorkflowDesignerEventBindingService(IServiceProvider provider, string codeFileName)
{
this.provider = provider;
this.codeFileName = codeSeparationFileName;
this.codeFileName = codeFileName;
}
#region IWorkflowDesignerEventBinginService implementation
#region IWorkflowDesignerEventBindingService implementation
public void UpdateCodeCompileUnit()
{
LoggingService.Debug("UpdateCCU");
@ -368,6 +368,7 @@ namespace WorkflowDesigner @@ -368,6 +368,7 @@ namespace WorkflowDesigner
public bool UseMethod(IComponent component, EventDescriptor eventDescriptor, string methodName)
{
LoggingService.DebugFormatted("UseMethod {0}", methodName);
LoggingService.DebugFormatted("CodeFileName={0}", this.codeFileName);
IClass completeClass;
IDesignerHost designerHost = (IDesignerHost)this.GetService(typeof(IDesignerHost));
@ -382,10 +383,7 @@ namespace WorkflowDesigner @@ -382,10 +383,7 @@ namespace WorkflowDesigner
ICompilationUnit cu = (ICompilationUnit)info.BestCompilationUnit;
MethodInfo methodInfo = eventDescriptor.EventType.GetMethod("Invoke");
foreach (IClass c in cu.Classes) {
if (c.Name == rootDesigner.Component.Site.Name){
LoggingService.DebugFormatted("Got designer class!");
completeClass = c.GetCompoundClass();
completeClass = cu.Classes[0].GetCompoundClass();
LoggingService.DebugFormatted("Looking for matching methods...");
@ -407,6 +405,7 @@ namespace WorkflowDesigner @@ -407,6 +405,7 @@ namespace WorkflowDesigner
LoggingService.DebugFormatted("Found matching method {0}", method.Name);
int position = GetCursorLine(t.TextEditorControl.Document, method);
t.TextEditorControl.ActiveTextAreaControl.JumpTo(position-1);
return true;
}
}
@ -414,14 +413,12 @@ namespace WorkflowDesigner @@ -414,14 +413,12 @@ namespace WorkflowDesigner
}
LoggingService.DebugFormatted("Creating new method...");
int line = GetEventHandlerInsertionLine(c);
int line = GetEventHandlerInsertionLine(cu.Classes[0]);
int offset = t.TextEditorControl.Document.GetLineSegment(line - 1).Offset;
t.TextEditorControl.Document.Insert(offset, CreateEventHandler(completeClass, eventDescriptor, methodName, "", "\t\t"));
UpdateCodeCompileUnit();
return ShowCode(component, eventDescriptor, methodName);
}
}
}
return false;
}

14
src/AddIns/DisplayBindings/WorkflowDesigner/Project/Src/Services/TypeProviderService.cs

@ -160,13 +160,14 @@ namespace WorkflowDesigner @@ -160,13 +160,14 @@ namespace WorkflowDesigner
if (item is ProjectReferenceProjectItem) {
ProjectReferenceProjectItem pitem = item as ProjectReferenceProjectItem;
AssemblyName name = new AssemblyName();
name.CodeBase = pitem.ReferencedProject.OutputAssemblyFullPath;
// TODO: This is only a temporary solution so the assembly is not locked.
// Need to look at this in terms of using a separate domain.
if (File.Exists(pitem.ReferencedProject.OutputAssemblyFullPath))
assembly = appDomain.Load(File.ReadAllBytes(pitem.ReferencedProject.OutputAssemblyFullPath));
} else if (item is ReferenceProjectItem) {
assembly = ReflectionLoader.ReflectionLoadGacAssembly(item.Include, false);
@ -184,10 +185,8 @@ namespace WorkflowDesigner @@ -184,10 +185,8 @@ namespace WorkflowDesigner
private static void SolutionClosingEventHandler(object sender, SolutionEventArgs e)
{
// Remove unsed providers for closed projects.
foreach (IProject project in e.Solution.Projects)
{
if (Providers.ContainsKey(project))
{
foreach (IProject project in e.Solution.Projects) {
if (Providers.ContainsKey(project)) {
Providers[project].Dispose();
Providers.Remove(project);
}
@ -239,6 +238,7 @@ namespace WorkflowDesigner @@ -239,6 +238,7 @@ namespace WorkflowDesigner
foreach (ProjectItem item in project.GetItemsOfType(ItemType.Compile)){
ICSharpCode.Core.LoggingService.Debug(item.FileName);
if (item is FileProjectItem){
if (!Path.GetFileName(item.FileName).StartsWith("AssemblyInfo")){
ccu = Parse(item.FileName);
if (ccu != null) {
typeProvider.AddCodeCompileUnit(ccu);
@ -248,6 +248,7 @@ namespace WorkflowDesigner @@ -248,6 +248,7 @@ namespace WorkflowDesigner
}
}
}
}
public static void UpdateCodeCompileUnit(FileProjectItem item)
{
@ -344,4 +345,5 @@ namespace WorkflowDesigner @@ -344,4 +345,5 @@ namespace WorkflowDesigner
}
}
}

11
src/AddIns/DisplayBindings/WorkflowDesigner/Project/Src/Services/WorkflowSideTabService.cs

@ -89,7 +89,8 @@ namespace WorkflowDesigner @@ -89,7 +89,8 @@ namespace WorkflowDesigner
Debug.Assert(WorkbenchSingleton.InvokeRequired == false);
if (workflowSideBar == null) {
workflowSideBar = new SharpDevelopSideBar();
workflowSideBar.Tabs.Add(standardSideTab);
WorkflowSideBar.ActiveTab = standardSideTab;
}
return workflowSideBar;
}
@ -105,6 +106,7 @@ namespace WorkflowDesigner @@ -105,6 +106,7 @@ namespace WorkflowDesigner
ProjectService.SolutionClosing += SolutionClosingEventHandler;
initialised = true;
}
public static void AddViewContent(IViewContent viewContent)
@ -117,13 +119,13 @@ namespace WorkflowDesigner @@ -117,13 +119,13 @@ namespace WorkflowDesigner
// Make sure the standard workflow sidebar exists
if (standardSideTab == null) {
LoggingService.Debug("Creating standard workflow sidetab");
standardSideTab = CreateSideTabFromAssembly("Workflow", new AssemblyName("System.Workflow.Activities, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"));
LoadSideTabItemsFromAssembly(new AssemblyName("System.Workflow.ComponentModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"), standardSideTab);
}
// Attach the handlers.
//viewContent.SwitchedTo += ViewContentActivatedEventHandler;
viewContent.Disposed += ViewContentDisposedEventHandler;
//viewContent.Disposed += ViewContentDisposedEventHandler;
ViewCount++;
}
@ -289,7 +291,9 @@ namespace WorkflowDesigner @@ -289,7 +291,9 @@ namespace WorkflowDesigner
{
foreach (ProjectItem item in project.Items) {
if (item is ProjectReferenceProjectItem) {
if (File.Exists(((ProjectReferenceProjectItem)item).ReferencedProject.OutputAssemblyFullPath)){
tabs.Add(item as ReferenceProjectItem, CreateSideTabForProjectItem(item));
}
} else if (item is ReferenceProjectItem) {
if (!item.Include.StartsWith("System")){
@ -306,7 +310,6 @@ namespace WorkflowDesigner @@ -306,7 +310,6 @@ namespace WorkflowDesigner
if (item is ProjectReferenceProjectItem) {
ProjectReferenceProjectItem pitem = item as ProjectReferenceProjectItem;
assemblyName = new AssemblyName();
assemblyName.CodeBase = pitem.ReferencedProject.OutputAssemblyFullPath;
return CreateSideTabFromAssembly(pitem.ReferencedProject.Name, assemblyName);

5
src/AddIns/DisplayBindings/WorkflowDesigner/Project/WorkflowDesigner.csproj

@ -142,6 +142,11 @@ @@ -142,6 +142,11 @@
<Name>ICSharpCode.SharpDevelop.Dom</Name>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\..\..\..\Main\ICSharpCode.SharpDevelop.Sda\ICSharpCode.SharpDevelop.Sda.csproj">
<Project>{80318B5F-A25D-45AB-8A95-EF31D2370A4C}</Project>
<Name>ICSharpCode.SharpDevelop.Sda</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>

Loading…
Cancel
Save