public override void onMouseDragged()
        {
            GuiCanvas Canvas = "Canvas";

            GuiSwatchButtonCtrl payload = new ObjectCreator("GuiSwatchButtonCtrl").Create();
            payload.assignFieldsFrom(this);
            payload.position = "0 0 ".AsPoint2I();
            payload["dragSourceControl"] = this;

            int xOffset = payload.extent.x/2;
            int yOffset = payload.extent.y/2;
            Point2I cursorpos = Canvas.getCursorPos();
            int xPos = cursorpos.x - xOffset;
            int yPos = cursorpos.y - yOffset;

            // Create the drag control.

            ObjectCreator oc = new ObjectCreator("GuiDragAndDropControl");
            oc["canSaveDynamicFields"] = "0";
            oc["Profile"] = "ToolsGuiSolidDefaultProfile";
            oc["HorizSizing"] = "right";
            oc["VertSizing"] = "bottom";
            oc["Position"] = xPos + ' ' + yPos;
            oc["extent"] = payload.extent;
            oc["MinExtent"] = "4 4";
            oc["canSave"] = "1";
            oc["Visible"] = "1";
            oc["hovertime"] = "1000";
            oc["deleteOnMouseUp"] = true;
            oc["class"] = "GuiDragAndDropControlType_ColorSwatch";

            GuiDragAndDropControl ctrl = oc.Create();

            ctrl.add(payload);

            // Start drag.

            ((SimSet) Canvas.getContent()).add(ctrl);
            ctrl.startDragging(xOffset, yOffset);
        }