2012-06-26 00:13:30 +02:00
|
|
|
-- @docclass
|
2012-03-27 00:24:01 +02:00
|
|
|
UIResizeBorder = extends(UIWidget)
|
|
|
|
|
|
|
|
function UIResizeBorder.create()
|
|
|
|
local resizeborder = UIResizeBorder.internalCreate()
|
|
|
|
resizeborder:setFocusable(false)
|
|
|
|
resizeborder.minimum = 0
|
|
|
|
resizeborder.maximum = 1000
|
|
|
|
return resizeborder
|
|
|
|
end
|
|
|
|
|
|
|
|
function UIResizeBorder:onHoverChange(hovered)
|
|
|
|
if hovered then
|
2012-06-26 00:13:30 +02:00
|
|
|
if g_mouse.isCursorChanged() or g_mouse.isPressed() then return end
|
2012-03-27 00:24:01 +02:00
|
|
|
if self:getWidth() > self:getHeight() then
|
2012-06-26 00:13:30 +02:00
|
|
|
g_mouse.setVerticalCursor()
|
2012-03-27 00:24:01 +02:00
|
|
|
self.vertical = true
|
|
|
|
else
|
2012-06-26 00:13:30 +02:00
|
|
|
g_mouse.setHorizontalCursor()
|
2012-03-27 00:24:01 +02:00
|
|
|
self.vertical = false
|
|
|
|
end
|
2012-03-28 21:09:45 +02:00
|
|
|
self.hovering = true
|
2012-03-27 00:24:01 +02:00
|
|
|
if not self:isPressed() then
|
2012-06-26 00:13:30 +02:00
|
|
|
g_effects.fadeIn(self)
|
2012-03-27 00:24:01 +02:00
|
|
|
end
|
|
|
|
else
|
2012-03-28 21:09:45 +02:00
|
|
|
if not self:isPressed() and self.hovering then
|
2012-06-26 00:13:30 +02:00
|
|
|
g_mouse.restoreCursor()
|
|
|
|
g_effects.fadeOut(self)
|
2012-03-28 21:09:45 +02:00
|
|
|
self.hovering = false
|
2012-03-27 00:24:01 +02:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
function UIResizeBorder:onMouseMove(mousePos, mouseMoved)
|
|
|
|
if self:isPressed() then
|
|
|
|
if self.vertical then
|
|
|
|
local delta = mousePos.y - self:getY() - self:getHeight()/2
|
|
|
|
local parent = self:getParent()
|
|
|
|
local newsize = math.min(math.max(parent:getHeight() + delta, self.minimum), self.maximum)
|
|
|
|
if newsize ~= currentMargin then
|
|
|
|
self.newsize = newsize
|
|
|
|
if not self.event or self.event:isExecuted() then
|
|
|
|
self.event = addEvent(function()
|
|
|
|
parent:setHeight(self.newsize)
|
|
|
|
end)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
else
|
|
|
|
local delta = mousePos.x - self:getX() - self:getWidth()/2
|
|
|
|
local parent = self:getParent()
|
|
|
|
local newsize = math.min(math.max(parent:getWidth() + delta, self.minimum), self.maximum)
|
|
|
|
if newsize ~= currentMargin then
|
|
|
|
self.newsize = newsize
|
|
|
|
if not self.event or self.event:isExecuted() then
|
|
|
|
self.event = addEvent(function()
|
|
|
|
parent:setWidth(self.newsize)
|
|
|
|
end)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
return true
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
function UIResizeBorder:onMouseRelease(mousePos, mouseButton)
|
|
|
|
if not self:isHovered() then
|
2012-06-26 00:13:30 +02:00
|
|
|
g_mouse.restoreCursor()
|
|
|
|
g_effects.fadeOut(self)
|
2012-03-28 21:09:45 +02:00
|
|
|
self.hovering = false
|
2012-03-27 00:24:01 +02:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
function UIResizeBorder:onStyleApply(styleName, styleNode)
|
|
|
|
for name,value in pairs(styleNode) do
|
|
|
|
if name == 'maximum' then
|
|
|
|
self:setMaximum(tonumber(value))
|
|
|
|
elseif name == 'minimum' then
|
|
|
|
self:setMinimum(tonumber(value))
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2012-06-21 21:31:22 +02:00
|
|
|
function UIResizeBorder:onVisibilityChange(visible)
|
|
|
|
if visible and self.maximum == self.minimum then
|
|
|
|
self:hide()
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2012-03-27 00:24:01 +02:00
|
|
|
function UIResizeBorder:setMaximum(maximum)
|
|
|
|
self.maximum = maximum
|
2012-06-21 21:31:22 +02:00
|
|
|
if self.maximum == self.minimum then
|
|
|
|
self:hide()
|
|
|
|
end
|
2012-03-27 00:24:01 +02:00
|
|
|
end
|
|
|
|
|
|
|
|
function UIResizeBorder:setMinimum(minimum)
|
|
|
|
self.minimum = minimum
|
2012-06-21 21:31:22 +02:00
|
|
|
if self.maximum == self.minimum then
|
|
|
|
self:hide()
|
|
|
|
end
|
2012-03-27 00:24:01 +02:00
|
|
|
end
|
|
|
|
|
|
|
|
function UIResizeBorder:getMaximum() return self.maximum end
|
|
|
|
function UIResizeBorder:getMinimum() return self.minimum end
|