###############################################################################
#
#   Copyright 2000  The Apache Software Foundation 
#
#   Licensed 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.
#
###############################################################################
#
# Properties for the DOM viewer
#
# Author: stephane@hillion.org
# $Id$
#

DOMViewer.title = Document Tree
DOMViewerPanel.title = DOM Viewer 

CDataPanel.title = CharacterData Node Value

DocumentInfoPanel.title = Document Informations

AttributesPanel.title = Element Attributes 
CSSValuesPanel.title = Element Cascaded CSS Properties

SplitPane.dividerLocation = 220
EmptyDocument.text = <Empty document>

AttributesTable.column1 = Name
AttributesTable.column2 = Value

CSSValuesTable.column1 = Name
CSSValuesTable.column2 = Value

Element.icon = resources/element.gif
Comment.icon = resources/comment.gif
PI.icon = resources/pi.gif
Text.icon = resources/text.gif

Frame.title  = DOM Viewer
Frame.width  = 700
Frame.height = 500

CloseButton.text     = Close
CloseButton.mnemonic = C
CloseButton.tooltip  = Close the tree view frame
CloseButton.action   = CloseButtonAction
