1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.xnap.plugin.opennap.gui;
21
22 import java.awt.event.ActionEvent;
23 import java.io.IOException;
24
25 import javax.swing.AbstractAction;
26 import javax.swing.Action;
27 import javax.swing.JFileChooser;
28
29 import org.xnap.XNap;
30 import org.xnap.gui.StatusBar;
31 import org.xnap.gui.util.IconHelper;
32 import org.xnap.plugin.opennap.OpenNapPlugin;
33 import org.xnap.plugin.opennap.net.OpenNapServerFileReader;
34 import org.xnap.plugin.opennap.net.OpenNapServerReader;
35 import org.xnap.plugin.opennap.net.WSXFileReader;
36
37 /***
38 * This class handles the command to open a user-specified file
39 * containing a list of hosts. Once the user selects a file the
40 * ServerPanel.doLoadServersFile() method is called.
41 */
42 public class OpenServerFileAction extends AbstractAction
43 {
44
45
46
47
48
49 JFileChooser chooser;
50
51
52
53 public OpenServerFileAction(JFileChooser chooser)
54 {
55 this.chooser = chooser;
56
57 putValue(Action.NAME, XNap.tr("Import Server File") + "...");
58 putValue(IconHelper.XNAP_ICON, "fileimport.png");
59 putValue(Action.SHORT_DESCRIPTION,
60 XNap.tr("Imports a file with the servers you wish to use."));
61 }
62
63
64
65 public void actionPerformed(ActionEvent event)
66 {
67 if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
68 String filename = chooser.getSelectedFile().getAbsolutePath();
69
70 OpenNapServerReader reader =
71 (filename.endsWith("wsx"))
72 ? (OpenNapServerReader)new WSXFileReader(filename)
73 : (OpenNapServerReader)new OpenNapServerFileReader(filename);
74
75 openServerFile(reader);
76 }
77 }
78
79 /***
80 * Invokes {@link OpenNapServerManager#addFromFile(String,
81 * boolean)} in a thread. */
82 public static void openServerFile(final OpenNapServerReader reader)
83 {
84 Runnable runner = new Runnable()
85 {
86 public void run()
87 {
88 try {
89 int count = OpenNapPlugin.getServerManager().addFrom
90 (reader, false);
91 StatusBar.setTextLater
92 (XNap.tr("Added {0} servers", new Integer(count)));
93 }
94 catch (IOException e) {
95 StatusBar.setTextLater
96 (XNap.tr("Could not read file: {0}",
97 e.getLocalizedMessage()));
98 }
99 }
100 };
101
102 Thread t = new Thread(runner, "ImportServerFile");
103 t.start();
104 }
105
106 }
107