/**************************************************************
 * 
 * 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.
 * 
 *************************************************************/



interface OutlineView
[
	uuid ( "92E2F580-2FB4-11CF-89CA-008029E4B0B1" ) ;
]
{
	SID_CUT // ole : no, status : ?
	[
		ExecMethod = FuSupport ;
		StateMethod = GetMenuState ;
	]
	SID_COPY // ole : no, status : ?
	[
		ExecMethod = FuSupport ;
		StateMethod = GetMenuState ;
	]
	SID_PASTE // ole : no, status : ?
	[
		ExecMethod = FuSupport ;
		StateMethod = GetMenuState ;
	]
	SID_DELETE // ole : no, status : ?
	[
		ExecMethod = FuSupport ;
		StateMethod = GetMenuState ;
		Cachable , Asynchron ;
	]
	SID_DRAWINGMODE // ole : no, status : play rec
	[
		ExecMethod = FuSupport ;
		StateMethod = GetMenuState ;
	]
	SID_ZOOM_NEXT // ole : no, status : play rec
	[
		ExecMethod = FuSupport ;
		StateMethod = GetMenuState ;
	]
	SID_ZOOM_PREV // ole : no, status : play rec
	[
		ExecMethod = FuSupport ;
		StateMethod = GetMenuState ;
	]
	SID_ZOOM_TOOLBOX // ole : no, status : ?
	[
		ExecMethod = FuTemporary ;
		StateMethod = GetStatusBarState ;
	]
	SID_ATTR_ZOOM // ole : no, status : ?
	[
		ExecMethod = FuTemporary ;
		StateMethod = GetStatusBarState ;
	]
    SID_ATTR_ZOOMSLIDER // status()
    [
        ExecMethod = FuTemporary ;
        StateMethod = GetStatusBarState ;
    ]    
	SID_ZOOM_OUT // ole : no, status : play rec
	[
		ExecMethod = FuTemporary ;
		StateMethod = GetMenuState ;
	]
	SID_ZOOM_IN // ole : no, status : play rec
	[
		ExecMethod = FuTemporary ;
		StateMethod = GetMenuState ;
	]
	SID_SIZE_REAL // ole : no, status : play rec
	[
		ExecMethod = FuTemporary ;
		StateMethod = GetMenuState ;
	]
	SID_SIZE_VISAREA // ole : no, status : no
	[
		ExecMethod = FuTemporary ;
		StateMethod = GetMenuState ;
	]
	SID_HYPERLINK_SETLINK // ole : no, status : no
	[
		ExecMethod = FuTemporaryModify ;
	]
	SID_HYPERLINK_GETLINK // ole : no, status : no
	[
		StateMethod = GetCtrlState ;
	]
    SID_READONLY_MODE // ole : no, status : no
    [
        StateMethod = GetCtrlState ;
    ]
	SID_OUTLINE_FORMAT // ole : no, status : ?
	[
		ExecMethod = FuTemporary ;
		StateMethod = GetMenuState ;
	]
	SID_OUTLINE_COLLAPSE_ALL // ole : no, status : ?
	[
		ExecMethod = FuTemporary ;
		StateMethod = GetMenuState ;
	]
	SID_OUTLINE_COLLAPSE // ole : no, status : ?
	[
		ExecMethod = FuTemporary ;
		StateMethod = GetMenuState ;
	]
	SID_OUTLINE_EXPAND_ALL // ole : no, status : ?
	[
		ExecMethod = FuTemporary ;
		StateMethod = GetMenuState ;
	]
	SID_OUTLINE_EXPAND // ole : no, status : ?
	[
		ExecMethod = FuTemporary ;
		StateMethod = GetMenuState ;
	]
	SID_CHARMAP // ole : no, status : ?
	[
		ExecMethod = FuTemporaryModify ;
		StateMethod = GetMenuState ;
	]
    FN_INSERT_SOFT_HYPHEN // status(final|play)
	[
        ExecMethod = FuTemporaryModify ;
        StateMethod = GetMenuState ;
	]
	FN_INSERT_HARDHYPHEN // status()
	[
        ExecMethod = FuTemporaryModify ;
        StateMethod = GetMenuState ;
	]
	FN_INSERT_HARD_SPACE // status(final|play)
	[
        ExecMethod = FuTemporaryModify ;
        StateMethod = GetMenuState ;
	]
    SID_INSERT_RLM
    [
        ExecMethod = FuTemporary ;
        StateMethod = GetMenuState ;
    ]
    SID_INSERT_LRM
    [
        ExecMethod = FuTemporaryModify ;
        StateMethod = GetMenuState ;
    ]
    SID_INSERT_ZWSP
    [
        ExecMethod = FuTemporaryModify ;
        StateMethod = GetMenuState ;
    ]
    SID_INSERT_ZWNBSP
    [
        ExecMethod = FuTemporaryModify ;
        StateMethod = GetMenuState ;
    ]
    FN_SVX_SET_BULLET
    [
   		ExecMethod = FuTemporaryModify ;
    ]
    FN_SVX_SET_NUMBER
    [
    	ExecMethod = FuTemporaryModify ;
    ]
	SID_OUTLINE_BULLET // ole : no, status : ?
	[
		ExecMethod = FuTemporaryModify ;
		StateMethod = GetMenuState ;
		Cachable , HasDialog , Export ;
	]
	SID_CHAR_DLG // ole : no, status : ?
	[
		ExecMethod = FuTemporaryModify ;
		StateMethod = GetMenuState ;
		 //        Cachable , HasDialog , Export ;
	]
	SID_CHAR_DLG_EFFECT // wj for sym2_1876
	[
		ExecMethod = FuTemporaryModify ;
		StateMethod = GetMenuState ;
		 //        Cachable , HasDialog , Export ;
	]
	SID_SELECTALL // ole : no, status : ?
	[
		ExecMethod = FuTemporary ;
		StateMethod = GetMenuState ;
		GroupId = GID_DOCUMENT ;
		Cachable ;
	]
	SID_INSERTFILE // ole : no, status : ?
	[
		ExecMethod = FuTemporaryModify ;
		StateMethod = GetMenuState ;
	]
	SID_PRESENTATION // ole : no, status : ?
	[
		ExecMethod = FuTemporary ;
		StateMethod = GetMenuState ;
	]
	SID_EDIT_OUTLINER // ole : no, status : ?
	[
		ExecMethod = FuPermanent ;
		StateMethod = GetMenuState ;
	]
	SID_SAVEDOC // ole : no, status : ?
	[
		ExecMethod = Execute ;
		StateMethod = GetMenuState ;
		GroupId = GID_DOCUMENT ;
	]
	SID_SAVEASDOC // ole : no, status : ?
	[
		ExecMethod = Execute ;
		GroupId = GID_DOCUMENT ;
	]
	SID_RULER // ole : no, status : ?
	[
		ExecMethod = FuSupport ;
		StateMethod = GetMenuState ;
	]
	SID_STATUS_PAGE // ole : no, status : ?
	[
		ExecMethod = ExecStatusBar ;
		StateMethod = GetStatusBarState ;
	]
	SID_STATUS_LAYOUT // ole : no, status : ?
	[
		ExecMethod = ExecStatusBar ;
		StateMethod = GetStatusBarState ;
	]
	SID_THESAURUS // ole : no, status : ?
	[
		ExecMethod = FuTemporaryModify ;
		StateMethod = GetMenuState ;
	]
	SID_COLORVIEW // ole : no, status : ?
	[
		ExecMethod = FuTemporary ;
		StateMethod = GetMenuState ;
	]
	SID_SET_DEFAULT // ole : no, status : ?
	[
		ExecMethod = FuTemporaryModify ;
		StateMethod = GetMenuState ;
	]
	SID_PRESENTATIONOBJECT
	[
		ExecMethod = FuTemporaryModify ;
		StateMethod = GetMenuState ;
	]
	SID_STYLE_CATALOG // ole : no, status : ?
	[
		ExecMethod = FuTemporary ;
		StateMethod = GetMenuState ;
	]
	 // Vorlagen
	 // kein Menueeintrag
	SID_STYLE_FAMILY2 // ole : no, status : ?
	[
		ExecMethod = FuTemporary ;
		StateMethod = GetAttrState ;
		GroupId = GID_DOCUMENT ;
		Cachable ;
	]
	SID_STYLE_FAMILY3 // ole : no, status : ?
	[
		ExecMethod = FuTemporary ;
		StateMethod = GetAttrState ;
		GroupId = GID_DOCUMENT ;
		Cachable ;
	]
	 // Vorlagen
	 // kein Menueeintrag
	SID_STYLE_FAMILY5 // ole : no, status : ?
	[
		ExecMethod = FuTemporary ;
		StateMethod = GetAttrState ;
	]
	 // kein Menueeintrag
	SID_STYLE_EDIT // ole : no, status : ?
	[
		ExecMethod = FuTemporary ;
		StateMethod = GetAttrState ;
		GroupId = GID_DOCUMENT ;
		Cachable ;
	]
	 // kein Menueeintrag
	SID_STYLE_UPDATE_BY_EXAMPLE // ole : no, status : ?
	[
		ExecMethod = FuTemporary ;
		StateMethod = GetAttrState ;
		GroupId = GID_DOCUMENT ;
		Cachable ;
	]
	 // kein Menueeintrag
	SID_STYLE_WATERCAN // ole : no, status : ?
	[
		ExecMethod = FuTemporary ;
		StateMethod = GetAttrState ;
		GroupId = GID_DOCUMENT ;
		Cachable ;
	]
	 // kein Menueeintrag
	SID_STYLE_NEW_BY_EXAMPLE // ole : no, status : ?
	[
		ExecMethod = FuTemporary ;
		StateMethod = GetAttrState ;
		GroupId = GID_DOCUMENT ;
		Cachable ;
	]
	 // kein Menueeintrag
	SID_STYLE_NEW // ole : no, status : ?
	[
		ExecMethod = FuTemporary ;
		StateMethod = GetAttrState ;
		GroupId = GID_DOCUMENT ;
		Cachable ;
	]
	 // kein Menueeintrag
	SID_STYLE_DELETE // ole : no, status : ?
	[
		ExecMethod = FuTemporary ;
		StateMethod = GetAttrState ;
		GroupId = GID_DOCUMENT ;
		Cachable ;
	]
	SID_AUTOSPELL_CHECK // ole : no, status : play rec
	[
		ExecMethod = FuSupport ;
		StateMethod = GetMenuState ;
	]
	SID_PREVIEW_STATE // ole : no, status : ?
	[
		ExecMethod = FuTemporary ;
		StateMethod = GetMenuState ;
	]
	SID_PRESENTATION_DLG
	[
		ExecMethod = FuTemporary ;
	]
	SID_CUSTOMSHOW_DLG
	[
		ExecMethod = FuTemporary ;
	]
	SID_EXPAND_PAGE // ole : no, status : ?
	[
		ExecMethod = FuTemporaryModify ;
		StateMethod = GetMenuState ;
	]
	SID_SUMMARY_PAGE // ole : no, status : ?
	[
		ExecMethod = FuTemporaryModify ;
		StateMethod = GetMenuState ;
	]
	SID_INSERT_FLD_DATE_FIX // ole : no, status : play rec
	[
		ExecMethod = FuTemporaryModify ;
		StateMethod = GetMenuState ;
	]
	SID_INSERT_FLD_DATE_VAR // ole : no, status : play rec
	[
		ExecMethod = FuTemporaryModify ;
		StateMethod = GetMenuState ;
	]
	SID_INSERT_FLD_TIME_FIX // ole : no, status : play rec
	[
		ExecMethod = FuTemporaryModify ;
		StateMethod = GetMenuState ;
	]
	SID_INSERT_FLD_TIME_VAR // ole : no, status : play rec
	[
		ExecMethod = FuTemporaryModify ;
		StateMethod = GetMenuState ;
	]
	SID_INSERT_FLD_PAGE // ole : no, status : play rec
	[
		ExecMethod = FuTemporaryModify ;
		StateMethod = GetMenuState ;
	]
	SID_INSERT_FLD_PAGES // ole : no, status : play rec
	[
		ExecMethod = FuTemporaryModify ;
		StateMethod = GetMenuState ;
	]
	SID_INSERT_FLD_FILE // ole : no, status : play rec
	[
		ExecMethod = FuTemporaryModify ;
		StateMethod = GetMenuState ;
	]
	SID_INSERT_FLD_AUTHOR // ole : no, status : play rec
	[
		ExecMethod = FuTemporaryModify ;
		StateMethod = GetMenuState ;
	]
	SID_MODIFY_FIELD // ole : no, status : play rec
	[
		ExecMethod = FuTemporaryModify ;
		StateMethod = GetMenuState ;
	]
	/*
	SID_PRINTDOC // ole : no, status : ?
	[
		StateMethod = GetMenuState ;
	]
	SID_PRINTDOCDIRECT // ole : no, status : ?
	[
		StateMethod = GetMenuState ;
	]
	SID_SETUPPRINTER // ole : no, status : ?
	[
		StateMethod = GetMenuState ;
	]
*/

	SID_MAIL_SCROLLBODY_PAGEDOWN // ole : no, status : ?
	[
		ExecMethod = ExecCtrl ;
		StateMethod = GetCtrlState ;
	]
	SID_STYLE_FAMILY
	[
		ExecMethod = FuSupport ;
		StateMethod = GetMenuState ;
	]
    SID_TRANSLITERATE_SENTENCE_CASE // ole : no, status : ?
    [
        ExecMethod = FuSupport ;
        StateMethod = GetCtrlState ;
    ]
    SID_TRANSLITERATE_TITLE_CASE // ole : no, status : ?
    [
        ExecMethod = FuSupport ;
        StateMethod = GetCtrlState ;
    ]
    SID_TRANSLITERATE_TOGGLE_CASE // ole : no, status : ?
    [
        ExecMethod = FuSupport ;
        StateMethod = GetCtrlState ;
    ]
    SID_TRANSLITERATE_UPPER // ole : no, status : ?
    [
        ExecMethod = FuSupport ;
        StateMethod = GetCtrlState ;
    ]
    SID_TRANSLITERATE_LOWER // ole : no, status : ?
    [
        ExecMethod = FuSupport ;
        StateMethod = GetCtrlState ;
    ]
    SID_TRANSLITERATE_HALFWIDTH // ole : no, status : ?
    [
        ExecMethod = FuSupport ;
        StateMethod = GetCtrlState ;
    ]
    SID_TRANSLITERATE_FULLWIDTH // ole : no, status : ?
    [
        ExecMethod = FuSupport ;
        StateMethod = GetCtrlState ;
    ]
    SID_TRANSLITERATE_HIRAGANA // ole : no, status : ?
    [
        ExecMethod = FuSupport ;
        StateMethod = GetCtrlState ;
    ]
    SID_TRANSLITERATE_KATAGANA // ole : no, status : ?
    [
        ExecMethod = FuSupport ;
        StateMethod = GetCtrlState ;
    ]
    SID_OPT_LOCALE_CHANGED // ole : no, status : ?
    [
        ExecMethod = ExecCtrl ;
        StateMethod = GetCtrlState ;
    ]

	// #96090#
	SID_GETUNDOSTRINGS // ole : no, status : ?
    [
        ExecMethod = FuSupport ;
        StateMethod = GetMenuState ;
    ]
	SID_UNDO // ole : no, status : ?
    [
        ExecMethod = FuSupport ;
        StateMethod = GetMenuState ;
    ]
	SID_GETREDOSTRINGS // ole : no, status : ?
    [
        ExecMethod = FuSupport ;
        StateMethod = GetMenuState ;
    ]
	SID_REDO // ole : no, status : ?
    [
        ExecMethod = FuSupport ;
        StateMethod = GetMenuState ;
    ]

	SID_SEARCH_OPTIONS // ole : ?, status : ?
	[
		ExecMethod = Execute ;
		StateMethod = GetState ;
		GroupId = GID_DOCUMENT ;
		Cachable ;
	]
	SID_SEARCH_ITEM // ole : ?, status : ?
	[
		ExecMethod = Execute ;
		StateMethod = GetState ;
	]
    SID_SPELL_DIALOG // ole : no, status : ?
    [
        ExecMethod = Execute ;
        StateMethod = GetMenuState ;
    ]
}

shell OutlineViewShell
{
    import OutlineView[Automation];
}

