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.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.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, and PNG.  \
	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.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.
	