###############################################################################
# Copyright (c) 2000, 2004 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.SWTBrowserDemos.name = SWT Browser Demos Plugin
category.SWTExamples.name = SWT Examples
view.BrowserDemos.name = Browser Demo

launchcategory.SWTViewExamples.name = Workbench Views
launchcategory.SWTViewExamples.description = \
	A collection of Standard Widget Toolkit examples that run as Views inside the Workbench.  \
	These examples will create a new View in the current Perspective.

launchitem.BrowserDemos.name = Browser Demo
launchitem.BrowserDemos.description = \
	The example illustrates how to use the SWT Browser widget for HTML rendering.\n\n\
	The Pawns Game is a board game that can be played against the computer or against another player.\n\n\
	Rendering is based on HTML and CSS techniques. The board is a table filled with hyperlinks. Cascading Style Sheets \
	provide various themes and control the table aesthetic appearance. \n\
	The API org.eclipse.swt.browser.Browser.setText(java.lang.String) draws the board game from HTML generated in memory.\n\
	Player moves are captured by implementing the interface org.eclipse.swt.browser.LocationListener. e.g the player clicks \
	on a cell that defines an hyperlink with a URL http://www.org.eclipse.swt.examples.browser.demos/xx1yy2.\
	That hyperlink identifies the position of the cell selected by the player. The move is completed by generating \
	new HTML content and invoking Browser.setText to update the board game.

view.name = Browser Demo