// Copyright (c) 2011 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.

#ifndef UI_VIEWS_CONTROLS_RESIZE_AREA_DELEGATE_H_
#define UI_VIEWS_CONTROLS_RESIZE_AREA_DELEGATE_H_

namespace views {

// An interface implemented by objects that want to be notified about the resize
// event.
class ResizeAreaDelegate {
 public:
  // OnResize is sent when resizing is detected. |resize_amount| specifies the
  // number of pixels that the user wants to resize by, and can be negative or
  // positive (depending on direction of dragging and flips according to
  // locale directionality: dragging to the left in LTR locales gives negative
  // |resize_amount| but positive amount for RTL). |done_resizing| is true if
  // the user has released the mouse.
  virtual void OnResize(int resize_amount, bool done_resizing) = 0;

 protected:
  virtual ~ResizeAreaDelegate() {}
};

}  // namespace views

#endif  // UI_VIEWS_CONTROLS_RESIZE_AREA_DELEGATE_H_
