Example #1
0
        private SparkViewDescriptor GetViewDescriptor()
        {
            var descriptor = new SparkViewDescriptor().AddTemplate(TemplateKey);

            if (!string.IsNullOrEmpty(ModelProperty))
            {
                AddAccessor(descriptor, false, Page.GetType().GetProperty(ModelProperty).PropertyType, "Model", "base.ViewData.Model");
            }

            AddAccessor(descriptor, true, Page.GetType(), "Page", "base.Page");
            AddAccessor(descriptor, true, NamingContainer.GetType(), "Container", "base.Container");

            return(descriptor);
        }
Example #2
0
        protected override void RaiseCallbackEvent(string eventArgument)
        {
            var format = Common.GetNumberFormat();

            var jss = new System.Web.Script.Serialization.JavaScriptSerializer();

            var callbackArgs = (object[])(jss.DeserializeObject(eventArgument));

            var methodName = (string)(callbackArgs[0]);
            var methodArgs = (object[])(callbackArgs[1]);

            if (methodName == "__Refresh")
            {
                string tileJavaScript;

                if (ImageLoadMode == ImageLoadMode.AdaptiveTile)
                {
                    var tiles = new List <RectangleF>();

                    if (methodArgs != null)
                    {
                        for (var i = 0; i < methodArgs.Length; i += 4)
                        {
                            var tile = new RectangleF(Convert.ToSingle(methodArgs[i], format),
                                                      Convert.ToSingle(methodArgs[i + 1], format),
                                                      Convert.ToSingle(methodArgs[i + 2], format),
                                                      Convert.ToSingle(methodArgs[i + 3], format));
                            tiles.Add(tile);
                        }
                    }
                    tileJavaScript = GetRefreshImageTileJavaScript(tiles.ToArray());
                }
                else
                {
                    tileJavaScript = GetImageTileJavaScript();
                }

                _callbackResult = "if(this._needToClearTiles()){this._clearTiles();};var tiles=" + tileJavaScript +
                                  ";this._addTiles(tiles());this._webImageLoader.showPrecreatedTiles();this._needToRefresh=false;";
            }
            else
            {
                // Process all other callbacks except Refresh
                _bitmapChanged = false;

                // Try to find method first of all in NamingContainer, next in BindingContainer and to the end
                // into Parent element.

                // Get type of instance
                var objectType      = NamingContainer.GetType();
                var methodContainer = NamingContainer;

                // Get specified method
                var methodInfo = objectType.GetMethod(methodName);

                if (methodInfo == null)
                {
                    objectType      = BindingContainer.GetType();
                    methodContainer = BindingContainer;
                    methodInfo      = objectType.GetMethod(methodName);
                }

                if (methodInfo == null)
                {
                    objectType      = Parent.GetType();
                    methodContainer = Parent;
                    methodInfo      = objectType.GetMethod(methodName);
                }

                var returnValue = InvokeRemoteScriptingMethod(methodContainer, methodName,
                                                              methodArgs);

                var code = new StringBuilder();

                var v = "$find(\"" + ClientID + "\")";
                code.Append(v + "._returnValue=" + jss.Serialize(returnValue) + ";");

                code.Append(GetState());

                _callbackResult = code.ToString();
            }
        }
        /// <summary> Dispatches the resources passed in <paramref name="values"/> to the control's properties. </summary>
        /// <param name="values"> An <c>IDictonary</c>: &lt;string key, string value&gt;. </param>
        protected virtual void Dispatch(IDictionary values)
        {
            HybridDictionary tabValues      = new HybridDictionary();
            HybridDictionary propertyValues = new HybridDictionary();

            //  Parse the values

            foreach (DictionaryEntry entry in values)
            {
                string   key      = (string)entry.Key;
                string[] keyParts = key.Split(new[] { ':' }, 3);

                //  Is a property/value entry?
                if (keyParts.Length == 1)
                {
                    string property = keyParts[0];
                    propertyValues.Add(property, entry.Value);
                }
                //  Is collection entry?
                else if (keyParts.Length == 3)
                {
                    //  Compound key: "collectionID:elementID:property"
                    string collectionID = keyParts[0];
                    string elementID    = keyParts[1];
                    string property     = keyParts[2];

                    IDictionary currentCollection = null;

                    //  Switch to the right collection
                    switch (collectionID)
                    {
                    case c_resourceKeyTabs:
                    {
                        currentCollection = tabValues;
                        break;
                    }

                    default:
                    {
                        //  Invalid collection property
                        s_log.Warn(
                            "WebTabStrip '" + ID + "' in naming container '" + NamingContainer.GetType().FullName + "' on page '" + Page
                            + "' does not contain a collection property named '" + collectionID + "'.");
                        break;
                    }
                    }

                    //  Add the property/value pair to the collection
                    if (currentCollection != null)
                    {
                        //  Get the dictonary for the current element
                        IDictionary elementValues = (IDictionary)currentCollection[elementID];

                        //  If no dictonary exists, create it and insert it into the elements hashtable.
                        if (elementValues == null)
                        {
                            elementValues = new HybridDictionary();
                            currentCollection[elementID] = elementValues;
                        }

                        //  Insert the argument and resource's value into the dictonary for the specified element.
                        elementValues.Add(property, entry.Value);
                    }
                }
                else
                {
                    //  Not supported format or invalid property
                    s_log.Warn(
                        "WebTabStrip '" + ID + "' in naming container '" + NamingContainer.GetType().FullName + "' on page '" + Page
                        + "' received a resource with an invalid or unknown key '" + key
                        + "'. Required format: 'property' or 'collectionID:elementID:property'.");
                }
            }

            //  Dispatch simple properties
            ResourceDispatcher.DispatchGeneric(this, propertyValues);

            //  Dispatch to collections
            Tabs.Dispatch(tabValues, this, "Tabs");
        }