5 import java.awt.event.*;
6 import java.util.Iterator;
9 import com.jgoodies.forms.layout.*;
10 import com.jgoodies.forms.factories.*;
11 import com.jgoodies.forms.builder.*;
13 public class ExternalTab extends JPanel implements PrefsTab {
15 JabRefPreferences _prefs;
17 //private JComboBox language = new JComboBox(GUIGlobals.LANGUAGES.keySet().toArray());
18 JTextField pdfDir, psDir, pdf, ps, html, lyx, winEdt, citeCommand;
20 //private HelpAction ownerHelp, pdfHelp;
23 public ExternalTab(JabRefFrame frame, JabRefPreferences prefs) {
26 setLayout(new BorderLayout());
28 //pdfHelp = new HelpAction(frame.helpDiag, GUIGlobals.pdfHelp,
29 // "Help", GUIGlobals.helpSmallIconFile);
31 psDir = new JTextField(30);
32 pdfDir = new JTextField(30);
33 pdf = new JTextField(30);
34 ps = new JTextField(30);
35 html = new JTextField(30);
36 lyx = new JTextField(30);
37 winEdt = new JTextField(30);
38 citeCommand = new JTextField(30);
41 FormLayout layout = new FormLayout
42 ("1dlu, 8dlu, left:pref, 4dlu, fill:200dlu, 4dlu, fill:pref",// 4dlu, left:pref, 4dlu",
45 DefaultFormBuilder builder = new DefaultFormBuilder(layout);
47 builder.appendSeparator(Globals.lang("PDF links"));
48 JPanel pan = new JPanel();
50 JLabel lab = new JLabel(Globals.lang("Main PDF directory") + ":");
52 builder.append(pdfDir);
53 browse = new BrowseAction(pdfDir, true);
54 builder.append(new JButton(browse));
56 builder.appendSeparator(Globals.lang("PS links"));
59 lab = new JLabel(Globals.lang("Main PS directory") + ":");
61 builder.append(psDir);
62 browse = new BrowseAction(psDir, true);
63 builder.append(new JButton(browse));
65 builder.appendSeparator(Globals.lang("External programs"));
69 lab = new JLabel(Globals.lang("Path to PDF viewer") + ":");
73 browse = new BrowseAction(pdf, false);
75 browse.setEnabled(false);
76 builder.append(new JButton(browse));
78 lab = new JLabel(Globals.lang("Path to PS viewer") + ":");
82 browse = new BrowseAction(ps, false);
84 browse.setEnabled(false);
85 builder.append(new JButton(browse));
87 lab = new JLabel(Globals.lang("Path to HTML viewer") + ":");
91 browse = new BrowseAction(html, false);
93 browse.setEnabled(false);
94 builder.append(new JButton(browse));
96 lab = new JLabel(Globals.lang("Path to LyX pipe") + ":");
100 browse = new BrowseAction(lyx, false);
101 builder.append(new JButton(browse));
103 lab = new JLabel(Globals.lang("Path to WinEdt.exe") + ":");
106 builder.append(winEdt);
107 browse = new BrowseAction(winEdt, false);
108 builder.append(new JButton(browse));
111 builder.append(Globals.lang("Cite command (for Emacs/WinEdt)")+":");
112 builder.append(citeCommand);
113 //builder.appendSeparator();
115 pan = builder.getPanel();
116 pan.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
117 add(pan, BorderLayout.CENTER);
121 * Action used to produce a "Browse" button for one of the text fields.
123 class BrowseAction extends AbstractAction {
127 public BrowseAction(JTextField tc, boolean dir) {
128 super(Globals.lang("Browse"));
133 public void actionPerformed(ActionEvent e) {
134 String chosen = null;
136 chosen = Globals.getNewDir(_frame, _prefs, new File(comp.getText()), Globals.NONE,
137 JFileChooser.OPEN_DIALOG, false);
139 chosen = Globals.getNewFile(_frame, _prefs, new File(comp.getText()), Globals.NONE,
140 JFileChooser.OPEN_DIALOG, false);
141 if (chosen != null) {
142 File newFile = new File(chosen);
143 comp.setText(newFile.getPath());
148 public void setValues() {
149 pdfDir.setText(_prefs.get("pdfDirectory"));
150 psDir.setText(_prefs.get("psDirectory"));
151 if (!Globals.ON_WIN) {
152 pdf.setText(_prefs.get("pdfviewer"));
153 ps.setText(_prefs.get("psviewer"));
154 html.setText(_prefs.get("htmlviewer"));
156 pdf.setText(Globals.lang("Uses default application"));
157 ps.setText(Globals.lang("Uses default application"));
158 html.setText(Globals.lang("Uses default application"));
159 pdf.setEnabled(false);
160 ps.setEnabled(false);
161 html.setEnabled(false);
164 lyx.setText(_prefs.get("lyxpipe"));
165 winEdt.setText(_prefs.get("winEdtPath"));
166 citeCommand.setText(_prefs.get("citeCommand"));
169 public void storeSettings() {
171 // We should maybe do some checking on the validity of the contents?
172 _prefs.put("pdfDirectory", pdfDir.getText());
173 _prefs.put("psDirectory", psDir.getText());
174 _prefs.put("pdfviewer", pdf.getText());
175 _prefs.put("psviewer", ps.getText());
176 _prefs.put("htmlviewer", html.getText());
177 _prefs.put("lyxpipe", lyx.getText());
178 _prefs.put("winEdtPath", winEdt.getText());
179 _prefs.put("citeCommand", citeCommand.getText());
182 public boolean readyToClose() {