setTitle("iRATE radio");
setTitle("iRATE Radio");
  public Client() throws Exception {    setTitle("iRATE radio");    setSize(640, 400);    File home = new File(System.getProperties().getProperty("user.home"));        // Check the current directory for an existing trackdatabase.xml for      // compatibility reasons only.        File dir = new File(".");        File file = new File(dir, "trackdatabase.xml");    if (!file.exists()) {      dir = new File("/irate");      file = new File(dir, "trackdatabase.xml");      if (!file.exists()) {        dir = new File(home, "irate");        if (!dir.exists())          dir.mkdir();        file = new File(dir, "trackdatabase.xml");       }     }     try {       trackDatabase = new TrackDatabase(file);     }     catch (IOException e) {       e.printStackTrace();     }     playListManager = new PlayListManager(trackDatabase);         playerList = new PlayerList();     playThread = new PlayThread(playListManager, playerList);     playPanel = new PlayPanel(playListManager, playThread);     playThread.start();     getContentPane().add(playPanel, BorderLayout.CENTER);          errorDialog = new ErrorDialog(this);          downloadThread = new DownloadThread(trackDatabase) {	     public void process() throws IOException {		 menuItemDownload.setEnabled(false);		 super.process();		 perhapsDisableAccount();		 menuItemDownload.setEnabled(true);       }       public void handleError(String code, String urlString) {         actionSetContinuousDownload(false);         URL url;         if (urlString.indexOf(':') < 0)           url = getResource("help/" + urlString);         else            try {             url = new URL(urlString);           }           catch (MalformedURLException e) {             e.printStackTrace();             url = getResource("help/malformedurl.html");           }         errorDialog.showURL(url);       }     };     downloadPanel = new DownloadPanel(downloadThread);     downloadThread.addUpdateListener(new UpdateListener() {       private String state = "";       public void actionPerformed() {         String state = downloadThread.getState();         if (!state.equals(this.state)) {           this.state = state;           playPanel.update();         }       }     });       playThread.addUpdateListener(new UpdateListener() {       public void actionPerformed() {         downloadThread.checkAutoDownload();       }     });     getContentPane().add(downloadPanel, BorderLayout.SOUTH);       // Add a close action listener.     addWindowListener(new WindowAdapter() {       public void windowClosing(WindowEvent e) {         actionClose();       }     });     setJMenuBar(createMenuBar());     downloadThread.start();   }