Index: /trunk/README
===================================================================
--- /trunk/README	(revision 7000)
+++ /trunk/README	(revision 7001)
@@ -10,10 +10,10 @@
 
 * The JOSM .jar file, e.g., josm-tested.jar or josm-latest.jar
-* Java Runtime Environment (JRE) 1.6, or later.
+* Java Runtime Environment (JRE) 7, or later.
 
 
 How to get Java Runtime Environment
 -----------------------------------
-You need JRE Version 1.6 (also called Java 6), or later.
+You need JRE Version 7, or later.
 
 Microsoft Windows and Apple Mac OS X users should visit http://www.java.com
Index: /trunk/build.xml
===================================================================
--- /trunk/build.xml	(revision 7000)
+++ /trunk/build.xml	(revision 7001)
@@ -131,20 +131,6 @@
         </jar>
     </target>
-    <!-- Compatibility Mac OS X target for Java 6 (incompatible with new on for Java 7, see #8654, #9035) -->
-    <target name="distmac" depends="dist">
-        <!-- modify MacOS X Info.plist file to hold the SVN version number -->
-        <copy file="macosx/JOSM.app/Contents/Info.plist" todir="build"/>
-        <replace file="build/Info.plist" token="@SVNVersion@" value="${version.entry.commit.revision}"/>
-        <!-- create ZIP file with MacOS X application bundle -->
-        <zip destfile="dist/josm-custom-macosx.zip" update="true">
-            <zipfileset dir="build" includes="CONTRIBUTION README LICENSE"/>
-            <zipfileset dir="macosx" includes="JOSM.app/Contents JOSM.app/Contents/MacOS JOSM.app/Contents/Resources JOSM.app/Contents/Resources/Java JOSM.app/Contents/PkgInfo JOSM.app/Contents/Resources/JOSM.icns"/>
-            <zipfileset dir="build" includes="Info.plist" prefix="JOSM.app/Contents"/>
-            <zipfileset dir="dist" includes="josm-custom.jar" prefix="JOSM.app/Contents/Resources/Java"/>
-            <zipfileset dir="macosx" includes="JOSM.app/Contents/MacOS/JOSM" filemode="755"/>
-        </zip>
-    </target>
-    <!-- New Mac OS X target for Java 7 -->
-    <target name="mac7">
+    <!-- Mac OS X target -->
+    <target name="mac">
         <!-- Using https://bitbucket.org/infinitekind/appbundler to create mac application bundle -->
         <taskdef name="bundleapp" classname="com.oracle.appbundler.AppBundlerTask" classpath="tools/appbundler-1.0ea.jar"/>
@@ -187,11 +173,11 @@
         
         <!-- create ZIP file with MacOS X application bundle -->
-        <zip destfile="${bundle.outdir}/josm-custom-macosx-java7.zip" update="true">
+        <zip destfile="${bundle.outdir}/josm-custom-macosx.zip" update="true">
             <zipfileset dir="." includes="CONTRIBUTION README LICENSE"/>
             <zipfileset dir="${bundle.outdir}" includes="JOSM.app/**/*" filemode="755" />
         </zip>
     </target>
-    <target name="distmac7" depends="dist">
-        <antcall target="mac7">
+    <target name="distmac" depends="dist">
+        <antcall target="mac">
             <param name="bundle.outdir" value="dist"/>
             <param name="bundle.jar" value="dist/josm-custom.jar"/>
@@ -204,5 +190,5 @@
             <arg value="${javacc.home}/javacc.jar"/>
             <arg value="javacc"/>
-            <arg value="-JDK_VERSION=1.6"/>
+            <arg value="-JDK_VERSION=1.7"/>
             <arg value="-GRAMMAR_ENCODING=UTF-8"/>
             <arg value="-OUTPUT_DIRECTORY=${mapcss.dir}/parsergen"/>
@@ -211,6 +197,6 @@
     </target>
     <target name="compile" depends="init,javacc">
-        <javac srcdir="src" includes="com/**,oauth/**,org/apache/commons/codec/**" destdir="build" target="1.6" source="1.6" debug="on" includeantruntime="false" encoding="iso-8859-1"/>
-        <javac srcdir="src" excludes="com/**,oauth/**,org/apache/commons/codec/**" destdir="build" target="1.6" source="1.6" debug="on" includeantruntime="false" encoding="UTF-8">
+        <javac srcdir="src" includes="com/**,oauth/**,org/apache/commons/codec/**" destdir="build" target="1.7" source="1.7" debug="on" includeantruntime="false" encoding="iso-8859-1"/>
+        <javac srcdir="src" excludes="com/**,oauth/**,org/apache/commons/codec/**" destdir="build" target="1.7" source="1.7" debug="on" includeantruntime="false" encoding="UTF-8">
             <compilerarg value="-Xlint:deprecation"/>
             <compilerarg value="-Xlint:unchecked"/>
@@ -237,5 +223,5 @@
                 linksource="true"
                 author="false">
-            <link href="http://docs.oracle.com/javase/6/docs/api"/>
+            <link href="http://docs.oracle.com/javase/7/docs/api"/>
             <doctitle><![CDATA[<h2>JOSM - Javadoc</h2>]]></doctitle>
             <bottom><![CDATA[<a href="https://josm.openstreetmap.de/">JOSM</a>]]></bottom>
@@ -266,9 +252,9 @@
     </target>
     <target name="test-compile" depends="test-init,dist">
-        <javac srcdir="${test.dir}/unit" classpathref="test.classpath" destdir="${test.dir}/build" target="1.6" source="1.6" debug="on" includeantruntime="false" encoding="UTF-8">
+        <javac srcdir="${test.dir}/unit" classpathref="test.classpath" destdir="${test.dir}/build" target="1.7" source="1.7" debug="on" includeantruntime="false" encoding="UTF-8">
             <compilerarg value="-Xlint:deprecation"/>
             <compilerarg value="-Xlint:unchecked"/>
         </javac>
-        <javac srcdir="${test.dir}/functional" classpathref="test.classpath" destdir="${test.dir}/build" target="1.6" source="1.6" debug="on" includeantruntime="false" encoding="UTF-8">
+        <javac srcdir="${test.dir}/functional" classpathref="test.classpath" destdir="${test.dir}/build" target="1.7" source="1.7" debug="on" includeantruntime="false" encoding="UTF-8">
             <compilerarg value="-Xlint:deprecation"/>
             <compilerarg value="-Xlint:unchecked"/>
Index: /trunk/josm-latest.jnlp
===================================================================
--- /trunk/josm-latest.jnlp	(revision 7000)
+++ /trunk/josm-latest.jnlp	(revision 7001)
@@ -20,5 +20,5 @@
     </security>
     <resources>
-        <j2se version="1.6+"/>
+        <j2se version="1.7+"/>
         <jar href="josm-latest.jar"/>
         <property name="java.util.Arrays.useLegacyMergeSort" value="true"/>
Index: unk/macosx/JOSM.app/Contents/Info.plist
===================================================================
--- /trunk/macosx/JOSM.app/Contents/Info.plist	(revision 7000)
+++ 	(revision )
@@ -1,48 +1,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>CFBundleAllowMixedLocalizations</key>
-	<string>true</string>
-	<key>CFBundleDevelopmentRegion</key>
-	<string>English</string>
-	<key>CFBundleExecutable</key>
-	<string>JOSM</string>
-	<key>CFBundleGetInfoString</key>
-	<string>@SVNVersion@ SVN</string>
-	<key>CFBundleIconFile</key>
-	<string>JOSM.icns</string>
-	<key>CFBundleIdentifier</key>
-	<string>org.openstreetmap.josm</string>
-	<key>CFBundleInfoDictionaryVersion</key>
-	<string>6.0</string>
-	<key>CFBundleName</key>
-	<string>JOSM</string>
-	<key>CFBundlePackageType</key>
-	<string>APPL</string>
-	<key>CFBundleSignature</key>
-	<string>????</string>
-	<key>CFBundleVersion</key>
-	<string>@SVNVersion@</string>
-	<key>Java</key>
-	<dict>
-		<key>ClassPath</key>
-		<string>$JAVAROOT/josm-custom.jar</string>
-		<key>JVMVersion</key>
-		<string>1.6+</string>
-		<key>MainClass</key>
-		<string>org.openstreetmap.josm.gui.MainApplication</string>
-		<key>Properties</key>
-		<dict>
-			<key>apple.laf.useScreenMenuBar</key>
-			<string>true</string>
-		</dict>
-		<key>VMOptions</key>
-		<string>-Xmx512m</string>
-		<key>WorkingDirectory</key>
-		<string>$APP_PACKAGE/Contents/Resources/Java</string>
-	</dict>
-    <key>NSHighResolutionCapable</key>
-    <string>True</string>
-</dict>
-</plist>
Index: unk/macosx/JOSM.app/Contents/PkgInfo
===================================================================
--- /trunk/macosx/JOSM.app/Contents/PkgInfo	(revision 7000)
+++ 	(revision )
@@ -1,1 +1,0 @@
-APPL????
Index: /trunk/src/org/openstreetmap/josm/Main.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/Main.java	(revision 7000)
+++ /trunk/src/org/openstreetmap/josm/Main.java	(revision 7001)
@@ -1111,19 +1111,19 @@
 
     /**
-     * Checks that JOSM is at least running with Java 6.
-     * @since 3815
-     */
-    public static void checkJava6() {
+     * Checks that JOSM is at least running with Java 7.
+     * @since 7001
+     */
+    public static void checkJavaVersion() {
         String version = System.getProperty("java.version");
         if (version != null) {
-            if (version.matches("^(1\\.)?[6789].*"))
+            if (version.matches("^(1\\.)?[789].*"))
                 return;
-            if (version.matches("^(1\\.)?[5].*")) {
+            if (version.matches("^(1\\.)?[56].*")) {
                 JMultilineLabel ho = new JMultilineLabel("<html>"+
-                        tr("<h2>JOSM requires Java version 6.</h2>"+
-                                "Detected Java version: {0}.<br>"+
+                        tr("<h2>JOSM requires Java version {0}.</h2>"+
+                                "Detected Java version: {1}.<br>"+
                                 "You can <ul><li>update your Java (JRE) or</li>"+
-                                "<li>use an earlier (Java 5 compatible) version of JOSM.</li></ul>"+
-                                "More Info:", version)+"</html>");
+                                "<li>use an earlier (Java {2} compatible) version of JOSM.</li></ul>"+
+                                "More Info:", "7", version, "6")+"</html>");
                 JTextArea link = new JTextArea(HelpUtil.getWikiBaseHelpUrl()+"/Help/SystemRequirements");
                 link.setEditable(false);
Index: /trunk/src/org/openstreetmap/josm/actions/AbstractMergeAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/AbstractMergeAction.java	(revision 7000)
+++ /trunk/src/org/openstreetmap/josm/actions/AbstractMergeAction.java	(revision 7001)
@@ -31,9 +31,7 @@
 
         @Override
-        public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected,
-                boolean cellHasFocus) {
+        public Component getListCellRendererComponent(JList<?> list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
             Layer layer = (Layer) value;
-            JLabel label = (JLabel) super.getListCellRendererComponent(list, layer.getName(), index, isSelected,
-                    cellHasFocus);
+            JLabel label = (JLabel) super.getListCellRendererComponent(list, layer.getName(), index, isSelected, cellHasFocus);
             Icon icon = layer.getIcon();
             label.setIcon(icon);
Index: /trunk/src/org/openstreetmap/josm/actions/PurgeAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/PurgeAction.java	(revision 7000)
+++ /trunk/src/org/openstreetmap/josm/actions/PurgeAction.java	(revision 7001)
@@ -57,4 +57,7 @@
 public class PurgeAction extends JosmAction {
 
+    /**
+     * Constructs a new {@code PurgeAction}.
+     */
     public PurgeAction() {
         /* translator note: other expressions for "purge" might be "forget", "clean", "obliterate", "prune" */
@@ -245,10 +248,10 @@
                 }
             });
-            JList list = new JList(toPurgeAdditionally.toArray(new OsmPrimitive[toPurgeAdditionally.size()]));
+            JList<OsmPrimitive> list = new JList<OsmPrimitive>(toPurgeAdditionally.toArray(new OsmPrimitive[toPurgeAdditionally.size()]));
             /* force selection to be active for all entries */
             list.setCellRenderer(new OsmPrimitivRenderer() {
                 @Override
-                public Component getListCellRendererComponent(JList list,
-                        Object value,
+                public Component getListCellRendererComponent(JList<? extends OsmPrimitive> list,
+                        OsmPrimitive value,
                         int index,
                         boolean isSelected,
Index: /trunk/src/org/openstreetmap/josm/gui/MainApplet.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/MainApplet.java	(revision 7000)
+++ /trunk/src/org/openstreetmap/josm/gui/MainApplet.java	(revision 7001)
@@ -91,5 +91,5 @@
     @Override public void start() {
         I18n.init();
-        Main.checkJava6();
+        Main.checkJavaVersion();
 
         String url = getParameter("load_url");
Index: /trunk/src/org/openstreetmap/josm/gui/MainApplication.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/MainApplication.java	(revision 7000)
+++ /trunk/src/org/openstreetmap/josm/gui/MainApplication.java	(revision 7001)
@@ -267,5 +267,5 @@
     public static void main(final String[] argArray) {
         I18n.init();
-        Main.checkJava6();
+        Main.checkJavaVersion();
 
         // construct argument table
Index: /trunk/src/org/openstreetmap/josm/gui/OsmPrimitivRenderer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/OsmPrimitivRenderer.java	(revision 7000)
+++ /trunk/src/org/openstreetmap/josm/gui/OsmPrimitivRenderer.java	(revision 7001)
@@ -26,5 +26,5 @@
  * @author Frederik Ramm
  */
-public class OsmPrimitivRenderer implements ListCellRenderer, TableCellRenderer {
+public class OsmPrimitivRenderer implements ListCellRenderer<OsmPrimitive>, TableCellRenderer {
     private DefaultNameFormatter formatter = DefaultNameFormatter.getInstance();
 
@@ -43,5 +43,5 @@
      */
     @Override
-    public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
+    public Component getListCellRendererComponent(JList<? extends OsmPrimitive> list, OsmPrimitive value, int index, boolean isSelected, boolean cellHasFocus) {
         Component def = defaultListCellRenderer.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
         return renderer(def, (OsmPrimitive) value);
Index: /trunk/src/org/openstreetmap/josm/gui/conflict/pair/ComparePairListCellRenderer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/conflict/pair/ComparePairListCellRenderer.java	(revision 7000)
+++ /trunk/src/org/openstreetmap/josm/gui/conflict/pair/ComparePairListCellRenderer.java	(revision 7001)
@@ -10,18 +10,21 @@
 import org.openstreetmap.josm.gui.conflict.ConflictColors;
 
-public class ComparePairListCellRenderer extends JLabel implements ListCellRenderer {
+public class ComparePairListCellRenderer extends JLabel implements ListCellRenderer<ComparePairType> {
+
+    /**
+     * Constructs a new {@code ComparePairListCellRenderer}.
+     */
     public ComparePairListCellRenderer() {
         setOpaque(true);
     }
+
     @Override
     public Component getListCellRendererComponent(
-            JList list,
-            Object value,
+            JList<? extends ComparePairType> list,
+            ComparePairType value,
             int index,
             boolean isSelected,
-            boolean cellHasFocus)
-    {
-        ComparePairType type = (ComparePairType)value;
-        setText(type.getDisplayName());
+            boolean cellHasFocus) {
+        setText(value.getDisplayName());
         setBackground(isSelected ? ConflictColors.BGCOLOR_SELECTED.get() : ConflictColors.BGCOLOR.get());
         setForeground(ConflictColors.FGCOLOR.get());
Index: /trunk/src/org/openstreetmap/josm/gui/conflict/tags/MultiValueCellEditor.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/conflict/tags/MultiValueCellEditor.java	(revision 7000)
+++ /trunk/src/org/openstreetmap/josm/gui/conflict/tags/MultiValueCellEditor.java	(revision 7001)
@@ -35,5 +35,5 @@
  * {@link KeyEvent#VK_ENTER} and {@link KeyEvent#VK_TAB} trigger a {@link NavigationListener#gotoNextDecision()}.
  */
-public class MultiValueCellEditor extends AbstractCellEditor implements TableCellEditor{
+public class MultiValueCellEditor extends AbstractCellEditor implements TableCellEditor {
 
     /**
@@ -224,6 +224,5 @@
 
         @Override
-        public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected,
-                boolean cellHasFocus) {
+        public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
             renderColors(isSelected);
             renderValue(value);
Index: /trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictDecisionRenderer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictDecisionRenderer.java	(revision 7000)
+++ /trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictDecisionRenderer.java	(revision 7001)
@@ -14,5 +14,5 @@
 import org.openstreetmap.josm.gui.widgets.JosmComboBox;
 
-public class RelationMemberConflictDecisionRenderer extends JLabel implements TableCellRenderer, ListCellRenderer {
+public class RelationMemberConflictDecisionRenderer extends JLabel implements TableCellRenderer, ListCellRenderer<RelationMemberConflictDecisionType> {
 
     private JosmComboBox cbDecisionTypes;
@@ -63,5 +63,7 @@
     /* --------------------------------------------------------------------------------- */
     @Override
-    public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected,
+    public Component getListCellRendererComponent(
+            JList<? extends RelationMemberConflictDecisionType> list, 
+            RelationMemberConflictDecisionType decision, int index, boolean isSelected,
             boolean cellHasFocus) {
         resetListRenderer();
@@ -70,5 +72,4 @@
             setForeground(UIManager.getColor("ComboBox.selectionForeground"));
         }
-        RelationMemberConflictDecisionType decision = (RelationMemberConflictDecisionType)value;
         RelationMemberConflictDecisionType.prepareLabel(decision, this);
         if (RelationMemberConflictDecisionType.UNDECIDED.equals(decision)) {
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/ChangesetDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/ChangesetDialog.java	(revision 7000)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/ChangesetDialog.java	(revision 7001)
@@ -74,6 +74,6 @@
     private ChangesetInSelectionListModel inSelectionModel;
     private ChangesetsInActiveDataLayerListModel inActiveDataLayerModel;
-    private JList lstInSelection;
-    private JList lstInActiveDataLayer;
+    private JList<Changeset> lstInSelection;
+    private JList<Changeset> lstInActiveDataLayer;
     private JCheckBox cbInSelectionOnly;
     private JPanel pnlList;
@@ -92,5 +92,5 @@
         inSelectionModel = new ChangesetInSelectionListModel(selectionModel);
 
-        lstInSelection = new JList(inSelectionModel);
+        lstInSelection = new JList<Changeset>(inSelectionModel);
         lstInSelection.setSelectionModel(selectionModel);
         lstInSelection.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
@@ -99,5 +99,5 @@
         selectionModel = new DefaultListSelectionModel();
         inActiveDataLayerModel = new ChangesetsInActiveDataLayerListModel(selectionModel);
-        lstInActiveDataLayer = new JList(inActiveDataLayerModel);
+        lstInActiveDataLayer = new JList<Changeset>(inActiveDataLayerModel);
         lstInActiveDataLayer.setSelectionModel(selectionModel);
         lstInActiveDataLayer.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
@@ -110,6 +110,5 @@
 
     protected void registerAsListener() {
-        // let the model for changesets in the current selection listen to various
-        // events
+        // let the model for changesets in the current selection listen to various events
         ChangesetCache.getInstance().addChangesetCacheListener(inSelectionModel);
         MapView.addEditLayerChangeListener(inSelectionModel);
@@ -222,5 +221,5 @@
     }
 
-    protected JList getCurrentChangesetList() {
+    protected JList<Changeset> getCurrentChangesetList() {
         if (cbInSelectionOnly.isSelected())
             return lstInSelection;
@@ -546,5 +545,5 @@
 
     class ChangesetDialogPopup extends ListPopupMenu {
-        public ChangesetDialogPopup(JList ... lists) {
+        public ChangesetDialogPopup(JList<?> ... lists) {
             super(lists);
             add(selectObjectsAction);
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/ConflictDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/ConflictDialog.java	(revision 7000)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/ConflictDialog.java	(revision 7001)
@@ -81,5 +81,5 @@
     private ConflictListModel model;
     /** the list widget for the list of conflicts */
-    private JList lstConflicts;
+    private JList<OsmPrimitive> lstConflicts;
 
     private final JPopupMenu popupMenu = new JPopupMenu();
@@ -95,5 +95,5 @@
         model = new ConflictListModel();
 
-        lstConflicts = new JList(model);
+        lstConflicts = new JList<OsmPrimitive>(model);
         lstConflicts.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
         lstConflicts.setCellRenderer(new OsmPrimitivRenderer());
@@ -272,9 +272,9 @@
             }
         };
-        for (Object o : lstConflicts.getSelectedValues()) {
-            if (conflicts == null || !conflicts.hasConflictForMy((OsmPrimitive)o)) {
+        for (OsmPrimitive o : lstConflicts.getSelectedValuesList()) {
+            if (conflicts == null || !conflicts.hasConflictForMy(o)) {
                 continue;
             }
-            conflicts.getConflictForMy((OsmPrimitive)o).getTheir().accept(conflictPainter);
+            conflicts.getConflictForMy(o).getTheir().accept(conflictPainter);
         }
     }
@@ -359,5 +359,5 @@
      *
      */
-    class ConflictListModel implements ListModel {
+    class ConflictListModel implements ListModel<OsmPrimitive> {
 
         private CopyOnWriteArrayList<ListDataListener> listeners;
@@ -392,5 +392,5 @@
 
         @Override
-        public Object getElementAt(int index) {
+        public OsmPrimitive getElementAt(int index) {
             if (index < 0) return null;
             if (index >= getSize()) return null;
@@ -452,6 +452,6 @@
         public void actionPerformed(ActionEvent e) {
             Collection<OsmPrimitive> sel = new LinkedList<OsmPrimitive>();
-            for (Object o : lstConflicts.getSelectedValues()) {
-                sel.add((OsmPrimitive)o);
+            for (OsmPrimitive o : lstConflicts.getSelectedValuesList()) {
+                sel.add(o);
             }
             DataSet ds = Main.main.getCurrentDataSet();
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java	(revision 7000)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java	(revision 7001)
@@ -87,5 +87,5 @@
 public class RelationListDialog extends ToggleDialog implements DataSetListener {
     /** The display list. */
-    private final JList displaylist;
+    private final JList<Relation> displaylist;
     /** the list model used */
     private final RelationListModel model;
@@ -129,5 +129,5 @@
         DefaultListSelectionModel selectionModel = new DefaultListSelectionModel();
         model = new RelationListModel(selectionModel);
-        displaylist = new JList(model);
+        displaylist = new JList<Relation>(model);
         displaylist.setSelectionModel(selectionModel);
         displaylist.setCellRenderer(new OsmPrimitivRenderer() {
@@ -238,8 +238,8 @@
      */
     private Relation getSelected() {
-        if(model.getSize() == 1) {
+        if (model.getSize() == 1) {
             displaylist.setSelectedIndex(0);
         }
-        return (Relation) displaylist.getSelectedValue();
+        return displaylist.getSelectedValue();
     }
 
@@ -363,5 +363,5 @@
         public void activeLayerChange(Layer oldLayer, Layer newLayer) {
             updateEnabledState();
-    }
+        }
 
         @Override
@@ -377,9 +377,8 @@
 
     /**
-     * The list model for the list of relations displayed in the relation list
-     * dialog.
+     * The list model for the list of relations displayed in the relation list dialog.
      *
      */
-    private class RelationListModel extends AbstractListModel {
+    private class RelationListModel extends AbstractListModel<Relation> {
         private final List<Relation> relations = new ArrayList<Relation>();
         private List<Relation> filteredRelations;
@@ -389,8 +388,4 @@
         public RelationListModel(DefaultListSelectionModel selectionModel) {
             this.selectionModel = selectionModel;
-        }
-
-        public Relation getRelation(int idx) {
-            return relations.get(idx);
         }
 
@@ -522,5 +517,5 @@
 
         @Override
-        public Object getElementAt(int index) {
+        public Relation getElementAt(int index) {
             return getVisibleRelation(index);
         }
@@ -675,6 +670,5 @@
         if (!(prim instanceof Relation))
             return;
-        // trigger a sort of the relation list because the display name may
-        // have changed
+        // trigger a sort of the relation list because the display name may have changed
         //
         List<Relation> sel = model.getSelectedRelations();
@@ -690,4 +684,6 @@
 
     @Override
-    public void otherDatasetChange(AbstractDatasetChangedEvent event) {/* ignore */}
+    public void otherDatasetChange(AbstractDatasetChangedEvent event) {
+        /* ignore */
+    }
 }
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java	(revision 7000)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java	(revision 7001)
@@ -81,5 +81,5 @@
  */
 public class SelectionListDialog extends ToggleDialog  {
-    private JList lstPrimitives;
+    private JList<OsmPrimitive> lstPrimitives;
     private DefaultListSelectionModel selectionModel  = new DefaultListSelectionModel();
     private SelectionListModel model = new SelectionListModel(selectionModel);
@@ -101,5 +101,5 @@
      */
     protected void buildContentPanel() {
-        lstPrimitives = new JList(model);
+        lstPrimitives = new JList<OsmPrimitive>(model);
         lstPrimitives.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
         lstPrimitives.setSelectionModel(selectionModel);
@@ -407,5 +407,5 @@
      *
      */
-    private static class SelectionListModel extends AbstractListModel implements EditLayerChangeListener, SelectionChangedListener, DataSetListener{
+    private static class SelectionListModel extends AbstractListModel<OsmPrimitive> implements EditLayerChangeListener, SelectionChangedListener, DataSetListener{
 
         private static final int SELECTION_HISTORY_SIZE = 10;
@@ -481,5 +481,5 @@
 
         @Override
-        public Object getElementAt(int index) {
+        public OsmPrimitive getElementAt(int index) {
             return selection.get(index);
         }
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetListCellRenderer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetListCellRenderer.java	(revision 7000)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetListCellRenderer.java	(revision 7001)
@@ -14,6 +14,9 @@
 import org.openstreetmap.josm.tools.ImageProvider;
 
-public class ChangesetListCellRenderer extends JLabel implements ListCellRenderer{
+public class ChangesetListCellRenderer extends JLabel implements ListCellRenderer<Changeset> {
 
+    /**
+     * Constructs a new {@code ChangesetListCellRenderer}.
+     */
     public ChangesetListCellRenderer() {
         setOpaque(true);
@@ -48,7 +51,5 @@
 
     @Override
-    public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected,
-            boolean cellHasFocus) {
-        Changeset cs = (Changeset)value;
+    public Component getListCellRendererComponent(JList<? extends Changeset> list, Changeset cs, int index, boolean isSelected, boolean cellHasFocus) {
         renderColors(isSelected);
         renderLabel(cs);
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetListModel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetListModel.java	(revision 7000)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetListModel.java	(revision 7001)
@@ -21,5 +21,5 @@
 import org.openstreetmap.josm.data.osm.Storage;
 
-public class ChangesetListModel extends DefaultListModel  implements ChangesetCacheListener{
+public class ChangesetListModel extends DefaultListModel<Changeset> implements ChangesetCacheListener {
     private final List<Changeset> data = new ArrayList<Changeset>();
     private final Storage<Changeset> shownChangesets = new Storage<Changeset>(true);
@@ -131,5 +131,5 @@
 
     @Override
-    public Object getElementAt(int idx) {
+    public Changeset getElementAt(int idx) {
         return data.get(idx);
     }
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/ReferringRelationsBrowser.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/ReferringRelationsBrowser.java	(revision 7000)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/ReferringRelationsBrowser.java	(revision 7001)
@@ -30,12 +30,11 @@
 
 /**
- * This is browser for a list of relations which refer to another relations
- *
- *
+ * This is browser for a list of relations which refer to another relations.
+ * @since 1806
  */
 public class ReferringRelationsBrowser extends JPanel {
 
     /** the list of relations */
-    private JList referrers;
+    private JList<Relation> referrers;
     private ReferringRelationsBrowserModel model;
     private OsmDataLayer layer;
@@ -48,5 +47,5 @@
     protected void build() {
         setLayout(new BorderLayout());
-        referrers = new JList(model);
+        referrers = new JList<Relation>(model);
         referrers.setCellRenderer(new OsmPrimitivRenderer());
         add(new JScrollPane(referrers), BorderLayout.CENTER);
@@ -160,5 +159,5 @@
             int idx = referrers.getSelectedIndex();
             if (idx < 0) return;
-            Relation r = model.get(idx);
+            Relation r = model.getElementAt(idx);
             if (r == null) return;
             RelationEditor editor = RelationEditor.getEditor(getLayer(), r, null);
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/ReferringRelationsBrowserModel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/ReferringRelationsBrowserModel.java	(revision 7000)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/ReferringRelationsBrowserModel.java	(revision 7001)
@@ -11,5 +11,5 @@
 import org.openstreetmap.josm.data.osm.RelationMember;
 
-public class ReferringRelationsBrowserModel extends AbstractListModel {
+public class ReferringRelationsBrowserModel extends AbstractListModel<Relation> {
 
     /** the relation */
@@ -17,8 +17,12 @@
     private List<Relation> referrers;
 
+    /**
+     * Constructs a new {@code ReferringRelationsBrowserModel}.
+     */
     public ReferringRelationsBrowserModel() {
         relation = null;
         referrers = new ArrayList<Relation>();
     }
+
     public ReferringRelationsBrowserModel(Relation relation) {
         this();
@@ -38,5 +42,5 @@
 
     @Override
-    public Object getElementAt(int index) {
+    public Relation getElementAt(int index) {
         return referrers.get(index);
     }
@@ -96,7 +100,3 @@
         return relation;
     }
-
-    public Relation get(int index) {
-        return referrers.get(index);
-    }
 }
Index: /trunk/src/org/openstreetmap/josm/gui/download/BookmarkList.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/download/BookmarkList.java	(revision 7000)
+++ /trunk/src/org/openstreetmap/josm/gui/download/BookmarkList.java	(revision 7001)
@@ -36,5 +36,5 @@
  * @since 6340
  */
-public class BookmarkList extends JList {
+public class BookmarkList extends JList<BookmarkList.Bookmark> {
 
     /**
@@ -153,5 +153,5 @@
      */
     public BookmarkList() {
-        setModel(new DefaultListModel());
+        setModel(new DefaultListModel<Bookmark>());
         load();
         setVisibleRowCount(7);
@@ -163,5 +163,5 @@
      */
     public final void load() {
-        DefaultListModel model = (DefaultListModel)getModel();
+        DefaultListModel<Bookmark> model = (DefaultListModel<Bookmark>)getModel();
         model.removeAllElements();
         Collection<Collection<String>> args = Main.pref.getArray("bookmarks", null);
@@ -241,7 +241,7 @@
     public final void save() {
         LinkedList<Collection<String>> coll = new LinkedList<Collection<String>>();
-        for (Object o : ((DefaultListModel)getModel()).toArray()) {
+        for (Object o : ((DefaultListModel<Bookmark>)getModel()).toArray()) {
             String[] array = new String[5];
-            Bookmark b = (Bookmark)o;
+            Bookmark b = (Bookmark) o;
             array[0] = b.getName();
             Bounds area = b.getArea();
@@ -255,5 +255,5 @@
     }
 
-    static class BookmarkCellRenderer extends JLabel implements ListCellRenderer {
+    static class BookmarkCellRenderer extends JLabel implements ListCellRenderer<BookmarkList.Bookmark> {
 
         private ImageIcon icon;
@@ -287,12 +287,10 @@
 
         }
-        @Override
-        public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected,
-                boolean cellHasFocus) {
-
-            Bookmark b = (Bookmark) value;
+
+        @Override
+        public Component getListCellRendererComponent(JList<? extends Bookmark> list, Bookmark value, int index, boolean isSelected, boolean cellHasFocus) {
             renderColor(isSelected);
-            setText(b.getName());
-            setToolTipText(buildToolTipText(b));
+            setText(value.getName());
+            setToolTipText(buildToolTipText(value));
             return this;
         }
Index: /trunk/src/org/openstreetmap/josm/gui/download/BookmarkSelection.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/download/BookmarkSelection.java	(revision 7000)
+++ /trunk/src/org/openstreetmap/josm/gui/download/BookmarkSelection.java	(revision 7001)
@@ -10,4 +10,5 @@
 import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
+import java.util.List;
 
 import javax.swing.AbstractAction;
@@ -216,6 +217,6 @@
         @Override
         public void actionPerformed(ActionEvent e) {
-            Object[] sels = bookmarks.getSelectedValues();
-            if (sels == null || sels.length == 0)
+            List<Bookmark> sels = bookmarks.getSelectedValuesList();
+            if (sels == null || sels.isEmpty())
                 return;
             for (Object sel: sels) {
@@ -243,8 +244,8 @@
         @Override
         public void actionPerformed(ActionEvent e) {
-            Object[] sels = bookmarks.getSelectedValues();
-            if (sels == null || sels.length != 1)
-                return;
-            Bookmark b = (Bookmark)sels[0];
+            List<Bookmark> sels = bookmarks.getSelectedValuesList();
+            if (sels == null || sels.size() != 1)
+                return;
+            Bookmark b = sels.get(0);
             Object value =
                 JOptionPane.showInputDialog(
Index: /trunk/src/org/openstreetmap/josm/gui/io/ChangesetCellRenderer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/io/ChangesetCellRenderer.java	(revision 7000)
+++ /trunk/src/org/openstreetmap/josm/gui/io/ChangesetCellRenderer.java	(revision 7001)
@@ -21,6 +21,10 @@
  *
  */
-public class ChangesetCellRenderer extends JLabel implements ListCellRenderer {
-    private ImageIcon icon ;
+public class ChangesetCellRenderer extends JLabel implements ListCellRenderer<Changeset> {
+    private ImageIcon icon;
+
+    /**
+     * Constructs a new {@code ChangesetCellRenderer}.
+     */
     public ChangesetCellRenderer() {
         icon = ImageProvider.get("data", "changeset");
@@ -42,7 +46,5 @@
 
     @Override
-    public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected,
-            boolean cellHasFocus) {
-        Changeset cs = (Changeset)value;
+    public Component getListCellRendererComponent(JList<? extends Changeset> list, Changeset cs, int index, boolean isSelected, boolean cellHasFocus) {
         if (isSelected) {
             setForeground(UIManager.getColor("List.selectionForeground"));
Index: /trunk/src/org/openstreetmap/josm/gui/io/CloseChangesetDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/io/CloseChangesetDialog.java	(revision 7000)
+++ /trunk/src/org/openstreetmap/josm/gui/io/CloseChangesetDialog.java	(revision 7001)
@@ -38,10 +38,10 @@
 /**
  * This dialog lets the user select changesets from a list of changesets.
- *
+ * @since 2115
  */
 public class CloseChangesetDialog extends JDialog {
 
     /** the list */
-    private JList lstOpenChangesets;
+    private JList<Changeset> lstOpenChangesets;
     /** true if the user canceled the dialog */
     private boolean canceled;
@@ -130,5 +130,6 @@
 
         protected void refreshEnabledState() {
-            setEnabled(lstOpenChangesets.getSelectedValues() != null && lstOpenChangesets.getSelectedValues().length > 0);
+            List list = lstOpenChangesets.getSelectedValuesList();
+            setEnabled(list != null && !list.isEmpty());
         }
 
@@ -214,10 +215,5 @@
      */
     public Collection<Changeset> getSelectedChangesets() {
-        Object [] sel = lstOpenChangesets.getSelectedValues();
-        List<Changeset> ret = new ArrayList<Changeset>(sel.length);
-        for (Object o: sel) {
-            ret.add((Changeset)o);
-        }
-        return ret;
+        return lstOpenChangesets.getSelectedValuesList();
     }
 }
Index: /trunk/src/org/openstreetmap/josm/gui/io/SaveLayersDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/io/SaveLayersDialog.java	(revision 7000)
+++ /trunk/src/org/openstreetmap/josm/gui/io/SaveLayersDialog.java	(revision 7001)
@@ -173,5 +173,5 @@
             add(lblMessage = new JLabel(), gc);
             lblMessage.setHorizontalAlignment(JLabel.LEFT);
-            lstLayers = new JList();
+            lstLayers = new JList<SaveLayerInfo>();
             lstLayers.setCellRenderer(
                     new DefaultListCellRenderer() {
Index: /trunk/src/org/openstreetmap/josm/gui/io/UploadSelectionDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/io/UploadSelectionDialog.java	(revision 7000)
+++ /trunk/src/org/openstreetmap/josm/gui/io/UploadSelectionDialog.java	(revision 7001)
@@ -172,5 +172,5 @@
     }
 
-    static class OsmPrimitiveList extends JList {
+    static class OsmPrimitiveList extends JList<OsmPrimitive> {
         protected void init() {
             setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
@@ -193,5 +193,5 @@
     }
 
-    static class OsmPrimitiveListModel extends AbstractListModel {
+    static class OsmPrimitiveListModel extends AbstractListModel<OsmPrimitive> {
         private List<OsmPrimitive> data;
 
@@ -231,5 +231,5 @@
 
         @Override
-        public Object getElementAt(int index) {
+        public OsmPrimitive getElementAt(int index) {
             if (data == null)
                 return null;
Index: /trunk/src/org/openstreetmap/josm/gui/io/UploadedObjectsSummaryPanel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/io/UploadedObjectsSummaryPanel.java	(revision 7000)
+++ /trunk/src/org/openstreetmap/josm/gui/io/UploadedObjectsSummaryPanel.java	(revision 7001)
@@ -140,5 +140,5 @@
      *
      */
-    static class PrimitiveList extends JList {
+    static class PrimitiveList extends JList<OsmPrimitive> {
         public PrimitiveList() {
             super(new PrimitiveListModel());
@@ -154,5 +154,5 @@
      *
      */
-    static class PrimitiveListModel extends AbstractListModel{
+    static class PrimitiveListModel extends AbstractListModel<OsmPrimitive> {
         private List<OsmPrimitive> primitives;
 
@@ -175,5 +175,5 @@
 
         @Override
-        public Object getElementAt(int index) {
+        public OsmPrimitive getElementAt(int index) {
             if (primitives == null) return null;
             return primitives.get(index);
Index: /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java	(revision 7000)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java	(revision 7001)
@@ -229,5 +229,5 @@
         JosmComboBox cbTimezones;
         ImageDisplay imgDisp;
-        JList imgList;
+        JList<String> imgList;
 
         @Override
@@ -331,7 +331,7 @@
             panelLst.setLayout(new BorderLayout());
 
-            imgList = new JList(new AbstractListModel() {
+            imgList = new JList<String>(new AbstractListModel<String>() {
                 @Override
-                public Object getElementAt(int i) {
+                public String getElementAt(int i) {
                     return yLayer.data.get(i).getFile().getName();
                 }
Index: /trunk/src/org/openstreetmap/josm/gui/layer/gpx/DownloadAlongPanel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/gpx/DownloadAlongPanel.java	(revision 7000)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/gpx/DownloadAlongPanel.java	(revision 7001)
@@ -41,7 +41,7 @@
     private static final Integer[] area = { 20, 10, 5, 1 };
     
-    private final JList buffer;
-    private final JList maxRect;
-    private final JList downloadNear;
+    private final JList<String> buffer;
+    private final JList<String> maxRect;
+    private final JList<String> downloadNear;
     
     /**
@@ -74,5 +74,5 @@
             s[i] = tr("{0} meters", dist[i]);
         }
-        buffer = new JList(s);
+        buffer = new JList<String>(s);
         
         double distanceValue = Main.pref.getDouble(prefDist, dist[0]);
@@ -93,5 +93,5 @@
             s[i] = tr("{0} sq km", area[i]);
         }
-        maxRect = new JList(s);
+        maxRect = new JList<String>(s);
 
         double areaValue = Main.pref.getDouble(prefArea, area[0]);
@@ -109,5 +109,5 @@
         if (prefNear != null) {
             add(new JLabel(tr("Download near:")), GBC.eol());
-            downloadNear = new JList(new String[]{tr("track only"), tr("waypoints only"), tr("track and waypoints")});
+            downloadNear = new JList<String>(new String[]{tr("track only"), tr("waypoints only"), tr("track and waypoints")});
             downloadNear.setSelectedIndex(Main.pref.getInteger(prefNear, 0));
             add(downloadNear, GBC.eol());
Index: /trunk/src/org/openstreetmap/josm/gui/oauth/AuthorizationProcedureComboBox.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/oauth/AuthorizationProcedureComboBox.java	(revision 7000)
+++ /trunk/src/org/openstreetmap/josm/gui/oauth/AuthorizationProcedureComboBox.java	(revision 7001)
@@ -24,5 +24,5 @@
     }
 
-    private static class AuthorisationProcedureCellRenderer extends JLabel implements ListCellRenderer {
+    private static class AuthorisationProcedureCellRenderer extends JLabel implements ListCellRenderer<AuthorizationProcedure> {
         public AuthorisationProcedureCellRenderer() {
             setOpaque(true);
@@ -80,6 +80,6 @@
 
         @Override
-        public Component getListCellRendererComponent(JList list, Object value, int idx, boolean isSelected, boolean hasFocus) {
-            AuthorizationProcedure procedure = (AuthorizationProcedure)value;
+        public Component getListCellRendererComponent(JList<? extends AuthorizationProcedure> list, AuthorizationProcedure procedure, 
+                int idx, boolean isSelected, boolean hasFocus) {
             renderColors(isSelected);
             renderText(procedure);
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/SourceEditor.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/SourceEditor.java	(revision 7000)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/SourceEditor.java	(revision 7001)
@@ -103,5 +103,5 @@
     protected final JTable tblActiveSources;
     protected final ActiveSourcesModel activeSourcesModel;
-    protected final JList lstAvailableSources;
+    protected final JList<ExtendedSourceEntry> lstAvailableSources;
     protected final AvailableSourcesListModel availableSourcesModel;
     protected final String availableSourcesUrl;
@@ -127,5 +127,5 @@
         DefaultListSelectionModel selectionModel = new DefaultListSelectionModel();
         this.availableSourcesModel = new AvailableSourcesListModel(selectionModel);
-        this.lstAvailableSources = new JList(availableSourcesModel);
+        this.lstAvailableSources = new JList<ExtendedSourceEntry>(availableSourcesModel);
         this.lstAvailableSources.setSelectionModel(selectionModel);
         this.lstAvailableSources.setCellRenderer(new SourceEntryListCellRenderer());
@@ -441,5 +441,5 @@
     }
 
-    protected static class AvailableSourcesListModel extends DefaultListModel {
+    protected static class AvailableSourcesListModel extends DefaultListModel<ExtendedSourceEntry> {
         private List<ExtendedSourceEntry> data;
         private DefaultListSelectionModel selectionModel;
@@ -459,5 +459,5 @@
 
         @Override
-        public Object getElementAt(int index) {
+        public ExtendedSourceEntry getElementAt(int index) {
             return data.get(index);
         }
@@ -1210,8 +1210,8 @@
     }
 
-    static class SourceEntryListCellRenderer extends JLabel implements ListCellRenderer {
-        @Override
-        public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected,
-                boolean cellHasFocus) {
+    static class SourceEntryListCellRenderer extends JLabel implements ListCellRenderer<ExtendedSourceEntry> {
+        @Override
+        public Component getListCellRendererComponent(JList<? extends ExtendedSourceEntry> list, ExtendedSourceEntry value, 
+                int index, boolean isSelected, boolean cellHasFocus) {
             String s = value.toString();
             setText(s);
@@ -1227,5 +1227,5 @@
             setFont(getFont().deriveFont(Font.PLAIN));
             setOpaque(true);
-            setToolTipText(((ExtendedSourceEntry) value).getTooltip());
+            setToolTipText(value.getTooltip());
             return this;
         }
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java	(revision 7000)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java	(revision 7001)
@@ -381,10 +381,8 @@
         }
 
-
         public void setCurrentAction(ActionDefinition currentAction) {
             this.currentAction = currentAction;
             fireTableDataChanged();
         }
-
     }
 
@@ -508,5 +506,5 @@
                 } else if ("up".equals(e.getActionCommand())) {
                     int i = selectedList.getSelectedIndex();
-                    Object o = selected.get(i);
+                    ActionDefinition o = selected.get(i);
                     if (i != 0) {
                         selected.remove(i);
@@ -516,5 +514,5 @@
                 } else if ("down".equals(e.getActionCommand())) {
                     int i = selectedList.getSelectedIndex();
-                    Object o = selected.get(i);
+                    ActionDefinition o = selected.get(i);
                     if (i != selected.size()-1) {
                         selected.remove(i);
@@ -554,6 +552,6 @@
         private final Move moveAction = new Move();
 
-        private final DefaultListModel selected = new DefaultListModel();
-        private final JList selectedList = new JList(selected);
+        private final DefaultListModel<ActionDefinition> selected = new DefaultListModel<ActionDefinition>();
+        private final JList<ActionDefinition> selectedList = new JList<ActionDefinition>(selected);
 
         private final DefaultTreeModel actionsTreeModel;
@@ -658,6 +656,6 @@
                 protected Transferable createTransferable(JComponent c) {
                     List<ActionDefinition> actions = new ArrayList<ActionDefinition>();
-                    for (Object o: ((JList)c).getSelectedValues()) {
-                        actions.add((ActionDefinition)o);
+                    for (ActionDefinition o: ((JList<ActionDefinition>)c).getSelectedValuesList()) {
+                        actions.add(o);
                     }
                     return new ActionTransferable(actions);
@@ -688,9 +686,8 @@
                     try {
                         int dropIndex = selectedList.locationToIndex(selectedList.getMousePosition(true));
-                        List<?> draggedData = (List<?>) t.getTransferData(ACTION_FLAVOR);
+                        List<ActionDefinition> draggedData = (List<ActionDefinition>) t.getTransferData(ACTION_FLAVOR);
 
                         Object leadItem = dropIndex >= 0 ? selected.elementAt(dropIndex) : null;
                         int dataLength = draggedData.size();
-
 
                         if (leadItem != null) {
@@ -698,5 +695,4 @@
                                 if (leadItem.equals(o))
                                     return false;
-
                             }
                         }
@@ -883,4 +879,7 @@
     }
 
+    /**
+     * Constructs a new {@code ToolbarPreferences}.
+     */
     public ToolbarPreferences() {
         control.setFloatable(false);
@@ -931,6 +930,5 @@
     }
 
-    public Action getAction(String s)
-    {
+    public Action getAction(String s) {
         Action e = actions.get(s);
         if(e == null) {
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/advanced/ListListEditor.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/advanced/ListListEditor.java	(revision 7000)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/advanced/ListListEditor.java	(revision 7001)
@@ -42,5 +42,5 @@
     PrefEntry entry;
 
-    JList entryList;
+    JList<String> entryList;
     Integer entryIdx;
     JTable table;
@@ -82,5 +82,5 @@
 
         entryModel = new EntryListModel();
-        entryList = new JList(entryModel);
+        entryList = new JList<String>(entryModel);
         entryList.getSelectionModel().addListSelectionListener(new EntryListener());
         JScrollPane scroll = new JScrollPane(entryList);
@@ -115,7 +115,7 @@
     }
 
-    class EntryListModel extends AbstractListModel {
-        @Override
-        public Object getElementAt(int index) {
+    class EntryListModel extends AbstractListModel<String> {
+        @Override
+        public String getElementAt(int index) {
             return (index+1) + ": " + data.get(index).toString();
         }
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/advanced/MapListEditor.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/advanced/MapListEditor.java	(revision 7000)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/advanced/MapListEditor.java	(revision 7001)
@@ -45,5 +45,5 @@
     PrefEntry entry;
 
-    JList entryList;
+    JList<String> entryList;
     JTable table;
     MapTableModel tableModel;
@@ -100,5 +100,5 @@
 
         entryModel = new EntryListModel();
-        entryList = new JList(entryModel);
+        entryList = new JList<String>(entryModel);
         entryList.getSelectionModel().addListSelectionListener(new EntryListener());
         JScrollPane scroll = new JScrollPane(entryList);
@@ -133,7 +133,7 @@
     }
 
-    class EntryListModel extends AbstractListModel {
-        @Override
-        public Object getElementAt(int index) {
+    class EntryListModel extends AbstractListModel<String> {
+        @Override
+        public String getElementAt(int index) {
             return tr("Entry {0}", index+1);
         }
@@ -213,5 +213,4 @@
 
     class MapTableModel extends AbstractTableModel {
-        @SuppressWarnings("unchecked")
         private List<List<String>> data() {
             if (entryIdx == null) return Collections.emptyList();
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/plugin/PluginPreference.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/plugin/PluginPreference.java	(revision 7000)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/plugin/PluginPreference.java	(revision 7001)
@@ -491,14 +491,14 @@
     private static class PluginConfigurationSitesPanel extends JPanel {
 
-        private DefaultListModel model;
+        private DefaultListModel<String> model;
 
         protected final void build() {
             setLayout(new GridBagLayout());
             add(new JLabel(tr("Add JOSM Plugin description URL.")), GBC.eol());
-            model = new DefaultListModel();
+            model = new DefaultListModel<String>();
             for (String s : Main.pref.getPluginSites()) {
                 model.addElement(s);
             }
-            final JList list = new JList(model);
+            final JList<String> list = new JList<String>(model);
             add(new JScrollPane(list), GBC.std().fill());
             JPanel buttons = new JPanel(new GridBagLayout());
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/projection/CodeProjectionChoice.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/projection/CodeProjectionChoice.java	(revision 7000)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/projection/CodeProjectionChoice.java	(revision 7001)
@@ -47,5 +47,5 @@
         public JosmTextField filter;
         private ProjectionCodeListModel model;
-        public JList selectionList;
+        public JList<String> selectionList;
         List<String> data;
         List<String> filteredData;
@@ -91,5 +91,5 @@
          * List model for the filtered view on the list of all codes.
          */
-        private class ProjectionCodeListModel extends AbstractListModel {
+        private class ProjectionCodeListModel extends AbstractListModel<String> {
             @Override
             public int getSize() {
@@ -98,5 +98,5 @@
 
             @Override
-            public Object getElementAt(int index) {
+            public String getElementAt(int index) {
                 if (index >= 0 && index < filteredData.size())
                     return filteredData.get(index);
Index: /trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetItems.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetItems.java	(revision 7000)
+++ /trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetItems.java	(revision 7001)
@@ -1110,5 +1110,5 @@
         }
 
-        private static final ListCellRenderer RENDERER = new ListCellRenderer() {
+        private static final ListCellRenderer<PresetListEntry> RENDERER = new ListCellRenderer<PresetListEntry>() {
 
             JLabel lbl = new JLabel();
@@ -1116,10 +1116,9 @@
             @Override
             public Component getListCellRendererComponent(
-                    JList list,
-                    Object value,
+                    JList<? extends PresetListEntry> list,
+                    PresetListEntry item,
                     int index,
                     boolean isSelected,
                     boolean cellHasFocus) {
-                PresetListEntry item = (PresetListEntry) value;
 
                 // Only return cached size, item is not shown
@@ -1163,6 +1162,5 @@
         };
 
-
-        protected ListCellRenderer getListCellRenderer() {
+        protected ListCellRenderer<PresetListEntry> getListCellRenderer() {
             return RENDERER;
         }
@@ -1180,4 +1178,7 @@
         public String length;
 
+        /**
+         * Constructs a new {@code Combo}.
+         */
         public Combo() {
             delimiter = ",";
Index: /trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetSelector.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetSelector.java	(revision 7000)
+++ /trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetSelector.java	(revision 7001)
@@ -67,8 +67,7 @@
     private static final BooleanProperty SEARCH_IN_TAGS = new BooleanProperty("taggingpreset.dialog.search-in-tags", true);
     private static final BooleanProperty ONLY_APPLICABLE  = new BooleanProperty("taggingpreset.dialog.only-applicable-to-selection", true);
-
     
     private JosmTextField edSearchText;
-    private JList lsResult;
+    private JList<TaggingPreset> lsResult;
     private JCheckBox ckOnlyApplicable;
     private JCheckBox ckSearchInTags;
@@ -93,5 +92,5 @@
     }
 
-    private static class ResultListModel extends AbstractListModel {
+    private static class ResultListModel extends AbstractListModel<TaggingPreset> {
 
         private List<PresetClassification> presets = new ArrayList<PresetClassification>();
@@ -107,5 +106,5 @@
 
         @Override
-        public Object getElementAt(int index) {
+        public TaggingPreset getElementAt(int index) {
             return presets.get(index).preset;
         }
@@ -115,5 +114,4 @@
             return presets.size();
         }
-
     }
 
@@ -247,5 +245,5 @@
         add(edSearchText, BorderLayout.NORTH);
 
-        lsResult = new JList();
+        lsResult = new JList<TaggingPreset>();
         lsResult.setModel(lsResultModel);
         lsResult.setCellRenderer(new ResultListCellRenderer());
Index: /trunk/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletingComboBox.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletingComboBox.java	(revision 7000)
+++ /trunk/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletingComboBox.java	(revision 7001)
@@ -301,6 +301,9 @@
      * renders an AutoCompletionListItem by showing only the string value part
      */
-    public static class AutoCompleteListCellRenderer extends JLabel implements ListCellRenderer {
-
+    public static class AutoCompleteListCellRenderer extends JLabel implements ListCellRenderer<AutoCompletionListItem> {
+
+        /**
+         * Constructs a new {@code AutoCompleteListCellRenderer}.
+         */
         public AutoCompleteListCellRenderer() {
             setOpaque(true);
@@ -309,6 +312,6 @@
         @Override
         public Component getListCellRendererComponent(
-                JList list,
-                Object value,
+                JList<? extends AutoCompletionListItem> list,
+                AutoCompletionListItem item,
                 int index,
                 boolean isSelected,
@@ -323,5 +326,4 @@
             }
 
-            AutoCompletionListItem item = (AutoCompletionListItem) value;
             setText(item.getValue());
             return this;
Index: /trunk/src/org/openstreetmap/josm/gui/widgets/EditableList.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/widgets/EditableList.java	(revision 7000)
+++ /trunk/src/org/openstreetmap/josm/gui/widgets/EditableList.java	(revision 7001)
@@ -27,5 +27,5 @@
 
     public final String title;
-    public final JList sourcesList = new JList(new DefaultListModel());
+    public final JList<String> sourcesList = new JList<String>(new DefaultListModel<String>());
     public final JButton addSrcButton = new JButton(tr("Add"));
     public final JButton editSrcButton = new JButton(tr("Edit"));
@@ -54,5 +54,5 @@
                         JOptionPane.QUESTION_MESSAGE);
                 if (source != null) {
-                    ((DefaultListModel) sourcesList.getModel()).addElement(source);
+                    ((DefaultListModel<String>) sourcesList.getModel()).addElement(source);
                 }
                 sourcesList.clearSelection();
@@ -72,5 +72,5 @@
                         String source = JOptionPane.showInputDialog(Main.parent, title, title, JOptionPane.QUESTION_MESSAGE);
                         if (source != null) {
-                            ((DefaultListModel) sourcesList.getModel()).addElement(source);
+                            ((DefaultListModel<String>) sourcesList.getModel()).addElement(source);
                         }
                     } else {
@@ -89,5 +89,5 @@
                             sourcesList.getSelectedValue());
                     if (source != null) {
-                        ((DefaultListModel) sourcesList.getModel()).setElementAt(source, row);
+                        ((DefaultListModel<String>) sourcesList.getModel()).setElementAt(source, row);
                     }
                 }
@@ -102,5 +102,5 @@
                     JOptionPane.showMessageDialog(Main.parent, tr("Please select the row to delete."), tr("Information"), JOptionPane.QUESTION_MESSAGE);
                 } else {
-                    ((DefaultListModel) sourcesList.getModel()).remove(sourcesList.getSelectedIndex());
+                    ((DefaultListModel<String>) sourcesList.getModel()).remove(sourcesList.getSelectedIndex());
                 }
             }
@@ -126,5 +126,5 @@
     public void setItems(final Iterable<String> items) {
         for (String source : items) {
-            ((DefaultListModel) sourcesList.getModel()).addElement(source);
+            ((DefaultListModel<String>) sourcesList.getModel()).addElement(source);
         }
     }
@@ -133,5 +133,5 @@
         final List<String> items = new ArrayList<String>(sourcesList.getModel().getSize());
         for (int i = 0; i < sourcesList.getModel().getSize(); ++i) {
-            items.add((String) sourcesList.getModel().getElementAt(i));
+            items.add(sourcesList.getModel().getElementAt(i));
         }
         return items;
Index: /trunk/src/org/openstreetmap/josm/gui/widgets/ListPopupMenu.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/widgets/ListPopupMenu.java	(revision 7000)
+++ /trunk/src/org/openstreetmap/josm/gui/widgets/ListPopupMenu.java	(revision 7001)
@@ -14,17 +14,14 @@
 public class ListPopupMenu extends JPopupMenu {
 
-    private JList[] lists;
+    private JList<?>[] lists;
 
-    public ListPopupMenu(JList ... lists) {
+    public ListPopupMenu(JList<?> ... lists) {
         this.lists = lists;
     }
 
-    /* (non-Javadoc)
-     * @see javax.swing.JPopupMenu#add(javax.swing.Action)
-     */
     @Override
     public JMenuItem add(Action a) {
         if (lists != null && a instanceof ListSelectionListener) {
-            for (JList list : lists) {
+            for (JList<?> list : lists) {
                 list.addListSelectionListener((ListSelectionListener) a);
             }
Index: /trunk/src/org/openstreetmap/josm/gui/widgets/PopupMenuLauncher.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/widgets/PopupMenuLauncher.java	(revision 7000)
+++ /trunk/src/org/openstreetmap/josm/gui/widgets/PopupMenuLauncher.java	(revision 7001)
@@ -78,5 +78,5 @@
     protected boolean checkSelection(Component component, Point p) {
         if (component instanceof JList) {
-            return checkListSelection((JList) component, p) > -1;
+            return checkListSelection((JList<?>) component, p) > -1;
         } else if (component instanceof JTable) {
             return checkTableSelection((JTable) component, p) > -1;
@@ -107,5 +107,5 @@
     }
 
-    protected int checkListSelection(JList list, Point p) {
+    protected int checkListSelection(JList<?> list, Point p) {
         int idx = list.locationToIndex(p);
         if (idx >= 0 && idx < list.getModel().getSize() && list.getSelectedIndices().length < 2 && !list.isSelectedIndex(idx)) {
Index: /trunk/src/org/openstreetmap/josm/io/GpxExporter.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/GpxExporter.java	(revision 7000)
+++ /trunk/src/org/openstreetmap/josm/io/GpxExporter.java	(revision 7001)
@@ -290,5 +290,5 @@
                         "GNU Lesser Public License (LGPL)",
                         "BSD License (MIT/X11)"};
-                JList l = new JList(licenses);
+                JList<String> l = new JList<String>(licenses);
                 l.setVisibleRowCount(licenses.length);
                 l.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
Index: /trunk/src/org/openstreetmap/josm/tools/PlatformHookOsx.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/PlatformHookOsx.java	(revision 7000)
+++ /trunk/src/org/openstreetmap/josm/tools/PlatformHookOsx.java	(revision 7001)
@@ -47,10 +47,4 @@
             // We'll just ignore this for now. The user will still be able to close JOSM by closing all its windows.
             Main.warn("Failed to register with OSX: " + ex);
-        }
-        // Invite users to install Java 7 if they are still with Java 6 and using a compatible OS X version (>= 10.7.3)
-        String java = System.getProperty("java.version");
-        String os = System.getProperty("os.version");
-        if (java != null && java.startsWith("1.6") && os != null && os.matches("^10\\.[789].*")) {
-            askUpdateJava(java);
         }
     }
Index: /trunk/src/org/openstreetmap/josm/tools/PlatformHookUnixoid.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/PlatformHookUnixoid.java	(revision 7000)
+++ /trunk/src/org/openstreetmap/josm/tools/PlatformHookUnixoid.java	(revision 7001)
@@ -16,5 +16,4 @@
 import java.net.URISyntaxException;
 import java.util.Arrays;
-import java.util.Calendar;
 
 import javax.swing.JOptionPane;
@@ -42,24 +41,4 @@
     @Override
     public void startupHook() {
-        if (isDebianOrUbuntu()) {
-            // Invite users to install Java 7 if they are still with Java 6 and using a compatible distrib (Debian >= 7 or Ubuntu >= 12.04)
-            String java = System.getProperty("java.version");
-            String os = getOSDescription();
-            if (java != null && java.startsWith("1.6") && os != null && (
-                    os.startsWith("Linux Debian GNU/Linux 7") || os.startsWith("Linux Mint") || os.matches("^Linux Ubuntu 1[234].*"))) {
-                String url;
-                // apturl does not exist on Debian (see #8465)
-                if (os.startsWith("Linux Debian")) {
-                    url = "https://packages.debian.org/stable/openjdk-7-jre";
-                } else if (getPackageDetails("apturl") != null) {
-                    url = "apt://openjdk-7-jre";
-                } else if (os.startsWith("Linux Mint")) {
-                    url = "http://community.linuxmint.com/software/view/openjdk-7-jre";
-                } else {
-                    url = "http://packages.ubuntu.com/trusty/openjdk-7-jre";
-                }
-                askUpdateJava(java, url);
-            }
-        }
     }
 
@@ -360,12 +339,6 @@
     }
 
+    // Method kept because strings have already been translated. To enable for Java 8 migration somewhere in 2016 
     protected void askUpdateJava(final String version, final String url) {
-        // Expiration date of this feature around the expected release of our first Java 7 tested version
-        Calendar today = Calendar.getInstance();
-        Calendar expiration = Calendar.getInstance();
-        expiration.set(2014, Calendar.MAY, 25);
-        if (!today.before(expiration)) {
-            return;
-        }
         GuiHelper.runInEDTAndWait(new Runnable() {
             @Override
@@ -376,5 +349,5 @@
                         new String[]{tr("Update Java"), tr("Cancel")});
                 // Check if the dialog has not already been permanently hidden by user
-                if (!ed.toggleEnable("askUpdateJava7").toggleCheckState()) {
+                if (!ed.toggleEnable("askUpdateJava8").toggleCheckState()) {
                     ed.setButtonIcons(new String[]{"java.png", "cancel.png"}).setCancelButton(2);
                     ed.setMinimumSize(new Dimension(480, 300));
@@ -383,7 +356,7 @@
                     if ("Sun Microsystems Inc.".equals(System.getProperty("java.vendor")) && !isOpenJDK()) {
                         content += "<b>"+tr("This version is no longer supported by {0} since {1} and is not recommended for use.",
-                                "Oracle", tr("February 2013"))+"</b><br><br>";
+                                "Oracle", tr("April 2015"))+"</b><br><br>";
                     }
-                    content += "<b>"+tr("JOSM will soon stop working with this version; we highly recommend you to update to Java {0}.", "7")+"</b><br><br>"+
+                    content += "<b>"+tr("JOSM will soon stop working with this version; we highly recommend you to update to Java {0}.", "8")+"</b><br><br>"+
                             tr("Would you like to update now ?");
                     ed.setContent(content);
Index: /trunk/src/org/openstreetmap/josm/tools/PlatformHookWindows.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/PlatformHookWindows.java	(revision 7000)
+++ /trunk/src/org/openstreetmap/josm/tools/PlatformHookWindows.java	(revision 7001)
@@ -36,13 +36,4 @@
   */
 public class PlatformHookWindows extends PlatformHookUnixoid implements PlatformHook {
-    
-    @Override
-    public void startupHook() {
-        // Invite users to install Java 7 if they are still with Java 6
-        String version = System.getProperty("java.version");
-        if (version != null && version.startsWith("1.6")) {
-            askUpdateJava(version);
-        }
-    }
 
     @Override
