Merge "Add WindowBuilder NLS support"
diff --git a/propertysheet/.gitignore b/propertysheet/.gitignore
index fe99505..3826f65 100644
--- a/propertysheet/.gitignore
+++ b/propertysheet/.gitignore
@@ -1,2 +1,6 @@
 bin
-
+*~
+*.bak
+Thumbs.db
+*.class
+*.DS_Store
diff --git a/propertysheet/src/org/eclipse/wb/core/controls/CTableCombo.java b/propertysheet/src/org/eclipse/wb/core/controls/CTableCombo.java
new file mode 100644
index 0000000..407e14b
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/core/controls/CTableCombo.java
@@ -0,0 +1,690 @@
+/*******************************************************************************
+ * Copyright (c) 2011 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
+ *
+ * Contributors:
+ *    Google, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wb.core.controls;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CCombo;
+import org.eclipse.swt.events.DisposeEvent;
+import org.eclipse.swt.events.DisposeListener;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.layout.FillLayout;
+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.Shell;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.TableItem;
+import org.eclipse.swt.widgets.TypedListener;
+
+import java.util.Locale;
+
+/**
+ * {@link Control} like {@link Combo} or {@link CCombo} that shows {@link Table} with image/text as
+ * drop-down.
+ * 
+ * @author mitin_aa
+ * @author scheglov_ke
+ * @coverage core.control
+ */
+public class CTableCombo extends Composite {
+  protected Button m_arrow;
+  protected CImageLabel m_text;
+  protected Shell m_popup;
+  protected Table m_table;
+  protected boolean hasFocus;
+
+  //
+  public CTableCombo(Composite parent, int style) {
+    super(parent, style = checkStyle(style));
+    init(parent, style);
+  }
+
+  static int checkStyle(int style) {
+    int mask = SWT.BORDER | SWT.READ_ONLY | SWT.FLAT;
+    return style & mask;
+  }
+
+  private void init(Composite parent, int style) {
+    m_arrow = new Button(this, SWT.ARROW | SWT.DOWN | SWT.NO_FOCUS);
+    m_text = new CImageLabel(this, style & ~SWT.BORDER);
+    m_text.setBackground(Display.getDefault().getSystemColor(SWT.COLOR_LIST_BACKGROUND));
+    final Shell shell = getShell();
+    m_popup = new Shell(shell, SWT.NONE);
+    m_table = new Table(m_popup, SWT.FULL_SELECTION);
+    new TableColumn(m_table, SWT.NONE);
+    Listener listener = new Listener() {
+      public void handleEvent(Event event) {
+        if (m_popup == event.widget) {
+          handlePopupEvent(event);
+          return;
+        }
+        if (m_text == event.widget) {
+          handleTextEvent(event);
+          return;
+        }
+        if (m_table == event.widget) {
+          handleTableEvent(event);
+          return;
+        }
+        if (m_arrow == event.widget) {
+          handleArrowEvent(event);
+          return;
+        }
+        if (CTableCombo.this == event.widget) {
+          handleComboEvent(event);
+          return;
+        }
+      }
+    };
+    final Listener shellListener = new Listener() {
+      public void handleEvent(Event event) {
+        switch (event.type) {
+          case SWT.Dispose :
+          case SWT.Move :
+          case SWT.Resize :
+            if (!isDisposed()) {
+              dropDown(false);
+            }
+            break;
+        }
+      }
+    };
+    final int[] comboEvents = {SWT.Dispose, SWT.Move, SWT.Resize};
+    for (int i = 0; i < comboEvents.length; i++) {
+      addListener(comboEvents[i], listener);
+      // HACK: hide popup when parent changed
+      shell.addListener(comboEvents[i], shellListener);
+    }
+    addDisposeListener(new DisposeListener() {
+      public void widgetDisposed(DisposeEvent e) {
+        for (int i = 0; i < comboEvents.length; i++) {
+          shell.removeListener(comboEvents[i], shellListener);
+        }
+      }
+    });
+    int[] popupEvents = {SWT.Close, SWT.Paint, SWT.Deactivate};
+    for (int i = 0; i < popupEvents.length; i++) {
+      m_popup.addListener(popupEvents[i], listener);
+    }
+    int[] textEvents =
+        {
+            SWT.KeyDown,
+            SWT.KeyUp,
+            SWT.Modify,
+            SWT.MouseDown,
+            SWT.MouseUp,
+            SWT.MouseDoubleClick,
+            SWT.Traverse,
+            SWT.FocusIn,
+            SWT.FocusOut};
+    for (int i = 0; i < textEvents.length; i++) {
+      m_text.addListener(textEvents[i], listener);
+    }
+    int[] tableEvents =
+        {
+            SWT.MouseUp,
+            SWT.Selection,
+            SWT.Traverse,
+            SWT.KeyDown,
+            SWT.KeyUp,
+            SWT.FocusIn,
+            SWT.FocusOut};
+    for (int i = 0; i < tableEvents.length; i++) {
+      m_table.addListener(tableEvents[i], listener);
+    }
+    int[] arrowEvents = {SWT.Selection, SWT.FocusIn, SWT.FocusOut};
+    for (int i = 0; i < arrowEvents.length; i++) {
+      m_arrow.addListener(arrowEvents[i], listener);
+    }
+  }
+
+  protected void handleTableEvent(Event event) {
+    switch (event.type) {
+      case SWT.FocusIn : {
+        if (hasFocus) {
+          return;
+        }
+        hasFocus = true;
+        Event e = new Event();
+        e.time = event.time;
+        notifyListeners(SWT.FocusIn, e);
+        break;
+      }
+      case SWT.FocusOut : {
+        final int time = event.time;
+        event.display.asyncExec(new Runnable() {
+          public void run() {
+            if (CTableCombo.this.isDisposed()) {
+              return;
+            }
+            Control focusControl = getDisplay().getFocusControl();
+            if (focusControl == m_text || focusControl == m_arrow) {
+              return;
+            }
+            hasFocus = false;
+            Event e = new Event();
+            e.time = time;
+            notifyListeners(SWT.FocusOut, e);
+          }
+        });
+        break;
+      }
+      case SWT.MouseUp : {
+        if (event.button != 1) {
+          return;
+        }
+        dropDown(false);
+        Event e = new Event();
+        e.time = event.time;
+        notifyListeners(SWT.DefaultSelection, e);
+        break;
+      }
+      case SWT.Selection : {
+        int index = m_table.getSelectionIndex();
+        if (index == -1) {
+          return;
+        }
+        TableItem item = m_table.getItem(index);
+        m_text.setText(item.getText());
+        m_text.setImage(item.getImage());
+        //m_text.selectAll();
+        m_table.setSelection(index);
+        Event e = new Event();
+        e.time = event.time;
+        e.stateMask = event.stateMask;
+        e.doit = event.doit;
+        notifyListeners(SWT.Selection, e);
+        event.doit = e.doit;
+        dropDown(false);
+        break;
+      }
+      case SWT.Traverse : {
+        switch (event.detail) {
+          case SWT.TRAVERSE_TAB_NEXT :
+          case SWT.TRAVERSE_RETURN :
+          case SWT.TRAVERSE_ESCAPE :
+          case SWT.TRAVERSE_ARROW_PREVIOUS :
+          case SWT.TRAVERSE_ARROW_NEXT :
+            event.doit = false;
+            break;
+        }
+        Event e = new Event();
+        e.time = event.time;
+        e.detail = event.detail;
+        e.doit = event.doit;
+        e.keyCode = event.keyCode;
+        notifyListeners(SWT.Traverse, e);
+        event.doit = e.doit;
+        break;
+      }
+      case SWT.KeyUp : {
+        Event e = new Event();
+        e.time = event.time;
+        e.character = event.character;
+        e.keyCode = event.keyCode;
+        e.stateMask = event.stateMask;
+        notifyListeners(SWT.KeyUp, e);
+        break;
+      }
+      case SWT.KeyDown : {
+        if (event.character == SWT.ESC) {
+          // escape key cancels popups
+          dropDown(false);
+        }
+        if (event.character == SWT.CR || event.character == '\t') {
+          // Enter and Tab cause default selection
+          dropDown(false);
+          Event e = new Event();
+          e.time = event.time;
+          e.stateMask = event.stateMask;
+          notifyListeners(SWT.DefaultSelection, e);
+        }
+        // At this point the widget may have been disposed.
+        // If so, do not continue.
+        if (isDisposed()) {
+          break;
+        }
+        Event e = new Event();
+        e.time = event.time;
+        e.character = event.character;
+        e.keyCode = event.keyCode;
+        e.stateMask = event.stateMask;
+        notifyListeners(SWT.KeyDown, e);
+        break;
+      }
+    }
+  }
+
+  protected void handlePopupEvent(Event event) {
+    switch (event.type) {
+      case SWT.Paint :
+        // draw black rectangle around list
+        Rectangle listRect = m_table.getBounds();
+        Color black = getDisplay().getSystemColor(SWT.COLOR_BLACK);
+        event.gc.setForeground(black);
+        event.gc.drawRectangle(0, 0, listRect.width + 1, listRect.height + 1);
+        break;
+      case SWT.Close :
+        event.doit = false;
+        dropDown(false);
+        break;
+    }
+  }
+
+  protected void handleComboEvent(Event event) {
+    switch (event.type) {
+      case SWT.Dispose :
+        if (m_popup != null && !m_popup.isDisposed()) {
+          m_popup.dispose();
+        }
+        m_popup = null;
+        m_text = null;
+        m_arrow = null;
+        break;
+      case SWT.Move :
+        dropDown(false);
+        break;
+      case SWT.Resize :
+        internalLayout();
+        break;
+    }
+  }
+
+  protected void handleArrowEvent(Event event) {
+    switch (event.type) {
+      case SWT.FocusIn : {
+        if (hasFocus) {
+          return;
+        }
+        hasFocus = true;
+        Event e = new Event();
+        e.time = event.time;
+        notifyListeners(SWT.FocusIn, e);
+        break;
+      }
+      case SWT.Selection : {
+        boolean wasDropped = isDropped();
+        dropDown(!wasDropped);
+        if (wasDropped) {
+          m_text.forceFocus();
+        }
+        break;
+      }
+    }
+  }
+
+  protected void handleTextEvent(Event event) {
+    switch (event.type) {
+      case SWT.FocusIn : {
+        if (hasFocus) {
+          return;
+        }
+        hasFocus = true;
+        //if (getEditable())
+        Event e = new Event();
+        e.time = event.time;
+        notifyListeners(SWT.FocusIn, e);
+        break;
+      }
+      case SWT.FocusOut : {
+        final int time = event.time;
+        event.display.asyncExec(new Runnable() {
+          public void run() {
+            if (CTableCombo.this.isDisposed()) {
+              return;
+            }
+            Control focusControl = getDisplay().getFocusControl();
+            if (focusControl == m_table
+                || focusControl == m_arrow
+                || focusControl != null
+                && focusControl.getParent() == CTableCombo.this) {
+              return;
+            }
+            hasFocus = false;
+            Event e = new Event();
+            e.time = time;
+            notifyListeners(SWT.FocusOut, e);
+          }
+        });
+        break;
+      }
+      case SWT.KeyDown : {
+        if (event.character == SWT.ESC) { // escape key cancels popup
+          dropDown(false);
+        }
+        if (event.character == SWT.CR) {
+          dropDown(false);
+          Event e = new Event();
+          e.time = event.time;
+          e.stateMask = event.stateMask;
+          notifyListeners(SWT.DefaultSelection, e);
+        }
+        // At this point the widget may have been disposed.
+        // If so, do not continue.
+        if (isDisposed()) {
+          break;
+        }
+        if (event.character == '+') {
+          dropDown(true);
+        }
+        if (isDropped()) {
+          if (event.keyCode == SWT.ARROW_UP || event.keyCode == SWT.ARROW_DOWN) {
+            int oldIndex = getSelectionIndex();
+            if (event.keyCode == SWT.ARROW_UP) {
+              select(Math.max(oldIndex - 1, 0));
+            } else {
+              select(Math.min(oldIndex + 1, getItemCount() - 1));
+            }
+            if (oldIndex != getSelectionIndex()) {
+              Event e = new Event();
+              e.time = event.time;
+              e.stateMask = event.stateMask;
+              notifyListeners(SWT.Selection, e);
+            }
+            // At this point the widget may have been disposed.
+            // If so, do not continue.
+            if (isDisposed()) {
+              break;
+            }
+          }
+        }
+        if (Character.isLetter(event.character)) {
+          int oldIndex = getSelectionIndex();
+          int index = -1;
+          for (int i = 0; i < getItemCount(); i++) {
+            String item = getItem(i).toUpperCase(Locale.ENGLISH);
+            if (item.length() != 0 && item.charAt(0) == Character.toUpperCase(event.character)) {
+              index = i;
+              break;
+            }
+          }
+          if (index != -1) {
+            select(Math.max(index, 0));
+            if (oldIndex != getSelectionIndex()) {
+              Event e = new Event();
+              e.time = event.time;
+              e.stateMask = event.stateMask;
+              notifyListeners(SWT.Selection, e);
+            }
+          }
+        }
+        Event e = new Event();
+        e.time = event.time;
+        e.character = event.character;
+        e.keyCode = event.keyCode;
+        e.stateMask = event.stateMask;
+        if (m_text != null && !m_text.isDisposed()) {
+          notifyListeners(SWT.KeyDown, e);
+        }
+        break;
+      }
+      case SWT.KeyUp : {
+        Event e = new Event();
+        e.time = event.time;
+        e.character = event.character;
+        e.keyCode = event.keyCode;
+        e.stateMask = event.stateMask;
+        notifyListeners(SWT.KeyUp, e);
+        break;
+      }
+      case SWT.Modify : {
+        m_table.deselectAll();
+        Event e = new Event();
+        e.time = event.time;
+        notifyListeners(SWT.Modify, e);
+        break;
+      }
+      case SWT.MouseDown : {
+        if (event.button != 1) {
+          return;
+        }
+        m_text.forceFocus();
+        boolean dropped = isDropped();
+        dropDown(!dropped);
+        if (!dropped) {
+          m_text.forceFocus();
+        }
+        break;
+      }
+      case SWT.MouseDoubleClick : {
+        notifyListeners(SWT.MouseDoubleClick, event);
+        break;
+      }
+      case SWT.Traverse : {
+        switch (event.detail) {
+          case SWT.TRAVERSE_RETURN :
+          case SWT.TRAVERSE_ARROW_PREVIOUS :
+          case SWT.TRAVERSE_ARROW_NEXT :
+            // The enter causes default selection and
+            // the arrow keys are used to manipulate the list contents so
+            // do not use them for traversal.
+            event.doit = false;
+            break;
+          case SWT.TRAVERSE_TAB_NEXT :
+          case SWT.TRAVERSE_TAB_PREVIOUS :
+            event.doit = true;
+            break;
+        }
+        Event e = new Event();
+        e.time = event.time;
+        e.detail = event.detail;
+        e.doit = event.doit;
+        e.keyCode = event.keyCode;
+        notifyListeners(SWT.Traverse, e);
+        event.doit = e.doit;
+        break;
+      }
+    }
+  }
+
+  private void dropDown(boolean drop) {
+    if (drop == isDropped()) {
+      return;
+    }
+    if (!drop) {
+      m_popup.setVisible(false);
+      m_text.setFocus();
+      return;
+    }
+    int index = m_table.getSelectionIndex();
+    if (index != -1) {
+      m_table.setTopIndex(index);
+      m_table.setSelection(index);
+    }
+    m_table.pack();
+    Point point = getParent().toDisplay(getLocation());
+    Point comboSize = getSize();
+    //Rectangle tableRect = m_table.getBounds();
+    //int width = Math.max(comboSize.x, tableRect.width + 2);
+    int width = comboSize.x - 1;
+    // only one column 
+    m_table.getColumn(0).setWidth(width - 5);
+    if (!(m_popup.getLayout() instanceof FillLayout)) {
+      m_popup.setLayout(new FillLayout());
+    }
+    int itemCount = m_table.getItemCount();
+    if (itemCount > 20) {
+      itemCount = 20;
+    }
+    int height =
+        Math.min(
+            m_table.getItemHeight() * itemCount + 5,
+            Display.getCurrent().getClientArea().height - point.y - 20);
+    m_popup.setBounds(point.x, point.y + comboSize.y, width, height);
+    m_popup.layout();
+    m_popup.setVisible(true);
+    m_text.setFocus();
+    if (index != -1) {
+      m_table.setTopIndex(index);
+      m_table.setSelection(index);
+    }
+  }
+
+  @Override
+  public Point computeSize(int wHint, int hHint, boolean changed) {
+    checkWidget();
+    int width = 0, height = 0;
+    Point textSize = m_text.computeSize(wHint, SWT.DEFAULT, changed);
+    Point arrowSize = m_arrow.computeSize(SWT.DEFAULT, SWT.DEFAULT, changed);
+    int tableWidth;
+    {
+      TableColumn column = m_table.getColumn(0);
+      column.pack();
+      tableWidth = column.getWidth();
+    }
+    //
+    int borderWidth = getBorderWidth();
+    height = Math.max(hHint, Math.max(textSize.y, arrowSize.y) + 2 * borderWidth);
+    width = Math.max(wHint, Math.max(textSize.x + arrowSize.x, tableWidth) + 2 * borderWidth);
+    //
+    return new Point(width, height);
+  }
+
+  private void internalLayout() {
+    if (isDropped()) {
+      dropDown(false);
+    }
+    Rectangle rect = getClientArea();
+    int width = rect.width;
+    int height = rect.height;
+    Point arrowSize = m_arrow.computeSize(SWT.DEFAULT, height);
+    m_text.setBounds(rect.x, rect.y, width - arrowSize.x, height);
+    m_arrow.setBounds(rect.x + width - arrowSize.x, rect.y, arrowSize.x, arrowSize.y);
+  }
+
+  private boolean isDropped() {
+    return m_popup.isVisible();
+  }
+
+  @Override
+  public boolean isFocusControl() {
+    checkWidget();
+    if (m_text.isFocusControl()
+        || m_arrow.isFocusControl()
+        || m_table.isFocusControl()
+        || m_popup.isFocusControl()) {
+      return true;
+    }
+    return super.isFocusControl();
+  }
+
+  public void select(int index) {
+    checkWidget();
+    if (index == -1) {
+      m_table.deselectAll();
+      m_text.setText(""); //$NON-NLS-1$
+      m_text.setImage(null);
+      return;
+    }
+    if (0 <= index && index < m_table.getItemCount()) {
+      if (index != getSelectionIndex()) {
+        TableItem item = m_table.getItem(index);
+        m_text.setText(item.getText());
+        m_text.setImage(item.getImage());
+        m_table.select(index);
+        m_table.showSelection();
+      }
+    }
+  }
+
+  @Override
+  public void setEnabled(boolean enabled) {
+    super.setEnabled(enabled);
+    if (enabled) {
+      m_text.setBackground(Display.getDefault().getSystemColor(SWT.COLOR_LIST_BACKGROUND));
+    } else {
+      m_text.setBackground(Display.getDefault().getSystemColor(SWT.COLOR_WIDGET_LIGHT_SHADOW));
+    }
+  }
+
+  public String getItem(int index) {
+    checkWidget();
+    return m_table.getItem(index).getText();
+  }
+
+  public int getSelectionIndex() {
+    checkWidget();
+    return m_table.getSelectionIndex();
+  }
+
+  public void removeAll() {
+    checkWidget();
+    m_text.setText(""); //$NON-NLS-1$
+    m_text.setImage(null);
+    m_table.removeAll();
+  }
+
+  public int indexOf(String string) {
+    return indexOf(string, 0);
+  }
+
+  public int indexOf(String string, int start) {
+    checkWidget();
+    if (string == null) {
+      return -1;
+    }
+    TableItem[] items = m_table.getItems();
+    for (int i = start; i < items.length; i++) {
+      TableItem item = items[i];
+      if (item.getText().equalsIgnoreCase(string)) {
+        return i;
+      }
+    }
+    return -1;
+  }
+
+  public String getText() {
+    return m_text.getText();
+  }
+
+  public int getItemCount() {
+    checkWidget();
+    return m_table.getItemCount();
+  }
+
+  protected void setText(String string) {
+    m_text.setText(string);
+  }
+
+  protected void setImage(Image image) {
+    m_text.setImage(image);
+  }
+
+  public void add(String text) {
+    add(text, null);
+  }
+
+  public void add(String text, Image image) {
+    checkWidget();
+    TableItem item = new TableItem(m_table, SWT.NONE);
+    item.setText(text);
+    item.setImage(image);
+  }
+
+  public void addSelectionListener(SelectionListener listener) {
+    checkWidget();
+    if (listener == null) {
+      SWT.error(SWT.ERROR_NULL_ARGUMENT);
+    }
+    TypedListener typedListener = new TypedListener(listener);
+    addListener(SWT.Selection, typedListener);
+    addListener(SWT.DefaultSelection, typedListener);
+  }
+}
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/DesignerPlugin.java b/propertysheet/src/org/eclipse/wb/internal/core/DesignerPlugin.java
index 564a068..9c6a6ca 100644
--- a/propertysheet/src/org/eclipse/wb/internal/core/DesignerPlugin.java
+++ b/propertysheet/src/org/eclipse/wb/internal/core/DesignerPlugin.java
@@ -208,7 +208,7 @@
         if (image == null) {
             ImageDescriptor descriptor = getImageDescriptor(path);
             if (descriptor != null) {
-                return descriptor.createImage();
+                image = descriptor.createImage();
             }
             sImageCache.put(path, image);
         }
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/add_source.gif b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/add_source.gif
new file mode 100644
index 0000000..10dd73e
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/add_source.gif
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/add_source.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/add_source.png
new file mode 100644
index 0000000..34abffb
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/add_source.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/externalize_strings.gif b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/externalize_strings.gif
new file mode 100644
index 0000000..ee1d84b
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/externalize_strings.gif
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/externalize_strings_disabled.gif b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/externalize_strings_disabled.gif
new file mode 100644
index 0000000..85eb7b1
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/externalize_strings_disabled.gif
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/extstr_wiz.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/extstr_wiz.png
new file mode 100644
index 0000000..74ff245
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/extstr_wiz.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ad.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ad.png
new file mode 100644
index 0000000..625ca84
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ad.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ae.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ae.png
new file mode 100644
index 0000000..ef3a1ec
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ae.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/af.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/af.png
new file mode 100644
index 0000000..a4742e2
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/af.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ag.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ag.png
new file mode 100644
index 0000000..556d550
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ag.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ai.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ai.png
new file mode 100644
index 0000000..74ed29d
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ai.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/al.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/al.png
new file mode 100644
index 0000000..92354cb
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/al.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/am.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/am.png
new file mode 100644
index 0000000..344a2a8
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/am.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/an.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/an.png
new file mode 100644
index 0000000..633e4b8
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/an.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ao.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ao.png
new file mode 100644
index 0000000..bcbd1d6
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ao.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ar.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ar.png
new file mode 100644
index 0000000..e5ef8f1
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ar.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/as.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/as.png
new file mode 100644
index 0000000..32f30e4
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/as.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/at.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/at.png
new file mode 100644
index 0000000..0f15f34
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/at.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/au.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/au.png
new file mode 100644
index 0000000..a01389a
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/au.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/aw.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/aw.png
new file mode 100644
index 0000000..a3579c2
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/aw.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ax.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ax.png
new file mode 100644
index 0000000..1eea80a
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ax.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/az.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/az.png
new file mode 100644
index 0000000..4ee9fe5
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/az.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ba.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ba.png
new file mode 100644
index 0000000..c774992
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ba.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/bb.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/bb.png
new file mode 100644
index 0000000..0df19c7
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/bb.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/bd.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/bd.png
new file mode 100644
index 0000000..076a8bf
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/bd.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/be.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/be.png
new file mode 100644
index 0000000..d86ebc8
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/be.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/bf.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/bf.png
new file mode 100644
index 0000000..ab5ce8f
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/bf.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/bg.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/bg.png
new file mode 100644
index 0000000..0469f06
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/bg.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/bh.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/bh.png
new file mode 100644
index 0000000..ea8ce68
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/bh.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/bi.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/bi.png
new file mode 100644
index 0000000..5cc2e30
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/bi.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/bj.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/bj.png
new file mode 100644
index 0000000..1cc8b45
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/bj.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/bm.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/bm.png
new file mode 100644
index 0000000..c0c7aea
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/bm.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/bn.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/bn.png
new file mode 100644
index 0000000..8fb0984
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/bn.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/bo.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/bo.png
new file mode 100644
index 0000000..ce7ba52
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/bo.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/br.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/br.png
new file mode 100644
index 0000000..9b1a553
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/br.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/bs.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/bs.png
new file mode 100644
index 0000000..639fa6c
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/bs.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/bt.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/bt.png
new file mode 100644
index 0000000..1d512df
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/bt.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/bv.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/bv.png
new file mode 100644
index 0000000..160b6b5
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/bv.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/bw.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/bw.png
new file mode 100644
index 0000000..fcb1039
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/bw.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/by.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/by.png
new file mode 100644
index 0000000..504774e
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/by.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/bz.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/bz.png
new file mode 100644
index 0000000..be63ee1
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/bz.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ca.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ca.png
new file mode 100644
index 0000000..1f20419
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ca.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/catalonia.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/catalonia.png
new file mode 100644
index 0000000..5041e30
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/catalonia.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/cc.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/cc.png
new file mode 100644
index 0000000..aed3d3b
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/cc.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/cd.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/cd.png
new file mode 100644
index 0000000..5e48942
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/cd.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/cf.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/cf.png
new file mode 100644
index 0000000..da687bd
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/cf.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/cg.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/cg.png
new file mode 100644
index 0000000..a859792
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/cg.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ch.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ch.png
new file mode 100644
index 0000000..242ec01
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ch.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ci.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ci.png
new file mode 100644
index 0000000..3f2c62e
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ci.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ck.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ck.png
new file mode 100644
index 0000000..746d3d6
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ck.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/cl.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/cl.png
new file mode 100644
index 0000000..29c6d61
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/cl.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/cm.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/cm.png
new file mode 100644
index 0000000..f65c5bd
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/cm.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/cn.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/cn.png
new file mode 100644
index 0000000..8914414
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/cn.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/co.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/co.png
new file mode 100644
index 0000000..a118ff4
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/co.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/cr.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/cr.png
new file mode 100644
index 0000000..c7a3731
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/cr.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/cs.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/cs.png
new file mode 100644
index 0000000..8254790
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/cs.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/cu.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/cu.png
new file mode 100644
index 0000000..083f1d6
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/cu.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/cv.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/cv.png
new file mode 100644
index 0000000..a63f7ea
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/cv.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/cx.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/cx.png
new file mode 100644
index 0000000..48e31ad
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/cx.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/cy.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/cy.png
new file mode 100644
index 0000000..5b1ad6c
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/cy.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/cz.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/cz.png
new file mode 100644
index 0000000..c8403dd
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/cz.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/de.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/de.png
new file mode 100644
index 0000000..ac4a977
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/de.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/dj.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/dj.png
new file mode 100644
index 0000000..582af36
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/dj.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/dk.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/dk.png
new file mode 100644
index 0000000..e2993d3
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/dk.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/dm.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/dm.png
new file mode 100644
index 0000000..5fbffcb
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/dm.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/do.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/do.png
new file mode 100644
index 0000000..5a04932
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/do.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/dz.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/dz.png
new file mode 100644
index 0000000..335c239
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/dz.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ec.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ec.png
new file mode 100644
index 0000000..0caa0b1
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ec.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ee.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ee.png
new file mode 100644
index 0000000..0c82efb
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ee.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/eg.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/eg.png
new file mode 100644
index 0000000..8a3f7a1
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/eg.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/eh.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/eh.png
new file mode 100644
index 0000000..90a1195
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/eh.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/england.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/england.png
new file mode 100644
index 0000000..3a7311d
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/england.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/er.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/er.png
new file mode 100644
index 0000000..13065ae
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/er.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/es.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/es.png
new file mode 100644
index 0000000..c2de2d7
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/es.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/et.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/et.png
new file mode 100644
index 0000000..2e893fa
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/et.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/europeanunion.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/europeanunion.png
new file mode 100644
index 0000000..d6d8711
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/europeanunion.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/fam.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/fam.png
new file mode 100644
index 0000000..cf50c75
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/fam.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/fi.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/fi.png
new file mode 100644
index 0000000..14ec091
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/fi.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/fj.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/fj.png
new file mode 100644
index 0000000..cee9988
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/fj.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/fk.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/fk.png
new file mode 100644
index 0000000..ceaeb27
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/fk.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/flag_empty.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/flag_empty.png
new file mode 100644
index 0000000..5c00ce1
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/flag_empty.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/fm.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/fm.png
new file mode 100644
index 0000000..066bb24
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/fm.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/fo.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/fo.png
new file mode 100644
index 0000000..cbceb80
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/fo.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/fr.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/fr.png
new file mode 100644
index 0000000..8332c4e
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/fr.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ga.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ga.png
new file mode 100644
index 0000000..0e0d434
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ga.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/gb.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/gb.png
new file mode 100644
index 0000000..ff701e1
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/gb.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/gd.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/gd.png
new file mode 100644
index 0000000..9ab57f5
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/gd.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ge.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ge.png
new file mode 100644
index 0000000..728d970
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ge.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/gf.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/gf.png
new file mode 100644
index 0000000..8332c4e
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/gf.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/gh.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/gh.png
new file mode 100644
index 0000000..4e2f896
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/gh.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/gi.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/gi.png
new file mode 100644
index 0000000..e76797f
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/gi.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/gl.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/gl.png
new file mode 100644
index 0000000..ef12a73
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/gl.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/gm.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/gm.png
new file mode 100644
index 0000000..0720b66
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/gm.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/gn.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/gn.png
new file mode 100644
index 0000000..ea660b0
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/gn.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/gp.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/gp.png
new file mode 100644
index 0000000..dbb086d
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/gp.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/gq.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/gq.png
new file mode 100644
index 0000000..ebe20a2
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/gq.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/gr.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/gr.png
new file mode 100644
index 0000000..8651ade
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/gr.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/gs.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/gs.png
new file mode 100644
index 0000000..7ef0bf5
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/gs.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/gt.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/gt.png
new file mode 100644
index 0000000..c43a70d
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/gt.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/gu.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/gu.png
new file mode 100644
index 0000000..92f37c0
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/gu.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/gw.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/gw.png
new file mode 100644
index 0000000..b37bcf0
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/gw.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/gy.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/gy.png
new file mode 100644
index 0000000..22cbe2f
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/gy.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/hk.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/hk.png
new file mode 100644
index 0000000..d5c380c
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/hk.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/hm.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/hm.png
new file mode 100644
index 0000000..a01389a
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/hm.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/hn.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/hn.png
new file mode 100644
index 0000000..96f8388
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/hn.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/hr.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/hr.png
new file mode 100644
index 0000000..696b515
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/hr.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ht.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ht.png
new file mode 100644
index 0000000..416052a
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ht.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/hu.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/hu.png
new file mode 100644
index 0000000..7baafe4
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/hu.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/id.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/id.png
new file mode 100644
index 0000000..c6bc0fa
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/id.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ie.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ie.png
new file mode 100644
index 0000000..26baa31
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ie.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/il.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/il.png
new file mode 100644
index 0000000..2ca772d
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/il.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/in.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/in.png
new file mode 100644
index 0000000..e4d7e81
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/in.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/io.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/io.png
new file mode 100644
index 0000000..3e74b6a
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/io.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/iq.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/iq.png
new file mode 100644
index 0000000..878a351
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/iq.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ir.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ir.png
new file mode 100644
index 0000000..c5fd136
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ir.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/is.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/is.png
new file mode 100644
index 0000000..b8f6d0f
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/is.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/it.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/it.png
new file mode 100644
index 0000000..89692f7
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/it.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/jm.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/jm.png
new file mode 100644
index 0000000..7be119e
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/jm.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/jo.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/jo.png
new file mode 100644
index 0000000..11bd497
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/jo.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/jp.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/jp.png
new file mode 100644
index 0000000..325fbad
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/jp.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ke.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ke.png
new file mode 100644
index 0000000..51879ad
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ke.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/kg.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/kg.png
new file mode 100644
index 0000000..0a818f6
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/kg.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/kh.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/kh.png
new file mode 100644
index 0000000..30f6bb1
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/kh.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ki.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ki.png
new file mode 100644
index 0000000..2dcce4b
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ki.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/km.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/km.png
new file mode 100644
index 0000000..812b2f5
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/km.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/kn.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/kn.png
new file mode 100644
index 0000000..febd5b4
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/kn.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/kp.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/kp.png
new file mode 100644
index 0000000..d3d509a
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/kp.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/kr.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/kr.png
new file mode 100644
index 0000000..9c0a78e
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/kr.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/kw.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/kw.png
new file mode 100644
index 0000000..96546da
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/kw.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ky.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ky.png
new file mode 100644
index 0000000..15c5f8e
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ky.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/kz.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/kz.png
new file mode 100644
index 0000000..45a8c88
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/kz.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/la.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/la.png
new file mode 100644
index 0000000..e28acd0
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/la.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/lb.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/lb.png
new file mode 100644
index 0000000..d0d452b
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/lb.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/lc.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/lc.png
new file mode 100644
index 0000000..a47d065
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/lc.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/li.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/li.png
new file mode 100644
index 0000000..6469909
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/li.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/lk.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/lk.png
new file mode 100644
index 0000000..088aad6
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/lk.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/lr.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/lr.png
new file mode 100644
index 0000000..89a5bc7
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/lr.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ls.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ls.png
new file mode 100644
index 0000000..33fdef1
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ls.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/lt.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/lt.png
new file mode 100644
index 0000000..c8ef0da
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/lt.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/lu.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/lu.png
new file mode 100644
index 0000000..4cabba9
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/lu.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/lv.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/lv.png
new file mode 100644
index 0000000..49b6998
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/lv.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ly.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ly.png
new file mode 100644
index 0000000..b163a9f
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ly.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ma.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ma.png
new file mode 100644
index 0000000..f386770
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ma.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/mc.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/mc.png
new file mode 100644
index 0000000..1aa830f
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/mc.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/md.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/md.png
new file mode 100644
index 0000000..4e92c18
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/md.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/me.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/me.png
new file mode 100644
index 0000000..ac72535
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/me.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/mg.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/mg.png
new file mode 100644
index 0000000..d2715b3
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/mg.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/mh.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/mh.png
new file mode 100644
index 0000000..fb523a8
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/mh.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/mk.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/mk.png
new file mode 100644
index 0000000..db173aa
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/mk.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ml.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ml.png
new file mode 100644
index 0000000..2cec8ba
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ml.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/mm.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/mm.png
new file mode 100644
index 0000000..f464f67
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/mm.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/mn.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/mn.png
new file mode 100644
index 0000000..9396355
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/mn.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/mo.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/mo.png
new file mode 100644
index 0000000..deb801d
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/mo.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/mp.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/mp.png
new file mode 100644
index 0000000..298d588
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/mp.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/mq.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/mq.png
new file mode 100644
index 0000000..010143b
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/mq.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/mr.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/mr.png
new file mode 100644
index 0000000..319546b
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/mr.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ms.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ms.png
new file mode 100644
index 0000000..d4cbb43
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ms.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/mt.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/mt.png
new file mode 100644
index 0000000..00af948
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/mt.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/mu.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/mu.png
new file mode 100644
index 0000000..b7fdce1
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/mu.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/mv.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/mv.png
new file mode 100644
index 0000000..5073d9e
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/mv.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/mw.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/mw.png
new file mode 100644
index 0000000..13886e9
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/mw.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/mx.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/mx.png
new file mode 100644
index 0000000..5bc58ab
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/mx.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/my.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/my.png
new file mode 100644
index 0000000..9034cba
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/my.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/mz.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/mz.png
new file mode 100644
index 0000000..76405e0
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/mz.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/na.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/na.png
new file mode 100644
index 0000000..63358c6
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/na.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/nc.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/nc.png
new file mode 100644
index 0000000..2cad283
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/nc.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ne.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ne.png
new file mode 100644
index 0000000..d85f424
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ne.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/nf.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/nf.png
new file mode 100644
index 0000000..f9bcdda
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/nf.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ng.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ng.png
new file mode 100644
index 0000000..3eea2e0
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ng.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ni.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ni.png
new file mode 100644
index 0000000..3969aaa
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ni.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/nl.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/nl.png
new file mode 100644
index 0000000..fe44791
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/nl.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/no.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/no.png
new file mode 100644
index 0000000..160b6b5
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/no.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/np.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/np.png
new file mode 100644
index 0000000..aeb058b
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/np.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/nr.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/nr.png
new file mode 100644
index 0000000..705fc33
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/nr.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/nu.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/nu.png
new file mode 100644
index 0000000..c3ce4ae
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/nu.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/nz.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/nz.png
new file mode 100644
index 0000000..10d6306
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/nz.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/om.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/om.png
new file mode 100644
index 0000000..2ffba7e
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/om.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/pa.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/pa.png
new file mode 100644
index 0000000..9b2ee9a
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/pa.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/pe.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/pe.png
new file mode 100644
index 0000000..62a0497
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/pe.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/pf.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/pf.png
new file mode 100644
index 0000000..771a0f6
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/pf.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/pg.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/pg.png
new file mode 100644
index 0000000..10d6233
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/pg.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ph.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ph.png
new file mode 100644
index 0000000..b89e159
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ph.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/pk.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/pk.png
new file mode 100644
index 0000000..e9df70c
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/pk.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/pl.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/pl.png
new file mode 100644
index 0000000..d413d01
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/pl.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/pm.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/pm.png
new file mode 100644
index 0000000..ba91d2c
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/pm.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/pn.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/pn.png
new file mode 100644
index 0000000..aa9344f
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/pn.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/pr.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/pr.png
new file mode 100644
index 0000000..82d9130
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/pr.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ps.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ps.png
new file mode 100644
index 0000000..f5f5477
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ps.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/pt.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/pt.png
new file mode 100644
index 0000000..ece7980
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/pt.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/pw.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/pw.png
new file mode 100644
index 0000000..6178b25
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/pw.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/py.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/py.png
new file mode 100644
index 0000000..cb8723c
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/py.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/qa.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/qa.png
new file mode 100644
index 0000000..ed4c621
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/qa.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/re.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/re.png
new file mode 100644
index 0000000..8332c4e
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/re.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ro.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ro.png
new file mode 100644
index 0000000..57e74a6
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ro.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/rs.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/rs.png
new file mode 100644
index 0000000..9439a5b
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/rs.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ru.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ru.png
new file mode 100644
index 0000000..47da421
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ru.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/rw.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/rw.png
new file mode 100644
index 0000000..5356491
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/rw.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/sa.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/sa.png
new file mode 100644
index 0000000..b4641c7
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/sa.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/sb.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/sb.png
new file mode 100644
index 0000000..a9937cc
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/sb.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/sc.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/sc.png
new file mode 100644
index 0000000..39ee371
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/sc.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/scotland.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/scotland.png
new file mode 100644
index 0000000..a0e57b4
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/scotland.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/sd.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/sd.png
new file mode 100644
index 0000000..eaab69e
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/sd.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/se.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/se.png
new file mode 100644
index 0000000..1994653
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/se.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/sg.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/sg.png
new file mode 100644
index 0000000..dd34d61
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/sg.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/sh.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/sh.png
new file mode 100644
index 0000000..4b1d2a2
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/sh.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/si.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/si.png
new file mode 100644
index 0000000..bb1476f
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/si.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/sj.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/sj.png
new file mode 100644
index 0000000..160b6b5
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/sj.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/sk.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/sk.png
new file mode 100644
index 0000000..7ccbc82
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/sk.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/sl.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/sl.png
new file mode 100644
index 0000000..12d812d
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/sl.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/sm.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/sm.png
new file mode 100644
index 0000000..3df2fdc
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/sm.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/sn.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/sn.png
new file mode 100644
index 0000000..eabb71d
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/sn.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/so.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/so.png
new file mode 100644
index 0000000..4a1ea4b
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/so.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/sr.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/sr.png
new file mode 100644
index 0000000..5eff927
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/sr.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/st.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/st.png
new file mode 100644
index 0000000..2978557
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/st.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/sv.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/sv.png
new file mode 100644
index 0000000..2498799
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/sv.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/sy.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/sy.png
new file mode 100644
index 0000000..f5ce30d
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/sy.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/sz.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/sz.png
new file mode 100644
index 0000000..914ee86
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/sz.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/tc.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/tc.png
new file mode 100644
index 0000000..8fc1156
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/tc.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/td.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/td.png
new file mode 100644
index 0000000..667f21f
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/td.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/tf.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/tf.png
new file mode 100644
index 0000000..80529a4
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/tf.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/tg.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/tg.png
new file mode 100644
index 0000000..3aa00ad
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/tg.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/th.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/th.png
new file mode 100644
index 0000000..dd8ba91
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/th.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/tj.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/tj.png
new file mode 100644
index 0000000..617bf64
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/tj.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/tk.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/tk.png
new file mode 100644
index 0000000..67b8c8c
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/tk.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/tl.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/tl.png
new file mode 100644
index 0000000..77da181
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/tl.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/tm.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/tm.png
new file mode 100644
index 0000000..828020e
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/tm.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/tn.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/tn.png
new file mode 100644
index 0000000..183cdd3
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/tn.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/to.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/to.png
new file mode 100644
index 0000000..f89b8ba
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/to.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/tr.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/tr.png
new file mode 100644
index 0000000..be32f77
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/tr.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/tt.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/tt.png
new file mode 100644
index 0000000..2a11c1e
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/tt.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/tv.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/tv.png
new file mode 100644
index 0000000..28274c5
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/tv.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/tw.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/tw.png
new file mode 100644
index 0000000..f31c654
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/tw.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/tz.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/tz.png
new file mode 100644
index 0000000..c00ff79
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/tz.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ua.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ua.png
new file mode 100644
index 0000000..09563a2
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ua.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ug.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ug.png
new file mode 100644
index 0000000..33f4aff
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ug.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/um.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/um.png
new file mode 100644
index 0000000..c1dd965
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/um.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/us.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/us.png
new file mode 100644
index 0000000..10f451f
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/us.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/uy.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/uy.png
new file mode 100644
index 0000000..31d948a
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/uy.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/uz.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/uz.png
new file mode 100644
index 0000000..fef5dc1
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/uz.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/va.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/va.png
new file mode 100644
index 0000000..b31eaf2
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/va.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/vc.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/vc.png
new file mode 100644
index 0000000..8fa17b0
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/vc.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ve.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ve.png
new file mode 100644
index 0000000..00c90f9
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ve.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/vg.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/vg.png
new file mode 100644
index 0000000..4156907
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/vg.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/vi.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/vi.png
new file mode 100644
index 0000000..ed26915
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/vi.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/vn.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/vn.png
new file mode 100644
index 0000000..ec7cd48
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/vn.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/vu.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/vu.png
new file mode 100644
index 0000000..b3397bc
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/vu.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/wales.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/wales.png
new file mode 100644
index 0000000..e0d7cee
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/wales.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/wf.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/wf.png
new file mode 100644
index 0000000..9f95587
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/wf.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ws.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ws.png
new file mode 100644
index 0000000..c169508
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ws.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ye.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ye.png
new file mode 100644
index 0000000..468dfad
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/ye.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/yt.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/yt.png
new file mode 100644
index 0000000..c298f37
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/yt.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/za.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/za.png
new file mode 100644
index 0000000..57c58e2
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/za.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/zm.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/zm.png
new file mode 100644
index 0000000..c25b07b
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/zm.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/zw.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/zw.png
new file mode 100644
index 0000000..53c9725
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/flags/zw.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/globe3.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/globe3.png
new file mode 100644
index 0000000..9991031
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/globe3.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/ms16.png b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/ms16.png
new file mode 100644
index 0000000..fd46156
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/ms16.png
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/property.gif b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/property.gif
new file mode 100644
index 0000000..b512915
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/icons/nls/property.gif
Binary files differ
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/nls/model/LocaleInfo.java b/propertysheet/src/org/eclipse/wb/internal/core/nls/model/LocaleInfo.java
new file mode 100644
index 0000000..0403351
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/nls/model/LocaleInfo.java
@@ -0,0 +1,190 @@
+/*******************************************************************************
+ * Copyright (c) 2011 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
+ *
+ * Contributors:
+ *    Google, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wb.internal.core.nls.model;
+
+import java.util.Locale;
+
+/**
+ * Information about {@link Locale}.
+ *
+ * We separate {@link LocaleInfo} from {@link BundleInfo} because {@link BundleInfo} is wrapper for
+ * single *.properties file and we support more than one source of bundles in one
+ * {@link CompilationUnit}.
+ *
+ * @author scheglov_ke
+ * @coverage core.nls
+ */
+public final class LocaleInfo implements Comparable<LocaleInfo> {
+  /**
+   * The default {@link LocaleInfo}.
+   */
+  public static final LocaleInfo DEFAULT = new LocaleInfo(null);
+  ////////////////////////////////////////////////////////////////////////////
+  //
+  // Instance fields
+  //
+  ////////////////////////////////////////////////////////////////////////////
+  private final Locale m_locale;
+
+  ////////////////////////////////////////////////////////////////////////////
+  //
+  // Constructor
+  //
+  ////////////////////////////////////////////////////////////////////////////
+  public LocaleInfo(Locale locale) {
+    m_locale = locale;
+  }
+
+  ////////////////////////////////////////////////////////////////////////////
+  //
+  // Object
+  //
+  ////////////////////////////////////////////////////////////////////////////
+  @Override
+  public String toString() {
+    return getTitle();
+  }
+
+  @Override
+  public boolean equals(Object obj) {
+    if (obj == this) {
+      return true;
+    }
+    if (obj instanceof LocaleInfo) {
+      LocaleInfo localeInfo = (LocaleInfo) obj;
+      if (isDefault()) {
+        return localeInfo.isDefault();
+      }
+      return m_locale.equals(localeInfo.m_locale);
+    }
+    return false;
+  }
+
+  @Override
+  public int hashCode() {
+    if (isDefault()) {
+      return 0;
+    }
+    return m_locale.hashCode();
+  }
+
+  ////////////////////////////////////////////////////////////////////////////
+  //
+  // Comparable
+  //
+  ////////////////////////////////////////////////////////////////////////////
+  @Override
+public int compareTo(LocaleInfo o) {
+    if (m_locale == null) {
+      if (o.m_locale == null) {
+        return 0;
+      }
+      return -1;
+    }
+    if (o.m_locale == null) {
+      return 1;
+    }
+    String localeNameA = m_locale.toString();
+    String localeNameB = o.m_locale.toString();
+    return localeNameA.compareTo(localeNameB);
+  }
+
+  ////////////////////////////////////////////////////////////////////////////
+  //
+  // Access
+  //
+  ////////////////////////////////////////////////////////////////////////////
+  /**
+   * @return {@link Locale} for this {@link LocaleInfo}.
+   */
+  public Locale getLocale() {
+    return m_locale;
+  }
+
+  /**
+   * @return <code>true</code> if that {@link Locale} is default.
+   */
+  public boolean isDefault() {
+    return m_locale == null;
+  }
+
+  /**
+   * @return the title to display in UI.
+   */
+  public String getTitle() {
+    if (isDefault()) {
+      return "(default)";
+    }
+    return m_locale.toString();
+  }
+
+  ////////////////////////////////////////////////////////////////////////////
+  //
+  // Utils
+  //
+  ////////////////////////////////////////////////////////////////////////////
+  /**
+   * @return the "parent" {@link LocaleInfo} from given array.<br>
+   *         Here "parent" is locale that is more general than current one.<br>
+   *         For example "parent" locale for 'ru_RU' is 'ru'.
+   *
+   *         If there are no parent locale in array, return default locale.<br>
+   */
+  public LocaleInfo getParent(LocaleInfo locales[]) {
+    String localeName = m_locale.toString();
+    int lastSeparatorIndex = localeName.lastIndexOf('_');
+    if (lastSeparatorIndex != -1) {
+      String parentLocaleName = localeName.substring(0, lastSeparatorIndex);
+      // try to find locale with parent name
+      for (LocaleInfo locale : locales) {
+        if (locale.getLocale() != null && locale.getLocale().toString().equals(parentLocaleName)) {
+          return locale;
+        }
+      }
+    }
+    // use default
+    return LocaleInfo.DEFAULT;
+  }
+
+  /**
+   * @param localeName
+   *          the name of locale, such as "en" or "ru_RU".
+   * @param localeDescription
+   *          the description of {@link Locale}, used in exception.
+   * @return the {@link LocaleInfo} which wraps {@link Locale}.
+   */
+  public static LocaleInfo create(String localeName, String localeDescription) {
+    // try to find locale in list of available locales
+    Locale[] locales = Locale.getAvailableLocales();
+    for (int i = 0; i < locales.length; i++) {
+      Locale locale = locales[i];
+      if (locale.toString().equals(localeName)) {
+        return new LocaleInfo(locale);
+      }
+    }
+    // try to create new, this constructor is since 1.4, so do this in try/catch
+    try {
+      Locale locale;
+      int separatorIndex = localeName.indexOf('_');
+      if (separatorIndex != -1) {
+        String language = localeName.substring(0, separatorIndex);
+        String country = localeName.substring(separatorIndex + 1);
+        locale = new Locale(language, country);
+      } else {
+        locale = new Locale(localeName);
+      }
+      return new LocaleInfo(locale);
+    } catch (Throwable e) {
+      String msg = "Locale not found for " + localeDescription;
+      throw new IllegalArgumentException(msg);
+    }
+  }
+}
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/nls/model/LocalePartInfo.java b/propertysheet/src/org/eclipse/wb/internal/core/nls/model/LocalePartInfo.java
new file mode 100644
index 0000000..9278979
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/nls/model/LocalePartInfo.java
@@ -0,0 +1,81 @@
+/*******************************************************************************
+ * Copyright (c) 2011 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
+ *
+ * Contributors:
+ *    Google, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wb.internal.core.nls.model;
+
+import org.eclipse.swt.graphics.Image;
+
+/**
+ * Information about part of Locale - language or country.
+ * 
+ * @author scheglov_ke
+ * @coverage core.nls
+ */
+public final class LocalePartInfo implements Comparable<LocalePartInfo> {
+  private final String m_name;
+  private final String m_displayName;
+  private final Image m_flagImage;
+
+  ////////////////////////////////////////////////////////////////////////////
+  //
+  // Constructor
+  //
+  ////////////////////////////////////////////////////////////////////////////
+  public LocalePartInfo(String name, String displayName, Image flagImage) {
+    m_name = name;
+    m_displayName = displayName;
+    m_flagImage = flagImage;
+  }
+
+  ////////////////////////////////////////////////////////////////////////////
+  //
+  // Access
+  //
+  ////////////////////////////////////////////////////////////////////////////
+  public String getName() {
+    return m_name;
+  }
+
+  public Image getFlagImage() {
+    return m_flagImage;
+  }
+
+  ////////////////////////////////////////////////////////////////////////////
+  //
+  // Object
+  //
+  ////////////////////////////////////////////////////////////////////////////
+  @Override
+  public String toString() {
+    if (m_name.length() == 0) {
+      return m_displayName;
+    }
+    return m_name + " - " + m_displayName;
+  }
+
+  @Override
+  public int hashCode() {
+    return m_name.hashCode();
+  }
+
+  @Override
+  public boolean equals(Object obj) {
+    return obj instanceof LocalePartInfo && m_name.equals(((LocalePartInfo) obj).m_name);
+  }
+
+  ////////////////////////////////////////////////////////////////////////////
+  //
+  // Comparable
+  //
+  ////////////////////////////////////////////////////////////////////////////
+  public int compareTo(LocalePartInfo o) {
+    return m_name.compareTo(o.m_name);
+  }
+}
\ No newline at end of file
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/nls/model/LocalePartInfos.java b/propertysheet/src/org/eclipse/wb/internal/core/nls/model/LocalePartInfos.java
new file mode 100644
index 0000000..68f9097
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/nls/model/LocalePartInfos.java
@@ -0,0 +1,106 @@
+/*******************************************************************************
+ * Copyright (c) 2011 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
+ *
+ * Contributors:
+ *    Google, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wb.internal.core.nls.model;
+
+import com.google.common.collect.Sets;
+
+import org.eclipse.wb.internal.core.nls.ui.FlagImagesRepository;
+
+import org.eclipse.swt.graphics.Image;
+
+import java.util.Arrays;
+import java.util.Locale;
+import java.util.Set;
+
+/**
+ * Utilities for {@link LocaleInfo}.
+ * 
+ * @author scheglov_ke
+ * @coverage core.nls
+ */
+public final class LocalePartInfos {
+  private static LocalePartInfo m_languages[];
+  private static LocalePartInfo m_countries[];
+
+  ////////////////////////////////////////////////////////////////////////////
+  //
+  // Access
+  //
+  ////////////////////////////////////////////////////////////////////////////
+  public static LocalePartInfo[] getLanguages() {
+    initLanguagesAndCountries();
+    return m_languages;
+  }
+
+  public static LocalePartInfo[] getCountries() {
+    initLanguagesAndCountries();
+    return m_countries;
+  }
+
+  ////////////////////////////////////////////////////////////////////////////
+  //
+  // Find items
+  //
+  ////////////////////////////////////////////////////////////////////////////
+  public static int indexByName(LocalePartInfo[] parts, String name) {
+    for (int i = 0; i < parts.length; i++) {
+      LocalePartInfo part = parts[i];
+      if (part.getName().equals(name)) {
+        return i;
+      }
+    }
+    return -1;
+  }
+
+  ////////////////////////////////////////////////////////////////////////////
+  //
+  // Initialization
+  //
+  ////////////////////////////////////////////////////////////////////////////
+  /**
+   * Prepare arrays of all available languages and countries with titles and flags.
+   */
+  private static void initLanguagesAndCountries() {
+    if (m_languages == null) {
+      // languages
+      {
+        Set<LocalePartInfo> languagesSet = Sets.newHashSet();
+        // fill
+        for (String language : Locale.getISOLanguages()) {
+          Locale locale = new Locale(language);
+          Image flagImage = FlagImagesRepository.getFlagImage(locale);
+          languagesSet.add(new LocalePartInfo(locale.getLanguage(),
+              locale.getDisplayLanguage(),
+              flagImage));
+        }
+        // remember as array
+        m_languages = languagesSet.toArray(new LocalePartInfo[languagesSet.size()]);
+        Arrays.sort(m_languages);
+      }
+      // countries
+      {
+        Set<LocalePartInfo> countriesSet = Sets.newHashSet();
+        countriesSet.add(new LocalePartInfo("", "(none)", FlagImagesRepository.getEmptyFlagImage()));
+        // fill
+        for (String country : Locale.getISOCountries()) {
+          Locale locale = new Locale("", country);
+          Image flagImage = FlagImagesRepository.getFlagImage(locale);
+          countriesSet.add(new LocalePartInfo(locale.getCountry(),
+              locale.getDisplayCountry(),
+              flagImage));
+        }
+        // remember as array
+        m_countries = countriesSet.toArray(new LocalePartInfo[countriesSet.size()]);
+        Arrays.sort(m_countries);
+      }
+    }
+  }
+}
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/nls/ui/FlagImagesRepository.java b/propertysheet/src/org/eclipse/wb/internal/core/nls/ui/FlagImagesRepository.java
new file mode 100644
index 0000000..854ba17
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/nls/ui/FlagImagesRepository.java
@@ -0,0 +1,144 @@
+/*******************************************************************************
+ * Copyright (c) 2011 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
+ *
+ * Contributors:
+ *    Google, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wb.internal.core.nls.ui;
+
+import com.google.common.base.Strings;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.wb.internal.core.DesignerPlugin;
+
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+/**
+ * Repository of flags for locale/country.
+ *
+ * @author scheglov_ke
+ * @coverage core.nls.ui
+ */
+public class FlagImagesRepository {
+  private static Map<String, Image> m_countriesFlags = Maps.newHashMap();
+  private static Locale[] m_locales;
+
+  ////////////////////////////////////////////////////////////////////////////
+  //
+  // Initialization
+  //
+  ////////////////////////////////////////////////////////////////////////////
+  private static void init() {
+    if (m_locales == null) {
+      // prepare sorted Locale's
+      {
+        List<Locale> locales = Lists.newArrayList();
+        Collections.addAll(locales, Locale.getAvailableLocales());
+        Collections.sort(locales, new Comparator<Locale>() {
+          @Override
+        public int compare(Locale o1, Locale o2) {
+            return o1.toString().compareTo(o2.toString());
+          }
+        });
+        m_locales = locales.toArray(new Locale[locales.size()]);
+      }
+    }
+  }
+
+  ////////////////////////////////////////////////////////////////////////////
+  //
+  // Access
+  //
+  ////////////////////////////////////////////////////////////////////////////
+  /**
+   * @return the array of {@link Locale}'s sorted by title.
+   */
+  public static Locale[] getSortedLocales() {
+    init();
+    return m_locales;
+  }
+
+  /**
+   * @return the {@link Image} of flag for default {@link Locale}.
+   */
+  public static Image getEmptyFlagImage() {
+    return DesignerPlugin.getImage("nls/flags/flag_empty.png");
+  }
+
+  /**
+   * @return the {@link Image} of flag for given {@link Locale}.
+   */
+  public static Image getFlagImage(Locale locale) {
+    init();
+    String localeCountry = locale.getCountry();
+    String localeLanguage = locale.getLanguage();
+
+// BEGIN ADT MODIFICATIONS
+    return getFlagImage(localeCountry, localeLanguage);
+  }
+
+  public static Image getFlagImage(String localeCountry, String localeLanguage) {
+        init();
+// END ADT MODIFICATIONS
+
+    // if locale has no assosiated country set, try to find the locale with the same language but with the country set
+    if (localeCountry.length() == 0) {
+      // special cases
+      if (localeLanguage.equals("ar")) {
+        localeCountry = "AE";
+      } else if (localeLanguage.equals("zh")) {
+        localeCountry = "CN";
+      } else if (localeLanguage.equals("en")) {
+        localeCountry = "US";
+      } else {
+        // try to guess
+        String localeCountryCandidate = "";
+        for (int i = 0; i < m_locales.length; i++) {
+          Locale lookupLocale = m_locales[i];
+          String lookupLanguage = lookupLocale.getLanguage();
+          if (lookupLanguage.equals(localeLanguage)) {
+            if (lookupLocale.getCountry().length() != 0) {
+              localeCountryCandidate = lookupLocale.getCountry();
+              if (localeCountryCandidate.equalsIgnoreCase(lookupLanguage)) {
+                localeCountry = localeCountryCandidate;
+                break;
+              }
+            }
+          }
+        }
+        if (localeCountry.length() == 0) {
+          localeCountry = localeCountryCandidate;
+        }
+      }
+    }
+    //
+    Image flagImage = m_countriesFlags.get(localeCountry);
+    if (flagImage == null) {
+      try {
+        String flagFileName = null;
+        if (localeCountry.equalsIgnoreCase("YU")) {
+          localeCountry = "CS"; // use Serbia and Montenegro
+        }
+        if (Strings.isNullOrEmpty(localeCountry)) {
+          return null;
+        }
+        flagFileName = localeCountry.toLowerCase() + ".png";
+        flagImage = DesignerPlugin.getImage("nls/flags/" + flagFileName);
+        m_countriesFlags.put(localeCountry, flagImage);
+      } catch (Throwable e) {
+        return null;
+      }
+    }
+    return flagImage;
+  }
+}
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/nls/ui/LocaleUtils.java b/propertysheet/src/org/eclipse/wb/internal/core/nls/ui/LocaleUtils.java
new file mode 100644
index 0000000..699bba8
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/nls/ui/LocaleUtils.java
@@ -0,0 +1,61 @@
+/*******************************************************************************
+ * Copyright (c) 2011 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
+ *
+ * Contributors:
+ *    Google, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wb.internal.core.nls.ui;
+
+import org.eclipse.wb.internal.core.nls.model.LocaleInfo;
+
+import org.eclipse.swt.graphics.Image;
+
+import java.util.Arrays;
+import java.util.Comparator;
+
+/**
+ * UI utils for {@link LocaleInfo}.
+ * 
+ * @author scheglov_ke
+ * @coverage core.nls.ui
+ */
+public class LocaleUtils {
+  ////////////////////////////////////////////////////////////////////////////
+  //
+  // Constructor
+  //
+  ////////////////////////////////////////////////////////////////////////////
+  private LocaleUtils() {
+  }
+
+  ////////////////////////////////////////////////////////////////////////////
+  //
+  // Utils
+  //
+  ////////////////////////////////////////////////////////////////////////////
+  /**
+   * @return the flag image for given {@link LocaleInfo}.
+   */
+  public static Image getImage(LocaleInfo localeInfo) {
+    if (localeInfo.isDefault()) {
+      return FlagImagesRepository.getEmptyFlagImage();
+    } else {
+      return FlagImagesRepository.getFlagImage(localeInfo.getLocale());
+    }
+  }
+
+  /**
+   * Sorts given array of {@link LocaleInfo}'s by title.
+   */
+  public static void sortByTitle(LocaleInfo locales[]) {
+    Arrays.sort(locales, new Comparator<LocaleInfo>() {
+      public int compare(LocaleInfo locale_1, LocaleInfo locale_2) {
+        return locale_1.getTitle().compareTo(locale_2.getTitle());
+      }
+    });
+  }
+}