package net.sf.jabref.gui; import java.awt.BorderLayout; import java.awt.Dialog; import java.awt.Frame; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; import net.sf.jabref.*; import net.sf.jabref.external.ExternalFilePanel; import com.jgoodies.forms.builder.ButtonBarBuilder; import com.jgoodies.forms.builder.DefaultFormBuilder; import com.jgoodies.forms.layout.FormLayout; /** * Created by IntelliJ IDEA. * User: alver * Date: May 18, 2005 * Time: 9:59:52 PM * To change this template use File | Settings | File Templates. */ public class AttachFileDialog extends JDialog { AttachFileDialog ths = this; FieldEditor editor; String fieldName; JPanel main; JButton browse = new JButton(Globals.lang("Browse")), download = new JButton(Globals.lang("Download")), auto = new JButton(Globals.lang("Auto")), ok = new JButton(Globals.lang("Ok")), cancel = new JButton(Globals.lang("Cancel")); BibtexEntry entry; MetaData metaData; private boolean cancelled = true; // Default to true, so a pure close operation implies Cancel. public AttachFileDialog(Frame parent, MetaData metaData, BibtexEntry entry, String fieldName) { super(parent, true); this.metaData = metaData; this.entry = entry; this.fieldName = fieldName; this.editor = new FieldTextField(fieldName, entry.getField(fieldName), false); initGui(); } public AttachFileDialog(Dialog parent, MetaData metaData, BibtexEntry entry, String fieldName) { super(parent, true); this.metaData = metaData; this.entry = entry; this.fieldName = fieldName; this.editor = new FieldTextField(fieldName, entry.getField(fieldName), false); initGui(); } public boolean cancelled() { return cancelled; } public String getValue() { return editor.getText(); } private void initGui() { final ExternalFilePanel extPan = new ExternalFilePanel(fieldName, metaData, entry, editor, Util.getFileFilterForField(fieldName)); browse.addActionListener(new ActionListener () { public void actionPerformed(ActionEvent event) { extPan.browseFile(fieldName, editor); } }); download.addActionListener(new ActionListener () { public void actionPerformed(ActionEvent event) { extPan.downLoadFile(fieldName, editor, ths); } }); auto.addActionListener(new ActionListener () { public void actionPerformed(ActionEvent event) { extPan.autoSetFile(fieldName, editor); } }); ActionListener okListener = new ActionListener () { public void actionPerformed(ActionEvent event) { cancelled = false; dispose(); } }; ok.addActionListener(okListener); ((JTextField)editor.getTextComponent()).addActionListener(okListener); AbstractAction cancelListener = new AbstractAction () { public void actionPerformed(ActionEvent event) { cancelled = true; dispose(); } }; cancel.addActionListener(cancelListener); editor.getTextComponent().getInputMap().put(Globals.prefs.getKey("Close dialog"), "close"); editor.getTextComponent().getActionMap().put("close", cancelListener); FormLayout layout = new FormLayout("fill:160dlu, 4dlu, fill:pref",""); DefaultFormBuilder builder = new DefaultFormBuilder(layout); //builder.append(Util.nCase(fieldName));//(editor.getLabel()); builder.appendSeparator(Util.nCase(fieldName)); builder.append(editor.getTextComponent()); builder.append(browse); ButtonBarBuilder bb = new ButtonBarBuilder(); bb.addGridded(download); bb.addGridded(auto); builder.nextLine(); builder.append(bb.getPanel()); builder.nextLine(); builder.appendSeparator(); main = builder.getPanel(); main.setBorder(BorderFactory.createEmptyBorder(5,5,5,5)); bb = new ButtonBarBuilder(); bb.addGlue(); bb.addGridded(ok); bb.addGridded(cancel); bb.addGlue(); getContentPane().add(main, BorderLayout.CENTER); getContentPane().add(bb.getPanel(), BorderLayout.SOUTH); pack(); } }