| Index: ash/devtools/ui_element.cc
|
| diff --git a/ash/devtools/ui_element.cc b/ash/devtools/ui_element.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..cc9816ba57622a896f46d28b4438fa486d78c17f
|
| --- /dev/null
|
| +++ b/ash/devtools/ui_element.cc
|
| @@ -0,0 +1,98 @@
|
| +// Copyright 2017 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 "ash/devtools/ui_element.h"
|
| +
|
| +#include "ash/devtools/ui_element_delegate.h"
|
| +#include "ash/devtools/view_element.h"
|
| +#include "ash/devtools/widget_element.h"
|
| +#include "ash/devtools/window_element.h"
|
| +
|
| +namespace ash {
|
| +namespace devtools {
|
| +
|
| +int UIElement::GetNodeId() {
|
| + return node_id_;
|
| +}
|
| +
|
| +void UIElement::SetNodeId(int node_id) {
|
| + node_id_ = node_id;
|
| +}
|
| +
|
| +UIElement* UIElement::GetParent() {
|
| + return parent_;
|
| +}
|
| +
|
| +UIElementDelegate* UIElement::delegate() {
|
| + return ui_element_delegate_;
|
| +}
|
| +
|
| +UIElementType UIElement::GetType() {
|
| + return type_;
|
| +}
|
| +
|
| +const std::vector<UIElement*>& UIElement::GetChildren() const {
|
| + return children_;
|
| +}
|
| +
|
| +void UIElement::AddChild(std::vector<UIElement*>::iterator index,
|
| + UIElement* child) {
|
| + children_.insert(index, child);
|
| +}
|
| +
|
| +void UIElement::PushBackChild(UIElement* child) {
|
| + children_.push_back(child);
|
| +}
|
| +
|
| +void UIElement::RemoveChild(std::vector<UIElement*>::iterator index) {
|
| + children_.erase(index);
|
| +}
|
| +
|
| +void UIElement::RemoveChildFromParent() {
|
| + if (GetParent()) {
|
| + std::vector<UIElement*>::iterator object = ChildIndexFromParent();
|
| + if (object != GetParent()->LastChildIterator())
|
| + GetParent()->RemoveChild(object);
|
| + }
|
| +}
|
| +
|
| +UIElement* UIElement::LastChild() {
|
| + return children_.back();
|
| +}
|
| +
|
| +std::vector<UIElement*>::iterator UIElement::FindChildIterator(
|
| + UIElement* child) {
|
| + return std::find_if(children_.begin(), children_.end(), [&](UIElement* obj) {
|
| + return obj->GetNodeId() == child->GetNodeId();
|
| + });
|
| +}
|
| +
|
| +std::vector<UIElement*>::iterator UIElement::BeginChildIterator() {
|
| + return children_.begin();
|
| +}
|
| +
|
| +std::vector<UIElement*>::iterator UIElement::LastChildIterator() {
|
| + return children_.end();
|
| +}
|
| +
|
| +std::vector<UIElement*>::iterator UIElement::ChildIndexFromParent() {
|
| + if (GetParent())
|
| + return GetParent()->FindChildIterator(this);
|
| + return children_.end();
|
| +}
|
| +
|
| +UIElement::UIElement(const UIElementType type,
|
| + UIElementDelegate* ui_element_delegate,
|
| + UIElement* parent)
|
| + : type_(type), parent_(parent), ui_element_delegate_(ui_element_delegate) {}
|
| +
|
| +UIElement::~UIElement() {
|
| + for (auto* child : children_)
|
| + if (child)
|
| + delete child;
|
| + children_.clear();
|
| +}
|
| +
|
| +} // namespace devtools
|
| +} // namespace ash
|
|
|