Пример #1
0
        public bool PreventDrop(IDataObject dataObject)
        {
            if (dataObject == null)
            {
                return(false);
            }
            var formats = dataObject.GetFormats();

            //If we didnt attach any data for the format - dont allow
            if (!formats.Any())
            {
                return(false);
            }

            //if it is a ReourceTreeViewModel, get the data for this string
            var modelItemString = formats.FirstOrDefault(s => s.IndexOf("ExplorerItemModel", StringComparison.Ordinal) >= 0);

            if (String.IsNullOrEmpty(modelItemString))
            {
                //else if it is a workflowItemType, get data for this
                modelItemString = formats.FirstOrDefault(s => s.IndexOf("WorkflowItemTypeNameFormat", StringComparison.Ordinal) >= 0);

                //else just bounce out, we didnt set it.
                if (!String.IsNullOrEmpty(modelItemString))
                {
                    return(false);
                }
            }

            if (string.IsNullOrEmpty(modelItemString))
            {
                return(false);
            }
            //now get data for whichever was set above
            var objectData = dataObject.GetData(modelItemString);

            if (objectData == null)
            {
                return(false);
            }

            IWorkflowDesignerViewModel workflowDesignerViewModel = _workflowDesignerView.DataContext as IWorkflowDesignerViewModel;

            if (workflowDesignerViewModel != null)
            {
                ExplorerItemModel explorerItemModel = objectData as ExplorerItemModel;
                if (explorerItemModel != null)
                {
                    if (workflowDesignerViewModel.EnvironmentModel.ID != explorerItemModel.EnvironmentId && explorerItemModel.ResourceType >= Common.Interfaces.Data.ResourceType.DbService)
                    {
                        return(true);
                    }
                    if (explorerItemModel.Permissions >= Permissions.Execute && explorerItemModel.ResourceType <= Common.Interfaces.Data.ResourceType.WebService)
                    {
                        return(false);
                    }
                }
            }
            return(true);
        }
Пример #2
0
        public bool PreventDrop(IDataObject dataObject)
        {
            if (dataObject == null)
            {
                return(false);
            }
            var formats = dataObject.GetFormats();

            //If we didnt attach any data for the format - don't allow
            if (!formats.Any())
            {
                return(false);
            }


            //if it is a ReourceTreeViewModel, get the data for this string
            var modelItemString = formats.FirstOrDefault(s => s.IndexOf(@"ExplorerItemViewModel", StringComparison.Ordinal) >= 0);

            if (string.IsNullOrEmpty(modelItemString))
            {
                //else if it is a workflowItemType, get data for this
                modelItemString = formats.FirstOrDefault(s => s.IndexOf(@"WorkflowItemTypeNameFormat", StringComparison.Ordinal) >= 0);

                //else just bounce out, we didnt set it.
                if (!string.IsNullOrEmpty(modelItemString))
                {
                    return(false);
                }
            }

            var serviceFromToolBox = formats.FirstOrDefault(s => s.IndexOf(@"FromToolBox", StringComparison.Ordinal) >= 0);

            if (!string.IsNullOrEmpty(serviceFromToolBox))
            {
                return(false);
            }


            if (string.IsNullOrEmpty(modelItemString))
            {
                return(false);
            }
            //now get data for whichever was set above
            var objectData = dataObject.GetData(modelItemString);

            if (objectData == null)
            {
                return(false);
            }

            IWorkflowDesignerViewModel workflowDesignerViewModel = _workflowDesignerView.DataContext as IWorkflowDesignerViewModel;

            if (workflowDesignerViewModel != null)
            {
                var explorerItemViewModel = objectData as ExplorerItemViewModel;
                if (explorerItemViewModel != null)
                {
                    if (workflowDesignerViewModel.Server.EnvironmentID != explorerItemViewModel.Server.EnvironmentID && !explorerItemViewModel.IsService)
                    {
                        return(true);
                    }
                    if (workflowDesignerViewModel.Server.EnvironmentID != explorerItemViewModel.Server.EnvironmentID &&
                        !workflowDesignerViewModel.Server.IsLocalHostCheck() && explorerItemViewModel.IsService)
                    {
                        return(true);
                    }

                    if (workflowDesignerViewModel.ResourceModel.ID == explorerItemViewModel.ResourceId)
                    {
                        return(true);
                    }

                    if (explorerItemViewModel.CanExecute && explorerItemViewModel.CanView && explorerItemViewModel.IsService && !explorerItemViewModel.IsSource)
                    {
                        return(false);
                    }
                }
            }
            return(true);
        }
        internal void AddUserInterfaceWorkflow(IContextualResourceModel resource,
                                               IWorkflowDesignerViewModel workflowViemModel)
        {
            bool isWebpage = ResourceHelper.IsWebpage(resource);
            Type userInterfaceType = ResourceHelper.GetUserInterfaceType(resource);
            if (userInterfaceType == null) return;

            var modelService = workflowViemModel.wfDesigner.Context.Services.GetService<ModelService>();

            IEnumerable<ModelItem> items = modelService.Find(modelService.Root, userInterfaceType);

            IWebActivity webActivity = null;

            IList<ModelItem> modelItems = items as IList<ModelItem> ?? items.ToList();
            if (modelItems.Any())
            {
                ModelItem item = modelItems.First();
                ModelProperty displayNameProperty = item.Properties["DisplayName"];
                if (displayNameProperty != null)
                    webActivity = WebActivityFactory.CreateWebActivity(item, resource,
                                                                       displayNameProperty.ComputedValue.ToString());
                if (isWebpage)
                {
                    AddWebPageDesigner(webActivity);
                }
                else
                {
                    AddWebsiteDesigner(webActivity);
                }
            }
            else
            {
                ModelProperty implementationProperty = modelService.Root.Properties["Implementation"];
                if (modelService.Root.Content != null)
                {
                    var fc = (Flowchart)modelService.Root.Content.ComputedValue;
                    var fs = new FlowStep();
                    dynamic wsa = Activator.CreateInstance(userInterfaceType);
                    fs.Action = wsa;
                    fc.StartNode = fs;
                    if (implementationProperty != null)
                        if (implementationProperty.Value != null)
                        {
                            ModelProperty nodesProperty = implementationProperty.Value.Properties["Nodes"];
                            if (nodesProperty != null)
                                if (nodesProperty.Collection != null) nodesProperty.Collection.Add(fs);
                        }
                }
                if (implementationProperty != null)
                {
                    if (implementationProperty.Value != null)
                    {
                        ModelProperty nodesProperty = implementationProperty.Value.Properties["Nodes"];
                        if (nodesProperty != null)
                        {
                            if (nodesProperty.Collection != null)
                            {
                                ModelItem wsmodelitem = nodesProperty.Collection.Last();
                                ModelProperty actionProperty = wsmodelitem.Properties["Action"];
                                if (actionProperty != null)
                                {
                                    ModelItem amodelitem = actionProperty.Value;

                                    if (amodelitem != null)
                                    {
                                        ModelProperty displayNameProperty = amodelitem.Properties["DisplayName"];
                                        if (displayNameProperty != null)
                                            if (isWebpage)
                                            {
                                                webActivity = WebActivityFactory
                                                    .CreateWebActivity(amodelitem, resource,
                                                                       displayNameProperty.ComputedValue.ToString());
                                                AddWebPageDesigner(webActivity);
                                            }
                                            else
                                            {
                                                webActivity = WebActivityFactory
                                                    .CreateWebActivity(amodelitem, resource,
                                                                       displayNameProperty.ComputedValue.ToString());
                                                AddWebsiteDesigner(webActivity);
                                            }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        private void RemoveWorkspaceItem(IWorkflowDesignerViewModel viewModel)
        {
            // TODO: Check model server uri
            IWorkspaceItem itemToRemove =
                WorkspaceItems.FirstOrDefault(c => c.ServiceName == viewModel.ResourceModel.ResourceName);
            if (itemToRemove == null) return;

            WorkspaceItems.Remove(itemToRemove);
            SaveWorkspaceItems();
        }
Пример #5
0
        public bool PreventDrop(IDataObject dataObject)
        {
            if (dataObject == null)
            {
                return(false);
            }
            var formats = dataObject.GetFormats();

            //If we didnt attach any data for the format - dont allow
            if (!formats.Any())
            {
                return(false);
            }

            //if it is a ReourceTreeViewModel, get the data for this string
            var modelItemString = formats.FirstOrDefault(s => s.IndexOf("ExplorerItemModel", StringComparison.Ordinal) >= 0);

            if (String.IsNullOrEmpty(modelItemString))
            {
                //else if it is a workflowItemType, get data for this
                modelItemString = formats.FirstOrDefault(s => s.IndexOf("WorkflowItemTypeNameFormat", StringComparison.Ordinal) >= 0);

                //else just bounce out, we didnt set it.
                if (!String.IsNullOrEmpty(modelItemString))
                {
                    return(false);
                }
            }

            if (string.IsNullOrEmpty(modelItemString))
            {
                return(false);
            }
            //now get data for whichever was set above
            var objectData = dataObject.GetData(modelItemString);

            if (objectData == null)
            {
                return(false);
            }

            IWorkflowDesignerViewModel workflowDesignerViewModel = _workflowDesignerView.DataContext as IWorkflowDesignerViewModel;

            if (workflowDesignerViewModel != null)
            {
                ExplorerItemModel explorerItemModel = objectData as ExplorerItemModel;
                if (explorerItemModel != null)
                {
                    if (workflowDesignerViewModel.EnvironmentModel.ID != explorerItemModel.EnvironmentId && explorerItemModel.ResourceType >= ResourceType.DbService)
                    {
                        return(true);
                    }
                    if (workflowDesignerViewModel.EnvironmentModel.ID != explorerItemModel.EnvironmentId && !workflowDesignerViewModel.EnvironmentModel.IsLocalHostCheck() && explorerItemModel.ResourceType == ResourceType.WorkflowService)
                    {
                        CustomContainer.Get <IPopupController>().Show(StringResources.DragRemoteNotSupported, StringResources.DragRemoteNotSupportedHeader, MessageBoxButton.OK, MessageBoxImage.Error, null);
                        return(true);
                    }
                    if (explorerItemModel.Permissions >= Permissions.Execute && explorerItemModel.ResourceType <= ResourceType.WebService)
                    {
                        return(false);
                    }
                }
            }
            return(true);
        }