/**************************************************************
 *
 * 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 "PaneDockingWindow.hrc"

DockingWindow FLT_LEFT_PANE_IMPRESS_DOCKING_WINDOW
{
	HelpID = "sd:DockingWindow:FLT_LEFT_PANE_IMPRESS_DOCKING_WINDOW" ;
	Border = TRUE ;
	Hide = TRUE ;
	SVLook = TRUE ;
	Sizeable = TRUE ;
	Moveable = TRUE ;
	Closeable = TRUE ;
	Zoomable = TRUE ;
	Dockable = TRUE ;
	EnableResizing = TRUE ;
	Size = MAP_APPFONT ( 100, 200 ) ;
	Text [ en-US ] = "Slide Pane" ;
};

DockingWindow FLT_LEFT_PANE_DRAW_DOCKING_WINDOW
{
	HelpID = "sd:DockingWindow:FLT_LEFT_PANE_DRAW_DOCKING_WINDOW" ;
	Border = TRUE ;
	Hide = TRUE ;
	SVLook = TRUE ;
	Sizeable = TRUE ;
	Moveable = TRUE ;
	Closeable = TRUE ;
	Zoomable = TRUE ;
	Dockable = TRUE ;
	EnableResizing = TRUE ;
	Size = MAP_APPFONT ( 100, 200 ) ;
	Text [ en-US ] = "Page Pane" ;
};

DockingWindow FLT_TOOL_PANEL_DOCKING_WINDOW
{
	HelpID = "sd:DockingWindow:FLT_TOOL_PANEL_DOCKING_WINDOW" ;
	Border = TRUE ;
	Hide = TRUE ;
	SVLook = TRUE ;
	Sizeable = TRUE ;
	Moveable = TRUE ;
	Closeable = TRUE ;
	Zoomable = TRUE ;
	Dockable = TRUE ;
	EnableResizing = TRUE ;
	Size = MAP_APPFONT ( 100, 200 ) ;
	Text [ en-US ] = "Task Pane" ;
};

// ********************************************************************** EOF
