# messages.properties
#
# /*******************************************************************************
# * Copyright (c) 2006 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
# *******************************************************************************/

# Stem Polygon
# Nothing, all common

# Internal Map View
IMView.MRefresh = Polygon Refresh
IMView.MProp=Now Displaying
IMView.Edges = Edges

# Map Canvas context menu messages
MapMenu.Reset=Reset Map
MapMenu.GainFactor=Gain Factor
MapMenu.Logrithmic_Scaling=Logarithmic Scaling
MapMenu.Polygon_Borders=Draw Polygon Borders
MapMenu.Polygon_Centers=Connect Polygon Centers
MapMenu.Reports_Select=Select Reports
