# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
#
# Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
#
# Oracle and Java are registered trademarks of Oracle and/or its affiliates.
# Other names may be trademarks of their respective owners.
#
# The contents of this file are subject to the terms of either the GNU
# General Public License Version 2 only ("GPL") or the Common
# Development and Distribution License("CDDL") (collectively, the
# "License"). You may not use this file except in compliance with the
# License. You can obtain a copy of the License at
# http://www.netbeans.org/cddl-gplv2.html
# or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
# specific language governing permissions and limitations under the
# License.  When distributing the software, include this License Header
# Notice in each file and include the License file at
# nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the GPL Version 2 section of the License file that
# accompanied this code. If applicable, add the following below the
# License Header, with the fields enclosed by brackets [] replaced by
# your own identifying information:
# "Portions Copyrighted [year] [name of copyright owner]"
#
# Contributor(s):
#
# The Original Software is NetBeans. The Initial Developer of the Original
# Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
# Microsystems, Inc. All Rights Reserved.
#
# If you wish your version of this file to be governed by only the CDDL
# or only the GPL Version 2, indicate your decision by adding
# "[Contributor] elects to include this software in this distribution
# under the [CDDL or GPL Version 2] license." If you do not indicate a
# single choice of license, a recipient has the option to distribute
# your version of this file under either the CDDL, the GPL Version 2 or
# to extend the choice of license to its licensees as provided above.
# However, if you add GPL Version 2 code and therefore, elected the GPL
# Version 2 license, then the option applies only if the new code is
# made subject to such option by the copyright holder.


# manifest
OpenIDE-Module-Name=UI Utilities API
OpenIDE-Module-Display-Category=Infrastructure
OpenIDE-Module-Short-Description=User interface utilities.
OpenIDE-Module-Long-Description=Helper methods for various UI related tasks.



#MenuBar
EXC_LoadMenu=Unable to load menu {0}
EXC_LoadMenuItem=Unable to load menu item {0}

#HtmlBrowser
CTL_Back=Back
CTL_Forward=Forward
CTL_Reload=Reload
CTL_Stop=Stop
CTL_Document_done=Document: Done
#CTL_Loading_progress=Loading progress:
CTL_Loading=Loading
EXC_Module=Exception during initialization of HTML browser module
CTL_WebBrowser=Web Browser
HINT_WebBrowser=Web Browser
#NOI18N
#PROP_HomePage=http://www.netbeans.org/
ACS_HtmlBrowser=Browser view
ACSD_HtmlBrowser=N/A
ACS_HtmlBrowser_Location=Location
ACSD_HtmlBrowser_Location=N/A

# Splitted panel
SplittedPanelVertical=Vertical
SplittedPanelHorizontal=Horizontal
SplittedPanelSwap=Swap panels
ResetSplitter=Reset split line
ACS_SplittedPanel_Name=First panel {0}. Second panel {1}.
ACS_SplittedPanel_Description=First panel {0}. Second panel {1}.
ACS_SplittedPanel_EmptySplitter=N/A
ACSD_SplittedPanel_EmptySplitter=N/A

# Tooltip message for an action button
# {0} = name of the action
# {1} = shortcut
FMT_ButtonHint={0} ({1})

# SwingBrowserImpl
ACS_SwingBrowserImpl_SwingBrowser=N/A
#Title while loading
LBL_Loading=Loading...
#Title if html doesn't contain title tags
LBL_Untitled=Untitled
#Truncated title if > 80 characters
LBL_Title={0}...
FMT_UnknownHost=Unknown host: {0}
FMT_InvalidURL=Invalid URL: {0}
FMT_NoRouteToHost=No route to host: {0}




#
# UI Logging
#
# UI logging of button press
# {0} instance of the button
# {1} class of the button
# {2} instance of the action
# {3} class of the action
# {4} display name of the action
UI_ACTION_BUTTON_PRESS=Invoking {4} implemented as {3} thru {1}


# action and their performers
Open=Open
Edit=Edit
Print=&Print...
View=View
Close=Close

