18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 2dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). 38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 2006 Apple Computer, Inc. 48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This library is free software; you can redistribute it and/or 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modify it under the terms of the GNU Library General Public 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * License as published by the Free Software Foundation; either 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * version 2 of the License, or (at your option) any later version. 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This library is distributed in the hope that it will be useful, 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * but WITHOUT ANY WARRANTY; without even the implied warranty of 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Library General Public License for more details. 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * You should have received a copy of the GNU Library General Public License 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * along with this library; see the file COPYING.LIB. If not, write to 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Boston, MA 02110-1301, USA. 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef PopupMenuClient_h 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define PopupMenuClient_h 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "PopupMenuStyle.h" 268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "ScrollTypes.h" 27dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch#include <wtf/Forward.h> 288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore { 308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass Color; 328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass FontSelector; 338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass HostWindow; 348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass Scrollbar; 35ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochclass ScrollableArea; 368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass PopupMenuClient { 388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectpublic: 398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual ~PopupMenuClient() {} 408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void valueChanged(unsigned listIndex, bool fireEvents = true) = 0; 41545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void selectionChanged(unsigned listIndex, bool fireEvents = true) = 0; 42545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch virtual void selectionCleared() = 0; 438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual String itemText(unsigned listIndex) const = 0; 45967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch virtual String itemLabel(unsigned listIndex) const = 0; 460617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen virtual String itemIcon(unsigned listIndex) const = 0; 470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch virtual String itemToolTip(unsigned listIndex) const = 0; 48dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual String itemAccessibilityText(unsigned listIndex) const = 0; 498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual bool itemIsEnabled(unsigned listIndex) const = 0; 508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual PopupMenuStyle itemStyle(unsigned listIndex) const = 0; 518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual PopupMenuStyle menuStyle() const = 0; 528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual int clientInsetLeft() const = 0; 538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual int clientInsetRight() const = 0; 548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual int clientPaddingLeft() const = 0; 558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual int clientPaddingRight() const = 0; 568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual int listSize() const = 0; 578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual int selectedIndex() const = 0; 58231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block virtual void popupDidHide() = 0; 598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual bool itemIsSeparator(unsigned listIndex) const = 0; 608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual bool itemIsLabel(unsigned listIndex) const = 0; 618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual bool itemIsSelected(unsigned listIndex) const = 0; 628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual bool shouldPopOver() const = 0; 638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual bool valueShouldChangeOnHotTrack() const = 0; 648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void setTextFromItem(unsigned listIndex) = 0; 656b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner 668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual FontSelector* fontSelector() const = 0; 678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual HostWindow* hostWindow() const = 0; 686b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner 69ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch virtual PassRefPtr<Scrollbar> createScrollbar(ScrollableArea*, ScrollbarOrientation, ScrollbarControlSize) = 0; 708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}; 718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 72dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#if ENABLE(NO_LISTBOX_RENDERING) 73dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockclass ListPopupMenuClient : public PopupMenuClient { 74dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockpublic: 75dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual void listBoxSelectItem(int listIndex, bool allowMultiplySelections, bool shift, bool fireOnChangeNow = true) = 0; 76dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual bool multiple() = 0; 77dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block}; 78dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#endif 79dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 80dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 84