lotrointerface.com
Search Downloads

LoTROInterface SVN KragenBars

[/] [branches/] [3.10/] [UI/] [SimpleDragBar.lua] - Blame information for rev 19

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 6 Kragenwar-3044
import "Turbine.UI";
2 Kragenwar-3044
 
3 Kragenwar-3044
SimpleDragBar = class(Turbine.UI.Window);
4 Kragenwar-3044
 
5 Kragenwar-3044
function SimpleDragBar:Constructor(target, name)
6 Kragenwar-3044
    Turbine.UI.Window.Constructor(self);
7 Kragenwar-3044
 
8 Kragenwar-3044
    self.wndTarget = target;
9 Kragenwar-3044
    self.barOnTop = true;
10 Kragenwar-3044
    self.visible = false;
11 Kragenwar-3044
    self.draggable = false;
12 Kragenwar-3044
    self:SetBackColor(Turbine.UI.Color(.5, 0, 0, 0));
13 Kragenwar-3044
 
14 Kragenwar-3044
    -- the drag label
15 Kragenwar-3044
    self.dragLabel = Turbine.UI.Label();
16 Kragenwar-3044
    self.dragLabel:SetParent(self);
17 Kragenwar-3044
    self.dragLabel:SetForeColor(Turbine.UI.Color(1, 1, 1, 1));
18 Kragenwar-3044
    self.dragLabel:SetOutlineColor(Turbine.UI.Color(1, 0, 0, 0));
19 Kragenwar-3044
    self.dragLabel:SetFontStyle(Turbine.UI.FontStyle.Outline);
20 Kragenwar-3044
    self.dragLabel:SetFont(Turbine.UI.Lotro.Font.Verdana16);
21 Kragenwar-3044
    self.dragLabel:SetTextAlignment(Turbine.UI.ContentAlignment.TopCenter);
22 Kragenwar-3044
    self.dragLabel:SetPosition(1, 0);
23 Kragenwar-3044
    self.dragLabel:SetText(name);
24 Kragenwar-3044
 
25 Kragenwar-3044
    -- center
26 Kragenwar-3044
    self.center = Turbine.UI.Control();
27 Kragenwar-3044
    self.center:SetParent(self);
28 Kragenwar-3044
    self.center:SetBackColor(Turbine.UI.Color(0, 0, 0, 0));
29 Kragenwar-3044
    self.center:SetPosition(1, 24);
30 Kragenwar-3044
 
31 Kragenwar-3044
    -- listeners
32 Kragenwar-3044
    self.dragLabel.MouseDown = function(sender, args)
33 Kragenwar-3044
        if (args.Button == Turbine.UI.MouseButton.Left) then
34 Kragenwar-3044
            self.dragStartX = args.X;
35 Kragenwar-3044
            self.dragStartY = args.Y;
36 Kragenwar-3044
            self.dragging = true;
37 Kragenwar-3044
            if (type(self.wndTarget.DragStart) == "function") then
38 Kragenwar-3044
                self.wndTarget.DragStart();
39 Kragenwar-3044
            end
40 Kragenwar-3044
        end
41 Kragenwar-3044
    end
42 Kragenwar-3044
 
43 Kragenwar-3044
    self.dragLabel.MouseMove = function(sender, args)
44 Kragenwar-3044
        if (self.dragging) then
45 Kragenwar-3044
            local left, top = self.wndTarget:GetPosition();
46 Kragenwar-3044
            local width, height = self.wndTarget:GetSize();
47 Kragenwar-3044
            local x = left + (args.X - self.dragStartX);
48 Kragenwar-3044
            local y = top + (args.Y - self.dragStartY);
49 Kragenwar-3044
            x, y = validatePosition(x, y, width, height);
50 Kragenwar-3044
 
51 Kragenwar-3044
            self.wndTarget:SetPosition(x, y);
52 Kragenwar-3044
            self:RecalculatePosition();
53 Kragenwar-3044
        end
54 Kragenwar-3044
    end
55 Kragenwar-3044
 
56 Kragenwar-3044
    self.dragLabel.MouseUp = function(sender, args)
57 Kragenwar-3044
        if (args.Button == Turbine.UI.MouseButton.Left) then
58 Kragenwar-3044
            self.dragging = false;
59 Kragenwar-3044
            if (type(self.wndTarget.DragEnd) == "function") then
60 Kragenwar-3044
                self.wndTarget.DragEnd();
61 Kragenwar-3044
            end
62 Kragenwar-3044
        end
63 Kragenwar-3044
    end
64 Kragenwar-3044
 
65 Kragenwar-3044
    -- refresh
66 Kragenwar-3044
    self:Refresh();
67 Kragenwar-3044
end
68 Kragenwar-3044
 
69 Kragenwar-3044
function SimpleDragBar:SetBarOnTop(top)
70 Kragenwar-3044
    self.barOnTop = top;
71 Kragenwar-3044
    self.dragLabel:SetTextAlignment(top and Turbine.UI.ContentAlignment.TopCenter or Turbine.UI.ContentAlignment.BottomCenter);
72 Kragenwar-3044
    self:Refresh();
73 Kragenwar-3044
end
74 Kragenwar-3044
 
75 Kragenwar-3044
function SimpleDragBar:SetAllowsDragging(allow)
76 Kragenwar-3044
end
77 Kragenwar-3044
 
78 Kragenwar-3044
function SimpleDragBar:SetAllowsHUDHiding(allow, show)
79 Kragenwar-3044
end
80 Kragenwar-3044
 
81 Kragenwar-3044
function SimpleDragBar:SetHUDVisible(visible)
82 Kragenwar-3044
    self.visible = visible;
83 Kragenwar-3044
    self.wndTarget:SetVisible(visible);
84 Kragenwar-3044
    self:SetVisible(visible and self.draggable or false);
85 Kragenwar-3044
end
86 Kragenwar-3044
 
87 Kragenwar-3044
function SimpleDragBar:SetDraggable(draggable)
88 Kragenwar-3044
    self.draggable = draggable;
89 Kragenwar-3044
    self:SetVisible(draggable and self.visible or false);
90 Kragenwar-3044
end
91 Kragenwar-3044
 
92 Kragenwar-3044
function SimpleDragBar:Refresh()
93 Kragenwar-3044
    self:RecalculateSize();
94 Kragenwar-3044
    self:RecalculatePosition();
95 Kragenwar-3044
end
96 Kragenwar-3044
 
97 Kragenwar-3044
function SimpleDragBar:RecalculateSize()
98 Kragenwar-3044
    local width, height = self.wndTarget:GetSize();
99 Kragenwar-3044
 
100 Kragenwar-3044
    self:SetSize(width + 2, 25 + height);
101 Kragenwar-3044
    self.dragLabel:SetSize(width, 24);
102 Kragenwar-3044
    self.center:SetSize(width, height);
103 Kragenwar-3044
end
104 Kragenwar-3044
 
105 Kragenwar-3044
function SimpleDragBar:RecalculatePosition()
106 Kragenwar-3044
    local width, height = self.wndTarget:GetSize();
107 Kragenwar-3044
    local x, y = self.wndTarget:GetPosition();
108 Kragenwar-3044
 
109 Kragenwar-3044
    if (self.barOnTop) then
110 Kragenwar-3044
        self:SetPosition(x - 1, math.max(y - 24, 0));
111 Kragenwar-3044
        self.dragLabel:SetPosition(1, 0);
112 Kragenwar-3044
        self.center:SetPosition(1, 24);
113 Kragenwar-3044
    else
114 Kragenwar-3044
        self:SetPosition(x - 1, math.min(y - 1, Turbine.UI.Display:GetHeight() - (25 + height)));
115 Kragenwar-3044
        self.dragLabel:SetPosition(1, height);
116 Kragenwar-3044
        self.center:SetPosition(1, 1);
117 Kragenwar-3044
    end
118 Kragenwar-3044
end

All times are GMT -5. The time now is 11:30 PM.


Our Network
EQInterface | EQ2Interface | Minion | WoWInterface | ESOUI | LoTROInterface | MMOUI | Swtorui