예제 #1
0
        public static void ExecuteEverytimeWhenShown(jQueryObject element, Action callback,
            bool callNowIfVisible)
        {
            autoIncrement++;
            string eventClass = "ExecuteEverytimeWhenShown" + autoIncrement;

            bool wasVisible = element.Is(":visible");

            if (wasVisible && callNowIfVisible)
                callback();

            jQueryEventHandler check = delegate(jQueryEvent e)
            {
                if (element.Is(":visible"))
                {
                    if (!wasVisible)
                    {
                        wasVisible = true;
                        callback();
                    }
                }
                else
                    wasVisible = false;
            };

            var uiTabs = element.Closest(".ui-tabs");
            if (uiTabs.Length > 0)
                uiTabs.Bind("tabsactivate." + eventClass, check);

            var dialog = element.Closest(".ui-dialog-content");
            if (dialog.Length > 0)
                dialog.Bind("dialogopen." + eventClass, check);

            element.Bind("shown." + eventClass, check);
        }
예제 #2
0
 public static jQueryObject Next(jQueryObject q, string selector)
 {
     for (q = q.Next(); q.Size() > 0 && !q.Is(selector); q = q.Next())
     {
         ;
     }
     return(q);
 }
예제 #3
0
        public static void ExecuteEverytimeWhenShown(jQueryObject element, Action callback,
                                                     bool callNowIfVisible)
        {
            autoIncrement++;
            string eventClass = "ExecuteEverytimeWhenShown" + autoIncrement;

            bool wasVisible = element.Is(":visible");

            if (wasVisible && callNowIfVisible)
            {
                callback();
            }

            jQueryEventHandler check = delegate(jQueryEvent e)
            {
                if (element.Is(":visible"))
                {
                    if (!wasVisible)
                    {
                        wasVisible = true;
                        callback();
                    }
                }
                else
                {
                    wasVisible = false;
                }
            };

            var uiTabs = element.Closest(".ui-tabs");

            if (uiTabs.Length > 0)
            {
                uiTabs.Bind("tabsactivate." + eventClass, check);
            }

            var dialog = element.Closest(".ui-dialog-content");

            if (dialog.Length > 0)
            {
                dialog.Bind("dialogopen." + eventClass, check);
            }

            element.Bind("shown." + eventClass, check);
        }
예제 #4
0
 public void DeleteItem(int row)
 {
     numRows--;
     rowData.RemoveAt(row);
                 #if CLIENT
     if (isAttached && !rebuilding)
     {
         int  newSelection    = SelectedRowIndex;
         bool changeSelection = false;
         if (SelectedRowIndex == row)
         {
             if (numRows > 0)
             {
                 if (newSelection == numRows)
                 {
                     newSelection = numRows - 1;
                 }
             }
             else
             {
                 newSelection = -1;
             }
             changeSelection = true;
         }
         jQueryObject q = jQuery.FromElement(GetValuesTBody().Rows[row]).Remove(), next = q.Next();
         q.Remove();
         for (; next.Size() > 0; next = next.Next())
         {
             if (next.Is("." + EvenRowClass))
             {
                 next.RemoveClass(EvenRowClass);
                 next.AddClass(OddRowClass);
             }
             else
             {
                 next.RemoveClass(OddRowClass);
                 next.AddClass(EvenRowClass);
             }
         }
         if (changeSelection)
         {
             selectedRowIndex = -1;                             // hack to make the next procedure sure the GUI must be updated
             SelectedRowIndex = newSelection;
             OnSelectionChanged(EventArgs.Empty);
         }
         return;
     }
                 #endif
     if (selectedRowIndex >= row)
     {
         selectedRowIndex--;
     }
     rowTextsIfNotRendered.RemoveAt(row);
     rowClassesIfNotRendered.RemoveAt(row);
 }
예제 #5
0
        public void Refresh()
        {
            if (!PopulateWhenVisible())
            {
                InternalRefresh();
                return;
            }

            if (slickContainer.Is(":visible"))
            {
                slickContainer.Data("needsRefresh", false);
                InternalRefresh();
                return;
            }

            slickContainer.Data("needsRefresh", true);
        }
예제 #6
0
        public static jQueryObject SetReadOnly(jQueryObject elements, bool isReadOnly)
        {
            elements.Each(delegate(int index, Element el)
            {
                jQueryObject elx = jQuery.FromElement(el);

                string type = elx.GetAttribute("type");

                if (elx.Is("select") || (type == "radio") || (type == "checkbox"))
                {
                    if (isReadOnly)
                    {
                        elx.AddClass("readonly").Attribute("disabled", "disabled");
                    }
                    else
                    {
                        elx.RemoveClass("readonly").RemoveAttr("disabled");
                    }
                }
                else
                {
                    if (isReadOnly)
                    {
                        elx.AddClass("readonly").Attribute("readonly", "readonly");
                    }
                    else
                    {
                        elx.RemoveClass("readonly").RemoveAttr("readonly");
                    }
                }

                return(true);
            });

            return(elements);
        }
예제 #7
0
        public static void ExecuteOnceWhenShown(jQueryObject element, Action callback)
        {
            autoIncrement++;
            string eventClass = "ExecuteOnceWhenShown" + autoIncrement;

            bool executed = false;

            if (element.Is(":visible"))
                callback();
            else
            {
                jQueryObject uiTabs = element.Closest(".ui-tabs");
                if (uiTabs.Length > 0)
                {
                    uiTabs.Bind("tabsshow." + eventClass, delegate(jQueryEvent e)
                    {
                        if (element.Is(":visible"))
                        {
                            uiTabs.Unbind("tabsshow." + eventClass);

                            if (!executed)
                            {
                                executed = true;
                                element.Unbind("shown." + eventClass);
                                callback();
                            }
                        }
                    });
                }

                jQueryObject dialog;
                if (element.HasClass("ui-dialog"))
                    dialog = element.Children(".ui-dialog-content");
                else
                    dialog = element.Closest(".ui-dialog-content");

                if (dialog.Length > 0)
                    dialog.Bind("dialogopen." + eventClass, delegate
                    {
                        dialog.Unbind("dialogopen." + eventClass);

                        if (element.Is(":visible") && !executed)
                        {
                            executed = true;
                            element.Unbind("shown." + eventClass);
                            callback();
                        }
                    });

                element.Bind("shown." + eventClass, delegate
                {
                    if (element.Is(":visible"))
                    {
                        element.Unbind("shown." + eventClass);

                        if (!executed)
                        {
                            executed = true;
                            callback();
                        }
                    }
                });
            }
        }
예제 #8
0
        public static void ExecuteOnceWhenShown(jQueryObject element, Action callback)
        {
            autoIncrement++;
            string eventClass = "ExecuteOnceWhenShown" + autoIncrement;

            bool executed = false;

            if (element.Is(":visible"))
            {
                callback();
            }
            else
            {
                jQueryObject uiTabs = element.Closest(".ui-tabs");
                if (uiTabs.Length > 0)
                {
                    uiTabs.Bind("tabsshow." + eventClass, delegate(jQueryEvent e)
                    {
                        if (element.Is(":visible"))
                        {
                            uiTabs.Unbind("tabsshow." + eventClass);

                            if (!executed)
                            {
                                executed = true;
                                element.Unbind("shown." + eventClass);
                                callback();
                            }
                        }
                    });
                }

                jQueryObject dialog;
                if (element.HasClass("ui-dialog"))
                {
                    dialog = element.Children(".ui-dialog-content");
                }
                else
                {
                    dialog = element.Closest(".ui-dialog-content");
                }

                if (dialog.Length > 0)
                {
                    dialog.Bind("dialogopen." + eventClass, delegate
                    {
                        dialog.Unbind("dialogopen." + eventClass);

                        if (element.Is(":visible") && !executed)
                        {
                            executed = true;
                            element.Unbind("shown." + eventClass);
                            callback();
                        }
                    });
                }

                element.Bind("shown." + eventClass, delegate
                {
                    if (element.Is(":visible"))
                    {
                        element.Unbind("shown." + eventClass);

                        if (!executed)
                        {
                            executed = true;
                            callback();
                        }
                    }
                });
            }
        }
예제 #9
0
        static PhotoManager()
        {
            jQuery.OnDocumentReady(delegate()
            {
                // let the gallery items be draggable
                jQuery.Select("li", jQuery.Select("#gallery"))
                .Plugin <DraggableObject>()
                .Draggable(new DraggableOptions(
                               DraggableOption.Cancel, "a.ui-icon",                                                               // clicking an icon won't initiate dragging
                               DraggableOption.Revert, "invalid",                                                                 // when not dropped, the item will revert back to its initial position
                               DraggableOption.Containment, jQuery.Select("#demo-frame").Length > 0 ? "#demo-frame" : "document", // stick to demo-frame if present
                               DraggableOption.Helper, "clone",
                               DraggableOption.Cursor, "move"
                               ));

                // let the trash be droppable, accepting the gallery items
                jQuery.Select("#trash")
                .Plugin <DroppableObject>()
                .Droppable(new DroppableOptions(
                               DroppableOption.Accept, "#gallery > li",
                               DroppableOption.ActiveClass, "ui-state-highlight",
                               DroppableEvents.Drop, new jQueryUIEventHandler <DropEvent>(delegate(jQueryEvent e, DropEvent ui)
                {
                    DeleteImage(ui.Draggable);
                })));

                // let the gallery be droppable as well, accepting items from the trash
                jQuery.Select("#gallery")
                .Plugin <DroppableObject>()
                .Droppable(new DroppableOptions(
                               DroppableOption.Accept, "#trash li",
                               DroppableOption.ActiveClass, "custom-state-active",
                               DroppableEvents.Drop, new jQueryUIEventHandler <DropEvent>(delegate(jQueryEvent e, DropEvent ui)
                {
                    RecycleImage(ui.Draggable);
                })));


                // resolve the icons behavior with event delegation
                jQuery.Select("ul.gallery > li")
                .Click(delegate(jQueryEvent e)
                {
                    jQueryObject item   = jQuery.This;
                    jQueryObject target = jQuery.FromElement(e.Target);

                    if (target.Is("a.ui-icon-trash"))
                    {
                        DeleteImage(item);
                    }
                    else if (target.Is("a.ui-icon-zoomin"))
                    {
                        ViewLargerImage(target);
                    }
                    else if (target.Is("a.ui-icon-refresh"))
                    {
                        RecycleImage(item);
                    }

                    e.PreventDefault();
                    e.StopPropagation();
                });
            });
        }
예제 #10
0
        private static void Arrange(jQueryObject element)
        {
#if DEBUG
            if (!element.Is("." + CssClassNameAdvancedLayout))
            {
                throw new Exception("Element not marked for advanced layout.");
            }
#endif
            // does element have its al state parsed?
            AdvancedLayoutState elementState = (AdvancedLayoutState)element.GetDataValue(DataNameLayoutState);
            if (elementState == null)
            {
                element.Data(DataNameLayoutState, elementState = ParseAdvancedLayout(element));
            }

            // grab parents
            jQueryObject parent = element.Parent();
            jQueryObject offsetParent = element.OffsetParent();
            if (offsetParent.Length == 0 || parent.Length == 0)
            {
                return;
            }

            bool parentIsOffsetParent = offsetParent[0] == parent[0];
#if DEBUG
            if (!parentIsOffsetParent && element.Is(":visible"))
            {
                throw new Exception("Parent must use position:absolute|fixed|relative;.");
            }
#endif
            if (!parentIsOffsetParent)
            {
                return;
            }

            // gather parent padding and client dimensions
            DimensionsAndPadding parentDimensions = null;
            parentDimensions = GetDimensionsAndPadding(parent);

            // detect parent's coordinates in offset-parent frame.
            float contentStartInOffsetSpaceX, contentStartInOffsetSpaceY;
            {
                if (parentIsOffsetParent)
                { // parent is offset parent. we know our local frame.
                    contentStartInOffsetSpaceX = 0;
                    contentStartInOffsetSpaceY = 0;
                }
                else
                { // experimental support for staticly positioned parent.

                    parent.Prepend(_frameDetector);

                    jQueryPosition parentContentFrameInDocumentSpace = _frameDetector.GetOffset();
                    jQueryPosition offsetParentFrameInDocumentSpace = offsetParent.GetOffset();
                    if (parentContentFrameInDocumentSpace != null && offsetParentFrameInDocumentSpace != null)
                    {
                        contentStartInOffsetSpaceX = parentContentFrameInDocumentSpace.Left - offsetParentFrameInDocumentSpace.Left - parentDimensions.PaddingLeft;
                        contentStartInOffsetSpaceY = parentContentFrameInDocumentSpace.Top - offsetParentFrameInDocumentSpace.Top - parentDimensions.PaddingTop;
                    }
                    else
                    {
                        jQueryPosition contentStartInOffsetSpace = _frameDetector.Position();
                        if (contentStartInOffsetSpace != null)
                        {
                            contentStartInOffsetSpaceX = contentStartInOffsetSpace.Left - parentDimensions.PaddingLeft;
                            contentStartInOffsetSpaceY = contentStartInOffsetSpace.Top - parentDimensions.PaddingTop;
                        }
                        else
                        {
                            contentStartInOffsetSpaceX = 0;
                            contentStartInOffsetSpaceY = 0;
                        }
                    }

                    _frameDetector.Remove();
                }

            }

            double topBoundary = contentStartInOffsetSpaceY + parentDimensions.PaddingTop + elementState.Margin.Top;
            double bottomBoundary = contentStartInOffsetSpaceY + parentDimensions.ClientHeight - parentDimensions.PaddingBottom - elementState.Margin.Bottom;
            double leftBoundary = contentStartInOffsetSpaceX + parentDimensions.PaddingLeft + elementState.Margin.Left;
            double rightBoundary = contentStartInOffsetSpaceX + parentDimensions.ClientWidth - parentDimensions.PaddingRight - elementState.Margin.Right;


            // determine where to position
            int top = 0;
            int left = 0;
            int width = 0;
            int height = 0;
            switch (elementState.VerticalAlignment)
            {
                case VerticalAlignment.Top:
                    height = Math.Round(elementState.Height - elementState.Padding.Top - elementState.Padding.Bottom);
                    top = Math.Round(topBoundary);
                    break;

                case VerticalAlignment.Center:
                    height = Math.Round(elementState.Height - elementState.Padding.Top - elementState.Padding.Bottom);
                    top = Math.Round(topBoundary * 0.5 + bottomBoundary * 0.5 - height * 0.5);
                    break;

                case VerticalAlignment.Bottom:
                    height = Math.Round(elementState.Height - elementState.Padding.Top - elementState.Padding.Bottom);
                    top = Math.Round(contentStartInOffsetSpaceY + parentDimensions.ClientHeight - parentDimensions.PaddingBottom - elementState.Margin.Bottom - elementState.Height);
                    break;

                case VerticalAlignment.Stretch:
                    height = Math.Round(bottomBoundary - topBoundary - elementState.Padding.Top - elementState.Padding.Bottom);
                    top = Math.Round(topBoundary);
                    break;

            }
            switch (elementState.HorizontalAlignment)
            {
                case HorizontalAlignment.Left:
                    width = Math.Round(elementState.Width - elementState.Padding.Left - elementState.Padding.Right);
                    left = Math.Round(leftBoundary);
                    break;

                case HorizontalAlignment.Center:
                    width = Math.Round(elementState.Width - elementState.Padding.Left - elementState.Padding.Right);
                    left = Math.Round(leftBoundary * 0.5 + rightBoundary * 0.5 - width * 0.5);
                    break;

                case HorizontalAlignment.Right:
                    width = Math.Round(elementState.Width - elementState.Padding.Left - elementState.Padding.Right);
                    left = Math.Round(contentStartInOffsetSpaceX + parentDimensions.ClientWidth - parentDimensions.PaddingRight - elementState.Margin.Right - elementState.Width);
                    break;

                case HorizontalAlignment.Stretch:
                    width = Math.Round(rightBoundary - leftBoundary - elementState.Padding.Left - elementState.Padding.Right);
                    left = Math.Round(leftBoundary);
                    break;
            }

            if (width <= 0)
            {
                width = 0;
            }
            if (height <= 0)
            {
                height = 0;
            }

            element.CSS(
                new Dictionary(
                    "position", "absolute",
                    "top", top,
                    "left", left,
                    "width", width,
                    "height", height,
                    "padding-top", elementState.Padding.Top,
                    "padding-right", elementState.Padding.Right,
                    "padding-bottom", elementState.Padding.Bottom,
                    "padding-left", elementState.Padding.Left
                )
            );
        }
예제 #11
0
 /// <summary>
 /// Return the current value of the checkbox control as a Boolean.
 /// </summary>
 /// <returns></returns>
 private bool GetValue()
 {
     return(input.Is(":checked"));
 }