Index: tmp/org.txm.tmp.rcp/.project
===================================================================
--- tmp/org.txm.tmp.rcp/.project	(revision 0)
+++ tmp/org.txm.tmp.rcp/.project	(revision 512)
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.txm.tmp.rcp</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>

Property changes on: tmp/org.txm.tmp.rcp/.project
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tmp/org.txm.tmp.rcp/contexts.xml
===================================================================
--- tmp/org.txm.tmp.rcp/contexts.xml	(revision 0)
+++ tmp/org.txm.tmp.rcp/contexts.xml	(revision 512)
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<contexts>
+	<context id="viewer" title="Sample View">
+		<description>This is the context help for the sample view with a table viewer. It was generated by a PDE template.</description>
+		<topic href="/PLUGINS_ROOT/org.eclipse.platform.doc.isv/guide/ua_help_context.htm" label="Context-sensitive help">
+			<enablement>
+				<with variable="platform">
+	            	<test property="org.eclipse.core.runtime.isBundleInstalled" args="org.eclipse.platform.doc.isv"/>
+	     		</with>
+			</enablement>
+		</topic>
+	</context>
+</contexts>

Property changes on: tmp/org.txm.tmp.rcp/contexts.xml
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tmp/org.txm.tmp.rcp/src/org/eclipse/swt/snippets/Snippet36.java
===================================================================
--- tmp/org.txm.tmp.rcp/src/org/eclipse/swt/snippets/Snippet36.java	(revision 0)
+++ tmp/org.txm.tmp.rcp/src/org/eclipse/swt/snippets/Snippet36.java	(revision 512)
@@ -0,0 +1,42 @@
+package org.eclipse.swt.snippets;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.GC;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.ToolBar;
+import org.eclipse.swt.widgets.ToolItem;
+
+public class Snippet36 {
+
+  public static void main (final String [] args) {
+    Display display = new Display();
+    Image image = new Image (display, 16, 16);
+    Color color = display.getSystemColor (SWT.COLOR_RED);
+    GC gc = new GC (image);
+    gc.setBackground (color);
+    gc.fillRectangle (image.getBounds ());
+    gc.dispose ();
+    Shell shell = new Shell (display);
+    ToolBar toolBar = new ToolBar (shell, SWT.FLAT | SWT.BORDER | SWT.RIGHT);
+    Rectangle clientArea = shell.getClientArea ();
+    toolBar.setLocation (clientArea.x, clientArea.y);
+    String[] labels = new String[] {"Short", "Quite a bit longer", "OK"};
+    for (int i=0; i<3; i++) {
+      ToolItem item = new ToolItem (toolBar, SWT.PUSH);
+      item.setText(labels[i]);
+      item.setImage (image);
+    }
+    toolBar.pack ();
+    shell.open ();
+    while (!shell.isDisposed()) {
+      if (!display.readAndDispatch ()) {
+        display.sleep ();
+      }
+    }
+    image.dispose ();
+    display.dispose ();
+  }
+}
\ No newline at end of file

Property changes on: tmp/org.txm.tmp.rcp/src/org/eclipse/swt/snippets/Snippet36.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tmp/org.txm.tmp.rcp/src/org/txm/tmp/rcp/tableviewer/PlayerTable.java
===================================================================
--- tmp/org.txm.tmp.rcp/src/org/txm/tmp/rcp/tableviewer/PlayerTable.java	(revision 0)
+++ tmp/org.txm.tmp.rcp/src/org/txm/tmp/rcp/tableviewer/PlayerTable.java	(revision 512)
@@ -0,0 +1,292 @@
+package org.txm.tmp.rcp.tableviewer;
+
+import java.util.ArrayList;
+
+import org.eclipse.jface.viewers.ColumnLabelProvider;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.TableViewerColumn;
+import org.eclipse.jface.window.ApplicationWindow;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.ScrollBar;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Spinner;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+
+/**
+ * This class demonstrates TableViewers
+ */
+public class PlayerTable extends ApplicationWindow {
+
+	ArrayList<TableColumn> columns = new ArrayList<>();
+
+	// The data model
+	private PlayerTableModel model;
+
+	// The table viewer
+	private TableViewer rightTV;
+
+	private Spinner noSpinner;
+
+	private TableViewer leftTV;
+
+	private Table rightTable, leftTable;
+
+	private ScrollBar vBarLeft;
+
+	private ScrollBar vBarRight;
+
+	/**
+	 * Constructs a PlayerTable
+	 */
+	public PlayerTable() {
+		super(null);
+		model = new PlayerTableModel();
+	}
+
+	/**
+	 * Runs the application
+	 */
+	public void run() {
+		// Don't return from open() until window closes
+		setBlockOnOpen(true);
+
+		// Open the main window
+		open();
+
+		// Dispose the display
+		Display.getCurrent().dispose();
+	}
+
+	/**
+	 * Configures the shell
+	 * 
+	 * @param shell
+	 *            the shell
+	 */
+	protected void configureShell(Shell shell) {
+		super.configureShell(shell);
+		shell.setSize(400, 400);
+	}
+
+	/**
+	 * Creates the main window's contents
+	 * 
+	 * @param parent
+	 *            the main window
+	 * @return Control
+	 */
+	protected Control createContents(Composite parent) {
+		// Create the composite to hold the controls
+		Composite composite = new Composite(parent, SWT.NONE);
+		composite.setLayout(new GridLayout(2, false));
+
+		noSpinner = new Spinner(composite, SWT.NONE);
+		noSpinner.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+		noSpinner.setMaximum(10);
+		noSpinner.setMinimum(0);
+
+		Button addColumn = new Button(composite, SWT.PUSH);
+		addColumn.setText("add column");
+		addColumn.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+		addColumn.addSelectionListener(new SelectionListener() {
+
+			@Override
+			public void widgetSelected(SelectionEvent e) {
+				TableViewerColumn tc = new TableViewerColumn(rightTV, SWT.LEFT, 0);
+				columns.add(0, tc.getColumn());
+				tc.getColumn().setText("Col "+noSpinner.getSelection());
+				tc.getColumn().setWidth(100);
+				tc.setLabelProvider(new ColumnLabelProvider() {
+
+					int i = noSpinner.getSelection();
+
+					@Override
+					public String getText(Object element) {
+						return ""+element+element+element+element;
+					}
+				});
+
+				tc.getColumn().addSelectionListener(new SelectionAdapter() {
+					public void widgetSelected(SelectionEvent event) {
+						((PlayerViewerSorter) rightTV.getSorter())
+						.doSort(PlayerConst.COLUMN_LAST_NAME);
+						rightTV.refresh();
+					}
+				});
+
+				rightTV.refresh();
+			}
+
+			@Override
+			public void widgetDefaultSelected(SelectionEvent e) { }
+		});
+
+		Button killColumn = new Button(composite, SWT.PUSH);
+		killColumn.setText("remove last column");
+		killColumn.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+		killColumn.addSelectionListener(new SelectionListener() {
+
+			@Override
+			public void widgetSelected(SelectionEvent e) {
+				TableColumn tc = columns.remove(columns.size()-1);
+				tc.dispose();
+			}
+
+			@Override
+			public void widgetDefaultSelected(SelectionEvent e) { }
+		});
+
+		// Create the combo to hold the team names
+		Combo combo = new Combo(composite, SWT.READ_ONLY);
+		combo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+
+		// Create the table viewer to display the players
+		leftTable = new Table (composite, SWT.BORDER);
+		leftTV = new TableViewer(leftTable);
+		leftTable.setLayoutData(new GridData(GridData.FILL_BOTH));
+		leftTV.setContentProvider(new PlayerContentProvider());
+		leftTV.setSorter(new PlayerViewerSorter());
+
+		// Add the team names to the combo
+		for (int i = 0, n = model.teams.length; i < n; i++) {
+			combo.add(model.teams[i].getName());
+		}
+
+		// Add a listener to change the tableviewer's input
+		combo.addSelectionListener(new SelectionAdapter() {
+			public void widgetSelected(SelectionEvent event) {
+				update(model.teams[((Combo) event.widget).getSelectionIndex()]);
+			}
+		});
+
+		// Turn on the header and the lines
+		leftTable.setHeaderVisible(true);
+		leftTable.setLinesVisible(true);
+
+		TableViewerColumn tc = new TableViewerColumn(leftTV, SWT.LEFT, 0);
+		columns.add(0, tc.getColumn());
+		tc.getColumn().setText("Col "+noSpinner.getSelection());
+		tc.getColumn().setWidth(100);
+		tc.setLabelProvider(new ColumnLabelProvider() {
+
+			int i = noSpinner.getSelection();
+
+			@Override
+			public String getText(Object element) {
+				String l = ""+element;
+				if (l.length() < i) return "too long";
+
+				else return l.substring(i);
+
+			}
+		});
+
+		tc.getColumn().addSelectionListener(new SelectionAdapter() {
+			public void widgetSelected(SelectionEvent event) {
+				((PlayerViewerSorter) leftTV.getSorter())
+				.doSort(PlayerConst.COLUMN_LAST_NAME);
+				leftTV.refresh();
+			}
+		});
+
+		// Create the table viewer to display the players
+		rightTable = new Table (composite, SWT.BORDER);
+		rightTV = new TableViewer(rightTable);
+		rightTable.setLayoutData(new GridData(GridData.FILL_BOTH));
+		rightTV.setContentProvider(new PlayerContentProvider());
+		rightTV.setSorter(new PlayerViewerSorter());
+
+
+		// Add the team names to the combo
+		for (int i = 0, n = model.teams.length; i < n; i++) {
+			combo.add(model.teams[i].getName());
+		}
+
+		// Add a listener to change the tableviewer's input
+		combo.addSelectionListener(new SelectionAdapter() {
+			public void widgetSelected(SelectionEvent event) {
+				update(model.teams[((Combo) event.widget).getSelectionIndex()]);
+			}
+		});
+
+		// Turn on the header and the lines
+		rightTable.setHeaderVisible(true);
+		rightTable.setLinesVisible(true);
+
+		leftTable.addSelectionListener(new SelectionListener() {
+			@Override
+			public void widgetSelected(SelectionEvent e) {
+				rightTable.setSelection(leftTable.getSelectionIndex());
+			}
+			@Override
+			public void widgetDefaultSelected(SelectionEvent e) { }
+		});
+		vBarLeft = leftTable.getVerticalBar();
+		vBarLeft.addListener(SWT.Selection, new Listener() {
+			@Override
+			public void handleEvent(Event event) {
+				vBarRight.setSelection(vBarLeft.getSelection());
+			}
+		});
+		rightTable.addSelectionListener(new SelectionListener() {
+			@Override
+			public void widgetSelected(SelectionEvent e) {
+				leftTable.setSelection(rightTable.getSelectionIndex());
+			}
+			@Override
+			public void widgetDefaultSelected(SelectionEvent e) { }
+		});
+		vBarRight = rightTable.getVerticalBar();
+		vBarRight.addListener(SWT.Selection, new Listener() {
+			@Override
+			public void handleEvent(Event event) {
+				vBarLeft.setSelection(vBarRight.getSelection());
+			}
+		});
+
+		// Select the first item
+		combo.select(0);
+		update(model.teams[0]);
+
+		return composite;
+	}
+
+	/**
+	 * Updates the application with the selected team
+	 * 
+	 * @param team
+	 *            the team
+	 */
+	private void update(Team team) {
+		// Update the window's title bar with the new team
+		getShell().setText(team.getYear() + " " + team.getName());
+
+		// Set the table viewer's input to the team
+		rightTV.setInput(team);
+		leftTV.setInput(team);
+	}
+
+	/**
+	 * The application entry point
+	 * 
+	 * @param args
+	 *            the command line arguments
+	 */
+	public static void main(String[] args) {
+		new PlayerTable().run();
+	}
+}

Property changes on: tmp/org.txm.tmp.rcp/src/org/txm/tmp/rcp/tableviewer/PlayerTable.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tmp/org.txm.tmp.rcp/src/org/txm/tmp/rcp/tableviewer/PlayerTableModel.java
===================================================================
--- tmp/org.txm.tmp.rcp/src/org/txm/tmp/rcp/tableviewer/PlayerTableModel.java	(revision 0)
+++ tmp/org.txm.tmp.rcp/src/org/txm/tmp/rcp/tableviewer/PlayerTableModel.java	(revision 512)
@@ -0,0 +1,49 @@
+package org.txm.tmp.rcp.tableviewer;
+
+public class PlayerTableModel {
+	  public Team[] teams;
+
+	  /**
+	   * Constructs a PlayerTableModel Fills the model with data
+	   */
+	  public PlayerTableModel() {
+	    teams = new Team[3];
+
+	    teams[0] = new Team("Celtics", "1985-86");
+	    for (int i = 1 ; i <= 100 ; i++) {
+	    	teams[0].add(new Player("N"+i, "M"+i, 25.8f, 9.8f, 6.8f));
+	    }
+
+	    teams[1] = new Team("Bulls", "1995-96");
+	    teams[1].add(new Player("Michael", "Jordan", 30.4f, 6.6f, 4.3f));
+	    teams[1].add(new Player("Scottie", "Pippen", 19.4f, 6.4f, 5.9f));
+	    teams[1].add(new Player("Toni", "Kukoc", 13.1f, 4.0f, 3.5f));
+	    teams[1].add(new Player("Luc", "Longley", 9.1f, 5.1f, 1.9f));
+	    teams[1].add(new Player("Steve", "Kerr", 8.4f, 1.3f, 2.3f));
+	    teams[1].add(new Player("Ron", "Harper", 7.4f, 2.7f, 2.6f));
+	    teams[1].add(new Player("Dennis", "Rodman", 5.5f, 14.9f, 2.5f));
+	    teams[1].add(new Player("Bill", "Wennington", 5.3f, 2.5f, 0.6f));
+	    teams[1].add(new Player("Jack", "Haley", 5.0f, 2.0f, 0.0f));
+	    teams[1].add(new Player("John", "Salley", 4.4f, 3.3f, 1.3f));
+	    teams[1].add(new Player("Jud", "Buechler", 3.8f, 1.5f, 0.8f));
+	    teams[1].add(new Player("Dickey", "Simpkins", 3.6f, 2.6f, 0.6f));
+	    teams[1].add(new Player("James", "Edwards", 3.5f, 1.4f, 0.4f));
+	    teams[1].add(new Player("Jason", "Caffey", 3.2f, 1.9f, 0.4f));
+	    teams[1].add(new Player("Randy", "Brown", 2.7f, 1.0f, 1.1f));
+
+	    teams[2] = new Team("Lakers", "1987-1988");
+	    teams[2].add(new Player("Magic", "Johnson", 23.9f, 6.3f, 12.2f));
+	    teams[2].add(new Player("James", "Worthy", 19.4f, 5.7f, 2.8f));
+	    teams[2].add(new Player("Kareem", "Abdul-Jabbar", 17.5f, 6.7f, 2.6f));
+	    teams[2].add(new Player("Byron", "Scott", 17.0f, 3.5f, 3.4f));
+	    teams[2].add(new Player("A.C.", "Green", 10.8f, 7.8f, 1.1f));
+	    teams[2].add(new Player("Michael", "Cooper", 10.5f, 3.1f, 4.5f));
+	    teams[2].add(new Player("Mychal", "Thompson", 10.1f, 4.1f, 0.8f));
+	    teams[2].add(new Player("Kurt", "Rambis", 5.7f, 5.8f, 0.8f));
+	    teams[2].add(new Player("Billy", "Thompson", 5.6f, 2.9f, 1.0f));
+	    teams[2].add(new Player("Adrian", "Branch", 4.3f, 1.7f, 0.5f));
+	    teams[2].add(new Player("Wes", "Matthews", 4.2f, 0.9f, 2.0f));
+	    teams[2].add(new Player("Frank", "Brickowski", 4.0f, 2.6f, 0.3f));
+	    teams[2].add(new Player("Mike", "Smrek", 2.2f, 1.1f, 0.1f));
+	  }
+	}
\ No newline at end of file

Property changes on: tmp/org.txm.tmp.rcp/src/org/txm/tmp/rcp/tableviewer/PlayerTableModel.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tmp/org.txm.tmp.rcp/src/org/txm/tmp/rcp/tableviewer/Person.java
===================================================================
--- tmp/org.txm.tmp.rcp/src/org/txm/tmp/rcp/tableviewer/Person.java	(revision 0)
+++ tmp/org.txm.tmp.rcp/src/org/txm/tmp/rcp/tableviewer/Person.java	(revision 512)
@@ -0,0 +1,73 @@
+package org.txm.tmp.rcp.tableviewer;
+
+import org.eclipse.swt.graphics.RGB;
+
+public class Person {
+	  private String name;
+
+	  private boolean male;
+
+	  private Integer ageRange;
+
+	  private RGB shirtColor;
+
+	  /**
+	   * @return Returns the ageRange.
+	   */
+	  public Integer getAgeRange() {
+	    return ageRange;
+	  }
+
+	  /**
+	   * @param ageRange
+	   *            The ageRange to set.
+	   */
+	  public void setAgeRange(Integer ageRange) {
+	    this.ageRange = ageRange;
+	  }
+
+	  /**
+	   * @return Returns the male.
+	   */
+	  public boolean isMale() {
+	    return male;
+	  }
+
+	  /**
+	   * @param male
+	   *            The male to set.
+	   */
+	  public void setMale(boolean male) {
+	    this.male = male;
+	  }
+
+	  /**
+	   * @return Returns the name.
+	   */
+	  public String getName() {
+	    return name;
+	  }
+
+	  /**
+	   * @param name
+	   *            The name to set.
+	   */
+	  public void setName(String name) {
+	    this.name = name;
+	  }
+
+	  /**
+	   * @return Returns the shirtColor.
+	   */
+	  public RGB getShirtColor() {
+	    return shirtColor;
+	  }
+
+	  /**
+	   * @param shirtColor
+	   *            The shirtColor to set.
+	   */
+	  public void setShirtColor(RGB shirtColor) {
+	    this.shirtColor = shirtColor;
+	  }
+	}
\ No newline at end of file

Property changes on: tmp/org.txm.tmp.rcp/src/org/txm/tmp/rcp/tableviewer/Person.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tmp/org.txm.tmp.rcp/src/org/txm/tmp/rcp/tableviewer/Team.java
===================================================================
--- tmp/org.txm.tmp.rcp/src/org/txm/tmp/rcp/tableviewer/Team.java	(revision 0)
+++ tmp/org.txm.tmp.rcp/src/org/txm/tmp/rcp/tableviewer/Team.java	(revision 512)
@@ -0,0 +1,106 @@
+package org.txm.tmp.rcp.tableviewer;
+
+import java.util.Collections;
+import java.util.LinkedList;
+import java.util.List;
+
+public class Team {
+	  private String name;
+
+	  private String year;
+
+	  private List players;
+
+	  /**
+	   * Constructs a Team
+	   * 
+	   * @param name
+	   *            the name
+	   * @param year
+	   *            the year
+	   */
+	  public Team(String name, String year) {
+	    this.name = name;
+	    this.year = year;
+	    players = new LinkedList();
+	  }
+
+	  /**
+	   * Gets the name
+	   * 
+	   * @return String
+	   */
+	  public String getName() {
+	    return name;
+	  }
+
+	  /**
+	   * Gets the year
+	   * 
+	   * @return String
+	   */
+	  public String getYear() {
+	    return year;
+	  }
+
+	  /**
+	   * Adds a player
+	   * 
+	   * @param player
+	   *            the player to add
+	   * @return boolean
+	   */
+	  public boolean add(Player player) {
+	    boolean added = players.add(player);
+	    if (added)
+	      player.setTeam(this);
+	    return added;
+	  }
+
+	  /**
+	   * Gets the players
+	   * 
+	   * @return List
+	   */
+	  public List getPlayers() {
+	    return Collections.unmodifiableList(players);
+	  }
+
+	  /**
+	   * Returns whether the specified player led his team in the specified
+	   * category
+	   * 
+	   * @param player
+	   *            the player
+	   * @param column
+	   *            the category
+	   * @return boolean
+	   */
+	  public boolean led(Player player, int column) {
+	    boolean led = true;
+
+	    // Go through all the players on the team, comparing the specified
+	    // player's
+	    // stats with each other player.
+	    for (int i = 0, n = players.size(); i < n && led; i++) {
+	      Player test = (Player) players.get(i);
+	      if (player == test)
+	        continue;
+	      switch (column) {
+	      case PlayerConst.COLUMN_POINTS:
+	        if (player.getPoints() < test.getPoints())
+	          led = false;
+	        break;
+	      case PlayerConst.COLUMN_REBOUNDS:
+	        if (player.getRebounds() < test.getRebounds())
+	          led = false;
+	        break;
+	      case PlayerConst.COLUMN_ASSISTS:
+	        if (player.getAssists() < test.getAssists())
+	          led = false;
+	        break;
+	      }
+	    }
+	    return led;
+	  }
+	}
\ No newline at end of file

Property changes on: tmp/org.txm.tmp.rcp/src/org/txm/tmp/rcp/tableviewer/Team.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tmp/org.txm.tmp.rcp/src/org/txm/tmp/rcp/tableviewer/AgeRange.java
===================================================================
--- tmp/org.txm.tmp.rcp/src/org/txm/tmp/rcp/tableviewer/AgeRange.java	(revision 0)
+++ tmp/org.txm.tmp.rcp/src/org/txm/tmp/rcp/tableviewer/AgeRange.java	(revision 512)
@@ -0,0 +1,18 @@
+package org.txm.tmp.rcp.tableviewer;
+
+public class AgeRange {
+	  public static final String NONE = "";
+
+	  public static final String BABY = "0 - 3";
+
+	  public static final String TODDLER = "4 - 7";
+
+	  public static final String CHILD = "8 - 12";
+
+	  public static final String TEENAGER = "13 - 19";
+
+	  public static final String ADULT = "20 - ?";
+
+	  public static final String[] INSTANCES = { NONE, BABY, TODDLER, CHILD,
+	      TEENAGER, ADULT };
+	}
\ No newline at end of file

Property changes on: tmp/org.txm.tmp.rcp/src/org/txm/tmp/rcp/tableviewer/AgeRange.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tmp/org.txm.tmp.rcp/src/org/txm/tmp/rcp/tableviewer/Player.java
===================================================================
--- tmp/org.txm.tmp.rcp/src/org/txm/tmp/rcp/tableviewer/Player.java	(revision 0)
+++ tmp/org.txm.tmp.rcp/src/org/txm/tmp/rcp/tableviewer/Player.java	(revision 512)
@@ -0,0 +1,171 @@
+package org.txm.tmp.rcp.tableviewer;
+public class Player {
+	  private Team team;
+
+	  private String lastName;
+
+	  private String firstName;
+
+	  private float points;
+
+	  private float rebounds;
+
+	  private float assists;
+
+	  /**
+	   * Constructs an empty Player
+	   */
+	  public Player() {
+	    this(null, null, 0.0f, 0.0f, 0.0f);
+	  }
+	  
+	  public String toString() {return firstName+" "+lastName;}
+
+	  /**
+	   * Constructs a Player
+	   * 
+	   * @param firstName
+	   *            the first name
+	   * @param lastName
+	   *            the last name
+	   * @param points
+	   *            the points
+	   * @param rebounds
+	   *            the rebounds
+	   * @param assists
+	   *            the assists
+	   */
+	  public Player(String firstName, String lastName, float points,
+	      float rebounds, float assists) {
+	    setFirstName(firstName);
+	    setLastName(lastName);
+	    setPoints(points);
+	    setRebounds(rebounds);
+	    setAssists(assists);
+	  }
+
+	  /**
+	   * Sets the team for theo player
+	   * 
+	   * @param team
+	   *            the team
+	   */
+	  public void setTeam(Team team) {
+	    this.team = team;
+	  }
+
+	  /**
+	   * Gets the assists
+	   * 
+	   * @return float
+	   */
+	  public float getAssists() {
+	    return assists;
+	  }
+
+	  /**
+	   * Sets the assists
+	   * 
+	   * @param assists
+	   *            The assists to set.
+	   */
+	  public void setAssists(float assists) {
+	    this.assists = assists;
+	  }
+
+	  /**
+	   * Gets the first name
+	   * 
+	   * @return String
+	   */
+	  public String getFirstName() {
+	    return firstName;
+	  }
+
+	  /**
+	   * Sets the first name
+	   * 
+	   * @param firstName
+	   *            The firstName to set.
+	   */
+	  public void setFirstName(String firstName) {
+	    this.firstName = firstName;
+	  }
+
+	  /**
+	   * Gets the last name
+	   * 
+	   * @return String
+	   */
+	  public String getLastName() {
+	    return lastName;
+	  }
+
+	  /**
+	   * Sets the last name
+	   * 
+	   * @param lastName
+	   *            The lastName to set.
+	   */
+	  public void setLastName(String lastName) {
+	    this.lastName = lastName;
+	  }
+
+	  /**
+	   * Gets the points
+	   * 
+	   * @return float
+	   */
+	  public float getPoints() {
+	    return points;
+	  }
+
+	  /**
+	   * Sets the points
+	   * 
+	   * @param points
+	   *            The points to set.
+	   */
+	  public void setPoints(float points) {
+	    this.points = points;
+	  }
+
+	  /**
+	   * Gets the rebounds
+	   * 
+	   * @return float
+	   */
+	  public float getRebounds() {
+	    return rebounds;
+	  }
+
+	  /**
+	   * Sets the rebounds
+	   * 
+	   * @param rebounds
+	   *            The rebounds to set.
+	   */
+	  public void setRebounds(float rebounds) {
+	    this.rebounds = rebounds;
+	  }
+
+	  /**
+	   * Gets the team
+	   * 
+	   * @return Team
+	   */
+	  public Team getTeam() {
+	    return team;
+	  }
+
+	  /**
+	   * Returns whether this player led the team in the specified category
+	   * 
+	   * @param column
+	   *            the column (category)
+	   * @return boolean
+	   */
+	  public boolean ledTeam(int column) {
+	    return team.led(this, column);
+	  }
+	}
\ No newline at end of file

Property changes on: tmp/org.txm.tmp.rcp/src/org/txm/tmp/rcp/tableviewer/Player.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tmp/org.txm.tmp.rcp/src/org/txm/tmp/rcp/tableviewer/PlayerViewerSorter.java
===================================================================
--- tmp/org.txm.tmp.rcp/src/org/txm/tmp/rcp/tableviewer/PlayerViewerSorter.java	(revision 0)
+++ tmp/org.txm.tmp.rcp/src/org/txm/tmp/rcp/tableviewer/PlayerViewerSorter.java	(revision 512)
@@ -0,0 +1,46 @@
+package org.txm.tmp.rcp.tableviewer;
+
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerSorter;
+
+public class PlayerViewerSorter extends ViewerSorter {
+	  private static final int ASCENDING = 0;
+
+	  private static final int DESCENDING = 1;
+
+	  private int column;
+
+	  private int direction;
+
+	  /**
+	   * Does the sort. If it's a different column from the previous sort, do an
+	   * ascending sort. If it's the same column as the last sort, toggle the sort
+	   * direction.
+	   * 
+	   * @param column
+	   */
+	  public void doSort(int column) {
+	    if (column == this.column) {
+	      // Same column as last sort; toggle the direction
+	      direction = 1 - direction;
+	    } else {
+	      // New column; do an ascending sort
+	      this.column = column;
+	      direction = ASCENDING;
+	    }
+	  }
+
+	  /**
+	   * Compares the object for sorting
+	   */
+	  public int compare(Viewer viewer, Object e1, Object e2) {
+	    int rc = e1.toString().compareTo(e2.toString());
+	    System.out.println("rc="+rc);
+
+	    // If descending order, flip the direction
+	    if (direction == DESCENDING)
+	      rc = -rc;
+
+	    return rc;
+	  }
+	}
\ No newline at end of file

Property changes on: tmp/org.txm.tmp.rcp/src/org/txm/tmp/rcp/tableviewer/PlayerViewerSorter.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tmp/org.txm.tmp.rcp/src/org/txm/tmp/rcp/tableviewer/PersonLabelProvider.java
===================================================================
--- tmp/org.txm.tmp.rcp/src/org/txm/tmp/rcp/tableviewer/PersonLabelProvider.java	(revision 0)
+++ tmp/org.txm.tmp.rcp/src/org/txm/tmp/rcp/tableviewer/PersonLabelProvider.java	(revision 512)
@@ -0,0 +1,85 @@
+package org.txm.tmp.rcp.tableviewer;
+
+import org.eclipse.jface.viewers.ILabelProviderListener;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.swt.graphics.Image;
+
+public class PersonLabelProvider implements ITableLabelProvider {
+	  /**
+	   * Returns the image
+	   * 
+	   * @param element
+	   *            the element
+	   * @param columnIndex
+	   *            the column index
+	   * @return Image
+	   */
+	  public Image getColumnImage(Object element, int columnIndex) {
+	    return null;
+	  }
+
+	  /**
+	   * Returns the column text
+	   * 
+	   * @param element
+	   *            the element
+	   * @param columnIndex
+	   *            the column index
+	   * @return String
+	   */
+	  public String getColumnText(Object element, int columnIndex) {
+	    Person person = (Person) element;
+	    switch (columnIndex) {
+	    case 0:
+	      return person.getName();
+	    case 1:
+	      return Boolean.toString(person.isMale());
+	    case 2:
+	      return AgeRange.INSTANCES[person.getAgeRange().intValue()];
+	    case 3:
+	      return person.getShirtColor().toString();
+	    }
+	    return null;
+	  }
+
+	  /**
+	   * Adds a listener
+	   * 
+	   * @param listener
+	   *            the listener
+	   */
+	  public void addListener(ILabelProviderListener listener) {
+	    // Ignore it
+	  }
+
+	  /**
+	   * Disposes any created resources
+	   */
+	  public void dispose() {
+	    // Nothing to dispose
+	  }
+
+	  /**
+	   * Returns whether altering this property on this element will affect the
+	   * label
+	   * 
+	   * @param element
+	   *            the element
+	   * @param property
+	   *            the property
+	   * @return boolean
+	   */
+	  public boolean isLabelProperty(Object element, String property) {
+	    return false;
+	  }
+
+	  /**
+	   * Removes a listener
+	   * 
+	   * @param listener
+	   *            the listener
+	   */
+	  public void removeListener(ILabelProviderListener listener) {
+	    // Ignore
+	  }
+	}
\ No newline at end of file

Property changes on: tmp/org.txm.tmp.rcp/src/org/txm/tmp/rcp/tableviewer/PersonLabelProvider.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tmp/org.txm.tmp.rcp/src/org/txm/tmp/rcp/tableviewer/PlayerContentProvider.java
===================================================================
--- tmp/org.txm.tmp.rcp/src/org/txm/tmp/rcp/tableviewer/PlayerContentProvider.java	(revision 0)
+++ tmp/org.txm.tmp.rcp/src/org/txm/tmp/rcp/tableviewer/PlayerContentProvider.java	(revision 512)
@@ -0,0 +1,40 @@
+package org.txm.tmp.rcp.tableviewer;
+
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.Viewer;
+
+public class PlayerContentProvider implements IStructuredContentProvider {
+
+	  /**
+	   * Gets the elements for the table
+	   * 
+	   * @param arg0
+	   *            the model
+	   * @return Object[]
+	   */
+	  public Object[] getElements(Object arg0) {
+	    // Returns all the players in the specified team
+	    return ((Team) arg0).getPlayers().toArray();
+	  }
+
+	  /**
+	   * Disposes any resources
+	   */
+	  public void dispose() {
+	    // We don't create any resources, so we don't dispose any
+	  }
+
+	  /**
+	   * Called when the input changes
+	   * 
+	   * @param arg0
+	   *            the parent viewer
+	   * @param arg1
+	   *            the old input
+	   * @param arg2
+	   *            the new input
+	   */
+	  public void inputChanged(Viewer arg0, Object arg1, Object arg2) {
+	    // Nothing to do
+	  }
+	}
\ No newline at end of file

Property changes on: tmp/org.txm.tmp.rcp/src/org/txm/tmp/rcp/tableviewer/PlayerContentProvider.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tmp/org.txm.tmp.rcp/src/org/txm/tmp/rcp/tableviewer/PlayerConst.java
===================================================================
--- tmp/org.txm.tmp.rcp/src/org/txm/tmp/rcp/tableviewer/PlayerConst.java	(revision 0)
+++ tmp/org.txm.tmp.rcp/src/org/txm/tmp/rcp/tableviewer/PlayerConst.java	(revision 512)
@@ -0,0 +1,13 @@
+package org.txm.tmp.rcp.tableviewer;
+public class PlayerConst {
+	  // Column constants
+	  public static final int COLUMN_FIRST_NAME = 0;
+
+	  public static final int COLUMN_LAST_NAME = 1;
+
+	  public static final int COLUMN_POINTS = 2;
+
+	  public static final int COLUMN_REBOUNDS = 3;
+
+	  public static final int COLUMN_ASSISTS = 4;
+	}
\ No newline at end of file

Property changes on: tmp/org.txm.tmp.rcp/src/org/txm/tmp/rcp/tableviewer/PlayerConst.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tmp/org.txm.tmp.rcp/src/org/txm/tmp/rcp/views/SampleView.java
===================================================================
--- tmp/org.txm.tmp.rcp/src/org/txm/tmp/rcp/views/SampleView.java	(revision 0)
+++ tmp/org.txm.tmp.rcp/src/org/txm/tmp/rcp/views/SampleView.java	(revision 512)
@@ -0,0 +1,190 @@
+package org.txm.tmp.rcp.views;
+
+
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.part.*;
+import org.eclipse.jface.viewers.*;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.jface.action.*;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.ui.*;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.SWT;
+
+
+/**
+ * This sample class demonstrates how to plug-in a new
+ * workbench view. The view shows data obtained from the
+ * model. The sample creates a dummy model on the fly,
+ * but a real implementation would connect to the model
+ * available either in this or another plug-in (e.g. the workspace).
+ * The view is connected to the model using a content provider.
+ * <p>
+ * The view uses a label provider to define how model
+ * objects should be presented in the view. Each
+ * view can present the same model objects using
+ * different labels and icons, if needed. Alternatively,
+ * a single label provider can be shared between views
+ * in order to ensure that objects of the same type are
+ * presented in the same way everywhere.
+ * <p>
+ */
+
+public class SampleView extends ViewPart {
+
+	/**
+	 * The ID of the view as specified by the extension.
+	 */
+	public static final String ID = "org.txm.tmp.rcp.views.SampleView";
+
+	private TableViewer viewer;
+	private Action action1;
+	private Action action2;
+	private Action doubleClickAction;
+
+	/*
+	 * The content provider class is responsible for
+	 * providing objects to the view. It can wrap
+	 * existing objects in adapters or simply return
+	 * objects as-is. These objects may be sensitive
+	 * to the current input of the view, or ignore
+	 * it and always show the same content 
+	 * (like Task List, for example).
+	 */
+	 
+	class ViewContentProvider implements IStructuredContentProvider {
+		public void inputChanged(Viewer v, Object oldInput, Object newInput) {
+		}
+		public void dispose() {
+		}
+		public Object[] getElements(Object parent) {
+			return new String[] { "One", "Two", "Three" };
+		}
+	}
+	class ViewLabelProvider extends LabelProvider implements ITableLabelProvider {
+		public String getColumnText(Object obj, int index) {
+			return getText(obj);
+		}
+		public Image getColumnImage(Object obj, int index) {
+			return getImage(obj);
+		}
+		public Image getImage(Object obj) {
+			return PlatformUI.getWorkbench().
+					getSharedImages().getImage(ISharedImages.IMG_OBJ_ELEMENT);
+		}
+	}
+	class NameSorter extends ViewerSorter {
+	}
+
+	/**
+	 * The constructor.
+	 */
+	public SampleView() {
+	}
+
+	/**
+	 * This is a callback that will allow us
+	 * to create the viewer and initialize it.
+	 */
+	public void createPartControl(Composite parent) {
+		viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
+		viewer.setContentProvider(new ViewContentProvider());
+		viewer.setLabelProvider(new ViewLabelProvider());
+		viewer.setSorter(new NameSorter());
+		viewer.setInput(getViewSite());
+
+		// Create the help context id for the viewer's control
+		PlatformUI.getWorkbench().getHelpSystem().setHelp(viewer.getControl(), "org.txm.tmp.rcp.viewer");
+		makeActions();
+		hookContextMenu();
+		hookDoubleClickAction();
+		contributeToActionBars();
+	}
+
+	private void hookContextMenu() {
+		MenuManager menuMgr = new MenuManager("#PopupMenu");
+		menuMgr.setRemoveAllWhenShown(true);
+		menuMgr.addMenuListener(new IMenuListener() {
+			public void menuAboutToShow(IMenuManager manager) {
+				SampleView.this.fillContextMenu(manager);
+			}
+		});
+		Menu menu = menuMgr.createContextMenu(viewer.getControl());
+		viewer.getControl().setMenu(menu);
+		getSite().registerContextMenu(menuMgr, viewer);
+	}
+
+	private void contributeToActionBars() {
+		IActionBars bars = getViewSite().getActionBars();
+		fillLocalPullDown(bars.getMenuManager());
+		fillLocalToolBar(bars.getToolBarManager());
+	}
+
+	private void fillLocalPullDown(IMenuManager manager) {
+		manager.add(action1);
+		manager.add(new Separator());
+		manager.add(action2);
+	}
+
+	private void fillContextMenu(IMenuManager manager) {
+		manager.add(action1);
+		manager.add(action2);
+		// Other plug-ins can contribute there actions here
+		manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
+	}
+	
+	private void fillLocalToolBar(IToolBarManager manager) {
+		manager.add(action1);
+		manager.add(action2);
+	}
+
+	private void makeActions() {
+		action1 = new Action() {
+			public void run() {
+				showMessage("Action 1 executed");
+			}
+		};
+		action1.setText("Action 1");
+		action1.setToolTipText("Action 1 tooltip");
+		action1.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().
+			getImageDescriptor(ISharedImages.IMG_OBJS_INFO_TSK));
+		
+		action2 = new Action() {
+			public void run() {
+				showMessage("Action 2 executed");
+			}
+		};
+		action2.setText("Action 2");
+		action2.setToolTipText("Action 2 tooltip");
+		action2.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().
+				getImageDescriptor(ISharedImages.IMG_OBJS_INFO_TSK));
+		doubleClickAction = new Action() {
+			public void run() {
+				ISelection selection = viewer.getSelection();
+				Object obj = ((IStructuredSelection)selection).getFirstElement();
+				showMessage("Double-click detected on "+obj.toString());
+			}
+		};
+	}
+
+	private void hookDoubleClickAction() {
+		viewer.addDoubleClickListener(new IDoubleClickListener() {
+			public void doubleClick(DoubleClickEvent event) {
+				doubleClickAction.run();
+			}
+		});
+	}
+	private void showMessage(String message) {
+		MessageDialog.openInformation(
+			viewer.getControl().getShell(),
+			"Sample View",
+			message);
+	}
+
+	/**
+	 * Passing the focus request to the viewer's control.
+	 */
+	public void setFocus() {
+		viewer.getControl().setFocus();
+	}
+}
\ No newline at end of file

Property changes on: tmp/org.txm.tmp.rcp/src/org/txm/tmp/rcp/views/SampleView.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tmp/org.txm.tmp.rcp/build.properties
===================================================================
--- tmp/org.txm.tmp.rcp/build.properties	(revision 0)
+++ tmp/org.txm.tmp.rcp/build.properties	(revision 512)
@@ -0,0 +1,7 @@
+source.. = src/
+output.. = bin/
+bin.includes = plugin.xml,\
+               META-INF/,\
+               .,\
+               icons/,\
+               contexts.xml

Property changes on: tmp/org.txm.tmp.rcp/build.properties
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tmp/org.txm.tmp.rcp/icons/sample.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tmp/org.txm.tmp.rcp/icons/sample.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tmp/org.txm.tmp.rcp/plugin.xml
===================================================================
--- tmp/org.txm.tmp.rcp/plugin.xml	(revision 0)
+++ tmp/org.txm.tmp.rcp/plugin.xml	(revision 512)
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+
+   <extension
+         point="org.eclipse.ui.views">
+      <category
+            name="Sample Category"
+            id="org.txm.tmp.rcp">
+      </category>
+      <view
+            name="Sample View"
+            icon="icons/sample.gif"
+            category="org.txm.tmp.rcp"
+            class="org.txm.tmp.rcp.views.SampleView"
+            id="org.txm.tmp.rcp.views.SampleView">
+      </view>
+   </extension>
+   <extension
+         point="org.eclipse.ui.perspectiveExtensions">
+      <perspectiveExtension
+            targetID="org.eclipse.jdt.ui.JavaPerspective">
+         <view
+               ratio="0.5"
+               relative="org.eclipse.ui.views.ProblemView"
+               relationship="right"
+               id="org.txm.tmp.rcp.views.SampleView">
+         </view>
+      </perspectiveExtension>
+   </extension>
+   <extension
+         point="org.eclipse.help.contexts">
+      <contexts
+            file="contexts.xml">
+      </contexts>
+   </extension>
+
+</plugin>

Property changes on: tmp/org.txm.tmp.rcp/plugin.xml
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tmp/org.txm.tmp.rcp/.settings/org.eclipse.jdt.core.prefs
===================================================================
--- tmp/org.txm.tmp.rcp/.settings/org.eclipse.jdt.core.prefs	(revision 0)
+++ tmp/org.txm.tmp.rcp/.settings/org.eclipse.jdt.core.prefs	(revision 512)
@@ -0,0 +1,12 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.7
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.7

Property changes on: tmp/org.txm.tmp.rcp/.settings/org.eclipse.jdt.core.prefs
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tmp/org.txm.tmp.rcp/.classpath
===================================================================
--- tmp/org.txm.tmp.rcp/.classpath	(revision 0)
+++ tmp/org.txm.tmp.rcp/.classpath	(revision 512)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>

Property changes on: tmp/org.txm.tmp.rcp/.classpath
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tmp/org.txm.tmp.rcp/META-INF/MANIFEST.MF
===================================================================
--- tmp/org.txm.tmp.rcp/META-INF/MANIFEST.MF	(revision 0)
+++ tmp/org.txm.tmp.rcp/META-INF/MANIFEST.MF	(revision 512)
@@ -0,0 +1,8 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: TMP RCP
+Bundle-SymbolicName: org.txm.tmp.rcp;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.ui
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8

Property changes on: tmp/org.txm.tmp.rcp/META-INF/MANIFEST.MF
___________________________________________________________________
Added: svn:mime-type
   + text/plain

