Пример #1
0
        public Image GenerateProxyImage(Dictionary <string, string> values)
        {
            TemplateDefinition cardDef = TemplateSelector.GetTemplate(values);
            Image ret = ProxyGenerator.GenerateProxy(BlockManager, RootPath, cardDef, values);

            return(ret);
        }
Пример #2
0
        protected virtual DataTemplate GetTemplateFor(object item)
        {
            var template = ItemTemplate;

            if (TemplateSelector != null)
            {
                template = TemplateSelector.SelectTemplate(item, null);
            }
            return(template);
        }
Пример #3
0
    public override void OnInspectorGUI()
    {
        if (GUILayout.Button("New Object"))
        {
            TemplateSelector.Initialize();

            TemplateSelector.Scene = ((SceneDetails)serializedObject.targetObject).gameObject;
        }

        base.OnInspectorGUI();
    }
Пример #4
0
        private void UpdateContent()
        {
            if (BindingContext == null || TemplateSelector == null)
            {
                return;
            }

            var template = TemplateSelector.SelectTemplate(SelectorItem ?? BindingContext, this);

            Content = template.CreateContent() as View;
        }
Пример #5
0
 internal void Load(string path)
 {
     if (Document != null)
     {
         Document.RemoveAll();
         Document = null;
         TemplateSelector.ClearTemplates();
     }
     Document = new XmlDocument();
     Document.Load(path);
     LoadTemplates();
 }
        private void OkClick([NotNull] object sender, [NotNull] RoutedEventArgs e)
        {
            Debug.ArgumentNotNull(sender, nameof(sender));
            Debug.ArgumentNotNull(e, nameof(e));

            var selectedTemplate = SelectedTemplate;

            if (selectedTemplate != null)
            {
                TemplateSelector.AddToRecent(selectedTemplate);
            }

            this.Close(true);
        }
Пример #7
0
        public void LoadContent()
        {
            if (TemplateSelector == null)
            {
                TemplateSelector = (AsyncLoadStateTemplateSelector)Resources["DefaultAsyncLoadStateTemplateSelector"];
            }
            var tempContent = (FrameworkElement)TemplateSelector.SelectTemplate(this, this).LoadContent();

            // 仅在有错误的情况下,设置DataContext以便于错误页的信息展示
            if (ErrorMessage != null && ErrorMessage.Length > 0)
            {
                tempContent.SetValue(FrameworkElement.DataContextProperty, this);
            }
            Content = tempContent;
        }
Пример #8
0
        public override Object OnCreateGroupViewHolder(ViewGroup parent, int viewType)
        {
            var itemBindingContext = new MvxAndroidBindingContext(parent.Context, BindingContext.LayoutInflaterHolder);

            var viewHolder =
                new MvxExpandableRecyclerViewHolder(
                    InflateViewForHolder(TemplateSelector.GetItemLayoutId(viewType), parent, viewType, itemBindingContext),
                    itemBindingContext)
            {
                Click     = GroupItemClickCommand,
                LongClick = GroupItemLongClickCommand
            };

            return(viewHolder);
        }
Пример #9
0
        internal void LoadTemplates()
        {
            XmlNodeList blockList = Document.GetElementsByTagName("blocks");

            BlockManager = new BlockManager(RootPath);
            BlockManager.LoadBlocks(blockList[0]);

            XmlNodeList templateList = Document.GetElementsByTagName("template");

            foreach (XmlNode template in templateList)
            {
                TemplateDefinition templateDef = TemplateDefinition.LoadCardDefinition(template);
                templateDef.rootPath = RootPath;
                TemplateSelector.AddTemplate(templateDef);
            }
        }
        public void NoFunctions()
        {
            // invalid error strategy
            ExceptionAssert.Throws <ArgumentOutOfRangeException>(
                () => TemplateSelector.Create <int>(errorStrategy: (SelectorErrorStrategy)int.MaxValue),
                "errorStrategy");

            // with ConverterErrorStrategy.ReturnDefaultValue (default)
            Assert.AreEqual <DataTemplate?>(null, TemplateSelector.Create <int>().SelectTemplate(1, null));

            // with ConverterErrorStrategy.ReturnNewEmptyDataTemplate
            DataTemplate result = TemplateSelector.Create <int>(errorStrategy: SelectorErrorStrategy.ReturnNewEmptyDataTemplate).SelectTemplate(1, null);

            Assert.IsNotNull(result);
            Assert.IsFalse(result.HasContent);
        }
        /// <summary>
        /// Show dropdown for selecting a collection to bind to.
        /// </summary>
        private void ShowPropertySelector(TemplateSelector targetScript, PropertyInfo[] bindableViews)
        {
            EditorGUILayout.BeginHorizontal();
            EditorGUILayout.PrefixLabel("View to bind to");

            var dropdownPosition = GUILayoutUtility.GetLastRect();

            dropdownPosition.x += dropdownPosition.width;

            if (GUILayout.Button(new GUIContent(targetScript.viewModelPropertyName), EditorStyles.popup))
            {
                ShowPropertySelectorDropdown(targetScript, bindableViews, dropdownPosition);
            }

            EditorGUILayout.EndHorizontal();
        }
        public void WithSelectFunction()
        {
            // with an input value of an unexpected type (use default error strategy)
            Assert.IsNull(TemplateSelector.Create <int>(e => new DataTemplate()).SelectTemplate(true, null));
            Assert.IsNull(TemplateSelector.Create <int>(e => new DataTemplate()).SelectTemplate(null, null));

            // with a valid input value
            DataTemplate template = new DataTemplate();

            Assert.AreEqual(template, TemplateSelector.Create <int>(
                                e =>
            {
                Assert.AreEqual(1, e.Item);

                return(template);
            }).SelectTemplate(1, null));
        }
        public override int GetItemViewType(int position)
        {
            int viewType = base.GetItemViewType(position);

            var template = TemplateSelector.GetTemplate(adapter, position);

            lock (lockObj)
            {
                viewType = templates.IndexOf(template);

                if (viewType < 0)
                {
                    templates.Add(template);
                    viewType = templates.Count - 1;
                }
            }

            return(viewType);
        }
        public void CompareTemplateSelectorArgs()
        {
            StructAssert.IsCorrect <TemplateSelectorArgs <int> >();

            var arg = default(TemplateSelectorArgs <int>);

            DataTemplate template = new DataTemplate();

            Assert.AreEqual(
                template,
                TemplateSelector.Create <int>(
                    e =>
            {
                arg = e;

                return(template);
            }).SelectTemplate(1, null));

            StructAssert.AreEqual(arg, (x, y) => x == y, (x, y) => x != y);
            StructAssert.AreNotEqual(arg, default, (x, y) => x == y, (x, y) => x != y);
        /// <summary>
        /// Draws the dropdown for selecting a method from bindableViewModelProperties
        /// </summary>
        private void ShowPropertySelectorDropdown(TemplateSelector targetScript, PropertyInfo[] bindableViews, Rect position)
        {
            var selectedIndex = Array.IndexOf(
                bindableViews.Select(m => m.ReflectedType + m.Name).ToArray(),
                targetScript.viewModelName + targetScript.viewModelPropertyName
                );

            var options = bindableViews.Select(m =>
                                               new InspectorUtils.MenuItem(
                                                   new GUIContent(m.ReflectedType + "/" + m.Name),
                                                   true
                                                   )
                                               ).ToArray();

            InspectorUtils.ShowCustomSelectionMenu(
                index => SetViewModelProperty(targetScript, bindableViews[index]),
                options,
                selectedIndex,
                position);
        }
Пример #16
0
        internal void Load(string path)
        {
            if (Document != null)
            {
                Document.RemoveAll();
                Document = null;
                TemplateSelector.ClearTemplates();
            }
            Document = new XmlDocument();
            Document.Load(path);

            XmlNodeList blockList = Document.GetElementsByTagName("blocks");

            BlockManager = new BlockManager(RootPath);
            foreach (XmlNode block in blockList[0])
            {
                if (block.Name != "block")
                {
                    continue;
                }
                BlockDefinition blockDef = ProxyDeserializer.DeserializeBlock(BlockManager, block);
                BlockManager.AddBlock(blockDef);
            }

            XmlNodeList templateList = Document.GetElementsByTagName("template");

            foreach (XmlNode template in templateList)
            {
                if (template.Name != "template")
                {
                    continue;
                }
                TemplateDefinition templateDef = ProxyDeserializer.DeserializeTemplate(template);
                templateDef.rootPath = RootPath;
                TemplateSelector.AddTemplate(templateDef);
            }
        }
        public override void OnBindViewHolder(RecyclerView.ViewHolder holder, int position)
        {
            var info = TemplateSelector.GetInfo(adapter, position);

            if (info == null)
            {
                return;
            }

            // The template selector doesn't infer selected properly
            // so we need to ask the listview which tracks selections about the state
            info.IsSelected = info.Kind == PositionKind.Item &&
                              (Element?.IsItemSelected(info.SectionIndex, info.ItemIndex) ?? false);

            var item = info.BindingContext ?? BindingContext;

            if (item != null && holder is RvItemHolder itemHolder && itemHolder.ViewCell != null)
            {
                itemHolder.PositionInfo            = info;
                itemHolder.ViewCell.BindingContext = item;
                itemHolder.ViewCell.Update(info);
                itemHolder.ViewCell.View.InvalidateMeasureNonVirtual(Xamarin.Forms.Internals.InvalidationTrigger.MeasureChanged);
            }
        }
Пример #18
0
 public override int GetChildItemViewType(int p0, int p1) => TemplateSelector.GetItemViewType(GetItemAt(p0, p1));
 /// <summary>
 /// Set up the viewModelName and viewModelPropertyname in the TemplateSelector we're editing.
 /// </summary>
 private void SetViewModelProperty(TemplateSelector target, PropertyInfo property)
 {
     target.viewModelName         = property.ReflectedType.Name;
     target.viewModelPropertyName = property.Name;
 }
 private PropertyInfo[] GetBindableViews(TemplateSelector target)
 {
     return(target.GetAvailableViewModelTypes()
            .SelectMany(type => type.GetProperties(BindingFlags.Public | BindingFlags.Instance))
            .ToArray());
 }
Пример #21
0
 public override int GetGroupItemViewType(int p0) => TemplateSelector.GetItemViewType(GetItemAt(p0));
Пример #22
0
        public static void ParseFile(DataContext context, File file, int projectId)
        {
            var xmlDoc = new XmlDocument();

            xmlDoc.LoadXml(file.Content);

            var nsmgr = new XmlNamespaceManager(xmlDoc.NameTable);

            nsmgr.AddNamespace("xsl", "http://www.w3.org/1999/XSL/Transform");

            var importNodes = xmlDoc.SelectNodes("//xsl:import", nsmgr);

            for (var i = 0; i < importNodes.Count; i++)
            {
                XmlNode importNode = importNodes[i];
                var     importPath = importNode.Attributes["href"].Value;
                context.FilesRelations.Add(new FilesRelation
                {
                    Source = context.Files.Local.First(f => f.Path.ToLower() == importPath.ToLower() &&
                                                       f.Project.Id == projectId),
                    Target = file,
                    Order  = i,
                    Mode   = FilesRelationMode.Import
                });
            }

            var includeNodes = xmlDoc.SelectNodes("//xsl:include", nsmgr);

            for (var i = 0; i < includeNodes.Count; i++)
            {
                XmlNode includeNode = includeNodes[i];
                var     includePath = includeNode.Attributes["href"].Value;
                context.FilesRelations.Add(new FilesRelation
                {
                    Source = context.Files.Local.First(f => f.Path.ToLower() == includePath.ToLower() &&
                                                       f.Project.Id == projectId),
                    Target = file,
                    Order  = i,
                    Mode   = FilesRelationMode.Include
                });
            }

            var templates = xmlDoc.SelectNodes("//xsl:template", nsmgr);

            foreach (XmlNode templateNode in templates)
            {
                var match = templateNode.Attributes["match"] != null ? templateNode.Attributes["match"].Value : "";
                var name  = templateNode.Attributes["name"] != null ? templateNode.Attributes["name"].Value : "";
                var mode  = templateNode.Attributes["mode"] != null ? templateNode.Attributes["mode"].Value : "";

                TemplateSelector selector = match.Length > 0 ? TemplateSelector.Match : TemplateSelector.Name;
                var template = new Template
                {
                    Content       = templateNode.InnerXml,
                    File          = file,
                    Mode          = mode,
                    Selector      = selector,
                    SelectorValue = selector == TemplateSelector.Match ? match : name
                };
                context.Templates.Add(template);

                ParseTemplateData(context, templateNode, template, nsmgr);
            }
        }