Code cleanup.
diff --git a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/util/Imports.java b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/util/Imports.java
new file mode 100644
index 0000000..0debb18
--- /dev/null
+++ b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/util/Imports.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2012 Google Inc.
+ *
+ * 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
+ */
+package com.google.eclipse.protobuf.ui.util;
+
+import static com.google.eclipse.protobuf.protobuf.ProtobufPackage.Literals.IMPORT__IMPORT_URI;
+
+import org.eclipse.xtext.nodemodel.INode;
+
+import com.google.eclipse.protobuf.conversion.STRINGValueConverter;
+import com.google.eclipse.protobuf.model.util.INodes;
+import com.google.eclipse.protobuf.protobuf.Import;
+import com.google.inject.Inject;
+
+/**
+ * Utility methods related to <code>{@link Import}</code>s.
+ *
+ * @author alruiz@google.com (Alex Ruiz)
+ */
+public class Imports {
+  @Inject private INodes nodes;
+  @Inject private STRINGValueConverter stringValueConverter;
+
+  public String uriAsEnteredByUser(Import anImport) {
+    INode node = nodes.firstNodeForFeature(anImport, IMPORT__IMPORT_URI);
+    if (node == null) {
+      return null;
+    }
+    String text = node.getText();
+    if (text == null) {
+      return null;
+    }
+    return stringValueConverter.toValue(text, node);
+
+  }
+}
diff --git a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/validation/AbstractPartListener.java b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/validation/AbstractPartListener.java
new file mode 100644
index 0000000..21494ad
--- /dev/null
+++ b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/validation/AbstractPartListener.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2012 Google Inc.
+ *
+ * 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
+ */
+package com.google.eclipse.protobuf.ui.validation;
+
+import org.eclipse.ui.*;
+
+/**
+ * Base class for implementations of <code>{@link IPartListener2}</code>.
+ *
+ * @author alruiz@google.com (Alex Ruiz)
+ */
+public abstract class AbstractPartListener implements IPartListener2 {
+  @Override public void partActivated(IWorkbenchPartReference ref) {}
+  @Override public void partDeactivated(IWorkbenchPartReference ref) {}
+
+  @Override public void partBroughtToTop(IWorkbenchPartReference ref) {}
+
+  @Override public void partOpened(IWorkbenchPartReference ref) {}
+  @Override public void partClosed(IWorkbenchPartReference ref) {}
+
+  @Override public void partVisible(IWorkbenchPartReference ref) {}
+  @Override public void partHidden(IWorkbenchPartReference ref) {}
+
+  @Override public void partInputChanged(IWorkbenchPartReference ref) {}
+}
diff --git a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/validation/ValidateFileOnActivation.java b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/validation/ValidateFileOnActivation.java
index a61053a..f4e3c6e 100644
--- a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/validation/ValidateFileOnActivation.java
+++ b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/validation/ValidateFileOnActivation.java
@@ -25,13 +25,13 @@
  *
  * @author alruiz@google.com (Alex Ruiz)
  */
-public class ValidateFileOnActivation implements IPartListener2 {
+public class ValidateFileOnActivation extends AbstractPartListener {
   /**
    * Validates the active active editor in the given part that contains a .proto file in the Workspace.
-   * @param partRef the part that was activated.
+   * @param ref the part that was activated.
    */
-  @Override public void partActivated(IWorkbenchPartReference partRef) {
-    IEditorPart activeEditor = activeEditor(partRef);
+  @Override public void partActivated(IWorkbenchPartReference ref) {
+    IEditorPart activeEditor = activeEditor(ref);
     IProject project = projectFrom(activeEditor);
     if (project == null || !shouldValidateEditor(project)) {
       return;
@@ -39,8 +39,8 @@
     validate(activeEditor);
   }
 
-  private IEditorPart activeEditor(IWorkbenchPartReference partRef) {
-    IWorkbenchPage page = partRef.getPage();
+  private IEditorPart activeEditor(IWorkbenchPartReference ref) {
+    IWorkbenchPage page = ref.getPage();
     return (page == null) ? null : page.getActiveEditor();
   }
 
@@ -54,46 +54,4 @@
     GeneralPreferences preferences = generalPreferences(storeAccess, project);
     return preferences.validateFilesOnActivation().getValue();
   }
-
-  /**
-   * This method does nothing.
-   * @param partRef the part that was surfaced.
-   */
-  @Override public void partBroughtToTop(IWorkbenchPartReference partRef) {}
-
-  /**
-   * This method does nothing.
-   * @param partRef the part that was closed.
-   */
-  @Override public void partClosed(IWorkbenchPartReference partRef) {}
-
-  /**
-   * This method does nothing.
-   * @param partRef the part that was deactivated.
-   */
-  @Override public void partDeactivated(IWorkbenchPartReference partRef) {}
-
-  /**
-   * This method does nothing.
-   * @param partRef the part that was opened.
-   */
-  @Override public void partOpened(IWorkbenchPartReference partRef) {}
-
-  /**
-   * This method does nothing.
-   * @param partRef the part that was hidden.
-   */
-  @Override public void partHidden(IWorkbenchPartReference partRef) {}
-
-  /**
-   * This method does nothing.
-   * @param partRef the part that is visible.
-   */
-  @Override public void partVisible(IWorkbenchPartReference partRef) {}
-
-  /**
-   * This method does nothing.
-   * @param partRef the part whose input was changed.
-   */
-  @Override public void partInputChanged(IWorkbenchPartReference partRef) {}
 }