diff --git a/com.google.eclipse.protobuf.ui/icons/checked.gif b/com.google.eclipse.protobuf.ui/icons/checked.gif
new file mode 100644
index 0000000..b90c36b
--- /dev/null
+++ b/com.google.eclipse.protobuf.ui/icons/checked.gif
Binary files differ
diff --git a/com.google.eclipse.protobuf.ui/icons/unchecked.gif b/com.google.eclipse.protobuf.ui/icons/unchecked.gif
new file mode 100644
index 0000000..7ed00d7
--- /dev/null
+++ b/com.google.eclipse.protobuf.ui/icons/unchecked.gif
Binary files differ
diff --git a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/compiler/CompilerPreferencePage.java b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/compiler/CompilerPreferencePage.java
index ed7a6c0..7c73fab 100644
--- a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/compiler/CompilerPreferencePage.java
+++ b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/compiler/CompilerPreferencePage.java
@@ -22,6 +22,7 @@
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.*;
+import org.eclipse.xtext.ui.PluginImageHelper;
 import org.eclipse.xtext.ui.editor.preferences.IPreferenceStoreAccess;
 
 import com.google.eclipse.protobuf.ui.preferences.PreferenceAndPropertyPage;
@@ -52,6 +53,7 @@
   private Button btnRefreshProject;
   private Button btnRefreshOutputFolder;
 
+  @Inject private PluginImageHelper imageHelper;
   @Inject private DirectoryNameValidator directoryNameValidator;
   @Inject private EventListeners eventListeners;
   private TargetLanguageOutputDirectoryEditor targetLanguageOutputDirectoryEditor;
@@ -101,7 +103,7 @@
     new Label(grpCompilerLocation, SWT.NONE);
     new Label(grpCompilerLocation, SWT.NONE);
 
-    targetLanguageOutputDirectoryEditor = new TargetLanguageOutputDirectoryEditor(cmpMain);
+    targetLanguageOutputDirectoryEditor = new TargetLanguageOutputDirectoryEditor(cmpMain, imageHelper);
     targetLanguageOutputDirectoryEditor.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
 
     tbtmRefresh = new TabItem(tabFolder, SWT.NONE);
diff --git a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/compiler/TargetLanguage.java b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/compiler/TargetLanguage.java
index 38137d6..430357d 100644
--- a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/compiler/TargetLanguage.java
+++ b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/compiler/TargetLanguage.java
@@ -17,11 +17,13 @@
  *
  * @author alruiz@google.com (Alex Ruiz)
  */
-public enum TargetLanguage {
+public class TargetLanguage {
 
-  JAVA("Java"), CPP("C++"), PYTHON("Python");
+  public static final TargetLanguage JAVA = new TargetLanguage("Java");
+  public static final TargetLanguage CPP = new TargetLanguage("C++");
+  public static final TargetLanguage PYTHON = new TargetLanguage("Python");
 
-  private String name;
+  private final String name;
 
   private TargetLanguage(String name) {
     this.name = name;
@@ -31,7 +33,7 @@
    * Returns this language's name.
    * @return this language's name.
    */
-  public String languageName() {
+  public String name() {
     return name;
   }
 
@@ -43,4 +45,9 @@
     if (store.getBoolean(GENERATE_PYTHON_CODE)) return PYTHON;
     return JAVA;
   }
+
+  // TODO remove
+  public static TargetLanguage[] values() {
+    return new TargetLanguage[] { JAVA, CPP, PYTHON };
+  }
 }
\ No newline at end of file
diff --git a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/compiler/TargetLanguageIsEnabledEditor.java b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/compiler/TargetLanguageIsEnabledEditor.java
index 5a318b7..979fb8f 100644
--- a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/compiler/TargetLanguageIsEnabledEditor.java
+++ b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/compiler/TargetLanguageIsEnabledEditor.java
@@ -18,8 +18,11 @@
  */
 class TargetLanguageIsEnabledEditor extends EditingSupport {
 
+  private final ColumnViewer viewer;
+
   TargetLanguageIsEnabledEditor(ColumnViewer viewer) {
     super(viewer);
+    this.viewer = viewer;
   }
 
   @Override protected CellEditor getCellEditor(Object element) {
@@ -36,5 +39,6 @@
 
   @Override protected void setValue(Object element, Object value) {
     ((TargetLanguagePreference)element).enabled((Boolean)value);
+    viewer.refresh();
   }
 }
diff --git a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/compiler/TargetLanguageOutputDirectoryEditor.java b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/compiler/TargetLanguageOutputDirectoryEditor.java
index 477d110..d5b8a19 100644
--- a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/compiler/TargetLanguageOutputDirectoryEditor.java
+++ b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/compiler/TargetLanguageOutputDirectoryEditor.java
@@ -8,11 +8,15 @@
  */
 package com.google.eclipse.protobuf.ui.preferences.compiler;
 
+import static com.google.eclipse.protobuf.ui.preferences.compiler.TargetLanguage.*;
+
 import org.eclipse.jface.viewers.*;
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Image;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.*;
+import org.eclipse.xtext.ui.PluginImageHelper;
 
 /**
  * Editor where users can specify which are the target languages for protoc and the location of the output folders for
@@ -21,36 +25,48 @@
  * @author alruiz@google.com (Alex Ruiz)
  */
 public class TargetLanguageOutputDirectoryEditor extends Composite {
-  private Table table;
 
-  /**
-   * Creates a new </code>{@link TargetLanguageOutputDirectoryEditor}</code>.
-   * @param parent a widget which will be the parent of the new instance (cannot be {@code null}.)
-   */
-  public TargetLanguageOutputDirectoryEditor(Composite parent) {
+  public TargetLanguageOutputDirectoryEditor(Composite parent, final PluginImageHelper imageHelper) {
     super(parent, SWT.NONE);
     setLayout(new GridLayout(1, false));
 
     TableViewer tableViewer = new TableViewer(this, SWT.BORDER | SWT.FULL_SELECTION);
 
-    table = tableViewer.getTable();
+    Table table = tableViewer.getTable();
     table.setHeaderVisible(true);
     table.setLinesVisible(true);
     table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
 
+    TableViewerColumn tblclmnVwrEnabled = new TableViewerColumn(tableViewer, SWT.NONE);
+    TableColumn tblclmnEnabled = tblclmnVwrEnabled.getColumn();
+    tblclmnEnabled.setResizable(false);
+    tblclmnEnabled.setWidth(27);
+    tblclmnVwrEnabled.setLabelProvider(new ColumnLabelProvider() {
+      @Override public String getText(Object element) {
+        return "";
+      }
+
+      @Override public Image getImage(Object element) {
+        boolean enabled = ((TargetLanguagePreference)element).isEnabled();
+        return imageHelper.getImage(enabled ? "checked.gif" : "unchecked.gif");
+      }
+    });
+    tblclmnVwrEnabled.setEditingSupport(new TargetLanguageIsEnabledEditor(tableViewer));
+
     TableViewerColumn tblclmnVwrLanguage = new TableViewerColumn(tableViewer, SWT.NONE);
     TableColumn tblclmnLanguage = tblclmnVwrLanguage.getColumn();
+    tblclmnLanguage.setResizable(false);
     tblclmnLanguage.setWidth(100);
     tblclmnLanguage.setText("Language");
     tblclmnVwrLanguage.setLabelProvider(new ColumnLabelProvider() {
       @Override public String getText(Object element) {
-        return ((TargetLanguagePreference)element).language();
+        return ((TargetLanguagePreference)element).language().name();
       }
     });
-    tblclmnVwrLanguage.setEditingSupport(new TargetLanguageIsEnabledEditor(tableViewer));
 
     TableViewerColumn tblclmnVwrOutputDirectory = new TableViewerColumn(tableViewer, SWT.NONE);
     TableColumn tblclmnOutputDirectory = tblclmnVwrOutputDirectory.getColumn();
+    tblclmnOutputDirectory.setResizable(false);
     tblclmnOutputDirectory.setWidth(100);
     tblclmnOutputDirectory.setText("Output Directory");
     tblclmnVwrOutputDirectory.setLabelProvider(new ColumnLabelProvider() {
@@ -65,9 +81,9 @@
 
   private TargetLanguagePreference[] languages() {
     TargetLanguagePreference[] languages = new TargetLanguagePreference[3];
-    languages[1] = new TargetLanguagePreference(TargetLanguage.JAVA, "", true);
-    languages[0] = new TargetLanguagePreference(TargetLanguage.CPP, "", true);
-    languages[2] = new TargetLanguagePreference(TargetLanguage.PYTHON, "", true);
+    languages[0] = new TargetLanguagePreference(JAVA, "", true);
+    languages[1] = new TargetLanguagePreference(CPP, "", true);
+    languages[2] = new TargetLanguagePreference(PYTHON, "", true);
     return languages;
   }
 }
diff --git a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/compiler/TargetLanguagePreference.java b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/compiler/TargetLanguagePreference.java
index 4d20757..1af0818 100644
--- a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/compiler/TargetLanguagePreference.java
+++ b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/compiler/TargetLanguagePreference.java
@@ -27,11 +27,11 @@
   }
 
   /**
-   * Returns the name of the language.
-   * @return the name of the language.
+   * Returns the language.
+   * @return the language.
    */
-  public String language() {
-    return language.languageName();
+  public TargetLanguage language() {
+    return language;
   }
 
   /**
