List of usage examples for com.jgoodies.forms.builder DefaultFormBuilder appendSeparator
public JComponent appendSeparator(String text)
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)); }