/**************************************************************
 *
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 *
 *************************************************************/


#include "MenuResIds.hrc"
#include "ShapeController.hrc"


Menu RID_CONTEXTMENU_SHAPE
{
    ItemList =
    {
        MenuItem
        {
            Identifier = COMMAND_ID_FORMAT_LINE;
            Command = ".uno:FormatLine";
        };
        MenuItem
        {
            Identifier = COMMAND_ID_FORMAT_AREA;
            Command = ".uno:FormatArea";
        };
        MenuItem
        {
            Identifier = COMMAND_ID_TEXT_ATTRIBUTES;
            Command = ".uno:TextAttributes";
        };
        MenuItem
        {
            Identifier = COMMAND_ID_TRANSFORM_DIALOG;
            Command = ".uno:TransformDialog";
        };
        MenuItem
        {
            Separator = TRUE;
        };
        MenuItem
        {
            Identifier = COMMAND_ID_OBJECT_TITLE_DESCRIPTION;
            Command = ".uno:ObjectTitleDescription";
        };
        MenuItem
        {
            Identifier = COMMAND_ID_RENAME_OBJECT;
            Command = ".uno:RenameObject";
        };
        MenuItem
        {
            Separator = TRUE;
        };
        MenuItem
        {
            Identifier = COMMAND_ID_ARRANGE_ROW;
            Command = ".uno:ArrangeRow";
            SubMenu = Menu
            {
                ItemList =
                {
                    MenuItem
                    {
                        Identifier = COMMAND_ID_BRING_TO_FRONT;
                        Command = ".uno:BringToFront";
                    };
                    MenuItem
                    {
                        Identifier = COMMAND_ID_FORWARD;
                        Command = ".uno:Forward";
                    };
                    MenuItem
                    {
                        Identifier = COMMAND_ID_BACKWARD;
                        Command = ".uno:Backward";
                    };
                    MenuItem
                    {
                        Identifier = COMMAND_ID_SEND_TO_BACK;
                        Command = ".uno:SendToBack";
                    };
                };
            };
        };
        MenuItem
        {
            Separator = TRUE;
        };
        MenuItem
        {
            Identifier = COMMAND_ID_CUT;
            Command = ".uno:Cut";
        };
        MenuItem
        {
            Identifier = COMMAND_ID_COPY;
            Command = ".uno:Copy";
        };
        MenuItem
        {
            Identifier = COMMAND_ID_PASTE;
            Command = ".uno:Paste";
        };
    };
};
