###############################################################################
# Copyright (c) 2001, 2006 Oracle Corporation and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
# 
# Contributors:
#     Oracle Corporation - initial API and implementation
###############################################################################
messages.layout.displayed-values.list=list (an HTML list)
messages.layout.displayed-values.table=table (an HTML table)

selectManyCheckbox.layout.displayed-values.pageDirection=pageDirection (list is laid out vertically)
selectManyCheckbox.layout.displayed-values.lineDirection=lineDirection (list is laid out horizontally)

selectOneRadio.layout.displayed-values.pageDirection=pageDirection (list is laid out vertically)
selectOneRadio.layout.displayed-values.lineDirection=lineDirection (list is laid out horizontally)

any.dir.displayed-values.ltr=ltr (left-to-right)
any.dir.displayed-values.rtl=rtl (right-to-left)

any.frame.displayed-values.none=none (no sides, default value)
any.frame.displayed-values.above=above (top side only)
any.frame.displayed-values.below=below (bottom side only)
any.frame.displayed-values.hsides=hsides (top and bottom sides only)
any.frame.displayed-values.vsides=vsides (right and left sides only)
any.frame.displayed-values.lhs=lhs (left hand side only)
any.frame.displayed-values.rhs=rhs (right hand side only)
any.frame.displayed-values.box=box (all four sides)
any.frame.displayed-values.border=border (all four sides)

any.rules.displayed-values.none=none (no rules, default value)
any.rules.displayed-values.groups=groups (between row groups)
any.rules.displayed-values.rows=rows (between rows only)
any.rules.displayed-values.cols=cols (between columns only)
any.rules.displayed-values.all=all (between all rows and columns)

any.shape.displayed-values.default=default (entire region)
any.shape.displayed-values.rect=rect (rectangular region)
any.shape.displayed-values.circle=circle (circular region)
any.shape.displayed-values.poly=poly (polygonal region)
