public override void BuildEditor(BuildEditorContext context) {
     _drivers.Invoke(driver => {
         var result = driver.BuildEditor(context);
         if (result != null)
             result.Apply(context);
     }, Logger);
 }
        public override void Apply(BuildEditorContext context) {
            foreach (var result in _results) {

                // copy the ContentPart which was used to render this result to its children
                // so they can assign it to the concrete shapes
                if (result.ContentPart == null && ContentPart != null) {
                    result.ContentPart = ContentPart;
                }

                // copy the ContentField which was used to render this result to its children
                // so they can assign it to the concrete shapes
                if (result.ContentField == null && ContentField != null) {
                    result.ContentField = ContentField;
                }
                
                result.Apply(context);
            }
        }
        public dynamic BuildEditor(IContent content, string groupId) {
            var contentTypeDefinition = content.ContentItem.TypeDefinition;
            string stereotype;
            if (!contentTypeDefinition.Settings.TryGetValue("Stereotype", out stereotype))
                stereotype = "Content";

            var actualShapeType = stereotype + "_Edit";

            dynamic itemShape = CreateItemShape(actualShapeType);
            itemShape.ContentItem = content.ContentItem;

            var context = new BuildEditorContext(itemShape, content, groupId, _shapeFactory);
            BindPlacement(context, null, stereotype);

            _handlers.Value.Invoke(handler => handler.BuildEditor(context), Logger);

            return context.Shape;
        }
        public BuildEditorContext BuildEditorContext(IContent content, string groupId) {
            var contentTypeDefinition = content.ContentItem.TypeDefinition;
            string stereotype;
            if (!contentTypeDefinition.Settings.TryGetValue("Stereotype", out stereotype))
                stereotype = DefaultStereotype;

            var actualShapeType = stereotype + "_Edit";
            var itemShape = CreateItemShape(actualShapeType);

            itemShape.ContentItem = content.ContentItem;

            // Adding an alternate for [Stereotype]_Edit__[ContentType] e.g. Content-Menu.Edit.
            ((IShape)itemShape).Metadata.Alternates.Add(actualShapeType + "__" + content.ContentItem.ContentType);

            var context = new BuildEditorContext(itemShape, content, groupId, _shapeFactory);
            BindPlacement(context, null, stereotype);

            return context;
        }
        public string BuildEditor(IContent content)
        {
            var contentTypeDefinition = content.ContentItem.TypeDefinition;
            string stereotype;
            //if (!contentTypeDefinition.Settings.TryGetValue("Stereotype", out stereotype))
            //    stereotype = "Content";

            //var actualShapeType = stereotype + "_Edit";

            //dynamic itemShape = CreateItemShape(actualShapeType);
            //itemShape.ContentItem = content.ContentItem;

            // adding an alternate for [Stereotype]_Edit__[ContentType] e.g. Content-Menu.Edit
            //((IShape)itemShape).Metadata.Alternates.Add(actualShapeType + "__" + content.ContentItem.ContentType);

            var context = new BuildEditorContext(content);
            //BindPlacement(context, null, stereotype);

            _handlers.Value.Invoke(handler => handler.BuildEditor(context), Logger);
            return string.Empty;
        }
        public dynamic BuildEditor(IContent content, string groupId) {
            var contentTypeDefinition = content.ContentItem.TypeDefinition;
            string stereotype;
            if (!contentTypeDefinition.Settings.TryGetValue("Stereotype", out stereotype))
                stereotype = "Content";

            var actualShapeType = stereotype + "_Edit";

            dynamic itemShape = CreateItemShape(actualShapeType);
            itemShape.ContentItem = content.ContentItem;

            // adding an alternate for [Stereotype]_Edit__[ContentType] e.g. Content-Menu.Edit
            ((IShape)itemShape).Metadata.Alternates.Add(actualShapeType + "__" + content.ContentItem.ContentType);

            var context = new BuildEditorContext(itemShape, content, groupId, _shapeFactory);
            BindPlacement(context, null, stereotype);

            _handlers.Value.Invoke(handler => handler.BuildEditor(context), Logger);

            return context.Shape;
        }
 public override void Apply(BuildEditorContext context) {
     foreach (var result in _results) {
         result.Apply(context);
     }
 }
Beispiel #8
0
        private IEnumerable<DriverResultPlacement> ExtractPlacement(DriverResult result, BuildShapeContext context)
        {
            if (result is CombinedResult)
            {
                foreach (var subResult in ((CombinedResult)result).GetResults())
                {
                    foreach (var placement in ExtractPlacement(subResult, context))
                    {
                        yield return placement;
                    }
                }
            }
            else if (result is ContentShapeResult)
            {
                var contentShapeResult = (ContentShapeResult)result;

                var placement = context.FindPlacement(
                    contentShapeResult.GetShapeType(),
                    contentShapeResult.GetDifferentiator(),
                    contentShapeResult.GetLocation()
                    );

                string zone = placement.Location;
                string position = String.Empty;

                // if no placement is found, it's hidden, e.g., no placement was found for the specific ContentType/DisplayType
                if (placement.Location != null)
                {
                    var delimiterIndex = placement.Location.IndexOf(':');
                    if (delimiterIndex >= 0)
                    {
                        zone = placement.Location.Substring(0, delimiterIndex);
                        position = placement.Location.Substring(delimiterIndex + 1);
                    }
                }

                var content = _contentManager.New(context.ContentItem.ContentType);

                dynamic itemShape = CreateItemShape("Content_Edit");
                itemShape.ContentItem = content;

                if (context is BuildDisplayContext)
                {
                    var newContext = new BuildDisplayContext(itemShape, content, "Detail", "", context.New);
                    BindPlacement(newContext, "Detail", "Content");
                    contentShapeResult.Apply(newContext);
                }
                else
                {
                    var newContext = new BuildEditorContext(itemShape, content, "", context.New);
                    BindPlacement(newContext, null, "Content");
                    contentShapeResult.Apply(newContext);
                }


                yield return new DriverResultPlacement
                {
                    Shape = itemShape.Content,
                    ShapeResult = contentShapeResult,
                    PlacementSettings = new PlacementSettings
                    {
                        ShapeType = contentShapeResult.GetShapeType(),
                        Zone = zone,
                        Position = position,
                        Differentiator = contentShapeResult.GetDifferentiator() ?? String.Empty
                    }
                };
            }
        }
Beispiel #9
0
        public IEnumerable<DriverResultPlacement> GetEditorPlacement(string contentType)
        {
            var content = _contentManager.New(contentType);

            dynamic itemShape = CreateItemShape("Content_Edit");
            itemShape.ContentItem = content;

            var context = new BuildEditorContext(itemShape, content, String.Empty, _shapeFactory);
            BindPlacement(context, null, "Content");

            var placementSettings = new List<DriverResultPlacement>();

            _contentPartDrivers.Invoke(driver =>
            {
                var result = driver.BuildEditor(context);
                if (result != null)
                {
                    placementSettings.AddRange(ExtractPlacement(result, context));
                }
            }, Logger);

            _contentFieldDrivers.Invoke(driver =>
            {
                var result = driver.BuildEditorShape(context);
                if (result != null)
                {
                    placementSettings.AddRange(ExtractPlacement(result, context));
                }
            }, Logger);

            foreach (var placementSetting in placementSettings)
            {
                yield return placementSetting;
            }
        }
Beispiel #10
0
 protected override void BuildEditorShape(BuildEditorContext context) {
     var experimentalSettings = context.ContentItem.TypeDefinition.Settings.GetModel<Settings.ExperimentalSettings>();
     if (experimentalSettings.ShowDebugLinks)
         context.Shape.Zones["Recap"].Add(new ShowDebugLink { ContentItem = context.ContentItem }, "9999");
 }
 public override void Apply(BuildEditorContext context) {
     ApplyImplementation(context, null);
 }
Beispiel #12
0
        public void ApplyEditors(BuildEditorContext driverContext, SocketParentContext parentContext = null) {
            var rootShape = driverContext.Shape;
            var content = driverContext.Content;
            var displayType = "";
            var groupId = driverContext.GroupId;
            var updateContext = driverContext as UpdateEditorContext;
            var updater = updateContext == null ? null : updateContext.Updater;
            
            // Discover if this item has been displayed further up the chain. This prevents recursion.
            if (parentContext != null && CheckRecursion(content, parentContext,displayType))
            {
                _origami.Build(
                    _origami.Builder(new RecursionPreventedModel(content))
                    .WithMode("Display")
                    .WithDisplayType(displayType)
                    .WithStereotype("Sockets")
                    .WithContentType(content.ContentItem.ContentType)
                    .WithParent(parentContext.ModelContext)
                    .WithParadigms(parentContext.ModelContext.Paradigms)
                    , rootShape);
                return;
            }

            var context = new SocketsModel(content, displayType, parentContext);

            var prefix = "Sockets";
            if (parentContext != null && !String.IsNullOrWhiteSpace(parentContext.Prefix))
            {
                prefix = parentContext.Prefix + "." + prefix;
            }
//            ApplyParadigms(rootShape, context);

  //          var paradigms = context..DefaultParadigms.Split(',', StringSplitOptions.RemoveEmptyEntries);
            var builder = _origami.Builder(context)
                .WithMode("Editor")
                .WithUpdater(updater, prefix)
                .WithDisplayType(displayType)
                .WithStereotype("Sockets")
                .WithContentType(content.ContentItem.ContentType)
                .WithGroup(groupId);

            if (parentContext!=null) {
                builder.WithParent(parentContext.ModelContext)
                    .WithParadigms(parentContext.ModelContext.Paradigms);
            }
            _origami.Build(builder,rootShape);
        }
 public override void Apply(BuildEditorContext context) {
     var templateShape = context.New.EditorTemplate(TemplateName: TemplateName, Model: Model, Prefix: Prefix);
     context.Shape.Zones[Zone].Add(templateShape, Position);
 }
Beispiel #14
0
 public virtual void BuildEditor(BuildEditorContext context)
 {
 }
Beispiel #15
0
 public virtual void BuildEditor(BuildEditorContext context)
 {
 }
Beispiel #16
0
 public virtual void Apply(BuildEditorContext context) { }
 public void BuildEditor(BuildEditorContext context)
 {
 }
Beispiel #18
0
 protected virtual void BuildEditorShape(BuildEditorContext context)
 {
 }
Beispiel #19
0
 protected override void BuildEditorShape(BuildEditorContext context, TContent instance)
 {
 }