예제 #1
0
        public void CreateMashup(GraphNode graphNode, IWorkflowEditorService editorService)
        {
            var dialogMashup     = visualizer.Value as DialogMashupVisualizer;
            var visualizerDialog = workflowGraphView.GetVisualizerDialogLauncher(graphNode);

            if (dialogMashup != null && visualizerDialog != null)
            {
                var dialogMashupType = dialogMashup.GetType();
                var visualizerType   = visualizerDialog.visualizer.Value.GetType();
                var mashupVisualizer = default(Type);
                while (dialogMashupType != null && dialogMashupType != typeof(DialogMashupVisualizer))
                {
                    var mashup = typeof(VisualizerMashup <,>).MakeGenericType(dialogMashupType, visualizerType);
                    mashupVisualizer = editorService.GetTypeVisualizers(mashup).SingleOrDefault();
                    if (mashupVisualizer != null)
                    {
                        break;
                    }
                    dialogMashupType = dialogMashupType.BaseType;
                }

                if (mashupVisualizer != null)
                {
                    UnloadMashups();
                    var visualizerMashup = (MashupTypeVisualizer)Activator.CreateInstance(mashupVisualizer);
                    dialogMashup.Mashups.Add(new VisualizerMashup(visualizerDialog.visualizerSource.Output, visualizerMashup));
                    ReloadMashups();
                }
            }
        }
예제 #2
0
        public WorkflowEditorControl(IServiceProvider provider, bool readOnly)
        {
            if (provider == null)
            {
                throw new ArgumentNullException("provider");
            }

            InitializeComponent();
            serviceProvider = provider;
            editorService   = (IWorkflowEditorService)provider.GetService(typeof(IWorkflowEditorService));
            workflowTab     = InitializeTab(workflowTabPage, readOnly, null);
            InitializeTheme(workflowTabPage);
        }
        public void CreateMashup(GraphNode graphNode, IWorkflowEditorService editorService)
        {
            var dialogMashup     = visualizer.Value as DialogMashupVisualizer;
            var visualizerDialog = workflowGraphView.GetVisualizerDialogLauncher(graphNode);

            if (dialogMashup != null && visualizerDialog != null)
            {
                var dialogMashupType = dialogMashup.GetType();
                var visualizerType   = visualizerDialog.visualizer.Value.GetType();
                var mashupVisualizer = GetMashupVisualizerType(dialogMashupType, visualizerType, editorService);
                if (mashupVisualizer != null)
                {
                    UnloadMashups();
                    var visualizerMashup = (MashupTypeVisualizer)Activator.CreateInstance(mashupVisualizer);
                    dialogMashup.Mashups.Add(new VisualizerMashup(visualizerDialog.visualizerSource.Output, visualizerMashup));
                    ReloadMashups();
                }
            }
        }
예제 #4
0
 public NestedEditorDialog(IServiceProvider provider)
 {
     editorService = (IWorkflowEditorService)provider.GetService(typeof(IWorkflowEditorService));
 }
        static Type GetMashupVisualizerType(Type dialogMashupType, Type visualizerType, IWorkflowEditorService editorService)
        {
            var mashupVisualizerType = default(Type);

            while (dialogMashupType != null && dialogMashupType != typeof(DialogMashupVisualizer))
            {
                var mashup = typeof(VisualizerMashup <,>).MakeGenericType(dialogMashupType, visualizerType);
                mashupVisualizerType = editorService.GetTypeVisualizers(mashup).SingleOrDefault();
                if (mashupVisualizerType != null)
                {
                    break;
                }
                dialogMashupType = dialogMashupType.BaseType;
            }

            return(mashupVisualizerType);
        }