diff --git a/Article-Adapters/code/org.eclipse.articles.adapters.ui/.classpath b/Article-Adapters/code/org.eclipse.articles.adapters.ui/.classpath
new file mode 100644
index 0000000..2fbb7a2
--- /dev/null
+++ b/Article-Adapters/code/org.eclipse.articles.adapters.ui/.classpath
@@ -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/J2SE-1.4"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/Article-Adapters/code/org.eclipse.articles.adapters.ui/.project b/Article-Adapters/code/org.eclipse.articles.adapters.ui/.project
new file mode 100644
index 0000000..1bbe95f
--- /dev/null
+++ b/Article-Adapters/code/org.eclipse.articles.adapters.ui/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.articles.adapters.ui</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>
diff --git a/Article-Adapters/code/org.eclipse.articles.adapters.ui/.settings/org.eclipse.jdt.core.prefs b/Article-Adapters/code/org.eclipse.articles.adapters.ui/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..e262b28
--- /dev/null
+++ b/Article-Adapters/code/org.eclipse.articles.adapters.ui/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+#Mon Jun 16 14:28:02 EDT 2008
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
+org.eclipse.jdt.core.compiler.compliance=1.4
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
+org.eclipse.jdt.core.compiler.source=1.3
diff --git a/Article-Adapters/code/org.eclipse.articles.adapters.ui/META-INF/MANIFEST.MF b/Article-Adapters/code/org.eclipse.articles.adapters.ui/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..dbd6908
--- /dev/null
+++ b/Article-Adapters/code/org.eclipse.articles.adapters.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,9 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Adapters Article UI Plug-in
+Bundle-SymbolicName: org.eclipse.articles.adapters.ui; singleton:=true
+Bundle-Version: 0.1.0.qualifier
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.ui,
+ org.eclipse.articles.adapters.core;bundle-version="0.1.0"
+Bundle-RequiredExecutionEnvironment: J2SE-1.4
diff --git a/Article-Adapters/code/org.eclipse.articles.adapters.ui/build.properties b/Article-Adapters/code/org.eclipse.articles.adapters.ui/build.properties
new file mode 100644
index 0000000..0d3d3a7
--- /dev/null
+++ b/Article-Adapters/code/org.eclipse.articles.adapters.ui/build.properties
@@ -0,0 +1,6 @@
+source.. = src/
+output.. = bin/
+bin.includes = plugin.xml,\
+               META-INF/,\
+               .,\
+               icons/
diff --git a/Article-Adapters/code/org.eclipse.articles.adapters.ui/icons/sample.gif b/Article-Adapters/code/org.eclipse.articles.adapters.ui/icons/sample.gif
new file mode 100644
index 0000000..34fb3c9
--- /dev/null
+++ b/Article-Adapters/code/org.eclipse.articles.adapters.ui/icons/sample.gif
Binary files differ
diff --git a/Article-Adapters/code/org.eclipse.articles.adapters.ui/plugin.xml b/Article-Adapters/code/org.eclipse.articles.adapters.ui/plugin.xml
new file mode 100644
index 0000000..a08b949
--- /dev/null
+++ b/Article-Adapters/code/org.eclipse.articles.adapters.ui/plugin.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<plugin>
+
+   <extension
+         point="org.eclipse.ui.views">
+      <category
+            name="Eclipse Corner Articles"
+            id="org.eclipse.articles.adapters.ui">
+      </category>
+      <view
+            name="People View"
+            icon="icons/sample.gif"
+            category="org.eclipse.articles.adapters.ui"
+            class="org.eclipse.articles.adapters.ui.views.PeopleView"
+            id="org.eclipse.articles.adapters.ui.views.PeopleView">
+      </view>
+   </extension>
+
+</plugin>
diff --git a/Article-Adapters/code/org.eclipse.articles.adapters.ui/src/org/eclipse/articles/adapters/ui/views/PeopleView.java b/Article-Adapters/code/org.eclipse.articles.adapters.ui/src/org/eclipse/articles/adapters/ui/views/PeopleView.java
new file mode 100644
index 0000000..b0b51b2
--- /dev/null
+++ b/Article-Adapters/code/org.eclipse.articles.adapters.ui/src/org/eclipse/articles/adapters/ui/views/PeopleView.java
@@ -0,0 +1,76 @@
+/*******************************************************************************
+ * Copyright (c) 2008 The Eclipse Foundation.
+ * 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:
+ *    The Eclipse Foundation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.articles.adapters.ui.views;
+
+import org.eclipse.articles.adapters.core.Person;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.part.ViewPart;
+
+/**
+ * This is a very simple view that is intended to show how to register a viewer
+ * as the &quot;selection provider&quot;. It also serves as a convenient
+ * mechanism for demonstrating how the Properties view can display information
+ * about our own custom types. Note that the Properties view is not
+ * automatically opened by this view.
+ */
+public class PeopleView extends ViewPart {
+	TableViewer viewer;
+	Person[] people = new Person[] {
+			new Person("Wayne"),
+			new Person("Donald"),
+			new Person("Mike"),
+			new Person("Ian")
+	};
+
+	class ViewContentProvider implements IStructuredContentProvider {
+		public void inputChanged(Viewer v, Object oldInput, Object newInput) {
+		}
+		public void dispose() {
+		}
+		public Object[] getElements(Object parent) {
+			if (parent instanceof Person[]) return (Person[])parent;
+			return new Person[0];
+		}
+	}
+	class ViewLabelProvider extends LabelProvider implements ITableLabelProvider {
+		public String getColumnText(Object obj, int index) {
+			return ((Person)obj).getName();
+		}
+		public Image getColumnImage(Object obj, int index) {
+			return getImage(obj);
+		}
+		public Image getImage(Object obj) {
+			return PlatformUI.getWorkbench().
+					getSharedImages().getImage(ISharedImages.IMG_OBJ_ELEMENT);
+		}
+	}
+
+	public void createPartControl(Composite parent) {
+		viewer = new TableViewer(parent, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL);
+		viewer.setContentProvider(new ViewContentProvider());
+		viewer.setLabelProvider(new ViewLabelProvider());
+		getSite().setSelectionProvider(viewer);
+		viewer.setInput(people);
+	}
+
+	public void setFocus() {
+		viewer.getControl().setFocus();
+	}
+}
\ No newline at end of file
