class ExternalFileEntry { private JPanel pan; private final JTextField tf; private final JButton browse = new JButton(Localization.lang("Browse")); private final JButton view = new JButton(Localization.lang("Preview")); private final JButton clear = new JButton(IconTheme.JabRefIcon.DELETE_ENTRY.getIcon()); private final JButton download = new JButton(Localization.lang("Download")); public ExternalFileEntry() { tf = new JTextField(); setupPanel(); } public ExternalFileEntry(String filename) { tf = new JTextField(filename); setupPanel(); } private void setupPanel() { tf.setEditable(false); BrowseAction browseA = new BrowseAction(tf, false); browse.addActionListener(browseA); DownloadAction da = new DownloadAction(tf); download.addActionListener(da); FormBuilder builder = FormBuilder.create() .layout( new FormLayout( "fill:pref:grow, 4dlu, fill:pref, 4dlu, fill:pref, 4dlu, fill:pref, 4dlu, fill:pref", "p")); builder.add(tf).xy(1, 1); builder.add(browse).xy(3, 1); builder.add(download).xy(5, 1); builder.add(view).xy(7, 1); builder.add(clear).xy(9, 1); pan = builder.getPanel(); view.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { try { JournalAbbreviationRepository abbr = new JournalAbbreviationRepository(); abbr.readJournalListFromFile(new File(tf.getText())); JTable table = new JTable(JournalAbbreviationsUtil.getTableModel(abbr)); JScrollPane pane = new JScrollPane(table); JOptionPane.showMessageDialog( null, pane, Localization.lang("Journal list preview"), JOptionPane.INFORMATION_MESSAGE); } catch (FileNotFoundException ex) { JOptionPane.showMessageDialog( null, Localization.lang("File '%0' not found", tf.getText()), Localization.lang("Error"), JOptionPane.ERROR_MESSAGE); } } }); clear.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { externals.remove(ExternalFileEntry.this); buildExternalsPanel(); } }); clear.setToolTipText(Localization.lang("Remove")); } public JPanel getPanel() { return pan; } public String getValue() { return tf.getText(); } }