18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 2dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * Copyright (C) 2006, 2008 Apple Inc. All rights reserved. 3dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * Copyright (C) 2008 INdT - Instituto Nokia de Tecnologia 4dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * Copyright (C) 2009-2010 ProFUSION embedded systems 5dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * Copyright (C) 2009-2010 Samsung Electronics 6db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This library is free software; you can redistribute it and/or 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modify it under the terms of the GNU Library General Public 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * License as published by the Free Software Foundation; either 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * version 2 of the License, or (at your option) any later version. 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This library is distributed in the hope that it will be useful, 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * but WITHOUT ANY WARRANTY; without even the implied warranty of 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Library General Public License for more details. 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * You should have received a copy of the GNU Library General Public License 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * along with this library; see the file COPYING.LIB. If not, write to 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Boston, MA 02110-1301, USA. 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 25dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#include "config.h" 26db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block#include "PopupMenuEfl.h" 278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 285af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke#include "Chrome.h" 295af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke#include "ChromeClientEfl.h" 30dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#include "FrameView.h" 31dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#include "NotImplemented.h" 32db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block#include "PopupMenuClient.h" 338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore { 358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 36db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve BlockPopupMenuEfl::PopupMenuEfl(PopupMenuClient* client) 37dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block : m_popupClient(client) 385af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke , m_view(0) 39dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block{ 40dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block} 418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 42db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve BlockPopupMenuEfl::~PopupMenuEfl() 43dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block{ 44967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch // Tell client to destroy data related to this popup since this object is 45967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch // going away. 46e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block if (m_view) 47e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block hide(); 48dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block} 498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 50db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Blockvoid PopupMenuEfl::show(const IntRect& rect, FrameView* view, int index) 51dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block{ 525af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke ASSERT(m_popupClient); 535af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke ChromeClientEfl* chromeClient = static_cast<ChromeClientEfl*>(view->frame()->page()->chrome()->client()); 545af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke ASSERT(chromeClient); 555af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke 565af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke m_view = view; 575af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke chromeClient->createSelectPopup(m_popupClient, index, rect); 58dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block} 598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 60db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Blockvoid PopupMenuEfl::hide() 61dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block{ 625af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke ASSERT(m_view); 635af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke ChromeClientEfl* chromeClient = static_cast<ChromeClientEfl*>(m_view->frame()->page()->chrome()->client()); 645af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke ASSERT(chromeClient); 655af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke 665af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke chromeClient->destroySelectPopup(); 67dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block} 688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 69db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Blockvoid PopupMenuEfl::updateFromElement() 70dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block{ 71dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block client()->setTextFromItem(client()->selectedIndex()); 72dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block} 738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 74db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Blockvoid PopupMenuEfl::disconnectClient() 75dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block{ 76db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block m_popupClient = 0; 778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 79dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block} 80