Changed license to LGPLv3 or later.
[svjatoslav_commons.git] / src / main / java / eu / svjatoslav / commons / file / CommonPathResolver.java
old mode 100644 (file)
new mode 100755 (executable)
index 1fa1cfd..bef34aa
@@ -1,10 +1,10 @@
 /*
  * Svjatoslav Commons - shared library of common functionality.
- * Copyright ©2012-2013, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu
+ * Copyright ©2012-2014, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu
  * 
  * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public License
- * as published by the Free Software Foundation.
+ * modify it under the terms of version 3 of the GNU Lesser General Public License
+ * or later as published by the Free Software Foundation.
  */
 
 package eu.svjatoslav.commons.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 (possibleDesktopFile.exists()) {
+                               desktopFile = possibleDesktopFile;
+                               return desktopFile;
+                       }
+               }
 
-               return null;
+               throw new RuntimeException("Cannot autodetect user desktop directory.");
        }
 
        public static File getHomeDirectory() {