###############################################################################
# Copyright (c) 2000, 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
###############################################################################
providerName = Eclipse.org
plugin.SWTStandaloneExampleSet.name = SWT Standalone Examples Plugin

launchcategory.SWTStandaloneExamples.name = Standalone
launchcategory.SWTStandaloneExamples.description = \
	A collection of Standard Widget Toolkit examples that run independant \
	of the Eclipse Platform.

launchitem.AddressBook.name = Address Book
launchitem.AddressBook.description = \
	The AddressBook example shows how the Table control can be used to \
	present information in a tabular format.\n\n\
	The application can save and load data from a file, sort the entries, and \
	search for strings within the fields.

launchitem.BrowserExample.name = Browser
launchitem.BrowserExample.description = \
	This example is a simple demonstration of the SWT Browser widget.\n\n\
	It consists of a composite containing a Browser widget to render HTML. \
	Additional widgets allow the user to perform typical browser actions (for example, navigate to a particular URL, go back, forward, refresh and stop).

launchitem.Clipboard.name = Clipboard
launchitem.Clipboard.description = \
	The Clipboard example shows the various SWT clipboard transfer types in use.

launchitem.ControlExample.name = SWT Controls Example
launchitem.ControlExample.description = \
	The Controls example is a simple demonstration of common SWT controls. \n\n\
	It consists of a tab folder where each tab in the folder allows the user \
	to interact with a different control. \
	The user can change styles and settings and view how this affects the control.

launchitem.DND.name = Drag and Drop
launchitem.DND.description = \
	The Drag and Drop example shows the various SWT drag and drop transfer types in use.
	
launchitem.FileViewer.name = File Viewer
launchitem.FileViewer.description = \
	The File Viewer example shows how a simple application can be implemented using SWT.\n\n\
	This application provides the ability to navigate files and folders and manipulate them via Drag and Drop.  \
	It includes the use of alternate threads for long actions and demonstrates the use of the Tree, \
	Table, Toolbar and Program.

launchitem.HoverHelp.name = Hover Help
launchitem.HoverHelp.description = \
	The Hover Help example shows how to implement custom tooltips and hover help support \
	on a number of different SWT controls including Buttons, TableItems, ToolItems and TreeItems.\n\n\
	The example implements its own tooltip and hover help support.  \
	To see the custom tooltips in action, hover over an item or button in the UI.  \
	An image appears in the left-hand corner of the tooltip.\n\n\
	To see the custom hover help in action, hover over an item or button in the UI until \
	the tooltip is displayed.  Without moving the mouse, hit F1.  A new Shell will pop up with the \
	extended hover help information for the UI element in question

launchitem.HelloWorld1.name = Hello World (1)
launchitem.HelloWorld1.description = \
	This example demonstrates how to open a Shell and process the events.

launchitem.HelloWorld2.name = Hello World (2)
launchitem.HelloWorld2.description = \
	This example builds on HelloWorld1 and demonstrates how to display a Label inside the Shell.

launchitem.HelloWorld3.name = Hello World (3)
launchitem.HelloWorld3.description = \
	This example builds on HelloWorld2 and demonstrates how to resize the Label \
	when the Shell resizes using a Listener mechanism.

launchitem.HelloWorld4.name = Hello World (4)
launchitem.HelloWorld4.description = \
	This example builds on HelloWorld2 and demonstrates how to resize the Label \
	when the Shell resizes using a Layout.

launchitem.HelloWorld5.name = Hello World (5)
launchitem.HelloWorld5.description = \
	This example builds on HelloWorld1 and demonstrates how to draw directly on an SWT Control using a graphic context.

launchitem.ImageAnalyzer.name = Image Analyzer
launchitem.ImageAnalyzer.description = \
	The ImageAnalyzer opens image files and displays the visual contents of the file along with a \
	summary of the data in the image file.\n\n\
	The user can make adjustments to various elements of the image such as scaling and Alpha \
	blending and can save these changes to a file.\n\n\
	The ImageAnalyzer will load and display image files of type GIF, JPEG, BMP, ICO, PNG, and TIFF.  \
	To open a file, use the File->Open... menu item, and select the image file in the FileDialog.\n\n\
	If the file is an interlaced GIF or PNG or a progressive JPEG, and Incremental Display is selected, \
	then the ImageAnalyzer displays the image increments as they are being loaded.\n\n\
	If the file contains an animated GIF, then the Next, Previous, and Animate buttons become enabled, \
	and they can be used to cycle through the images in the file, or animate them. If a GIF defines a background color, \
	as many animated GIFs do, selecting Background will use the GIF's background color.\n\n\
	If the image has transparency (possible with GIF, PNG, or ICO), then selecting Display Mask will draw the image's transparency \
	mask to the right of the image. You can change the background color of the ImageAnalyzer to see the transparency work. \
	To turn off the transparency, deselect Display Transparency.\n\n\
	After an image is loaded, it can be scaled or have alpha transparency applied, using the Scale and Alpha-K combos, \
	and the Alpha menu. File->Reopen restores scaling and Alpha to their default values and reloads the current image file.\n\n\
	File->Save As... can be used to save the currently loaded image to another type of image file. If the image has transparency, \
	File->Save Mask As... saves the image's transparency mask.\n\n\
	When SWT loads an image file, an instance of org.eclipse.swt.graphics.ImageData is created. (In the case of an ICO file or \
	multi-image GIF, an array of ImageData instances is created). The ImageAnalyzer displays all of the data stored in the ImageData \
	instance(s) for the currently loaded image file, including the pixel data. Hovering over a pixel in the image display will show the RGB \
	color data for that pixel. For certain images (particularly animated GIFs) additional data is stored in the org.eclipse.swt.graphics.ImageLoader \
	instance used to load the image. The ImageAnalyzer displays this data as well.

launchitem.JavaViewer.name = Java Syntax Viewer
launchitem.JavaViewer.description = \
	This example demonstrates how to implement a user-defined line styler for the StyledText widget.\n\n\
	The example provides a typical editor interface.  \
	To see the effect of the line styler, open a *.java file.  \
	When the contents of the file are displayed in the editor area, notice that the keywords have been highlighted.

launchitem.LayoutExample.name = Layout Example
launchitem.LayoutExample.description = \
	This example is a simple demonstration of common SWT layouts. \n\n\
	It consists of a tab folder where each tab in the folder allows the \
	user to interact with a different SWT layout. \
	The user can insert widgets into a layout and set the values of the layout data \
	using a property sheet.  When the user has a suitable arrangement, code can be \
	generated by clicking on the Code button.

launchitem.AdvancedGraphics.name = Advanced Graphics
launchitem.AdvancedGraphics.description = \
	This example (updated for 3.3) contains a collection of applications that show the use of advanced graphics operations.

launchitem.TextEditor.name = Text Editor
launchitem.TextEditor.description = \
	This example demonstrates how to use the StyledText widget to implement \
	a text editor with formatting support.\n\n\
	The example has a typical text editor interface.  \
	The Edit menu contains Cut, Copy, Paste and Set Font items and the toolbar \
	provides a bold text toggle, three colour tools that operate on the current \
	selection, and a reset to defaults button that also operates on the current selection.
	
