lotrointerface.com
Search Downloads

LoTROInterface SVN KragenBars

[/] [branches/] [3.0.0/] [KragenPlugs/] [UI/] [CheckBox.lua] - Rev 40

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

import "Turbine.UI";
import "KragenPlugs.Utils";

CheckBox = class(Turbine.UI.Control);

-- colors
CheckBox.ItemColor = Turbine.UI.Color(245/255, 222/255, 147/255);
CheckBox.DisabledColor = Turbine.UI.Color(162/255, 162/255, 162/255);

function CheckBox:Constructor()
    Turbine.UI.Control.Constructor(self);

    -- state
    self.checked = false;
    
    -- text label
    self.label = Turbine.UI.Label();
    self.label:SetParent(self);
    self.label:SetPosition(0, 0);
    self.label:SetFont(Turbine.UI.Lotro.Font.TrajanPro14);
    self.label:SetForeColor(CheckBox.ItemColor);
    self.label:SetTextAlignment(Turbine.UI.ContentAlignment.MiddleRight);
    self.label:SetMouseVisible(false);
    
    -- check
    self.check = Turbine.UI.Control();
    self.check:SetParent(self);
    self.check:SetSize(16, 16);
    self.check:SetBlendMode(Turbine.UI.BlendMode.AlphaBlend);
    self.check:SetBackground("KragenPlugs/UI/Resources/checkbox_02_empty.tga");
    
    -- listeners
    self.check.MouseClick = function(sender, args)
        if (not self:IsEnabled()) then
            return;
        end
        
        if (args.Button == Turbine.UI.MouseButton.Left) then
            self:SetChecked(not self.checked);
        end
    end
end

function CheckBox:IsChecked()
    return self.checked;
end

function CheckBox:SetChecked(checked)
    self.checked = checked;
    self:UpdateState();
    if (type(self.CheckedChanged) == "function") then
        self:CheckedChanged({});
    end
end

function CheckBox:SetEnabled(enabled)
    Turbine.UI.Control.SetEnabled(self, enabled);
    self:UpdateState();
end

function CheckBox:SetText(text)
    self.label:SetText(text);
end

function CheckBox:AlignLeft(bol)
    local width, height = self:GetSize();

        if (bol) then
                self.label:SetTextAlignment(Turbine.UI.ContentAlignment.MiddleLeft);
                self.label:SetSize(width - 22, height);
                self.label:SetPosition(22, 0);
                self.check:SetPosition(0, ((height - 16) / 2));
        else
                self.label:SetSize(width - 22, height);
                self.check:SetPosition(width - 16, ((height - 16) / 2));
        end

end

function CheckBox:SetSize(width, height)
    self.base.SetSize(self, width, height);
    self:AlignLeft(false);
end

function CheckBox:Layout()
    local width, height = self:GetSize();
        self.label:SetSize(width - 22, height);
        self.check:SetPosition(width - 16, ((height - 16) / 2));

end

function CheckBox:UpdateState()
    local enabled = self:IsEnabled();
    self.label:SetForeColor(enabled and CheckBox.ItemColor or CheckBox.DisabledColor);
    if (self.checked) then
        self.check:SetBackground("KragenPlugs/UI/Resources/checkbox_02"..(enabled and "" or "_ghosted")..".tga");
    else
        self.check:SetBackground("KragenPlugs/UI/Resources/checkbox_02_empty"..(enabled and "" or "_ghosted")..".tga");
    end
end

Go to most recent revision | Compare with Previous | Blame


All times are GMT -5. The time now is 12:45 PM.


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