# messages.properties
#
# /*******************************************************************************
# * Copyright (c) 2007 IBM 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:
# *     IBM Corporation - initial API and implementation
# *******************************************************************************/

GeoPPage.Viz = Geographic Visualization Preferences


GeoPPage.bc = &Borders Color
GeoPPage.drawpolyborders = Draw &Polygon Borders
GeoPPage.logscale = Use Logarithmic Scale
GeoPPage.gainf = Gain &Factor

GeoPPage.numErr = The field is not a valid number.
GFactor.negErr = The Gain Factor must be greater than 0.0
