// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "ui/views/examples/label_example.h" #include "base/strings/utf_string_conversions.h" #include "ui/views/border.h" #include "ui/views/controls/label.h" #include "ui/views/layout/box_layout.h" #include "ui/views/view.h" using base::ASCIIToUTF16; using base::WideToUTF16; namespace views { namespace examples { namespace { // A Label with a constrained preferred size to demonstrate eliding or wrapping. class PreferredSizeLabel : public Label { public: PreferredSizeLabel() : Label() { SetBorder(Border::CreateSolidBorder(2, SK_ColorCYAN)); } virtual ~PreferredSizeLabel() {} // Label: virtual gfx::Size GetPreferredSize() const OVERRIDE { return gfx::Size(100, 40); } private: DISALLOW_COPY_AND_ASSIGN(PreferredSizeLabel); }; } // namespace LabelExample::LabelExample() : ExampleBase("Label") {} LabelExample::~LabelExample() {} void LabelExample::CreateExampleView(View* container) { // A very simple label example, followed by additional helpful examples. container->SetLayoutManager(new BoxLayout(BoxLayout::kVertical, 0, 0, 10)); Label* label = new Label(ASCIIToUTF16("Hello world!")); container->AddChildView(label); const wchar_t hello_world_hebrew[] = L"\x5e9\x5dc\x5d5\x5dd \x5d4\x5e2\x5d5\x5dc\x5dd!"; label = new Label(WideToUTF16(hello_world_hebrew)); label->SetHorizontalAlignment(gfx::ALIGN_RIGHT); container->AddChildView(label); label = new Label(WideToUTF16(L"A UTF16 surrogate pair: \x5d0\x5b0")); label->SetHorizontalAlignment(gfx::ALIGN_RIGHT); container->AddChildView(label); label = new Label(ASCIIToUTF16("A left-aligned blue label.")); label->SetHorizontalAlignment(gfx::ALIGN_LEFT); label->SetEnabledColor(SK_ColorBLUE); container->AddChildView(label); label = new Label(ASCIIToUTF16("A Courier-18 label with shadows.")); label->SetFontList(gfx::FontList("Courier, 18px")); gfx::ShadowValues shadows(1, gfx::ShadowValue(gfx::Point(), 1, SK_ColorRED)); gfx::ShadowValue shadow(gfx::Point(2, 2), 0, SK_ColorGRAY); shadows.push_back(shadow); label->set_shadows(shadows); container->AddChildView(label); label = new PreferredSizeLabel(); label->SetText(ASCIIToUTF16("A long label will elide toward its logical end " "if the text's width exceeds the label's available width.")); container->AddChildView(label); label = new PreferredSizeLabel(); label->SetElideBehavior(gfx::FADE_TAIL); label->SetText(ASCIIToUTF16("Some long labels will fade, rather than elide, " "if the text's width exceeds the label's available width.")); container->AddChildView(label); label = new PreferredSizeLabel(); label->SetText(ASCIIToUTF16("A multi-line label will wrap onto subsequent " "lines if the text's width exceeds the label's available width.")); label->SetMultiLine(true); container->AddChildView(label); label = new Label(WideToUTF16(L"Password!")); label->SetObscured(true); container->AddChildView(label); } } // namespace examples } // namespace views