require "ISUI/ISUIElement" ISPanel = ISUIElement:derive("ISPanel"); --************************************************************************-- --** ISPanel:initialise --** --************************************************************************-- function ISPanel:initialise() ISUIElement.initialise(self); end function ISPanel:noBackground() self.background = false; end function ISPanel:close() self:setVisible(false); end --************************************************************************-- --** ISPanel:render --** --************************************************************************-- function ISPanel:prerender() if self.background then self:drawRectStatic(0, 0, self.width, self.height, self.backgroundColor.a, self.backgroundColor.r, self.backgroundColor.g, self.backgroundColor.b); self:drawRectBorderStatic(0, 0, self.width, self.height, self.borderColor.a, self.borderColor.r, self.borderColor.g, self.borderColor.b); end end function ISPanel:onMouseUp(x, y) if not self.moveWithMouse then return; end if not self:getIsVisible() then return; end self.moving = false; if ISMouseDrag.tabPanel then ISMouseDrag.tabPanel:onMouseUp(x,y); end ISMouseDrag.dragView = nil; end function ISPanel:onMouseUpOutside(x, y) if not self.moveWithMouse then return; end if not self:getIsVisible() then return; end self.moving = false; ISMouseDrag.dragView = nil; end function ISPanel:onMouseDown(x, y) if not self.moveWithMouse then return true; end if not self:getIsVisible() then return; end if not self:isMouseOver() then return -- this happens with setCapture(true) end self.downX = x; self.downY = y; self.moving = true; self:bringToTop(); end function ISPanel:onMouseMoveOutside(dx, dy) if not self.moveWithMouse then return; end self.mouseOver = false; if self.moving then if self.parent then self.parent:setX(self.parent.x + dx); self.parent:setY(self.parent.y + dy); else self:setX(self.x + dx); self:setY(self.y + dy); self:bringToTop(); end end end function ISPanel:onMouseMove(dx, dy) if not self.moveWithMouse then return; end self.mouseOver = true; if self.moving then if self.parent then self.parent:setX(self.parent.x + dx); self.parent:setY(self.parent.y + dy); else self:setX(self.x + dx); self:setY(self.y + dy); self:bringToTop(); end --ISMouseDrag.dragView = self; end end --************************************************************************-- --** ISPanel:new --** --************************************************************************-- function ISPanel:new (x, y, width, height) local o = {} --o.data = {} o = ISUIElement:new(x, y, width, height); setmetatable(o, self) self.__index = self o.x = x; o.y = y; o.background = true; o.backgroundColor = {r=0, g=0, b=0, a=0.5}; o.borderColor = {r=0.4, g=0.4, b=0.4, a=1}; o.width = width; o.height = height; o.anchorLeft = true; o.anchorRight = false; o.anchorTop = true; o.anchorBottom = false; o.moveWithMouse = false; return o end