Home | History | Annotate | Download | only in platform
      1 /*
      2  * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
      3  * Copyright (C) 2010 Igalia S.L
      4  *
      5  * Redistribution and use in source and binary forms, with or without
      6  * modification, are permitted provided that the following conditions
      7  * are met:
      8  * 1. Redistributions of source code must retain the above copyright
      9  *    notice, this list of conditions and the following disclaimer.
     10  * 2. Redistributions in binary form must reproduce the above copyright
     11  *    notice, this list of conditions and the following disclaimer in the
     12  *    documentation and/or other materials provided with the distribution.
     13  *
     14  * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
     15  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     16  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     17  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
     18  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
     19  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
     20  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
     21  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
     22  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     23  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     24  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     25  */
     26 
     27 #ifndef ContextMenuItem_h
     28 #define ContextMenuItem_h
     29 
     30 #include "wtf/OwnPtr.h"
     31 #include "wtf/text/WTFString.h"
     32 
     33 namespace WebCore {
     34 
     35     class ContextMenu;
     36 
     37     enum ContextMenuAction {
     38         ContextMenuItemBaseCustomTag = 5000,
     39         ContextMenuItemCustomTagNoAction = 5998,
     40         ContextMenuItemLastCustomTag = 5999
     41     };
     42 
     43     enum ContextMenuItemType {
     44         ActionType,
     45         CheckableActionType,
     46         SeparatorType,
     47         SubmenuType
     48     };
     49 
     50     class ContextMenuItem {
     51         WTF_MAKE_FAST_ALLOCATED;
     52     public:
     53         ContextMenuItem(ContextMenuItemType, ContextMenuAction, const String&, ContextMenu* subMenu = 0);
     54         ContextMenuItem(ContextMenuItemType, ContextMenuAction, const String&, bool enabled, bool checked);
     55 
     56         ~ContextMenuItem();
     57 
     58         void setType(ContextMenuItemType);
     59         ContextMenuItemType type() const;
     60 
     61         void setAction(ContextMenuAction);
     62         ContextMenuAction action() const;
     63 
     64         void setChecked(bool = true);
     65         bool checked() const;
     66 
     67         void setEnabled(bool = true);
     68         bool enabled() const;
     69 
     70         void setSubMenu(ContextMenu*);
     71 
     72         ContextMenuItem(ContextMenuAction, const String&, bool enabled, bool checked, const Vector<ContextMenuItem>& subMenuItems);
     73 
     74         void setTitle(const String& title) { m_title = title; }
     75         const String& title() const { return m_title; }
     76 
     77         const Vector<ContextMenuItem>& subMenuItems() const { return m_subMenuItems; }
     78    private:
     79         ContextMenuItemType m_type;
     80         ContextMenuAction m_action;
     81         String m_title;
     82         bool m_enabled;
     83         bool m_checked;
     84         Vector<ContextMenuItem> m_subMenuItems;
     85     };
     86 }
     87 
     88 #endif // ContextMenuItem_h
     89