Browse Source

Refactoring the WorkflowDesignerLoaders

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@2386 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Russell Wilkins 19 years ago
parent
commit
fb453bac9f
  1. 2
      src/AddIns/DisplayBindings/WorkflowDesigner/Project/Src/Gui/ViewContentControl.cs
  2. 155
      src/AddIns/DisplayBindings/WorkflowDesigner/Project/Src/Loaders/BasicWorkflowDesignerLoader.cs
  3. 156
      src/AddIns/DisplayBindings/WorkflowDesigner/Project/Src/Loaders/CodeDesignerLoader.cs
  4. 2
      src/AddIns/DisplayBindings/WorkflowDesigner/Project/Src/Loaders/WorkflowDesignerLoadException.cs
  5. 10
      src/AddIns/DisplayBindings/WorkflowDesigner/Project/Src/Loaders/XomlCodeSeparationDesignerLoader.cs
  6. 117
      src/AddIns/DisplayBindings/WorkflowDesigner/Project/Src/Loaders/XomlDesignerLoader.cs
  7. 6
      src/AddIns/DisplayBindings/WorkflowDesigner/Project/Src/PrimaryView/PrimaryViewContent.cs
  8. 8
      src/AddIns/DisplayBindings/WorkflowDesigner/Project/Src/SecondaryView/SecondaryViewContent.cs
  9. 2
      src/AddIns/DisplayBindings/WorkflowDesigner/Project/Src/Services/EventBindingService/WorkflowDesignerEventBindingService.cs
  10. 63
      src/AddIns/DisplayBindings/WorkflowDesigner/Project/Src/Services/IdentifierCreationService.cs
  11. 4
      src/AddIns/DisplayBindings/WorkflowDesigner/Project/Src/Services/MemberCreationService.cs
  12. 22
      src/AddIns/DisplayBindings/WorkflowDesigner/Project/Src/Services/TypeProviderService.cs
  13. 4
      src/AddIns/DisplayBindings/WorkflowDesigner/Project/WorkflowDesigner.csproj

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

@ -22,6 +22,8 @@ using ICSharpCode.SharpDevelop.Gui; @@ -22,6 +22,8 @@ using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.TextEditor;
using ICSharpCode.TextEditor.Document;
using ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor;
using WorkflowDesigner.Loaders;
#endregion
namespace WorkflowDesigner

155
src/AddIns/DisplayBindings/WorkflowDesigner/Project/Src/Loaders/BasicWorkflowDesignerLoader.cs

@ -0,0 +1,155 @@ @@ -0,0 +1,155 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Russell Wilkins" email=""/>
// <version>$Revision$</version>
// </file>
#region Using
using System;
using System.ComponentModel.Design;
using System.ComponentModel.Design.Serialization;
using System.Drawing.Design;
using System.Globalization;
using System.IO;
using System.Text;
using System.Workflow.ComponentModel.Design;
using System.Workflow.ComponentModel.Compiler;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Project;
#endregion
namespace WorkflowDesigner.Loaders
{
/// <summary>
/// Description of BasicWorkflowDesignerLoader.
/// </summary>
public abstract class BasicWorkflowDesignerLoader : WorkflowDesignerLoader
{
private IViewContent viewContent;
private string ruleFileName = string.Empty;
private StringBuilder rules;
public BasicWorkflowDesignerLoader(IViewContent viewContent)
{
this.viewContent = viewContent;
ruleFileName = Path.Combine(Path.GetDirectoryName(FileName),
Path.GetFileNameWithoutExtension(FileName) + ".rules");
}
#region Property Accessors
public IViewContent ViewContent {
get { return viewContent; }
}
public override string FileName {
get {
return viewContent.PrimaryFileName;
}
}
public IProject Project {
get {
return ProjectService.OpenSolution.FindProjectContainingFile(FileName);
}
}
#endregion
public override TextReader GetFileReader(string filePath)
{
return new StringReader(rules.ToString());
}
public override TextWriter GetFileWriter(string filePath)
{
if (rules == null) {
rules = new StringBuilder();
CreateRulesProjectItem();
}
return new StringWriter(rules, CultureInfo.CurrentCulture);
}
private void LoadRules()
{
// Load the rules
if (File.Exists(ruleFileName)) {
rules = new StringBuilder(File.ReadAllText(ruleFileName));
CreateRulesProjectItem();
}
}
private void UpdateRules()
{
if ((rules != null) && (rules.Length > 0))
File.WriteAllText(ruleFileName, rules.ToString());
}
private void CreateRulesProjectItem()
{
if (Project != null){
if (!Project.IsFileInProject(ruleFileName)) {
FileProjectItem fpi = Project.FindFile(FileName);
FileProjectItem rfpi = new FileProjectItem(Project,ItemType.EmbeddedResource);
rfpi.FileName = Path.Combine(Path.GetDirectoryName(FileName), Path.GetFileName(ruleFileName));
rfpi.DependentUpon = Path.GetFileName(FileName);
ProjectService.AddProjectItem(Project, rfpi);
ProjectBrowserPad.Instance.ProjectBrowserControl.RefreshView();
Project.Save();
}
}
}
protected override void Initialize()
{
base.Initialize();
// Add the basic service required by all designers
LoaderHost.AddService(typeof(IToolboxService), new WorkflowToolboxService(LoaderHost));
LoaderHost.AddService(typeof(ITypeProvider), TypeProviderService.GetTypeProvider(Project));
LoaderHost.AddService(typeof(IMenuCommandService), new WorkflowMenuCommandService(LoaderHost));
LoaderHost.AddService(typeof(ITypeResolutionService), new TypeResolutionService(Project,LoaderHost));
LoaderHost.AddService(typeof(IPropertyValueUIService), new PropertyValueUIService());
}
public override void Dispose()
{
try {
// Remove all the services from the from the host designer.
if (LoaderHost != null) {
LoaderHost.RemoveService(typeof(IToolboxService));
LoaderHost.RemoveService(typeof(ITypeProvider));
LoaderHost.RemoveService(typeof(IEventBindingService));
LoaderHost.RemoveService(typeof(IMenuCommandService));
LoaderHost.RemoveService(typeof(IPropertyValueUIService));
LoaderHost.RemoveService(typeof(ITypeResolutionService));
LoaderHost.RemoveService(typeof(IMemberCreationService));
}
} finally {
base.Dispose();
}
}
protected override void PerformLoad(IDesignerSerializationManager serializationManager)
{
base.PerformLoad(serializationManager);
DoPerformLoad(serializationManager);
LoadRules();
LoaderHost.Activate();
}
protected abstract void DoPerformLoad(IDesignerSerializationManager serializationManager);
protected override void PerformFlush(IDesignerSerializationManager serializationManager)
{
DoPerformFlush(serializationManager);
UpdateRules();
}
protected abstract void DoPerformFlush(IDesignerSerializationManager serializationManager);
}
}

156
src/AddIns/DisplayBindings/WorkflowDesigner/Project/Src/Loaders/NRefactoryDesignerLoader.cs → src/AddIns/DisplayBindings/WorkflowDesigner/Project/Src/Loaders/CodeDesignerLoader.cs

@ -6,116 +6,81 @@ @@ -6,116 +6,81 @@
// </file>
#region Using
using ICSharpCode.Core;
using ICSharpCode.NRefactory;
using ICSharpCode.NRefactory.Ast;
using ICSharpCode.NRefactory.Visitors;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.TextEditor;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Project;
using System;
using System.CodeDom;
using System.CodeDom.Compiler;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel.Design;
using System.ComponentModel.Design.Serialization;
using System.Drawing.Design;
using System.IO;
using System.Reflection;
using System.Workflow.ComponentModel.Compiler;
using System.Workflow.ComponentModel;
using System.Workflow.ComponentModel.Design;
using System.Windows.Forms;
#endregion
namespace WorkflowDesigner
{
public class DefaultMemberRelationshipService : MemberRelationshipService
{
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.NRefactory;
using ICSharpCode.NRefactory.Ast;
using ICSharpCode.NRefactory.Visitors;
#endregion
public override bool SupportsRelationship(MemberRelationship source, MemberRelationship relationship)
{
return true;
}
protected override MemberRelationship GetRelationship(MemberRelationship source)
{
return base.GetRelationship(source);
}
}
namespace WorkflowDesigner.Loaders
{
/// <summary>
/// Description of CodeDomLoader.
/// Description of CodeDesignerLoader.
/// </summary>
public class NRefactoryDesignerLoader : CodeDomDesignerLoader
public class CodeDesignerLoader : BasicWorkflowDesignerLoader
{
TextEditorControl textEditorControl;
//IDesignerGenerator generator = new CSharpDesignerGenerator();
IViewContent viewContent;
#region Constructors
public NRefactoryDesignerLoader(TextEditorControl textEditorControl, IViewContent viewContent) : base()
public CodeDesignerLoader(IViewContent viewContent) : base(viewContent)
{
this.textEditorControl = textEditorControl;
this.viewContent = viewContent;
}
#endregion
CodeDomProvider codeDomProvider = Microsoft.CSharp.CSharpCodeProvider.CreateProvider("CSharp");
protected override CodeDomProvider CodeDomProvider {
get {
return codeDomProvider;
}
}
protected override ITypeResolutionService TypeResolutionService {
get {
return GetService(typeof(ITypeResolutionService)) as ITypeResolutionService;
}
}
protected override void Write(CodeCompileUnit unit)
{
LoggingService.Debug("NRefactoryDesignerLoader.Write()");
throw new NotImplementedException();
}
protected override void Initialize()
{
ITypeProvider typeProvider = TypeProviderService.GetTypeProvider(ProjectService.OpenSolution.FindProjectContainingFile(viewContent.PrimaryFileName));
try {
typeProvider.GetType("System.ComponentModel.Design.Serialization.CodeDomSerializer", true);
} catch (Exception ex) {
MessageService.ShowErrorFormatted("Unable to find class CodeDomSerializer, make sure the project has a reference to assembly System.Design");
throw ex;
}
base.Initialize();
LoaderHost.AddService(typeof(ITypeProvider), typeProvider);
LoaderHost.AddService(typeof(IIdentifierCreationService), new IdentifierCreationService());
LoaderHost.AddService(typeof(IMemberCreationService), new MemberCreationService(LoaderHost));
LoaderHost.AddService(typeof(IEventBindingService), new CSharpWorkflowDesignerEventBindingService(LoaderHost, viewContent.PrimaryFileName));
LoaderHost.AddService(typeof(IToolboxService), new WorkflowToolboxService(LoaderHost));
LoaderHost.AddService(typeof(MemberRelationshipService), new DefaultMemberRelationshipService());
LoaderHost.AddService(typeof(IMenuCommandService), new WorkflowMenuCommandService(LoaderHost));
LoaderHost.AddService(typeof(ITypeResolutionService), new TypeResolutionService(ProjectService.OpenSolution.FindProjectContainingFile(this.textEditorControl.FileName),LoaderHost));
LoaderHost.AddService(typeof(IPropertyValueUIService), new PropertyValueUIService());
LoaderHost.AddService(typeof(IEventBindingService), new CSharpWorkflowDesignerEventBindingService(LoaderHost, ViewContent.PrimaryFileName));
}
protected override void DoPerformLoad(IDesignerSerializationManager serializationManager)
{
// Step 1, Get the CodeDom
CodeCompileUnit ccu = Parse();
// Step 2, Find the first class
CodeTypeDeclaration cdt = ccu.Namespaces[0].Types[0];
TypeResolutionService srv = GetService(typeof(ITypeResolutionService)) as TypeResolutionService;
Type t = srv.GetType(cdt.BaseTypes[0].BaseType);
if (t == null)
throw new WorkflowDesignerLoadException("Unable to resolve type " + cdt.BaseTypes[0].BaseType);
// Step 3, Deserialize it!
TypeCodeDomSerializer cds = serializationManager.GetSerializer(t, typeof(TypeCodeDomSerializer)) as TypeCodeDomSerializer;
// Step 4, load up the designer.
Activity rootActivity = null;
rootActivity = cds.Deserialize(serializationManager, cdt) as Activity;
rootActivity.Name = cdt.Name;
LoaderHost.Container.Add(rootActivity, rootActivity.QualifiedName);
SetBaseComponentClassName(ccu.Namespaces[0].Name + "." + cdt.Name);
}
protected override void DoPerformFlush(IDesignerSerializationManager serializationManager)
{
base.Initialize();
}
#region Taken from FormDesigner.NRefactoryDesignerLoad to get a CodeCompileUnit for the activity.
string lastTextContent;
protected override CodeCompileUnit Parse()
#region Taken from FormDesigner.NRefactoryDesignerLoad to get a single CodeCompileUnit for the activity.
protected CodeCompileUnit Parse()
{
LoggingService.Debug("NRefactoryDesignerLoader.Parse()");
lastTextContent = textEditorControl.Document.TextContent;
ParseInformation parseInfo = ParserService.GetParseInformation(textEditorControl.FileName);
ParseInformation parseInfo = ParserService.GetParseInformation(FileName);
IClass formClass;
bool isFirstClassInFile;
@ -191,17 +156,6 @@ namespace WorkflowDesigner @@ -191,17 +156,6 @@ namespace WorkflowDesigner
visitor.EnvironmentInformationProvider = new ICSharpCode.SharpDevelop.Dom.NRefactoryResolver.NRefactoryInformationProvider(formClass.ProjectContent);
visitor.VisitCompilationUnit(combinedCu, null);
// output generated CodeDOM to the console :
#if DEBUG
// if ((Control.ModifierKeys & Keys.Control) == Keys.Control) {
// CodeDomVerboseOutputGenerator outputGenerator = new CodeDomVerboseOutputGenerator();
// outputGenerator.GenerateCodeFromMember(visitor.codeCompileUnit.Namespaces[0].Types[0], Console.Out, null);
// this.CodeDomProvider.GenerateCodeFromCompileUnit(visitor.codeCompileUnit, Console.Out, null);
// }
#endif
LoggingService.Debug("NRefactoryDesignerLoader.Parse() finished");
if (!isFirstClassInFile) {
MessageService.ShowWarning("The form must be the first class in the file in order for form resources be compiled correctly.\n" +
"Please move other classes below the form class definition or move them to other files.");
@ -212,11 +166,6 @@ namespace WorkflowDesigner @@ -212,11 +166,6 @@ namespace WorkflowDesigner
public static IList<IClass> FindFormClassParts(ParseInformation parseInfo, out IClass formClass, out bool isFirstClassInFile)
{
#if DEBUG
if ((Control.ModifierKeys & (Keys.Alt | Keys.Control)) == (Keys.Alt | Keys.Control)) {
System.Diagnostics.Debugger.Break();
}
#endif
formClass = null;
isFirstClassInFile = true;
@ -317,5 +266,6 @@ namespace WorkflowDesigner @@ -317,5 +266,6 @@ namespace WorkflowDesigner
}
#endregion
}
}

2
src/AddIns/DisplayBindings/WorkflowDesigner/Project/Src/Loaders/WorkflowDesignerLoadException.cs

@ -8,7 +8,7 @@ @@ -8,7 +8,7 @@
using System;
using System.Runtime.Serialization;
namespace WorkflowDesigner
namespace WorkflowDesigner.Loaders
{
/// <summary>
/// Description of WorkflowDesignerLoaderException.

10
src/AddIns/DisplayBindings/WorkflowDesigner/Project/Src/Loaders/XomlCodeSeparationDesignerLoader.cs

@ -20,7 +20,7 @@ using ICSharpCode.SharpDevelop; @@ -20,7 +20,7 @@ using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor;
#endregion
namespace WorkflowDesigner
namespace WorkflowDesigner.Loaders
{
/// <summary>
/// Description of XomlCodeSeparationDesignerLoader.
@ -29,7 +29,7 @@ namespace WorkflowDesigner @@ -29,7 +29,7 @@ namespace WorkflowDesigner
{
private string codeFileName;
public XomlCodeSeparationDesignerLoader(IViewContent viewContent, string fileName, Stream stream, string codeFileName) : base(viewContent, fileName, stream)
public XomlCodeSeparationDesignerLoader(IViewContent viewContent, Stream stream, string codeFileName) : base(viewContent, stream)
{
this.codeFileName = codeFileName;
}
@ -43,14 +43,12 @@ namespace WorkflowDesigner @@ -43,14 +43,12 @@ namespace WorkflowDesigner
LoaderHost.AddService(typeof(IEventBindingService), new CSharpWorkflowDesignerEventBindingService(LoaderHost,codeFileName));
}
protected override void Load(IDesignerSerializationManager serializationManager)
protected override void DoPerformLoad(IDesignerSerializationManager serializationManager)
{
IWorkflowDesignerEventBindingService srv = LoaderHost.GetService(typeof(IEventBindingService)) as IWorkflowDesignerEventBindingService;
srv.UpdateCodeCompileUnit();
LoadFromXoml(serializationManager);
LoaderHost.Activate();
LoadXoml(serializationManager);
}

117
src/AddIns/DisplayBindings/WorkflowDesigner/Project/Src/Loaders/XomlDesignerLoader.cs

@ -28,28 +28,21 @@ using ICSharpCode.SharpDevelop; @@ -28,28 +28,21 @@ using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Dom;
#endregion
namespace WorkflowDesigner
namespace WorkflowDesigner.Loaders
{
/// <summary>
/// Description of XomlDesignerLoader.
/// </summary>
public class XomlDesignerLoader : WorkflowDesignerLoader
public class XomlDesignerLoader : BasicWorkflowDesignerLoader
{
private string xoml = string.Empty;
private StringBuilder rules;
private string fileName = string.Empty;
private string rulesFileName = string.Empty;
private IViewContent viewContent;
public XomlDesignerLoader(IViewContent viewContent)
public XomlDesignerLoader(IViewContent viewContent) : base(viewContent)
{
this.viewContent = viewContent;
}
public XomlDesignerLoader(IViewContent viewContent, string fileName, Stream stream) : this(viewContent)
public XomlDesignerLoader(IViewContent viewContent, Stream stream) : this(viewContent)
{
this.fileName = fileName;
rulesFileName = Path.Combine(Path.GetDirectoryName(fileName), Path.GetFileNameWithoutExtension(fileName) + ".rules");
Encoding encoding = ICSharpCode.SharpDevelop.ParserService.DefaultFileEncoding;
xoml = ICSharpCode.TextEditor.Util.FileReader.ReadFileContent(stream, ref encoding, encoding);
}
@ -59,50 +52,8 @@ namespace WorkflowDesigner @@ -59,50 +52,8 @@ namespace WorkflowDesigner
set { xoml = value; }
}
public override string FileName {
get {
return fileName;
}
}
public IProject Project {
get {
return ProjectService.OpenSolution.FindProjectContainingFile(fileName);
}
}
public override TextReader GetFileReader(string filePath)
{
return new StringReader(rules.ToString());
}
public override TextWriter GetFileWriter(string filePath)
{
if (rules == null) {
rules = new StringBuilder();
CreateRulesProjectItem();
}
return new StringWriter(rules, CultureInfo.CurrentCulture);
}
private void CreateRulesProjectItem()
{
IProject project = ProjectService.OpenSolution.FindProjectContainingFile(this.fileName);
if (project != null){
if (!project.IsFileInProject(rulesFileName)) {
FileProjectItem fpi = project.FindFile(fileName);
FileProjectItem rfpi = new FileProjectItem(project,ItemType.EmbeddedResource);
rfpi.FileName = Path.Combine(Path.GetDirectoryName(fileName), Path.GetFileName(rulesFileName));
rfpi.DependentUpon = Path.GetFileName(fileName);
ProjectService.AddProjectItem(project, rfpi);
ProjectBrowserPad.Instance.ProjectBrowserControl.RefreshView();
project.Save();
}
}
}
protected override void PerformFlush(IDesignerSerializationManager serializationManager)
protected override void DoPerformFlush(IDesignerSerializationManager serializationManager)
{
Activity rootActivity = LoaderHost.RootComponent as Activity;
if (rootActivity != null) {
@ -116,41 +67,14 @@ namespace WorkflowDesigner @@ -116,41 +67,14 @@ namespace WorkflowDesigner
xmlWriter.Close();
}
}
// Update the rules if any exist.
if ((rules != null) && (rules.Length > 0))
File.WriteAllText(rulesFileName, rules.ToString());
}
protected override void Initialize()
{
LoaderHost.AddService(typeof(IToolboxService), new WorkflowToolboxService(LoaderHost));
LoaderHost.AddService(typeof(ITypeProvider), TypeProviderService.GetTypeProvider(Project));
LoaderHost.AddService(typeof(IMenuCommandService), new WorkflowMenuCommandService(LoaderHost));
LoaderHost.AddService(typeof(ITypeResolutionService), new TypeResolutionService(ProjectService.OpenSolution.FindProjectContainingFile(this.FileName),LoaderHost));
LoaderHost.AddService(typeof(IPropertyValueUIService), new PropertyValueUIService());
base.Initialize();
}
protected override void PerformLoad(IDesignerSerializationManager serializationManager)
{
base.PerformLoad(serializationManager);
Load(serializationManager);
}
protected virtual void Load(IDesignerSerializationManager serializationManager)
protected override void DoPerformLoad(IDesignerSerializationManager serializationManager)
{
LoadFromXoml(serializationManager);
LoaderHost.Activate();
LoadXoml(serializationManager);
}
protected void LoadFromXoml(IDesignerSerializationManager serializationManager)
protected void LoadXoml(IDesignerSerializationManager serializationManager)
{
// get the root activity from the xml.
XmlReader reader = new XmlTextReader(new StringReader(xoml));
@ -169,12 +93,6 @@ namespace WorkflowDesigner @@ -169,12 +93,6 @@ namespace WorkflowDesigner
SetBaseComponentClassName(rootActivity.GetValue(WorkflowMarkupSerializer.XClassProperty) as string);
// Load the rules
if (File.Exists(rulesFileName)) {
rules = new StringBuilder(File.ReadAllText(rulesFileName));
CreateRulesProjectItem();
}
}
protected void AddChildren(CompositeActivity compositeActivity)
@ -188,22 +106,5 @@ namespace WorkflowDesigner @@ -188,22 +106,5 @@ namespace WorkflowDesigner
}
}
public override void Dispose()
{
try {
// Remove all the services from the from the host designer.
if (LoaderHost != null) {
LoaderHost.RemoveService(typeof(IToolboxService));
LoaderHost.RemoveService(typeof(ITypeProvider));
LoaderHost.RemoveService(typeof(IEventBindingService));
LoaderHost.RemoveService(typeof(IMemberCreationService));
LoaderHost.RemoveService(typeof(IMenuCommandService));
LoaderHost.RemoveService(typeof(IPropertyValueUIService));
LoaderHost.RemoveService(typeof(ITypeResolutionService));
}
} finally {
base.Dispose();
}
}
}
}

6
src/AddIns/DisplayBindings/WorkflowDesigner/Project/Src/PrimaryView/PrimaryViewContent.cs

@ -14,6 +14,8 @@ using ICSharpCode.SharpDevelop; @@ -14,6 +14,8 @@ using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Project;
using WorkflowDesigner.Loaders;
namespace WorkflowDesigner
{
/// <summary>
@ -54,13 +56,13 @@ namespace WorkflowDesigner @@ -54,13 +56,13 @@ namespace WorkflowDesigner
string codeFileName = file.FileName + "." + project.LanguageProperties.CodeDomProvider.FileExtension;
FileProjectItem dfpi = project.FindFile(codeFileName);
if (dfpi.DependentUpon == Path.GetFileName(fpi.VirtualName)) {
loader = new XomlCodeSeparationDesignerLoader(this, file.FileName, stream, dfpi.FileName);
loader = new XomlCodeSeparationDesignerLoader(this, stream, dfpi.FileName);
}
}
// No separation file so the nocode loader will be used.
if (loader == null)
loader = new XomlDesignerLoader(this, file.FileName, stream);
loader = new XomlDesignerLoader(this, stream);
control.LoadWorkflow(loader);
}

8
src/AddIns/DisplayBindings/WorkflowDesigner/Project/Src/SecondaryView/SecondaryViewContent.cs

@ -12,6 +12,8 @@ using ICSharpCode.SharpDevelop.Gui; @@ -12,6 +12,8 @@ using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor;
using ICSharpCode.SharpDevelop.Widgets.SideBar;
using WorkflowDesigner.Loaders;
#endregion
namespace WorkflowDesigner
@ -21,17 +23,13 @@ namespace WorkflowDesigner @@ -21,17 +23,13 @@ namespace WorkflowDesigner
/// </summary>
public class WorkflowDesignerSecondaryViewContent : AbstractSecondaryViewContent, IHasPropertyContainer
{
IViewContent viewContent;
ViewContentControl control;
#region Constructors
public WorkflowDesignerSecondaryViewContent(IViewContent primaryViewContent) : base(primaryViewContent)
{
this.TabPageText = "Workflow";
this.viewContent = primaryViewContent;
control = new ViewContentControl(primaryViewContent);
}
#endregion
@ -52,7 +50,7 @@ namespace WorkflowDesigner @@ -52,7 +50,7 @@ namespace WorkflowDesigner
protected override void LoadFromPrimary()
{
control.LoadWorkflow(new NRefactoryDesignerLoader(((ITextEditorControlProvider)viewContent).TextEditorControl, viewContent));
control.LoadWorkflow(new CodeDesignerLoader(this.PrimaryViewContent));
}
protected override void SaveToPrimary()

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

@ -32,6 +32,8 @@ using ICSharpCode.NRefactory; @@ -32,6 +32,8 @@ using ICSharpCode.NRefactory;
using ICSharpCode.NRefactory.Ast;
using ICSharpCode.SharpDevelop.Project;
using WorkflowDesigner.Loaders;
#endregion
namespace WorkflowDesigner

63
src/AddIns/DisplayBindings/WorkflowDesigner/Project/Src/Services/IdentifierCreationService.cs

@ -1,63 +0,0 @@ @@ -1,63 +0,0 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Russell Wilkins" email=""/>
// <version>$Revision$</version>
// </file>
#region Using
using System;
using System.Workflow.ComponentModel.Design;
using ICSharpCode.Core;
using System.Collections;
using System.Collections.Generic;
using System.Workflow.Activities;
using System.Workflow.ComponentModel;
using System.ComponentModel;
using System.Text;
#endregion
namespace WorkflowDesigner
{
/// <summary>
/// Description of IdentifierCreationService.
/// </summary>
public class IdentifierCreationService : IIdentifierCreationService
{
public IdentifierCreationService()
{
}
public void EnsureUniqueIdentifiers(CompositeActivity parentActivity, System.Collections.ICollection childActivities)
{
if (parentActivity == null)
throw new ArgumentNullException("parentActivity");
if (childActivities == null)
throw new ArgumentNullException("childActivities");
LoggingService.DebugFormatted("EnsureUniqueIdentifiers(parentActivity={0}, childActivities={1})", parentActivity, childActivities);
foreach (Activity activity in childActivities)
{
LoggingService.DebugFormatted("{0}", activity.Name);
// TODO: Something here?
}
}
public void ValidateIdentifier(Activity activity, string identifier)
{
if (activity == null)
throw new ArgumentNullException("activity");
if (identifier == null)
throw new ArgumentNullException("identifier");
LoggingService.DebugFormatted("ValidateIdentifier(ValidateIdentifier={0}, identifier={1})", activity, identifier);
//TODO: Something here?
}
}
}

4
src/AddIns/DisplayBindings/WorkflowDesigner/Project/Src/Services/MemberCreationService.cs

@ -21,6 +21,8 @@ namespace WorkflowDesigner @@ -21,6 +21,8 @@ namespace WorkflowDesigner
/// </summary>
public class MemberCreationService : IMemberCreationService, IServiceProvider
{
private string typeName = string.Empty;
#region IServiceProvider implementation
IServiceProvider provider;
public object GetService(Type serviceType)
@ -52,7 +54,7 @@ namespace WorkflowDesigner @@ -52,7 +54,7 @@ namespace WorkflowDesigner
public void UpdateTypeName(string oldClassName, string newClassName)
{
LoggingService.DebugFormatted("UpdateTypeName(oldClassName={0}, newClassName={1})", oldClassName, newClassName);
throw new NotImplementedException();
typeName = newClassName;
}
public void UpdateBaseType(string className, Type baseType)

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

@ -85,7 +85,7 @@ namespace WorkflowDesigner @@ -85,7 +85,7 @@ namespace WorkflowDesigner
typeProvider.AddAssembly(typeof(System.Object).Assembly);
typeProvider.AddAssembly(typeof(System.ComponentModel.Design.Serialization.CodeDomSerializer).Assembly);
typeProvider.AddAssembly(typeof(System.Workflow.ComponentModel.DependencyObject).Assembly);
typeProvider.AddAssembly(typeof(System.Workflow.Activities.CodeActivity).Assembly);
typeProvider.AddAssembly(typeof(System.Workflow.Activities.SequentialWorkflowActivity).Assembly);
typeProvider.AddAssembly(typeof(System.Workflow.Runtime.WorkflowRuntime).Assembly);
// Just return the basic provider if not related to a project.
@ -221,14 +221,18 @@ namespace WorkflowDesigner @@ -221,14 +221,18 @@ namespace WorkflowDesigner
files.AddRange(GetRelatedFiles(project, item.FileName));
}
string[] s = new string[files.Count];
for (int i = 0; i < files.Count; i++)
s[i] = files[i];
CodeCompileUnit ccu = ParseXoml(project, s);
if (ccu != null) {
typeProvider.AddCodeCompileUnit(ccu);
cp.UserCodeCompileUnits.Add(ccu);
CodeCompileUnit ccu;
if (files.Count > 0) {
string[] s = new string[files.Count];
for (int i = 0; i < files.Count; i++)
s[i] = files[i];
ccu = ParseXoml(project, s);
if (ccu != null) {
typeProvider.AddCodeCompileUnit(ccu);
cp.UserCodeCompileUnits.Add(ccu);
}
}
// Now create one ccu for each source file.

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

@ -93,7 +93,8 @@ @@ -93,7 +93,8 @@
<Compile Include="Src\Gui\ViewContentControl.Designer.cs">
<DependentUpon>ViewContentControl.cs</DependentUpon>
</Compile>
<Compile Include="Src\Loaders\NRefactoryDesignerLoader.cs" />
<Compile Include="Src\Loaders\BasicWorkflowDesignerLoader.cs" />
<Compile Include="Src\Loaders\CodeDesignerLoader.cs" />
<Compile Include="Src\Loaders\WorkflowDesignerLoadException.cs" />
<Compile Include="Src\Loaders\XomlCodeSeparationDesignerLoader.cs" />
<Compile Include="Src\Loaders\XomlDesignerLoader.cs" />
@ -105,7 +106,6 @@ @@ -105,7 +106,6 @@
<Compile Include="Src\Services\EventBindingService\EventPropertyDescriptor.cs" />
<Compile Include="Src\Services\EventBindingService\IWorkflowDesignerEventBindingService.cs" />
<Compile Include="Src\Services\EventBindingService\WorkflowDesignerEventBindingService.cs" />
<Compile Include="Src\Services\IdentifierCreationService.cs" />
<Compile Include="Src\Services\MemberCreationService.cs" />
<Compile Include="Src\Services\PropertyValueUIService.cs" />
<Compile Include="Src\Services\TypeProviderService.cs" />

Loading…
Cancel
Save