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