Upgrade to ExtJS 3.3.0 - Released 10/06/2010
[extjs.git] / examples / calendar / src / dd / StatusProxy.js
diff --git a/examples/calendar/src/dd/StatusProxy.js b/examples/calendar/src/dd/StatusProxy.js
new file mode 100644 (file)
index 0000000..28dbb59
--- /dev/null
@@ -0,0 +1,81 @@
+/*!
+ * Ext JS Library 3.3.0
+ * Copyright(c) 2006-2010 Ext JS, Inc.
+ * licensing@extjs.com
+ * http://www.extjs.com/license
+ */
+/*
+ * @class Ext.calendar.StatusProxy
+ * A specialized drag proxy that supports a drop status icon, {@link Ext.Layer} styles and auto-repair. It also
+ * contains a calendar-specific drag status message containing details about the dragged event's target drop date range.  
+ * This is the default drag proxy used by all calendar views.
+ * @constructor
+ * @param {Object} config
+ */
+Ext.calendar.StatusProxy = function(config) {
+    Ext.apply(this, config);
+    this.id = this.id || Ext.id();
+    this.el = new Ext.Layer({
+        dh: {
+            id: this.id,
+            cls: 'ext-dd-drag-proxy x-dd-drag-proxy ' + this.dropNotAllowed,
+            cn: [
+            {
+                cls: 'x-dd-drop-icon'
+            },
+            {
+                cls: 'ext-dd-ghost-ct',
+                cn: [
+                {
+                    cls: 'x-dd-drag-ghost'
+                },
+                {
+                    cls: 'ext-dd-msg'
+                }
+                ]
+            }
+            ]
+        },
+        shadow: !config || config.shadow !== false
+    });
+    this.ghost = Ext.get(this.el.dom.childNodes[1].childNodes[0]);
+    this.message = Ext.get(this.el.dom.childNodes[1].childNodes[1]);
+    this.dropStatus = this.dropNotAllowed;
+};
+
+Ext.extend(Ext.calendar.StatusProxy, Ext.dd.StatusProxy, {
+    /**
+     * @cfg {String} moveEventCls
+     * The CSS class to apply to the status element when an event is being dragged (defaults to 'ext-cal-dd-move').
+     */
+    moveEventCls: 'ext-cal-dd-move',
+    /**
+     * @cfg {String} addEventCls
+     * The CSS class to apply to the status element when drop is not allowed (defaults to 'ext-cal-dd-add').
+     */
+    addEventCls: 'ext-cal-dd-add',
+
+    // inherit docs
+    update: function(html) {
+        if (typeof html == 'string') {
+            this.ghost.update(html);
+        } else {
+            this.ghost.update('');
+            html.style.margin = '0';
+            this.ghost.dom.appendChild(html);
+        }
+        var el = this.ghost.dom.firstChild;
+        if (el) {
+            Ext.fly(el).setStyle('float', 'none').setHeight('auto');
+            Ext.getDom(el).id += '-ddproxy';
+        }
+    },
+
+    /**
+     * Update the calendar-specific drag status message without altering the ghost element.
+     * @param {String} msg The new status message
+     */
+    updateMsg: function(msg) {
+        this.message.update(msg);
+    }
+});
\ No newline at end of file