// Copyright 2014 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 "athena/activity/activity_widget_delegate.h"

#include "athena/activity/activity_frame_view.h"
#include "athena/activity/public/activity_view_model.h"
#include "ui/views/view.h"
#include "ui/views/window/client_view.h"

namespace athena {

ActivityWidgetDelegate::ActivityWidgetDelegate(ActivityViewModel* view_model)
    : view_model_(view_model) {
}

ActivityWidgetDelegate::~ActivityWidgetDelegate() {
}

bool ActivityWidgetDelegate::CanResize() const {
  return true;
}

bool ActivityWidgetDelegate::CanMaximize() const {
  return true;
}

bool ActivityWidgetDelegate::CanMinimize() const {
  return true;
}

base::string16 ActivityWidgetDelegate::GetWindowTitle() const {
  return view_model_->GetTitle();
}

void ActivityWidgetDelegate::DeleteDelegate() {
  delete this;
}

views::Widget* ActivityWidgetDelegate::GetWidget() {
  return GetContentsView()->GetWidget();
}

const views::Widget* ActivityWidgetDelegate::GetWidget() const {
  return const_cast<ActivityWidgetDelegate*>(this)->GetWidget();
}

views::View* ActivityWidgetDelegate::GetContentsView() {
  return view_model_->GetContentsView();
}

views::NonClientFrameView* ActivityWidgetDelegate::CreateNonClientFrameView(
    views::Widget* widget) {
  return new ActivityFrameView(widget, view_model_);
}

}  // namespace athena
