###############################################################################
# Copyright (c) 2000, 2005 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
#     Cagatay Kavukcuoglu <cagatayk@acm.org> - Filter for markers in same project
###############################################################################

# package: org.eclipse.ui.views.tasklist


# ==============================================================================
# TaskList
# ==============================================================================

TaskList_line = line {0}
TaskList_lineAndLocation = line {0} in {1}

TaskList_statusSummaryVisible = {0,choice,0#0 items|1#{0,number,integer} item|1<{0,number,integer} items}: {1}
TaskList_statusSummarySelected = {0,choice,0#0 items|1#{0,number,integer} item|1<{0,number,integer} items} selected: {1}
TaskList_statusSummaryBreakdown = {0,choice,0#0 tasks|1#{0,number,integer} task|1<{0,number,integer} tasks}, {1,choice,0#0 errors|1#{1,number,integer} error|1<{1,number,integer} errors}, {2,choice,0#0 warnings|1#{2,number,integer} warning|1<{2,number,integer} warnings}, {3,choice,0#0 infos|1#{3,number,integer} info|1<{3,number,integer} infos}
TaskList_titleSummaryUnfiltered = {0,choice,0#0 items|1#{0,number,integer} item|1<{0,number,integer} items}
TaskList_titleSummaryFiltered = Filter matched {0} of {1,choice,0#0 items|1#{1,number,integer} item|1<{1,number,integer} items}

TaskList_headerIcon =
TaskList_headerCompleted = C
TaskList_headerPriority = !
TaskList_headerDescription = Description
TaskList_headerResource = Resource
TaskList_headerFolder = In Folder
TaskList_headerLocation = Location

TaskList_high = High
TaskList_low = Low
TaskList_normal = Normal

TaskList_errorModifyingTask = Error modifying task

TaskList_reportKind = Kind
TaskList_reportStatus = Status
TaskList_reportPriority = Priority

TaskList_task = Task
TaskList_error = Error
TaskList_warning = Warning
TaskList_info = Info

TaskList_completed = Completed
TaskList_notCompleted = Not Completed

TaskList_markerLimitExceeded = There are too many items to display.\n\
To see items in this window, adjust the filter settings.

# --- Actions ---
NewTask_text = &New Task
NewTask_tooltip = New Task
NewTask_notShownTitle = New Task Not Visible
NewTask_notShownMsg = The new task will not be visible, due to the current filter settings.\n\
To see all tasks, choose Filter... then select the Reset button.

CopyTask_text = &Copy
CopyTask_tooltip = Copy

PasteTask_text = &Paste
PasteTask_tooltip = Paste
PasteTask_errorMessage = Error pasting task

RemoveTask_text = &Delete
RemoveTask_tooltip = Delete
RemoveTask_errorMessage = Error deleting task

Filters_text = &Filters...
Filters_tooltip = Filters...

SortByMenu_text= &Sort
SortByCategory_text= by &Type
SortByCategory_tooltip= Sort by type column
SortByCompleted_text= by &Completion
SortByCompleted_tooltip= Sort by completion column
SortByPriority_text= by &Priority
SortByPriority_tooltip= Sort by priority column
SortByDescription_text= by &Description
SortByDescription_tooltip= Sort by description column
SortByResource_text= by &Resource
SortByResource_tooltip= Sort by resource column
SortByContainer_text= by &Folder
SortByContainer_tooltip= Sort by folder column
SortByLocation_text= by &Location
SortByLocation_tooltip= Sort by location column
SortByCreationTime_text= by Cr&eation Time
SortByCreationTime_tooltip= Sort by task creation time
SortAscending_text= &Ascending
SortAscending_tooltip= Sort ascending
SortDescending_text= De&scending
SortDescending_tooltip= Sort Descending

GotoTask_text = &Go To
GotoTask_tooltip = Go To
GotoTask_errorMessage = Problems Opening Editor

PurgeCompleted_text = Delete Completed &Tasks
PurgeCompleted_tooltip = Delete Completed Tasks
PurgeCompleted_title = Delete Completed Tasks
PurgeCompleted_noneCompleted = No completed tasks to delete.
PurgeCompleted_permanent = Do you want to permanently delete all {0} completed tasks?
PurgeCompleted_errorMessage = Error deleting completed tasks

MarkCompleted_text = &Mark Completed
MarkCompleted_tooltip = Mark Completed

SelectAll_text = Select A&ll
SelectAll_tooltip = Select All

Resolve_text = &Quick Fix...
Resolve_tooltip = Quick Fix
Resolve_title = Quick Fix
Resolve_noResolutionsLabel = There are no quick fixes available for the selected marker.

Properties_text = P&roperties
Properties_tooltip = Properties

# --- Filter Dialog ---
TaskList_filter = Filter Tasks
TaskList_showItemsOfType = Show items of &type:

TaskList_anyResource = On &any resource
TaskList_anyResourceInSameProject = On any resource in same &project
TaskList_selectedResource = On selected resource &only
TaskList_selectedAndChildren = On selected resource and its &children
TaskList_workingSet = On wor&king set:  {0}
TaskList_workingSetSelect = &Select...
TaskList_noWorkingSet = On wor&king set:  <no working set selected>

TaskList_whereDescription = Where &description
TaskList_contains = contains
TaskList_doesNotContain = does not contain

TaskList_severity_label = Where problem se&verity is:
TaskList_severity_error = &Error
TaskList_severity_warning = Warnin&g
TaskList_severity_info = &Info

TaskList_priority_label = Where task priorit&y is:
TaskList_priority_high = &High
TaskList_priority_low = Lo&w
TaskList_priority_normal = &Normal

TaskList_status_label = Where task stat&us is:
TaskList_status_completed = Co&mpleted
TaskList_status_notCompleted = Not Comp&leted

TaskList_resetText = &Restore Defaults

TaskList_limitVisibleTasksTo = Limit visi&ble items to:
TaskList_titleMarkerLimitInvalid = Error
TaskList_messageMarkerLimitInvalid = The visible item limit must be a positive integer.
TaskPropertiesDialog_WorkingOnMarker=Working on Marker
TaskPropertiesDialog_CreatingMarker=Creating marker

# --- Properties Dialog ---
TaskProp_newTaskTitle = New Task
TaskProp_propertiesTitle = {0} Properties
#TaskProp.titleFmt = {0} - {1}
TaskProp_description = &Description:
TaskProp_creationTime = Creation &Time:
TaskProp_priority = &Priority:
TaskProp_completed = &Completed
TaskProp_severity = Severity:
TaskProp_onResource = On &Resource:
TaskProp_inFolder = In &Folder:
TaskProp_location = &Location:
TaskProp_errorMessage = Error creating or modifying task

CopyToClipboardProblemDialog_title=Problem Copying to Clipboard
CopyToClipboardProblemDialog_message=There was a problem when accessing the system clipboard. Retry?

TaskPropertiesDialog_UpdatingAttributes=Updating attributes
