# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
#
# Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
#
# Oracle and Java are registered trademarks of Oracle and/or its affiliates.
# Other names may be trademarks of their respective owners.
#
# The contents of this file are subject to the terms of either the GNU
# General Public License Version 2 only ("GPL") or the Common
# Development and Distribution License("CDDL") (collectively, the
# "License"). You may not use this file except in compliance with the
# License. You can obtain a copy of the License at
# http://www.netbeans.org/cddl-gplv2.html
# or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
# specific language governing permissions and limitations under the
# License.  When distributing the software, include this License Header
# Notice in each file and include the License file at
# nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the GPL Version 2 section of the License file that
# accompanied this code. If applicable, add the following below the
# License Header, with the fields enclosed by brackets [] replaced by
# your own identifying information:
# "Portions Copyrighted [year] [name of copyright owner]"
#
# Contributor(s):
#
# The Original Software is NetBeans. The Initial Developer of the Original
# Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
# Microsystems, Inc. All Rights Reserved.
#
# If you wish your version of this file to be governed by only the CDDL
# or only the GPL Version 2, indicate your decision by adding
# "[Contributor] elects to include this software in this distribution
# under the [CDDL or GPL Version 2] license." If you do not indicate a
# single choice of license, a recipient has the option to distribute
# your version of this file under either the CDDL, the GPL Version 2 or
# to extend the choice of license to its licensees as provided above.
# However, if you add GPL Version 2 code and therefore, elected the GPL
# Version 2 license, then the option applies only if the new code is
# made subject to such option by the copyright holder.

# Manifest

OpenIDE-Module-Name=Diff
OpenIDE-Module-Display-Category=Verktyg
OpenIDE-Module-Short-Description=Provides the diff action to view file differences.
OpenIDE-Module-Long-Description=The Diff module provides an action, that is enabled when two files are selected in the IDE. It is based on an external diff utility, that is executed to obtain the differences, which are then shown to the user graphically.

# mf-layer.xml
Services/Diffs=Diff Services
Services/DiffProviders=Diff Engines
Services/DiffVisualizers=Diff Visualizers
UI/Services/IDEConfiguration/ServerAndExternalToolSettings/DiffTypes=Diff and Merge Types

# DiffAction
CTL_DiffActionName=Di&ff
BK0001=Diffing...
CTL_DiffToActionName=Di&ff To...
ACSD_BrowseDiffToFile = Lets you browse for the second file to diff
DiffTo_BrowseFile_Title = Diff {0} To...
DiffTo_BrowseFile_OK = Diff
EditorBufferSelectorPanel.jLabel1.text=&Files Open In Editor:

# PatchAction
CTL_PatchActionName=Appl&y Diff Patch...
EXC_PatchParsingFailed=Parsing of the patch file failed: {0}
TITLE_SelectPatchForFile=Select The Diff Patch For {0}
TITLE_SelectPatchForFolder=Select The Diff Patch For Files In {0}
BTN_Patch=Patch
BTN_Patch_mnc=P
BTN_Patch_tooltip=Select the diff patch file to apply.
MSG_NoDifferences=No differences found in file {0}.
EXC_PatchApplicationFailed=Application of the patch to ''{1}'' failed: {0}
EXC_CopyOfAppliedPatchFailed=The patch application failed, it's not possible to write to {0}.
MSG_NotFoundFiles=Following files are to be patched, but not found: {0}
MSG_WrongPatch = The patch cannot be applied in the selected context. 
MSG_WrongPatch_Hint = The patch cannot be applied in the selected context. It was originally generated relative to "{0}". 
MSG_PatchAppliedSuccessfully=Patch applied successfully. View applied changes? (patched binary files will not be displayed)
MSG_PatchAppliedPartially=The patch was partially applied. See the output tab for more information.\nDo you want to view the applied changes now? (patched binary files will not be displayed)
EXC_CannotRemoveBackup=The following backup copies cannot be removed after successful application of a patch:\n {0} Reason(s):\n {1}

MSG_NoDifferenceInFile=No differences were found between {0} and {1}.
MSG_DiffFailed=Diff failed for {0} and {1}.
#CTL_DiffTitleFile=Diff: {0} - {1}

MSG_NoDiffVisualizer=No Diff Visualizer is registered in the system.
MSG_NoDiffProvider=No Diff Engine is registered in the system.


ACSD_PatchDialog=This dialog allows you to choose patch
CTL_PatchDialog_FileFilter = Patch Files (*.diff, *.patch)

# Options Export
Diff.Options.Export.displayName=Diff

