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



#ifndef _DBU_CONTROL_HRC_
#include "dbu_control.hrc"
#endif
#ifndef _DBAUI_TABLETREE_HRC_
#include "tabletree.hrc"
#endif
#include "browserids.hxx"


Menu MENU_TABLETREE_POPUP
{
	ItemList =
	{
		MenuItem
		{
			Identifier = MID_SORT_ASCENDING;
			Text [ en-US ] = "Sort Ascending";
		};
		MenuItem
		{
			Identifier = MID_SORT_DECENDING;
			Text [ en-US ] = "Sort Descending";
		};
	};
};

String STR_COULDNOTCREATE_DRIVERMANAGER
{
	Text [ en-US ] = "Cannot connect to the SDBC driver manager (#servicename#).";
};

String STR_NOREGISTEREDDRIVER
{
	Text [ en-US ] = "A driver is not registered for the URL #connurl#.";
};

String STR_COULDNOTCONNECT
{
	Text [ en-US ] = "No connection could be established for the URL #connurl#.";
};
String STR_COULDNOTCONNECT_PLEASECHECK
{
	Text [ en-US ] = "Please check the current settings, for example user name and password.";
};
String STR_NOTABLEINFO
{
	Text [ en-US ] = "Successfully connected, but information about database tables is not available.";
};
String STR_ALL_TABLES
{
	Text [ en-US ] = "All tables";
};
String STR_ALL_VIEWS
{
	Text [ en-US ] = "All views";
};
String STR_ALL_TABLES_AND_VIEWS
{
	Text [ en-US ] = "All tables and views";
};
