better quessing of user desktop directory
authorSvjatoslav Agejenko <svjatoslav@svjatoslav.eu>
Sat, 2 Nov 2013 21:01:18 +0000 (23:01 +0200)
committerSvjatoslav Agejenko <svjatoslav@svjatoslav.eu>
Sat, 2 Nov 2013 21:01:18 +0000 (23:01 +0200)
src/main/java/eu/svjatoslav/commons/file/CommonPathResolver.java

index 1fa1cfd..d3c1f9f 100644 (file)
@@ -13,24 +13,43 @@ import java.io.File;
 
 public class CommonPathResolver {
 
+       public static File desktopFile;
+
+       static final String[] desktopNames = new String[] { "Tafelblad", "المكتب",
+                       "Masa Üstü", "Сталец", "Десктоп", "ডেস্কটপ", "Desktop",
+                       "Escriptori", "Prostředí pracovní plochy", "Penbwrdd",
+                       "Skrivebord", "Επιφάνεια εργασίας", "Escritorio", "Töölaud",
+                       "Mahaigaina", "Työpöytä", "Bureau", "Deasc", "ડૅસ્કટોપ",
+                       "डेस्कटॉप", "Radna površina", "Munkaasztal", "デスクトップ", "დესკტოპი",
+                       "데스크탑", "Darbastalis", "Дэлгэц", "Skrivebord", "Teseke", "ਵਿਹੜਾ",
+                       "Pulpit", "Ambiente de Trabalho", "Área de Trabalho",
+                       "Рабочий стол", "Pracovná plocha", "Hapësira e Punës",
+                       "Радна површ", "Radna površ", "Skrivbord", "கணிமேசை", "Мизи корӣ",
+                       "พื้นโต๊ะ", "Masaüstü", "Стільниця", "桌面", "Isiga-nyezi" };
+
        /**
         * This method tries to guess user desktop directory. Implementation is
         * pretty lousy. Need to improve it some day.
         */
        public static File getDesktopDirectory() {
-               String desktopPath = System.getProperty("user.home") + "/Desktop";
 
-               File desktopFile = new File(desktopPath);
-               if (desktopFile.exists())
+               if (desktopFile != null)
                        return desktopFile;
 
-               desktopPath = System.getProperty("user.home") + "/Рабочий стол";
+               final String userHomePath = System.getProperty("user.home");
 
-               desktopFile = new File(desktopPath);
-               if (desktopFile.exists())
-                       return desktopFile;
+               for (final String desktopName : desktopNames) {
+
+                       final String desktopPath = userHomePath + "/" + desktopName;
+
+                       final File possibleDesktopFile = new File(desktopPath);
+                       if (desktopFile.exists()) {
+                               desktopFile = possibleDesktopFile;
+                               return desktopFile;
+                       }
+               }
 
-               return null;
+               throw new RuntimeException("Cannot autodetect user desktop directory.");
        }
 
        public static File getHomeDirectory() {