Example usage for com.jgoodies.forms.builder DefaultFormBuilder appendSeparator

List of usage examples for com.jgoodies.forms.builder DefaultFormBuilder appendSeparator

Introduction

In this page you can find the example usage for com.jgoodies.forms.builder DefaultFormBuilder appendSeparator.

Prototype

public JComponent appendSeparator(String text) 

Source Link

Document

Adds a separator with the given text that spans all columns.

Usage

From source file:net.sf.jabref.ImportSettingsTab.java

License:Open Source License

public ImportSettingsTab() {
    setLayout(new BorderLayout());
    FormLayout layout = new FormLayout("1dlu, 8dlu, left:pref, 4dlu, fill:3dlu");
    radioButtonNoMeta = new JRadioButton(Globals.lang("Create_blank_entry_linking_the_PDF"));
    radioButtonXmp = new JRadioButton(Globals.lang("Create_entry_based_on_XMP_data"));
    radioButtonPDFcontent = new JRadioButton(Globals.lang("Create_entry_based_on_content"));
    radioButtonMrDlib = new JRadioButton(Globals.lang("Create_entry_based_on_data_fetched_from") + " Mr.DLib");
    radioButtononlyAttachPDF = new JRadioButton(Globals.lang("Only_attach_PDF"));
    radioButtonUpdateEmptyFields = new JRadioButton(
            Globals.lang("Update_empty_fields_with_data_fetched_from") + " Mr.DLib");
    ButtonGroup bg = new ButtonGroup();
    bg.add(radioButtonNoMeta);/*from w  ww. j a  va  2  s .co  m*/
    bg.add(radioButtonXmp);
    bg.add(radioButtonPDFcontent);
    bg.add(radioButtonMrDlib);
    bg.add(radioButtononlyAttachPDF);
    bg.add(radioButtonUpdateEmptyFields);

    useDefaultPDFImportStyle = new JCheckBox(
            Globals.lang("Always use this PDF import style (and do not ask for each import)"));

    fileNamePattern = new JTextField(50);
    selectFileNamePattern = new JButton(Globals.lang("Choose pattern"));
    selectFileNamePattern.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            openFilePatternMenu();
        }
    });

    DefaultFormBuilder builder = new DefaultFormBuilder(layout);
    JPanel pan = new JPanel();

    builder.appendSeparator(Globals.lang("Default import style for drag&drop of PDFs"));
    builder.nextLine();
    builder.append(pan);
    builder.append(radioButtonNoMeta);
    builder.nextLine();
    builder.append(pan);
    builder.append(radioButtonXmp);
    builder.nextLine();
    builder.append(pan);
    builder.append(radioButtonPDFcontent);
    builder.nextLine();
    builder.append(pan);
    builder.append(radioButtonMrDlib);
    builder.nextLine();
    builder.append(pan);
    builder.append(radioButtononlyAttachPDF);
    builder.nextLine();
    builder.append(pan);
    builder.append(radioButtonUpdateEmptyFields);
    builder.nextLine();
    builder.append(pan);
    builder.append(useDefaultPDFImportStyle);
    builder.nextLine();

    builder.appendSeparator(Globals.lang("Default PDF file link action"));
    builder.nextLine();
    builder.append(pan);
    JPanel pan2 = new JPanel();
    JLabel lab = new JLabel(Globals.lang("File name format pattern").concat(":"));
    pan2.add(lab);
    pan2.add(fileNamePattern);
    pan2.add(selectFileNamePattern);
    builder.append(pan2);

    pan = builder.getPanel();
    pan.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
    add(pan, BorderLayout.CENTER);
}

From source file:net.sf.jabref.NameFormatterTab.java

License:Open Source License

/**
 * Tab to create custom Name Formatters/*from  w  w w.  j a v a  2 s . c  o  m*/
 * 
 */
public NameFormatterTab(HelpDialog helpDialog) {
    setLayout(new BorderLayout());

    TableModel tm = new AbstractTableModel() {

        @Override
        public int getRowCount() {
            return rowCount;
        }

        @Override
        public int getColumnCount() {
            return 2;
        }

        @Override
        public Object getValueAt(int row, int column) {
            if (row >= tableRows.size()) {
                return "";
            }
            TableRow tr = tableRows.elementAt(row);
            if (tr == null) {
                return "";
            }
            switch (column) {
            case 0:
                return tr.name;
            case 1:
                return tr.format;
            }
            return null; // Unreachable.
        }

        @Override
        public String getColumnName(int col) {
            return (col == 0 ? Globals.lang("Formatter Name") : Globals.lang("Format String"));
        }

        @Override
        public Class<String> getColumnClass(int column) {
            return String.class;
        }

        @Override
        public boolean isCellEditable(int row, int col) {
            return true;
        }

        @Override
        public void setValueAt(Object value, int row, int col) {
            tableChanged = true;

            // Make sure the vector is long enough.
            while (row >= tableRows.size()) {
                tableRows.add(new TableRow());
            }

            TableRow rowContent = tableRows.elementAt(row);

            if (col == 0) {
                rowContent.name = value.toString();
            } else {
                rowContent.format = value.toString();
            }
        }
    };

    table = new JTable(tm);
    TableColumnModel cm = table.getColumnModel();
    cm.getColumn(0).setPreferredWidth(140);
    cm.getColumn(1).setPreferredWidth(400);

    FormLayout layout = new FormLayout("1dlu, 8dlu, left:pref, 4dlu, fill:pref", "");

    DefaultFormBuilder builder = new DefaultFormBuilder(layout);

    JPanel pan = new JPanel();

    JPanel tabPanel = new JPanel();
    tabPanel.setLayout(new BorderLayout());
    JScrollPane sp = new JScrollPane(table, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
            ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
    table.setPreferredScrollableViewportSize(new Dimension(250, 200));
    sp.setMinimumSize(new Dimension(250, 300));
    sp.setPreferredSize(new Dimension(600, 300));
    tabPanel.add(sp, BorderLayout.CENTER);

    JToolBar tlb = new JToolBar(SwingConstants.VERTICAL);
    tlb.setFloatable(false);
    tlb.setBorder(null);
    tlb.add(new AddRowAction());
    tlb.add(new DeleteRowAction());
    tlb.add(new HelpAction(helpDialog, GUIGlobals.nameFormatterHelp, "Help on Name Formatting",
            GUIGlobals.getIconUrl("helpSmall")));

    tabPanel.add(tlb, BorderLayout.EAST);

    builder.appendSeparator(Globals.lang("Special Name Formatters"));
    builder.nextLine();
    builder.append(pan);
    builder.append(tabPanel);
    builder.nextLine();

    pan = builder.getPanel();
    pan.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
    add(pan, BorderLayout.CENTER);
}

From source file:net.sf.jabref.NetworkTab.java

License:Open Source License

public NetworkTab(JabRefFrame frame, JabRefPreferences prefs) {
    _prefs = prefs;/*from w  w  w . j  a v a2s. com*/

    setLayout(new BorderLayout());

    useProxy = new JCheckBox(Globals.lang("Use custom proxy configuration"));

    defProxyHostname = new JTextField();
    defProxyHostname.setEnabled(false);
    defProxyPort = new JTextField();
    defProxyPort.setEnabled(false);

    Insets marg = new Insets(0, 12, 3, 0);
    useProxy.setMargin(marg);
    defProxyPort.setMargin(marg);

    // We need a listener on useImportInspector to enable and disable the
    // import inspector related choices;
    useProxy.addChangeListener(new ChangeListener() {

        @Override
        public void stateChanged(ChangeEvent event) {
            //useProxy.setEnabled(useProxy.isSelected());
            defProxyHostname.setEnabled(useProxy.isSelected());
            defProxyPort.setEnabled(useProxy.isSelected());
        }
    });

    FormLayout layout = new FormLayout("1dlu, 8dlu, left:pref, 4dlu, fill:150dlu, 4dlu, fill:pref", "");
    //("right:pref, 10dlu, 50dlu, 5dlu, fill:60dlu", "");
    //("10dlu, left:50dlu, 4dlu, fill:pref", "");
    DefaultFormBuilder builder = new DefaultFormBuilder(layout);

    builder.appendSeparator(Globals.lang("Network"));
    builder.nextLine();
    builder.append(useProxy, 5);
    builder.nextLine();
    builder.append(new JPanel());
    JLabel lap = new JLabel(Globals.lang("Host") + ':');
    builder.append(lap);
    builder.append(defProxyHostname);
    builder.nextLine();
    builder.append(new JPanel());
    JLabel lap2 = new JLabel(Globals.lang("Port") + ':');
    builder.append(lap2);
    //builder.append(new JPanel());
    builder.append(defProxyPort);

    JPanel pan = builder.getPanel();
    pan.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
    add(pan, BorderLayout.CENTER);

}

From source file:net.sf.jabref.pdfimport.ImportDialog.java

License:Open Source License

public ImportDialog(boolean targetIsARow, String fileName) {
    Boolean targetIsARow1 = targetIsARow;
    JPanel contentPane = new JPanel();
    contentPane.setLayout(new BorderLayout());
    setContentPane(contentPane);//from   w  w  w.j  a v  a 2 s.c o m
    JPanel panel3 = new JPanel();
    panel3.setBackground(new Color(-1643275));
    JLabel labelHeadline = new JLabel(Localization.lang("Import_metadata_from:"));
    labelHeadline.setFont(new Font(labelHeadline.getFont().getName(), Font.BOLD, 14));
    JLabel labelSubHeadline = new JLabel(Localization.lang("Choose_the_source_for_the_metadata_import"));
    labelSubHeadline
            .setFont(new Font(labelSubHeadline.getFont().getName(), labelSubHeadline.getFont().getStyle(), 13));
    JLabel labelFileName = new JLabel();
    labelFileName.setFont(new Font(labelHeadline.getFont().getName(), Font.BOLD, 14));
    JPanel headLinePanel = new JPanel();
    headLinePanel.add(labelHeadline);
    headLinePanel.add(labelFileName);
    headLinePanel.setBackground(new Color(-1643275));
    GridLayout gl = new GridLayout(2, 1);
    gl.setVgap(10);
    gl.setHgap(10);
    panel3.setLayout(gl);
    panel3.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
    panel3.add(headLinePanel);
    panel3.add(labelSubHeadline);
    radioButtonNoMeta = new JRadioButton(Localization.lang("Create_blank_entry_linking_the_PDF"));
    radioButtonXmp = new JRadioButton(Localization.lang("Create_entry_based_on_XMP_data"));
    radioButtonPDFcontent = new JRadioButton(Localization.lang("Create_entry_based_on_content"));
    radioButtononlyAttachPDF = new JRadioButton(Localization.lang("Only_attach_PDF"));
    JButton buttonOK = new JButton(Localization.lang("OK"));
    JButton buttonCancel = new JButton(Localization.lang("Cancel"));
    checkBoxDoNotShowAgain = new JCheckBox(Localization.lang("Do not show this box again for this import"));
    useDefaultPDFImportStyle = new JCheckBox(
            Localization.lang("Always use this PDF import style (and do not ask for each import)"));
    DefaultFormBuilder b = new DefaultFormBuilder(new FormLayout("left:pref, 5dlu, left:pref:grow", ""));
    b.appendSeparator(Localization.lang("Create New Entry"));
    b.append(radioButtonNoMeta, 3);
    b.append(radioButtonXmp, 3);
    b.append(radioButtonPDFcontent, 3);
    b.appendSeparator(Localization.lang("Update_Existing_Entry"));
    b.append(radioButtononlyAttachPDF, 3);
    b.nextLine();
    b.append(checkBoxDoNotShowAgain);
    b.append(useDefaultPDFImportStyle);
    b.getPanel().setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
    ButtonBarBuilder bb = new ButtonBarBuilder();
    bb.addGlue();
    bb.addButton(buttonOK);
    bb.addButton(buttonCancel);
    bb.addGlue();
    bb.getPanel().setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));

    contentPane.add(panel3, BorderLayout.NORTH);
    contentPane.add(b.getPanel(), BorderLayout.CENTER);
    contentPane.add(bb.getPanel(), BorderLayout.SOUTH);

    if (!targetIsARow1) {
        this.radioButtononlyAttachPDF.setEnabled(false);
    }
    String name = new File(fileName).getName();
    labelFileName.setText(StringUtil.limitStringLength(name, 34));
    this.setTitle(Localization.lang("Import_Metadata_From_PDF"));

    setModal(true);
    getRootPane().setDefaultButton(buttonOK);

    // only one of the radio buttons may be selected.
    ButtonGroup bg = new ButtonGroup();
    bg.add(radioButtonNoMeta);
    bg.add(radioButtonXmp);
    bg.add(radioButtonPDFcontent);
    bg.add(radioButtononlyAttachPDF);

    buttonOK.addActionListener(e -> onOK());
    buttonCancel.addActionListener(e -> onCancel());

    setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
    addWindowListener(new WindowAdapter() {

        @Override
        public void windowClosing(WindowEvent e) {
            onCancel();
        }
    });

    contentPane.registerKeyboardAction(e -> onCancel(), KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0),
            JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);

    switch (Globals.prefs.getInt(ImportSettingsTab.PREF_IMPORT_DEFAULT_PDF_IMPORT_STYLE)) {
    case NOMETA:
        radioButtonNoMeta.setSelected(true);
        break;
    case XMP:
        radioButtonXmp.setSelected(true);
        break;
    case CONTENT:
        radioButtonPDFcontent.setSelected(true);
        break;
    case ONLYATTACH:
        radioButtononlyAttachPDF.setSelected(true);
        break;
    default:
        // fallback
        radioButtonPDFcontent.setSelected(true);
        break;
    }

    this.setSize(555, 371);
}

From source file:net.sf.jabref.TabLabelPattern.java

License:Open Source License

private void appendKeyGeneratorSettings() {
    ButtonGroup bg = new ButtonGroup();
    bg.add(letterStartA);/*  w  w w . j  a v  a 2s. co m*/
    bg.add(letterStartB);
    bg.add(alwaysAddLetter);

    // Build a panel for checkbox settings:
    FormLayout layout = new FormLayout("1dlu, 8dlu, left:pref, 8dlu, left:pref", "");//, 8dlu, 20dlu, 8dlu, fill:pref", "");
    JPanel pan = new JPanel();
    DefaultFormBuilder builder = new DefaultFormBuilder(layout);
    builder.appendSeparator(Globals.lang("Key generator settings"));

    builder.nextLine();
    builder.append(pan);
    builder.append(autoGenerateOnImport);
    builder.append(letterStartA);
    builder.nextLine();
    builder.append(pan);
    builder.append(warnBeforeOverwriting);
    builder.append(letterStartB);
    builder.nextLine();
    builder.append(pan);
    builder.append(dontOverwrite);
    builder.append(alwaysAddLetter);
    builder.nextLine();
    builder.append(pan);
    builder.append(generateOnSave);
    builder.nextLine();
    builder.append(pan);
    builder.append(Globals.lang("Replace (regular expression)") + ':');
    builder.append(Globals.lang("by") + ':');

    builder.nextLine();
    builder.append(pan);
    builder.append(KeyPatternRegex);
    builder.append(KeyPatternReplacement);

    builder.getPanel().setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
    con.gridx = 1;
    con.gridy = 3;
    con.gridwidth = GridBagConstraints.REMAINDER;
    con.weightx = 1;
    con.fill = GridBagConstraints.BOTH;
    gbl.setConstraints(builder.getPanel(), con);
    add(builder.getPanel());

    dontOverwrite.addChangeListener(new ChangeListener() {

        @Override
        public void stateChanged(ChangeEvent event) {
            // Warning before overwriting is only relevant if overwriting can happen:
            warnBeforeOverwriting.setEnabled(!dontOverwrite.isSelected());
        }
    });
}

From source file:net.sf.jabref.TableColumnsTab.java

License:Open Source License

/**
 * Customization of external program paths.
 *
 * @param prefs a <code>JabRefPreferences</code> value
 *//*from ww  w .  j  ava  2s .co m*/
public TableColumnsTab(JabRefPreferences prefs, JabRefFrame frame) {
    _prefs = prefs;
    this.frame = frame;
    setLayout(new BorderLayout());

    TableModel tm = new AbstractTableModel() {

        @Override
        public int getRowCount() {
            return rowCount;
        }

        @Override
        public int getColumnCount() {
            return 2;
        }

        @Override
        public Object getValueAt(int row, int column) {
            if (row == 0) {
                return (column == 0 ? GUIGlobals.NUMBER_COL : "" + ncWidth);
            }
            row--;
            if (row >= tableRows.size()) {
                return "";
            }
            Object rowContent = tableRows.elementAt(row);
            if (rowContent == null) {
                return "";
            }
            TableRow tr = (TableRow) rowContent;
            switch (column) {
            case 0:
                return tr.name;
            case 1:
                return ((tr.length > 0) ? Integer.toString(tr.length) : "");
            }
            return null; // Unreachable.
        }

        @Override
        public String getColumnName(int col) {
            return (col == 0 ? Globals.lang("Field name") : Globals.lang("Column width"));
        }

        @Override
        public Class<?> getColumnClass(int column) {
            if (column == 0) {
                return String.class;
            } else {
                return Integer.class;
            }
        }

        @Override
        public boolean isCellEditable(int row, int col) {
            return !((row == 0) && (col == 0));
        }

        @Override
        public void setValueAt(Object value, int row, int col) {
            tableChanged = true;
            // Make sure the vector is long enough.
            while (row >= tableRows.size()) {
                tableRows.add(new TableRow("", -1));
            }

            if ((row == 0) && (col == 1)) {
                ncWidth = Integer.parseInt(value.toString());
                return;
            }

            TableRow rowContent = tableRows.elementAt(row - 1);

            if (col == 0) {
                rowContent.name = value.toString();
                if (getValueAt(row, 1).equals("")) {
                    setValueAt("" + GUIGlobals.DEFAULT_FIELD_LENGTH, row, 1);
                }
            } else {
                if (value == null) {
                    rowContent.length = -1;
                } else {
                    rowContent.length = Integer.parseInt(value.toString());
                }
            }
        }

    };

    colSetup = new JTable(tm);
    TableColumnModel cm = colSetup.getColumnModel();
    cm.getColumn(0).setPreferredWidth(140);
    cm.getColumn(1).setPreferredWidth(80);

    FormLayout layout = new FormLayout("1dlu, 8dlu, left:pref, 4dlu, fill:pref", //, 4dlu, fill:60dlu, 4dlu, fill:pref",
            "");
    DefaultFormBuilder builder = new DefaultFormBuilder(layout);
    JPanel pan = new JPanel();
    JPanel tabPanel = new JPanel();
    tabPanel.setLayout(new BorderLayout());
    JScrollPane sp = new JScrollPane(colSetup, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
            ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
    colSetup.setPreferredScrollableViewportSize(new Dimension(250, 200));
    sp.setMinimumSize(new Dimension(250, 300));
    tabPanel.add(sp, BorderLayout.CENTER);
    JToolBar tlb = new JToolBar(SwingConstants.VERTICAL);
    tlb.setFloatable(false);
    //tlb.setRollover(true);
    //tlb.setLayout(gbl);
    AddRowAction ara = new AddRowAction();
    DeleteRowAction dra = new DeleteRowAction();
    MoveRowUpAction moveUp = new MoveRowUpAction();
    MoveRowDownAction moveDown = new MoveRowDownAction();
    tlb.setBorder(null);
    tlb.add(ara);
    tlb.add(dra);
    tlb.addSeparator();
    tlb.add(moveUp);
    tlb.add(moveDown);
    //tlb.addSeparator();
    //tlb.add(new UpdateWidthsAction());
    tabPanel.add(tlb, BorderLayout.EAST);

    showOneLetterHeadingForIconColumns = new JCheckBox(
            Globals.lang("Show one letter heading for icon columns"));

    fileColumn = new JCheckBox(Globals.lang("Show file column"));
    pdfColumn = new JCheckBox(Globals.lang("Show PDF/PS column"));
    urlColumn = new JCheckBox(Globals.lang("Show URL/DOI column"));
    preferUrl = new JRadioButton(Globals.lang("Show URL first"));
    preferDoi = new JRadioButton(Globals.lang("Show DOI first"));
    ButtonGroup preferUrlDoiGroup = new ButtonGroup();
    preferUrlDoiGroup.add(preferUrl);
    preferUrlDoiGroup.add(preferDoi);

    urlColumn.addChangeListener(new ChangeListener() {

        @Override
        public void stateChanged(ChangeEvent arg0) {
            preferUrl.setEnabled(urlColumn.isSelected());
            preferDoi.setEnabled(urlColumn.isSelected());
        }
    });
    arxivColumn = new JCheckBox(Globals.lang("Show ArXiv column"));

    extraFileColumns = new JCheckBox(Globals.lang("Show Extra columns"));
    extraFileColumns.addChangeListener(new ChangeListener() {

        @Override
        public void stateChanged(ChangeEvent arg0) {
            listOfFileColumns.setEnabled(extraFileColumns.isSelected());
        }
    });
    ExternalFileType[] fileTypes = Globals.prefs.getExternalFileTypeSelection();
    String[] fileTypeNames = new String[fileTypes.length];
    for (int i = 0; i < fileTypes.length; i++) {
        fileTypeNames[i] = fileTypes[i].getName();
    }
    listOfFileColumns = new JList(fileTypeNames);
    JScrollPane listOfFileColumnsScrollPane = new JScrollPane(listOfFileColumns);
    listOfFileColumns.setVisibleRowCount(3);

    /*** begin: special table columns and special fields ***/

    HelpAction help = new HelpAction(frame.helpDiag, GUIGlobals.specialFieldsHelp);
    JButton hlb = new JButton(GUIGlobals.getImage("helpSmall"));
    hlb.setToolTipText(Globals.lang("Help on special fields"));
    hlb.addActionListener(help);

    specialFieldsEnabled = new JCheckBox(Globals.lang("Enable special fields"));
    //      .concat(". ").concat(Globals.lang("You must restart JabRef for this to come into effect.")));
    specialFieldsEnabled.addChangeListener(new ChangeListener() {

        @Override
        public void stateChanged(ChangeEvent event) {
            boolean isEnabled = specialFieldsEnabled.isSelected();
            rankingColumn.setEnabled(isEnabled);
            compactRankingColumn.setEnabled(isEnabled && rankingColumn.isSelected());
            qualityColumn.setEnabled(isEnabled);
            priorityColumn.setEnabled(isEnabled);
            relevanceColumn.setEnabled(isEnabled);
            printedColumn.setEnabled(isEnabled);
            readStatusColumn.setEnabled(isEnabled);
            syncKeywords.setEnabled(isEnabled);
            writeSpecialFields.setEnabled(isEnabled);
        }
    });
    rankingColumn = new JCheckBox(Globals.lang("Show rank"));
    rankingColumn.addChangeListener(new ChangeListener() {

        @Override
        public void stateChanged(ChangeEvent event) {
            compactRankingColumn.setEnabled(rankingColumn.isSelected());
        }
    });
    compactRankingColumn = new JCheckBox(Globals.lang("Compact rank"));
    qualityColumn = new JCheckBox(Globals.lang("Show quality"));
    priorityColumn = new JCheckBox(Globals.lang("Show priority"));
    relevanceColumn = new JCheckBox(Globals.lang("Show relevance"));
    printedColumn = new JCheckBox(Globals.lang("Show printed status"));
    readStatusColumn = new JCheckBox(Globals.lang("Show read status"));

    // "sync keywords" and "write special" fields may be configured mutually exclusive only
    // The implementation supports all combinations (TRUE+TRUE and FALSE+FALSE, even if the latter does not make sense)
    // To avoid confusion, we opted to make the setting mutually exclusive
    syncKeywords = new JRadioButton(Globals.lang("Synchronize with keywords"));
    writeSpecialFields = new JRadioButton(
            Globals.lang("Write values of special fields as separate fields to BibTeX"));
    ButtonGroup group = new ButtonGroup();
    group.add(syncKeywords);
    group.add(writeSpecialFields);

    builder.appendSeparator(Globals.lang("Special table columns"));
    builder.nextLine();
    builder.append(pan);

    DefaultFormBuilder specialTableColumnsBuilder = new DefaultFormBuilder(
            new FormLayout("8dlu, 8dlu, 8cm, 8dlu, 8dlu, left:pref:grow",
                    "pref, pref, pref, pref, pref, pref, pref, pref, pref, pref, pref, pref, pref"));
    CellConstraints cc = new CellConstraints();

    specialTableColumnsBuilder.add(specialFieldsEnabled, cc.xyw(1, 1, 3));
    specialTableColumnsBuilder.add(rankingColumn, cc.xyw(2, 2, 2));
    specialTableColumnsBuilder.add(compactRankingColumn, cc.xy(3, 3));
    specialTableColumnsBuilder.add(relevanceColumn, cc.xyw(2, 4, 2));
    specialTableColumnsBuilder.add(qualityColumn, cc.xyw(2, 5, 2));
    specialTableColumnsBuilder.add(priorityColumn, cc.xyw(2, 6, 2));
    specialTableColumnsBuilder.add(printedColumn, cc.xyw(2, 7, 2));
    specialTableColumnsBuilder.add(readStatusColumn, cc.xyw(2, 8, 2));
    specialTableColumnsBuilder.add(syncKeywords, cc.xyw(2, 10, 2));
    specialTableColumnsBuilder.add(writeSpecialFields, cc.xyw(2, 11, 2));
    specialTableColumnsBuilder.add(showOneLetterHeadingForIconColumns, cc.xyw(1, 12, 4));
    specialTableColumnsBuilder.add(hlb, cc.xyw(1, 13, 2));

    specialTableColumnsBuilder.add(fileColumn, cc.xyw(5, 1, 2));
    specialTableColumnsBuilder.add(pdfColumn, cc.xyw(5, 2, 2));
    specialTableColumnsBuilder.add(urlColumn, cc.xyw(5, 3, 2));
    specialTableColumnsBuilder.add(preferUrl, cc.xy(6, 4));
    specialTableColumnsBuilder.add(preferDoi, cc.xy(6, 5));
    specialTableColumnsBuilder.add(arxivColumn, cc.xyw(5, 6, 2));

    specialTableColumnsBuilder.add(extraFileColumns, cc.xyw(5, 7, 2));
    specialTableColumnsBuilder.add(listOfFileColumnsScrollPane, cc.xywh(5, 8, 2, 5));

    builder.append(specialTableColumnsBuilder.getPanel());
    builder.nextLine();

    /*** end: special table columns and special fields ***/

    builder.appendSeparator(Globals.lang("Entry table columns"));
    builder.nextLine();
    builder.append(pan);
    builder.append(tabPanel);
    builder.nextLine();
    //   lab = new JLabel("<HTML>("+Globals.lang("this button will update the column width settings<BR>"
    //                  +"to match the current widths in your table")+")</HTML>");
    //        lab = new JLabel("<HTML>("+Globals.lang("this_button_will_update") +")</HTML>") ;
    builder.append(pan);
    JButton buttonWidth = new JButton(new UpdateWidthsAction());
    JButton buttonOrder = new JButton(new UpdateOrderAction());
    builder.append(buttonWidth);
    builder.nextLine();
    builder.append(pan);
    builder.append(buttonOrder);
    builder.nextLine();
    builder.append(pan);
    //builder.append(lab);
    builder.nextLine();
    pan = builder.getPanel();
    pan.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
    add(pan, BorderLayout.CENTER);
}

From source file:net.sf.jabref.TablePrefsTab.java

License:Open Source License

/**
 * Customization of external program paths.
 * /* w  w  w .  j  av  a  2  s .c o m*/
 * @param prefs
 *            a <code>JabRefPreferences</code> value
 */
public TablePrefsTab(JabRefPreferences prefs, JabRefFrame frame) {
    _prefs = prefs;
    setLayout(new BorderLayout());

    /**
     * Added Bibtexkey to combobox.
     * 
     * [ 1540646 ] default sort order: bibtexkey
     * 
     * http://sourceforge.net/tracker/index.php?func=detail&aid=1540646&group_id=92314&atid=600306
     */
    Vector<String> v = new Vector<String>(Arrays.asList(BibtexFields.getAllFieldNames()));
    v.add(BibtexFields.KEY_FIELD);
    Collections.sort(v);
    String[] allPlusKey = v.toArray(new String[v.size()]);
    priSort = new JComboBox(allPlusKey);
    secSort = new JComboBox(allPlusKey);
    terSort = new JComboBox(allPlusKey);

    autoResizeMode = new JCheckBox(Globals.lang("Fit table horizontally on screen"));

    namesAsIs = new JRadioButton(Globals.lang("Show names unchanged"));
    namesFf = new JRadioButton(Globals.lang("Show 'Firstname Lastname'"));
    namesFl = new JRadioButton(Globals.lang("Show 'Lastname, Firstname'"));
    namesNatbib = new JRadioButton(Globals.lang("Natbib style"));
    noAbbrNames = new JRadioButton(Globals.lang("Do not abbreviate names"));
    abbrNames = new JRadioButton(Globals.lang("Abbreviate names"));
    lastNamesOnly = new JRadioButton(Globals.lang("Show last names only"));

    floatMarked = new JCheckBox(Globals.lang("Float marked entries"));

    priField = new JTextField(10);
    secField = new JTextField(10);
    terField = new JTextField(10);

    numericFields = new JTextField(30);

    priSort.insertItemAt(Globals.lang("<select>"), 0);
    secSort.insertItemAt(Globals.lang("<select>"), 0);
    terSort.insertItemAt(Globals.lang("<select>"), 0);

    priSort.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            if (priSort.getSelectedIndex() > 0) {
                priField.setText(priSort.getSelectedItem().toString());
                priSort.setSelectedIndex(0);
            }
        }
    });
    secSort.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            if (secSort.getSelectedIndex() > 0) {
                secField.setText(secSort.getSelectedItem().toString());
                secSort.setSelectedIndex(0);
            }
        }
    });
    terSort.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            if (terSort.getSelectedIndex() > 0) {
                terField.setText(terSort.getSelectedItem().toString());
                terSort.setSelectedIndex(0);
            }
        }
    });

    ButtonGroup bg = new ButtonGroup();
    bg.add(namesAsIs);
    bg.add(namesNatbib);
    bg.add(namesFf);
    bg.add(namesFl);
    ButtonGroup bg2 = new ButtonGroup();
    bg2.add(lastNamesOnly);
    bg2.add(abbrNames);
    bg2.add(noAbbrNames);
    priDesc = new JCheckBox(Globals.lang("Descending"));
    secDesc = new JCheckBox(Globals.lang("Descending"));
    terDesc = new JCheckBox(Globals.lang("Descending"));

    FormLayout layout = new FormLayout(
            "1dlu, 8dlu, left:pref, 4dlu, fill:pref, 4dlu, fill:60dlu, 4dlu, fill:pref", "");
    DefaultFormBuilder builder = new DefaultFormBuilder(layout);
    JLabel lab;
    JPanel pan = new JPanel();

    builder.appendSeparator(Globals.lang("Format of author and editor names"));
    DefaultFormBuilder nameBuilder = new DefaultFormBuilder(new FormLayout("left:pref, 8dlu, left:pref", ""));

    nameBuilder.append(namesAsIs);
    nameBuilder.append(noAbbrNames);
    nameBuilder.nextLine();
    nameBuilder.append(namesFf);
    nameBuilder.append(abbrNames);
    nameBuilder.nextLine();
    nameBuilder.append(namesFl);
    nameBuilder.append(lastNamesOnly);
    nameBuilder.nextLine();
    nameBuilder.append(namesNatbib);
    builder.append(pan);
    builder.append(nameBuilder.getPanel());
    builder.nextLine();
    // builder.append(pan); builder.append(noAbbrNames); builder.nextLine();
    // builder.append(pan); builder.append(abbrNames); builder.nextLine();
    // builder.append(pan); builder.append(lastNamesOnly);
    // builder.nextLine();

    builder.appendSeparator(Globals.lang("Default sort criteria"));
    // Create a new panel with its own FormLayout for these items:
    FormLayout layout2 = new FormLayout("left:pref, 8dlu, fill:pref, 4dlu, fill:60dlu, 4dlu, left:pref", "");
    DefaultFormBuilder builder2 = new DefaultFormBuilder(layout2);
    lab = new JLabel(Globals.lang("Primary sort criterion"));
    builder2.append(lab);
    builder2.append(priSort);
    builder2.append(priField);
    builder2.append(priDesc);
    builder2.nextLine();
    lab = new JLabel(Globals.lang("Secondary sort criterion"));
    builder2.append(lab);
    builder2.append(secSort);
    builder2.append(secField);
    builder2.append(secDesc);
    builder2.nextLine();
    lab = new JLabel(Globals.lang("Tertiary sort criterion"));
    builder2.append(lab);
    builder2.append(terSort);
    builder2.append(terField);
    builder2.append(terDesc);
    builder.nextLine();
    builder.append(pan);
    builder.append(builder2.getPanel());
    builder.nextLine();
    builder.append(pan);
    builder.append(floatMarked);
    builder.nextLine();
    builder.append(pan);
    builder2 = new DefaultFormBuilder(new FormLayout("left:pref, 8dlu, fill:pref", ""));
    builder2.append(Globals.lang("Sort the following fields as numeric fields") + ':');
    builder2.append(numericFields);
    builder.append(builder2.getPanel(), 5);
    builder.nextLine();
    builder.appendSeparator(Globals.lang("General"));
    builder.append(pan);
    builder.append(autoResizeMode);
    builder.nextLine();

    pan = builder.getPanel();
    pan.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
    add(pan, BorderLayout.CENTER);

    namesNatbib.addChangeListener(new ChangeListener() {

        @Override
        public void stateChanged(ChangeEvent changeEvent) {
            abbrNames.setEnabled(!namesNatbib.isSelected());
            lastNamesOnly.setEnabled(!namesNatbib.isSelected());
            noAbbrNames.setEnabled(!namesNatbib.isSelected());
        }
    });
}

From source file:net.sf.jabref.util.ManageKeywordsAction.java

License:Open Source License

private void createDialog() {
    keyword = new JTextField();

    keywordListModel = new DefaultListModel();
    keywordList = new JList(keywordListModel);
    keywordList.setVisibleRowCount(8);/* w w w  . ja va  2  s  .  c om*/
    JScrollPane kPane = new JScrollPane(keywordList);

    diag = new JDialog(frame, Globals.lang("Manage keywords"), true);

    JButton ok = new JButton(Globals.lang("Ok"));
    JButton cancel = new JButton(Globals.lang("Cancel"));
    JButton add = new JButton(Globals.lang("Add"));
    JButton remove = new JButton(Globals.lang("Remove"));

    keywordList.setVisibleRowCount(10);

    intersectKeywords = new JRadioButton("Display keywords appearing in ALL entries");
    mergeKeywords = new JRadioButton("Display keywords appearing in ANY entry");
    ButtonGroup group = new ButtonGroup();
    group.add(intersectKeywords);
    group.add(mergeKeywords);
    ActionListener stateChanged = new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent arg0) {
            fillKeyWordList();
        }
    };
    intersectKeywords.addActionListener(stateChanged);
    mergeKeywords.addActionListener(stateChanged);
    intersectKeywords.setSelected(true);

    DefaultFormBuilder builder = new DefaultFormBuilder(
            new FormLayout("fill:200dlu, 4dlu, left:pref, 4dlu, left:pref", ""));
    builder.appendSeparator(Globals.lang("Keywords of selected entries"));
    builder.append(intersectKeywords, 5);
    builder.nextLine();
    builder.append(mergeKeywords, 5);
    builder.nextLine();
    builder.append(kPane, 3);
    builder.add(remove);
    builder.nextLine();
    builder.append(keyword, 3);
    builder.append(add);
    builder.nextLine();

    ButtonBarBuilder bb = new ButtonBarBuilder();
    bb.addGlue();
    bb.addButton(ok);
    bb.addButton(cancel);
    bb.addGlue();
    builder.getPanel().setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
    bb.getPanel().setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));

    ok.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            cancelled = false;
            diag.dispose();
        }
    });

    AbstractAction cancelAction = new AbstractAction() {

        @Override
        public void actionPerformed(ActionEvent e) {
            cancelled = true;
            diag.dispose();
        }
    };
    cancel.addActionListener(cancelAction);

    final ActionListener addActionListener = new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent arg0) {
            String text = keyword.getText().trim();
            if (text.isEmpty()) {
                // no text to add, do nothing
                return;
            }
            if (keywordListModel.isEmpty()) {
                keywordListModel.addElement(text);
            } else {
                int idx = 0;
                String element = (String) keywordListModel.getElementAt(idx);
                while ((idx < keywordListModel.size()) && (element.compareTo(text) < 0)) {
                    idx++;
                }
                if (idx == keywordListModel.size()) {
                    // list is empty or word is greater than last word in list
                    keywordListModel.addElement(text);
                } else if (element.compareTo(text) == 0) {
                    // nothing to do, word already in table
                } else {
                    keywordListModel.add(idx, text);
                }
            }
            keyword.setText(null);
            keyword.requestFocusInWindow();
        }
    };
    add.addActionListener(addActionListener);

    final ActionListener removeActionListenter = new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent arg0) {
            // keywordList.getSelectedIndices(); does not work, therefore we operate on the values
            String[] values = (String[]) keywordList.getSelectedValues();

            for (String val : values) {
                keywordListModel.removeElement(val);
            }
        }
    };
    remove.addActionListener(removeActionListenter);
    keywordList.addKeyListener(new KeyListener() {

        @Override
        public void keyTyped(KeyEvent arg0) {
        }

        @Override
        public void keyReleased(KeyEvent arg0) {
        }

        @Override
        public void keyPressed(KeyEvent arg0) {
            if (arg0.getKeyCode() == KeyEvent.VK_DELETE) {
                removeActionListenter.actionPerformed(null);
            }
        }
    });

    AutoCompleter autoComp = JabRef.jrf.basePanel().getAutoCompleters().get("keywords");
    AutoCompleteListener acl = new AutoCompleteListener(autoComp);
    keyword.addKeyListener(acl);
    keyword.addFocusListener(acl);
    keyword.addKeyListener(new KeyListener() {

        @Override
        public void keyTyped(KeyEvent e) {
        }

        @Override
        public void keyReleased(KeyEvent e) {
        }

        @Override
        public void keyPressed(KeyEvent e) {
            if (e.getKeyCode() == KeyEvent.VK_ENTER) {
                addActionListener.actionPerformed(null);
            }
        }
    });

    // Key bindings:
    ActionMap am = builder.getPanel().getActionMap();
    InputMap im = builder.getPanel().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
    im.put(Globals.prefs.getKey("Close dialog"), "close");
    am.put("close", cancelAction);

    diag.getContentPane().add(builder.getPanel(), BorderLayout.CENTER);
    diag.getContentPane().add(bb.getPanel(), BorderLayout.SOUTH);
    //diag.pack();
}

From source file:net.sf.jabref.util.MassSetFieldAction.java

License:Open Source License

private void createDialog() {
    diag = new JDialog(frame, Globals.lang("Set/clear/rename fields"), true);

    field = new JTextField();
    text = new JTextField();
    text.setEnabled(false);/*from  w  ww .ja v a2 s .  co m*/
    renameTo = new JTextField();
    renameTo.setEnabled(false);

    JButton ok = new JButton(Globals.lang("Ok"));
    JButton cancel = new JButton(Globals.lang("Cancel"));

    all = new JRadioButton(Globals.lang("All entries"));
    selected = new JRadioButton(Globals.lang("Selected entries"));
    clear = new JRadioButton(Globals.lang("Clear fields"));
    set = new JRadioButton(Globals.lang("Set fields"));
    rename = new JRadioButton(Globals.lang("Rename field to:"));
    rename.setToolTipText(Globals.lang("Move contents of a field into a field with a different name"));
    set.addChangeListener(new ChangeListener() {

        @Override
        public void stateChanged(ChangeEvent e) {
            // Entering a text is only relevant if we are setting, not clearing:
            text.setEnabled(set.isSelected());
        }
    });
    clear.addChangeListener(new ChangeListener() {

        @Override
        public void stateChanged(ChangeEvent event) {
            // Overwrite protection makes no sense if we are clearing the field:
            overwrite.setEnabled(!clear.isSelected());
        }
    });
    rename.addChangeListener(new ChangeListener() {

        @Override
        public void stateChanged(ChangeEvent e) {
            // Entering a text is only relevant if we are renaming
            renameTo.setEnabled(rename.isSelected());
        }
    });
    overwrite = new JCheckBox(Globals.lang("Overwrite existing field values"), true);
    ButtonGroup bg = new ButtonGroup();
    bg.add(all);
    bg.add(selected);
    bg = new ButtonGroup();
    bg.add(clear);
    bg.add(set);
    bg.add(rename);
    DefaultFormBuilder builder = new DefaultFormBuilder(new FormLayout("left:pref, 4dlu, fill:100dlu", ""));
    builder.appendSeparator(Globals.lang("Field name"));
    builder.append(Globals.lang("Field name"));
    builder.append(field);
    builder.nextLine();
    builder.appendSeparator(Globals.lang("Include entries"));
    builder.append(all, 3);
    builder.nextLine();
    builder.append(selected, 3);
    builder.nextLine();
    builder.appendSeparator(Globals.lang("New field value"));
    builder.append(set);
    builder.append(text);
    builder.nextLine();
    builder.append(clear);
    builder.nextLine();
    builder.append(rename);
    builder.append(renameTo);
    builder.nextLine();
    builder.append(overwrite, 3);

    ButtonBarBuilder bb = new ButtonBarBuilder();
    bb.addGlue();
    bb.addButton(ok);
    bb.addButton(cancel);
    bb.addGlue();
    builder.getPanel().setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
    bb.getPanel().setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
    diag.getContentPane().add(builder.getPanel(), BorderLayout.CENTER);
    diag.getContentPane().add(bb.getPanel(), BorderLayout.SOUTH);
    diag.pack();

    ok.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            // Check if the user tries to rename multiple fields:
            if (rename.isSelected()) {
                String[] fields = getFieldNames(field.getText());
                if (fields.length > 1) {
                    JOptionPane.showMessageDialog(diag, Globals.lang("You can only rename one field at a time"),
                            "", JOptionPane.ERROR_MESSAGE);
                    return; // Do not close the dialog.
                }
            }
            cancelled = false;
            diag.dispose();
        }
    });

    AbstractAction cancelAction = new AbstractAction() {

        @Override
        public void actionPerformed(ActionEvent e) {
            cancelled = true;
            diag.dispose();
        }
    };
    cancel.addActionListener(cancelAction);

    // Key bindings:
    ActionMap am = builder.getPanel().getActionMap();
    InputMap im = builder.getPanel().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
    im.put(Globals.prefs.getKey("Close dialog"), "close");
    am.put("close", cancelAction);
}

From source file:net.sf.jabref.wizard.auximport.gui.FromAuxDialog.java

License:Open Source License

private void initPanels(JabRefFrame parent) {
    // collect the names of all open databases
    int len = parentTabbedPane.getTabCount();
    int toSelect = -1;
    for (int i = 0; i < len; i++) {
        dbChooser.addItem(parentTabbedPane.getTitleAt(i));
        if (parent.baseAt(i) == parent.basePanel()) {
            toSelect = i;/*from   ww  w.j  ava  2s.c  o m*/
        }
    }
    if (toSelect >= 0) {
        dbChooser.setSelectedIndex(toSelect);
    }

    auxFileField = new JTextField("", 25);
    JButton browseAuxFileButton = new JButton(Globals.lang("Browse"));
    browseAuxFileButton.addActionListener(new BrowseAction(auxFileField, parent));
    notFoundList = new JList();
    JScrollPane listScrollPane = new JScrollPane(notFoundList);
    //listScrollPane.setPreferredSize(new Dimension(250, 120));
    statusInfos = new JTextArea("", 5, 20);
    JScrollPane statusScrollPane = new JScrollPane(statusInfos);
    //statusScrollPane.setPreferredSize(new Dimension(250, 120));
    //statusInfos.setBorder(BorderFactory.createEtchedBorder());
    statusInfos.setEditable(false);

    DefaultFormBuilder b = new DefaultFormBuilder(
            new FormLayout("left:pref, 4dlu, fill:pref:grow, 4dlu, left:pref", ""), buttons);
    b.appendSeparator(Globals.lang("Options"));
    b.append(Globals.lang("Reference database") + ":");
    b.append(dbChooser, 3);
    b.nextLine();
    b.append(Globals.lang("LaTeX AUX file") + ":");
    b.append(auxFileField);
    b.append(browseAuxFileButton);
    b.getPanel().setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));

    b = new DefaultFormBuilder(
            new FormLayout("fill:pref:grow, 4dlu, fill:pref:grow", "pref, pref, fill:pref:grow"), statusPanel);
    b.appendSeparator(Globals.lang("Result"));
    b.append(Globals.lang("Unknown bibtex entries") + ":");
    b.append(Globals.lang("Messages") + ":");
    b.nextLine();
    b.append(listScrollPane);
    b.append(statusScrollPane);
    b.getPanel().setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
}