###############################################################################
#  Copyright (c) 2017 CEA LIST.
#
#  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:
#  		CEA LIST - Initial API and implementation
###############################################################################
# Copyright (c) 2013 CEA LIST.
# 
# 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:
#   CEA LIST - Initial API and implementation
# 

pluginName = Papyrus CDO Model Repository UI (Incubation)
providerName = Eclipse Modeling Project

reposView.name = Model Repositories
repoPropertyPage.name = CDO Repository Connection
cdoDecorator.label = CDO State Decorations
cdoDecorator.description = Decorates elements in Papyrus model repositories with CDO lock and conflict states.
locksMenu.label = Locks/Conflicts
lockCommand.label = Lock
unlockCommand.label = Unlock
resolveCommand.label = Resolve Conflicts
importCommand.label = Import into Repository...
exportCommand.label = Export to Workspace...
lockCommand.name = Lock objects
unlockCommand.name = Unlock objects
resolveCommand.name = Resolve conflicts
importCommand.name = Import Models into Repository
exportCommand.name = Export Model to Workspace
navigatorDropContent.name = Papyrus Model Repository Content
repoFiltersExtPt.name = Model Repository Item Provider Filters
openInModelRepositoriesCommand.label = Open in Model Repositories
openInModelRepositoriesCommand.name = Open in Model Repositories View

pluginDescription=The main UI components (views, editors) for CDO integration in the Papyrus modeler workbench.