123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- /*
- * Copyright (C) 2006 Apple Computer, Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
- #ifndef ContextMenu_h
- #define ContextMenu_h
- #if ENABLE(CONTEXT_MENUS)
- #include <wtf/Noncopyable.h>
- #include "ContextMenuItem.h"
- #include "PlatformMenuDescription.h"
- #include <wtf/text/WTFString.h>
- #if PLATFORM(MAC)
- #include <wtf/RetainPtr.h>
- #elif PLATFORM(WIN)
- #include <windows.h>
- #endif
- namespace WebCore {
- class ContextMenuController;
- class ContextMenu {
- WTF_MAKE_NONCOPYABLE(ContextMenu); WTF_MAKE_FAST_ALLOCATED;
- public:
- ContextMenu();
- ContextMenuItem* itemWithAction(unsigned);
- #if USE(CROSS_PLATFORM_CONTEXT_MENUS)
- explicit ContextMenu(PlatformContextMenu);
- PlatformContextMenu platformContextMenu() const;
- static PlatformContextMenu createPlatformContextMenuFromItems(const Vector<ContextMenuItem>&);
- static void getContextMenuItems(PlatformContextMenu, Vector<ContextMenuItem>&);
- // FIXME: When more platforms switch over, this should return const ContextMenuItem*'s.
- ContextMenuItem* itemAtIndex(unsigned index) { return &m_items[index]; }
- void setItems(const Vector<ContextMenuItem>& items) { m_items = items; }
- const Vector<ContextMenuItem>& items() const { return m_items; }
- void appendItem(const ContextMenuItem& item) { m_items.append(item); }
- #else
- explicit ContextMenu(const PlatformMenuDescription);
- ~ContextMenu();
- void insertItem(unsigned position, ContextMenuItem&);
- void appendItem(ContextMenuItem&);
- ContextMenuItem* itemAtIndex(unsigned, const PlatformMenuDescription);
- unsigned itemCount() const;
- PlatformMenuDescription platformDescription() const;
- void setPlatformDescription(PlatformMenuDescription);
- PlatformMenuDescription releasePlatformDescription();
- #endif // USE(CROSS_PLATFORM_CONTEXT_MENUS)
- private:
- #if USE(CROSS_PLATFORM_CONTEXT_MENUS)
- Vector<ContextMenuItem> m_items;
- #else
- #if PLATFORM(MAC)
- // Keep this in sync with the PlatformMenuDescription typedef
- RetainPtr<NSMutableArray> m_platformDescription;
- #else
- PlatformMenuDescription m_platformDescription;
- #if OS(WINCE)
- unsigned m_itemCount;
- #endif
- #endif
- #endif // USE(CROSS_PLATFORM_CONTEXT_MENUS)
- };
- #if !USE(CROSS_PLATFORM_CONTEXT_MENUS)
- Vector<ContextMenuItem> contextMenuItemVector(PlatformMenuDescription);
- PlatformMenuDescription platformMenuDescription(Vector<ContextMenuItem>&);
- #endif
- }
- #endif // ENABLE(CONTEXT_MENUS)
- #endif // ContextMenu_h
|