aa1743496193d3d5bf12359cbb688d1200d91c26
[jalview.git] / src / jalview / util / Platform.java
1 /*
2  * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8)
3  * Copyright (C) 2012 J Procter, AM Waterhouse, LM Lui, J Engelhardt, G Barton, M Clamp, S Searle
4  * 
5  * This file is part of Jalview.
6  * 
7  * Jalview is free software: you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License 
9  * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
10  *  
11  * Jalview is distributed in the hope that it will be useful, but 
12  * WITHOUT ANY WARRANTY; without even the implied warranty 
13  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
14  * PURPOSE.  See the GNU General Public License for more details.
15  * 
16  * You should have received a copy of the GNU General Public License along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
17  */
18 package jalview.util;
19
20 /**
21  * System platform information used by Applet and Application
22  * 
23  * @author Jim Procter
24  */
25 public class Platform
26 {
27   /**
28    * sorry folks - Macs really are different
29    * 
30    * @return true if we do things in a special way.
31    */
32   public boolean isAMac()
33   {
34     return java.lang.System.getProperty("os.name").indexOf("Mac") > -1;
35
36   }
37
38   public boolean isHeadless()
39   {
40     String hdls = java.lang.System.getProperty("java.awt.headless");
41
42     return hdls != null && hdls.equals("true");
43   }
44
45   /**
46    * 
47    * @return nominal maximum command line length for this platform
48    */
49   public static int getMaxCommandLineLength()
50   {
51     // TODO: determine nominal limits for most platforms.
52     return 2046; // this is the max length for a windows NT system.
53   }
54
55   /**
56    * escape a string according to the local platform's escape character
57    * 
58    * @param file
59    * @return escaped file
60    */
61   public static String escapeString(String file)
62   {
63     StringBuffer f = new StringBuffer();
64     int p = 0, lastp = 0;
65     while ((p = file.indexOf('\\', lastp)) > -1)
66     {
67       f.append(file.subSequence(lastp, p));
68       f.append("\\\\");
69       lastp = p + 1;
70     }
71     f.append(file.substring(lastp));
72     return f.toString();
73   }
74 }