# 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
# *******************************************************************************/

# Chart Canvas
CC.title=Relative Value

# Phase Space
PH.title=Phase Space

# Time Series and Aggregate Time Series
TS.TIMELABEL=time

# Axis labels
XAXISDEF.title=X Axis
YAXISDEF.title=Y Axis

# Context menu entries
ContextMenu.LinearTimeScale=Linear Scale
ContextMenu.LogTimeScale=Log Scale
ContextMenu.LinearScaling=Linear Scale
ContextMenu.LogScaling=Log Scale
ContextMenu.ShowLegend=Show Legend
ContextMenu.HideLegend=Hide Legend
# labels
REPORTVIEW.SELECTREFENCEFOLDER=Select Reference Folder

