Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
Clear All
new posts

    StatusBar widget

    So I'm playing around with SC now and I like what I see. As my first contribution to the community, here's a statusBar widget. I haven't see one in the normal widget set, so I made one as a intro to the framework.

    Also, I'm sorry if this is the wrong place in the forums. I couldn't really find a better place.

    Code:
    isc.defineClass("StatusBar", ToolStrip);
    
    isc.StatusBar.addProperties({
        width: "100%",
        height:24,
        animateMembers: true,
        defaultText: "Ready",
        defaultIcon: "",
        currentTimeout: null // Internal use only
    });
    
    isc.StatusBar.addMethods({
        initWidget: function() {
            this.lbl = isc.Label.create({
                    width: "*",
                    wrap: false,
                    baseStyle: "statusBarText normal",
                    icon: "",
                    contents: "",
                    animateTime:300
            });
            this.addMember(this.lbl);
        },
        setStatus: function(status, icon, timeout) {
            if (this.currentTimeout) {
                clearTimeout(this.currentTimeout);
                this.currentTimeout = null;
            }
            status = typeof(status) == 'string' ? status : this.defaultText;
            icon = icon ? icon : this.defaultIcon;
    
            if (this.animateMembers && this.getContents !== "") {
                this.lbl.animateFade(0);
            }
            var setMsg = function(self, status, icon, timeout) {
                return function inside() {
                    self.currentTimeout = null;
                    self.lbl.setIcon(icon);
                    self.lbl.setContents(status);
                    if (self.animateMembers) {
                        self.lbl.animateFade(100);
                    }
                    
                    if (typeof(timeout) == 'number') {
                        var f = function() {self.clearStatus.apply(self, []);};
                        self.currentTimeout = setTimeout(f, self.lbl.animateTime+timeout);
                    }
                };
            }(this, status, icon, timeout);
    
            this.currentTimeout = setTimeout(setMsg, this.lbl.animateTime);
        },
        clearStatus: function() {
            this.setStatus();
        }
    });
    Configuration Properties (Inherits from ToolStrip):

    width, height: (self-explanatory)
    animateMembers: (boolean default - true) set to False if you wish for status changes to happen immediately without the pretty fading
    defaultText: (string default - "Ready") The text displayed when calling the clearStatus method
    defaultIcon: (string default - "") The URL of an icon to display along with the default text.
    members: An array of members of the StatusBar. By default it includes a label that is used for the statusText and Icon.

    Instance Properties:

    lbl - a label widget used to display the statusText and statusIcon

    Instance Methods:

    setStatus: Take parameters:
    • statusText - string to display on the statusBar
    • statusIcon - (optional) url of an icon to display along with the statusText
    • timeout - (optional) integer value of milliseconds before the status reverts to the defaultText.


    clearStatus: Takes no parameters, sets the statusBar to display the defaultText and defaultIcon if supplied.
    Last edited by tfarrell; 11 Jul 2009, 20:17.
Working...
X