blob: 3ed3abc594d657ec21811911a4a68e81447ebc2c [file] [log] [blame]
/*
**
** Copyright 2007, The Android Open Source Project
**
** Licensed under the Apache License, Version 2.0 (the "License");
** you may not use this file except in compliance with the License.
** You may obtain a copy of the License at
**
** http://www.apache.org/licenses/LICENSE-2.0
**
** Unless required by applicable law or agreed to in writing, software
** distributed under the License is distributed on an "AS IS" BASIS,
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
** See the License for the specific language governing permissions and
** limitations under the License.
*/
#include "config.h"
#include "Widget.h"
#include "WebCoreViewBridge.h"
#include "WidgetClient.h"
#include "Font.h"
#include "IntRect.h"
#include "GraphicsContext.h"
#include "FrameAndroid.h"
#include "WebCoreFrameBridge.h"
#include "Document.h"
#include "Element.h"
#define LOG_TAG "WebCore"
#undef LOG
#include "utils/Log.h"
namespace WebCore {
#define notImplemented() LOGV("WidgetAndroid: NotYetImplemented")
class WidgetPrivate
{
public:
Font m_font;
WebCoreViewBridge* m_viewbridge; // we point to this, but don't delete it (unless we had refcounting...)
WidgetClient* m_client;
bool m_visible;
};
Widget::Widget() : data(new WidgetPrivate)
{
data->m_viewbridge = NULL;
data->m_client = NULL;
data->m_visible = false;
}
Widget::~Widget()
{
Release(data->m_viewbridge);
delete data;
}
void Widget::setEnabled(bool enabled)
{
WebCoreViewBridge* view = data->m_viewbridge;
ASSERT(data->m_viewbridge);
if (view)
view->setEnabled(enabled);
}
bool Widget::isEnabled() const
{
ASSERT(data->m_viewbridge);
return data->m_viewbridge->isEnabled();
}
IntRect Widget::frameGeometry() const
{
ASSERT(data->m_viewbridge);
return data->m_viewbridge->getBounds();
}
void Widget::setFocus()
{
ASSERT(data->m_viewbridge);
data->m_viewbridge->setFocus(true);
}
void Widget::paint(GraphicsContext* ctx, const IntRect& r)
{
WebCoreViewBridge* viewBridge = data->m_viewbridge;
ASSERT(viewBridge);
viewBridge->layout();
viewBridge->draw(ctx, r, true);
}
void Widget::setCursor(const Cursor& cursor)
{
notImplemented();
}
void Widget::show()
{
if (!data || data->m_visible)
return;
data->m_visible = true;
}
void Widget::hide()
{
notImplemented();
}
void Widget::setFrameGeometry(const IntRect& rect)
{
ASSERT(data->m_viewbridge);
data->m_viewbridge->setBounds(rect.x(), rect.y(), rect.x() + rect.width(), rect.y() + rect.height());
}
void Widget::setIsSelected(bool isSelected)
{
notImplemented();
}
void Widget::invalidate()
{
notImplemented();
}
void Widget::invalidateRect(const IntRect&)
{
notImplemented();
}
void Widget::removeFromParent()
{
notImplemented();
}
void Widget::setClient(WidgetClient* c)
{
data->m_client = c;
}
WidgetClient* Widget::client() const
{
return data->m_client;
}
WebCoreViewBridge* Widget::getWebCoreViewBridge() const
{
return data->m_viewbridge;
}
void Widget::setWebCoreViewBridge(WebCoreViewBridge* view)
{
Release(data->m_viewbridge);
data->m_viewbridge = view;
view->setWidget(this);
Retain(data->m_viewbridge);
}
} // WebCore namepsace