List of usage examples for com.jgoodies.forms.layout Sizes dialogUnitXAsPixel
public static int dialogUnitXAsPixel(int dluX, Component component)
From source file:calendarexportplugin.exporter.AppleSettingsDialog.java
License:Open Source License
private void createGui(final CalendarExportSettings settings) { setTitle(mLocalizer.msg("title", "iCal Calendar Settings")); UiUtilities.registerForClosing(this); JPanel content = (JPanel) getContentPane(); content.setBorder(Borders.DLU4_BORDER); CellConstraints cc = new CellConstraints(); content.setLayout(new FormLayout("5dlu, 15dlu, fill:pref:grow, 3dlu, 100dlu", "pref, 3dlu,pref, 3dlu,pref, 3dlu,pref, 3dlu,pref, 3dlu,pref, 3dlu,pref, 3dlu,pref, fill:3dlu:grow ,pref, 3dlu,pref")); content.add(new JLabel(mLocalizer.msg("select", "Select Calendar")), cc.xyw(2, 3, 2)); mCalendarChooser = new JTextField(); content.add(mCalendarChooser, cc.xy(5, 3)); ButtonBarBuilder2 builder = new ButtonBarBuilder2(); builder.addGlue();/*from w w w . jav a 2 s . co m*/ mOkButton = new JButton(Localizer.getLocalization(Localizer.I18N_OK)); mOkButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { okPressed(settings); } }); getRootPane().setDefaultButton(mOkButton); JButton cancel = new JButton(Localizer.getLocalization(Localizer.I18N_CANCEL)); cancel.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { close(); } }); builder.addButton(new JButton[] { mOkButton, cancel }); content.add(builder.getPanel(), cc.xyw(1, 19, 5)); loadValues(settings); setSize(Sizes.dialogUnitXAsPixel(200, this), Sizes.dialogUnitYAsPixel(100, this)); }
From source file:captureplugin.drivers.simpledevice.SimpleConfigDialog.java
License:Open Source License
/** * Create the Gui/*from w w w . j a v a2 s. c o m*/ */ private void createGui() { JPanel panel = (JPanel) getContentPane(); setTitle(mLocalizer.msg("title", "Device Settings")); panel.setLayout(new FormLayout("3dlu, pref, 3dlu, fill:pref:grow, 3dlu, pref, 3dlu", "pref, 5dlu, pref, 3dlu, pref, 5dlu, fill:min:grow, 3dlu, pref, 3dlu, pref")); panel.setBorder(Borders.DIALOG_BORDER); CellConstraints cc = new CellConstraints(); panel.add( DefaultComponentFactory.getInstance().createSeparator(mLocalizer.msg("deviceName", "Device name")), cc.xyw(1, 1, 7)); panel.add(new JLabel(mLocalizer.msg("deviceNameInput", "Name") + ":"), cc.xy(2, 3)); mName = new JTextField(mDevice.getName()); panel.add(mName, cc.xyw(4, 3, 3)); panel.add(DefaultComponentFactory.getInstance() .createSeparator(mLocalizer.msg("channelAssignment", "Channel assignment")), cc.xyw(1, 5, 7)); mTable = new JTable(new ConfigTableModel(mConfig, mLocalizer.msg("external", "external"))); mTable.getTableHeader().setReorderingAllowed(false); mTable.getColumnModel().getColumn(0).setCellRenderer(new ChannelTableCellRenderer()); mTable.getColumnModel().getColumn(1).setCellRenderer(new ExternalChannelTableCellRenderer()); mTable.getColumnModel().getColumn(1).setCellEditor(new ExternalChannelTableCellEditor(mConfig)); panel.add(new JScrollPane(mTable), cc.xyw(2, 7, 5)); JButton fetch = new JButton(mLocalizer.msg("fetchChannels", "Fetch Channellist")); fetch.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { SwingUtilities.invokeLater(new Runnable() { public void run() { SimpleChannel[] lists = mConnection.getAvailableChannels(); if (lists == null) { JOptionPane.showMessageDialog(SimpleConfigDialog.this, mLocalizer.msg("errorChannels", "Could not load external channels"), mLocalizer.msg("errorTitle", "Error"), JOptionPane.ERROR_MESSAGE); } else { mConfig.setExternalChannels(lists); } mTable.repaint(); } }); } }); panel.add(fetch, cc.xy(6, 9)); ButtonBarBuilder2 builder = new ButtonBarBuilder2(); builder.addGlue(); JButton ok = new JButton(Localizer.getLocalization(Localizer.I18N_OK)); ok.addActionListener(new ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { if (mTable.isEditing()) { TableCellEditor editor = mTable.getCellEditor(); if (editor != null) { editor.stopCellEditing(); } } mReturn = JOptionPane.OK_OPTION; setVisible(false); } }); JButton cancel = new JButton(Localizer.getLocalization(Localizer.I18N_CANCEL)); cancel.addActionListener(new ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { setVisible(false); } }); builder.addButton(new JButton[] { ok, cancel }); panel.add(builder.getPanel(), cc.xyw(1, 11, 7)); getRootPane().setDefaultButton(ok); UiUtilities.registerForClosing(this); setSize(Sizes.dialogUnitXAsPixel(250, this), Sizes.dialogUnitXAsPixel(200, this)); }
From source file:de.dal33t.powerfolder.ui.util.FileSelectorFactory.java
License:Open Source License
/** * Creates a file selection field. A browse button is attached at the right * side//from w w w . j a va2 s.c o m * * @param title the title of the filechoose if pressed the browse button * @param fileSelectionModel the file base value model, will get/write base as String * @param fileSelectionMode the selection mode of the filechooser * @param fileFilter the filefilter used for the filechooser. may be null will * ignore it then * @param open true ? show open dialog : show save dialog * @return */ public static JComponent createFileSelectionField(final String title, final ValueModel fileSelectionModel, final int fileSelectionMode, final FileFilter fileFilter, final boolean open) { if (fileSelectionModel == null) { throw new NullPointerException("Filebase value model is null"); } if (fileSelectionModel.getValue() != null && !(fileSelectionModel.getValue() instanceof String)) { throw new IllegalArgumentException("Value of fileselection is not of type String"); } // text button FormLayout layout = new FormLayout("122dlu, 3dlu, pref", "pref"); PanelBuilder builder = new PanelBuilder(layout); // The textfield final JTextField textField = BasicComponentFactory.createTextField(fileSelectionModel, false); textField.setEditable(false); Dimension p = textField.getPreferredSize(); p.width = Sizes.dialogUnitXAsPixel(30, textField); textField.setPreferredSize(p); // The button final JButton button = new JButtonMini(Icons.getIconById(Icons.DIRECTORY), Translation.getTranslation("folder_create.dialog.select_directory.text")); // Button logic button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { File fileSelection = null; if (fileSelectionModel.getValue() != null) { fileSelection = new File((String) fileSelectionModel.getValue()); } JFileChooser fileChooser = DialogFactory.createFileChooser(); fileChooser.setFileSelectionMode(fileSelectionMode); if (fileSelection != null) { fileChooser.setSelectedFile(fileSelection); fileChooser.setCurrentDirectory(fileSelection); } fileChooser.setDialogTitle(title); fileChooser.setFileSelectionMode(fileSelectionMode); if (fileFilter != null) { fileChooser.setFileFilter(fileFilter); } int result; if (open) { result = fileChooser.showOpenDialog(button); } else { result = fileChooser.showSaveDialog(button); } File selectedFile = fileChooser.getSelectedFile(); if (result == JFileChooser.APPROVE_OPTION && selectedFile != null) { fileSelectionModel.setValue(selectedFile.getAbsolutePath()); } } }); CellConstraints cc = new CellConstraints(); builder.add(textField, cc.xy(1, 1)); builder.add(button, cc.xy(3, 1)); JPanel panel = builder.getPanel(); panel.addPropertyChangeListener("enabled", new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent evt) { boolean enabled = (Boolean) evt.getNewValue(); textField.setEnabled(enabled); button.setEnabled(enabled); } }); return panel; }
From source file:de.dal33t.powerfolder.ui.util.UIUtil.java
License:Open Source License
/** * Sets a preferred minimum width in Dialog units (dlu) on a component * * @param dlu// w w w . jav a 2 s .c o m * the size in dlu * @param comp * the component */ public static void ensureMinimumWidth(int dlu, JComponent comp) { // Ensure minimum dimension Dimension dims = comp.getPreferredSize(); dims.width = Sizes.dialogUnitXAsPixel(dlu, comp); comp.setPreferredSize(dims); }
From source file:golemplugin.GolemDialog.java
License:Open Source License
public GolemDialog(Window w) { super(w);//from ww w. ja v a 2 s.c om setModal(true); createGui(); setSize(Sizes.dialogUnitXAsPixel(200, this), Sizes.dialogUnitYAsPixel(200, this)); }
From source file:i18nplugin.TranslationDialog.java
License:Open Source License
private void createGui(final int splitPos) { setTitle(mLocalizer.msg("title", "Translation Tool")); JPanel panel = (JPanel) getContentPane(); panel.setBorder(Borders.DLU4_BORDER); panel.setLayout(new FormLayout("3dlu, left:pref, 3dlu, pref, 3dlu, pref, fill:pref:grow, 3dlu", "pref, 5dlu, pref, 3dlu, pref, 5dlu, pref, 5dlu, fill:10dlu:grow, 3dlu, pref")); CellConstraints cc = new CellConstraints(); panel.add(DefaultComponentFactory.getInstance() .createSeparator(mLocalizer.msg("chooseLanguage", "Choose Language")), cc.xyw(1, 1, 8)); panel.add(new JLabel(mLocalizer.msg("language", "Language:")), cc.xy(2, 3)); mCurrentLocales = new Vector<Locale>(); Locale[] locales = mLocalizer.getAllAvailableLocales(); for (Locale locale : locales) { if (!locale.getLanguage().equals("en")) { mCurrentLocales.add(locale); }/* www .j ava2s . c om*/ } mLanguageCB = new JComboBox(mCurrentLocales); mLanguageCB.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Locale loc = (Locale) mLanguageCB.getSelectedItem(); mTreeRenderer.setCurrentLocale(loc); mEditor.save(); mEditor.setCurrentLocale(loc); filterChanged(mFilterTF.getText()); mTree.repaint(); } }); mLanguageCB.setRenderer(new DefaultListCellRenderer() { public java.awt.Component getListCellRendererComponent(javax.swing.JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { return super.getListCellRendererComponent(list, ((Locale) value).getDisplayName(), index, isSelected, cellHasFocus); } }); panel.add(mLanguageCB, cc.xy(4, 3)); JButton newButton = new JButton(TVBrowserIcons.newIcon(TVBrowserIcons.SIZE_SMALL)); newButton.setToolTipText(mLocalizer.msg("newLanguage", "Add new language")); newButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { addLanguage(); } }); panel.add(newButton, cc.xy(6, 3)); panel.add(DefaultComponentFactory.getInstance().createSeparator(mLocalizer.msg("translate", "Translate")), cc.xyw(1, 5, 8)); panel.add(new JLabel(mLocalizer.msg("search", "Search:")), cc.xy(2, 7)); mFilterTF = new JTextField(); panel.add(mFilterTF, cc.xy(4, 7)); mClearFilterB = new JButton(IconLoader.getInstance().getIconFromTheme("action", "process-stop", 16)); mClearFilterB.setEnabled(false); mClearFilterB.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { mFilterTF.setText(null); } }); panel.add(mClearFilterB, cc.xy(6, 7)); DefaultMutableTreeNode root = createRootNode(); mTree = new JTree(root) { public void updateUI() { setUI(new SingleAndDoubleClickTreeUI(SingleAndDoubleClickTreeUI.AUTO_COLLAPSE_EXPAND, getSelectionPath())); invalidate(); } }; mTreeRenderer = new PropertiesTreeCellRenderer(Locale.GERMAN); mTree.setCellRenderer(mTreeRenderer); mSplitpane = new JSplitPane(); mSplitpane.setLeftComponent(new JScrollPane(mTree)); panel.add(mSplitpane, cc.xyw(2, 9, 6)); mEditor = new TranslatorEditor(Locale.GERMAN); final JPanel cardPanel = new JPanel(new CardLayout()); cardPanel.add(mEditor, EDITOR); JEditorPane help = new JEditorPane("text/html", mLocalizer.msg("helpText", "<h1>Help missing</h1>")); help.setEditable(false); cardPanel.add(new JScrollPane(help, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER), HELP); mTree.addTreeSelectionListener(new TreeSelectionListener() { public void valueChanged(TreeSelectionEvent e) { CardLayout cl = (CardLayout) (cardPanel.getLayout()); if (mTree.getSelectionPath() != null) { Object node = mTree.getSelectionPath().getLastPathComponent(); if (node instanceof PropertiesEntryNode) { mEditor.save(); mEditor.setSelectedProperties((PropertiesEntryNode) node); cl.show(cardPanel, EDITOR); } else { cl.show(cardPanel, HELP); } } else { cl.show(cardPanel, HELP); } } }); mTree.setSelectionPath(new TreePath(root)); mSplitpane.setRightComponent(cardPanel); if (splitPos > 0) { SwingUtilities.invokeLater(new Runnable() { public void run() { mSplitpane.setDividerLocation(splitPos); } }); } ButtonBarBuilder2 buttonbar = new ButtonBarBuilder2(); JButton save = new JButton(mLocalizer.msg("save", "Save")); save.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { save(); } }); JButton cancel = new JButton(Localizer.getLocalization(Localizer.I18N_CANCEL)); cancel.addActionListener(new ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { close(); } }); JButton export = new JButton(IconLoader.getInstance().getIconFromTheme("actions", "document-save-as", 16)); export.setToolTipText(mLocalizer.msg("export", "Export Translations to File")); export.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { export(); } }); LinkButton link = new LinkButton(mLocalizer.msg("getHelp", "Get Help"), mLocalizer.msg("getHelpUrl", "http://enwiki.tvbrowser.org")); buttonbar.addFixed(export); buttonbar.addGlue(); buttonbar.addFixed(link); buttonbar.addGlue(); buttonbar.addButton(new JButton[] { save, cancel }); panel.add(buttonbar.getPanel(), cc.xyw(2, 11, 6)); getRootPane().setDefaultButton(cancel); UiUtilities.registerForClosing(this); setSize(Sizes.dialogUnitXAsPixel(500, this), Sizes.dialogUnitYAsPixel(410, this)); mLanguageCB.setSelectedIndex(0); mFilterTF.getDocument().addDocumentListener(new DocumentListener() { public void removeUpdate(DocumentEvent e) { filterChanged(mFilterTF.getText()); } public void insertUpdate(DocumentEvent e) { filterChanged(mFilterTF.getText()); } public void changedUpdate(DocumentEvent e) { filterChanged(mFilterTF.getText()); } }); }
From source file:idontwant2see.ExclusionTablePanel.java
License:Open Source License
protected ExclusionTablePanel(final IDontWant2SeeSettings settings) { Localizer mLocalizer = IDontWant2See.mLocalizer; mTableModel = new IDontWant2SeeSettingsTableModel(settings.getSearchList(), settings.getLastEnteredExclusionString()); final IDontWant2SeeSettingsTableRenderer renderer = new IDontWant2SeeSettingsTableRenderer( settings.getLastUsedDate()); mTable = new JTable(mTableModel); mTableModel.setTable(mTable);/*from w w w .j a v a 2 s . co m*/ mTable.setRowHeight(25); mTable.setPreferredScrollableViewportSize(new Dimension(200, 150)); mTable.getColumnModel().getColumn(0).setCellRenderer(renderer); mTable.getColumnModel().getColumn(1).setCellRenderer(renderer); mTable.getColumnModel().getColumn(1) .setMaxWidth(Locale.getDefault().getLanguage().equals("de") ? Sizes.dialogUnitXAsPixel(80, mTable) : Sizes.dialogUnitXAsPixel(55, mTable)); mTable.getColumnModel().getColumn(1).setMinWidth(mTable.getColumnModel().getColumn(1).getMaxWidth()); mTable.getTableHeader().setReorderingAllowed(false); mTable.getTableHeader().setResizingAllowed(false); final JScrollPane scrollPane = new JScrollPane(mTable); mTable.addMouseListener(new MouseAdapter() { public void mouseClicked(final MouseEvent e) { final int column = mTable.columnAtPoint(e.getPoint()); if (column == 1) { final int row = mTable.rowAtPoint(e.getPoint()); mTable.getModel().setValueAt(!((Boolean) mTable.getValueAt(row, column)), row, 1); mTable.repaint(); } } }); mTable.addKeyListener(new KeyAdapter() { public void keyPressed(final KeyEvent e) { if (e.getKeyCode() == KeyEvent.VK_DELETE) { deleteSelectedRows(); e.consume(); } else if (mTable.getSelectedColumn() == 1 && (e.getKeyCode() == KeyEvent.VK_F2 || e.getKeyCode() == KeyEvent.VK_SPACE)) { mTable.getModel().setValueAt(!((Boolean) mTable.getValueAt(mTable.getSelectedRow(), 1)), mTable.getSelectedRow(), 1); mTable.repaint(); } } }); addAncestorListener(new AncestorListener() { public void ancestorAdded(final AncestorEvent event) { for (int row = 0; row < mTableModel.getRowCount(); row++) { if (mTableModel.isLastChangedRow(row)) { final Rectangle rect = mTable.getCellRect(row, 0, true); rect.setBounds(0, scrollPane.getVisibleRect().height + rect.y - rect.height, 0, 0); mTable.scrollRectToVisible(rect); break; } } } public void ancestorMoved(final AncestorEvent event) { } public void ancestorRemoved(final AncestorEvent event) { } }); final JButton add = new JButton(mLocalizer.msg("settings.add", "Add entry"), IDontWant2See.getInstance().createImageIcon("actions", "document-new", 16)); add.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent e) { mTableModel.addRow(); mTable.scrollRectToVisible(mTable.getCellRect(mTableModel.getRowCount() - 1, 0, true)); } }); final JButton delete = new JButton(mLocalizer.msg("settings.delete", "Delete selected entries"), IDontWant2See.getInstance().createImageIcon("actions", "edit-delete", 16)); delete.setEnabled(false); delete.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent e) { deleteSelectedRows(); } }); mTable.getSelectionModel().addListSelectionListener(new ListSelectionListener() { public void valueChanged(final ListSelectionEvent e) { if (!e.getValueIsAdjusting()) { delete.setEnabled(e.getFirstIndex() >= 0); } } }); final FormLayout layout = new FormLayout("default,0dlu:grow,default", "fill:default:grow,1dlu,default,4dlu,default,5dlu,pref"); final PanelBuilder pb = new PanelBuilder(layout, this); final CellConstraints cc = new CellConstraints(); int y = 1; pb.add(scrollPane, cc.xyw(1, y++, 3)); final PanelBuilder pb2 = new PanelBuilder( new FormLayout("default,3dlu:grow,default,3dlu:grow,default,3dlu:grow,default", "default")); final ColorLabel blueLabel = new ColorLabel(IDontWant2SeeSettingsTableRenderer.LAST_CHANGED_COLOR); blueLabel.setText(mLocalizer.msg("changed", "Last change")); pb2.add(blueLabel, cc.xy(1, 1)); final ColorLabel yellowLabel = new ColorLabel(IDontWant2SeeSettingsTableRenderer.LAST_USAGE_7_COLOR); yellowLabel.setText(mLocalizer.msg("unusedSince", "Not used for {0} days", IDontWant2SeeSettingsTableRenderer.OUTDATED_7_DAY_COUNT)); pb2.add(yellowLabel, cc.xy(3, 1)); final ColorLabel orangeLabel = new ColorLabel(IDontWant2SeeSettingsTableRenderer.LAST_USAGE_30_COLOR); orangeLabel.setText(mLocalizer.msg("unusedSince", "Not used for {0} days", IDontWant2SeeSettingsTableRenderer.OUTDATED_30_DAY_COUNT)); pb2.add(orangeLabel, cc.xy(5, 1)); final ColorLabel redLabel = new ColorLabel(IDontWant2SeeSettingsTableRenderer.NOT_VALID_COLOR); redLabel.setText(mLocalizer.msg("invalid", "Invalid")); pb2.add(redLabel, cc.xy(7, 1)); pb.add(pb2.getPanel(), cc.xyw(1, ++y, 3)); y++; pb.add(add, cc.xy(1, ++y)); pb.add(delete, cc.xy(3, y++)); pb.add(UiUtilities.createHelpTextArea(mLocalizer.msg("settings.help", "To edit a value double click a cell. You can use wildcard * to search for any text.")), cc.xyw(1, ++y, 3)); }
From source file:imdbplugin.ImdbUpdateDialog.java
License:Open Source License
private void createGui() { setTitle(mLocalizer.msg("downloadingTitle", "Downloading IMDb-Data")); final JPanel panel = (JPanel) getContentPane(); panel.setLayout(new FormLayout("fill:pref:grow", "pref, 3dlu, pref, fill:3dlu:grow, pref")); panel.setBorder(Borders.DLU4_BORDER); final CellConstraints cc = new CellConstraints(); final JLabel label = new JLabel(mLocalizer.msg("downloadingMsg", "Processing IMDb data...")); panel.add(label, cc.xy(1, 1));/*from w ww. j ava 2 s . c om*/ final JProgressBar progressBar = new JProgressBar(); panel.add(progressBar, cc.xy(1, 3)); final JButton cancel = new JButton(Localizer.getLocalization(Localizer.I18N_CANCEL)); cancel.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent e) { cancelPressed(); } }); final ButtonBarBuilder builder = new ButtonBarBuilder(); builder.addGlue(); builder.addGriddedButtons(new JButton[] { cancel }); panel.add(builder.getPanel(), cc.xy(1, 5)); mMonitor = new ProgressBarProgressMonitor(progressBar, label); setSize(Sizes.dialogUnitXAsPixel(200, this), Sizes.dialogUnitYAsPixel(100, this)); }
From source file:net.sf.jabref.FieldContentSelector.java
License:Open Source License
/** * /* w w w. j a v a2s. c o m*/ * Create a new FieldContentSelector. * * @param frame * The one JabRef-Frame. * @param panel * The basepanel the entry-editor is on. * @param owner * The window/frame/dialog which should be the owner of the * content selector dialog. * @param editor * The entry editor which will be appended by the text selected * by the user from the combobox. * @param metaData * The metadata that contains the list of items to display in the * combobox under the key Globals.SELECTOR_META_PREFIX + * editor.getFieldName(). * @param action * The action that will be performed to after an item from the * combobox has been appended to the text in the entryeditor. * @param horizontalLayout * Whether to put a 2 pixel horizontal strut between combobox and * button. */ public FieldContentSelector(JabRefFrame frame, final BasePanel panel, Window owner, final FieldEditor editor, final MetaData metaData, final AbstractAction action, boolean horizontalLayout, String delimiter) { this.frame = frame; this.editor = editor; this.metaData = metaData; this.owner = owner; this.action = action; this.delimiter = delimiter; comboBox = new JComboBox() { @Override public Dimension getPreferredSize() { Dimension parents = super.getPreferredSize(); if (parents.width > GUIGlobals.MAX_CONTENT_SELECTOR_WIDTH) { parents.width = GUIGlobals.MAX_CONTENT_SELECTOR_WIDTH; } return parents; } }; GridBagLayout gbl = new GridBagLayout(); GridBagConstraints con = new GridBagConstraints(); setLayout(gbl); // comboBox.setEditable(true); comboBox.setMaximumRowCount(35); // Set the width of the popup independent of the size of th box itself: comboBox.putClientProperty(Options.COMBO_POPUP_PROTOTYPE_DISPLAY_VALUE_KEY, "The longest text in the combo popup menu. And even longer."); rebuildComboBox(); con.gridwidth = horizontalLayout ? 3 : GridBagConstraints.REMAINDER; con.fill = GridBagConstraints.HORIZONTAL; con.weightx = 1; gbl.setConstraints(comboBox, con); comboBox.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { /* * These conditions signify arrow key navigation in the dropdown * list, so we should not react to it. I'm not sure if this is * well defined enough to be guaranteed to work everywhere. */ if (e.getActionCommand().equals("comboBoxChanged") && (e.getModifiers() == 0)) { return; } selectionMade(); } }); // Add an action for the Enter key that signals a selection: comboBox.getInputMap().put(KeyStroke.getKeyStroke("ENTER"), "enter"); comboBox.getActionMap().put("enter", new AbstractAction() { @Override public void actionPerformed(ActionEvent actionEvent) { selectionMade(); comboBox.setPopupVisible(false); } }); add(comboBox); if (horizontalLayout) { add(Box.createHorizontalStrut(Sizes.dialogUnitXAsPixel(2, this))); } JButton manage = new JButton(Globals.lang("Manage")); gbl.setConstraints(manage, con); add(manage); manage.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { ContentSelectorDialog2 csd = new ContentSelectorDialog2(FieldContentSelector.this.owner, FieldContentSelector.this.frame, panel, true, metaData, editor.getFieldName()); Util.placeDialog(csd, FieldContentSelector.this.frame); // Calling setVisible(true) will open the modal dialog and block // for the dialog to close. csd.setVisible(true); // So we need to rebuild the ComboBox afterwards rebuildComboBox(); } }); }
From source file:net.sf.jabref.gui.FieldContentSelector.java
License:Open Source License
/** * * Create a new FieldContentSelector.//from w w w .jav a2s . c om * * @param frame * The one JabRef-Frame. * @param panel * The basepanel the entry-editor is on. * @param owner * The window/frame/dialog which should be the owner of the * content selector dialog. * @param editor * The entry editor which will be appended by the text selected * by the user from the combobox. * @param metaData * The metadata that contains the list of items to display in the * combobox under the key Globals.SELECTOR_META_PREFIX + * editor.getFieldName(). * @param action * The action that will be performed to after an item from the * combobox has been appended to the text in the entryeditor. * @param horizontalLayout * Whether to put a 2 pixel horizontal strut between combobox and * button. */ public FieldContentSelector(JabRefFrame frame, final BasePanel panel, Window owner, final FieldEditor editor, final MetaData metaData, final AbstractAction action, boolean horizontalLayout, String delimiter) { this.editor = editor; this.metaData = metaData; this.action = action; this.delimiter = delimiter; comboBox = new JComboBox<String>() { @Override public Dimension getPreferredSize() { Dimension parents = super.getPreferredSize(); if (parents.width > GUIGlobals.MAX_CONTENT_SELECTOR_WIDTH) { parents.width = GUIGlobals.MAX_CONTENT_SELECTOR_WIDTH; } return parents; } }; GridBagLayout gbl = new GridBagLayout(); GridBagConstraints con = new GridBagConstraints(); setLayout(gbl); // comboBox.setEditable(true); comboBox.setMaximumRowCount(35); // Set the width of the popup independent of the size of th box itself: comboBox.putClientProperty(Options.COMBO_POPUP_PROTOTYPE_DISPLAY_VALUE_KEY, "The longest text in the combo popup menu. And even longer."); rebuildComboBox(); con.gridwidth = horizontalLayout ? 3 : GridBagConstraints.REMAINDER; con.fill = GridBagConstraints.HORIZONTAL; con.weightx = 1; gbl.setConstraints(comboBox, con); comboBox.addActionListener(e -> { /* * These conditions signify arrow key navigation in the dropdown * list, so we should not react to it. I'm not sure if this is * well defined enough to be guaranteed to work everywhere. */ if ("comboBoxChanged".equals(e.getActionCommand()) && (e.getModifiers() == 0)) { return; } selectionMade(); }); // Add an action for the Enter key that signals a selection: comboBox.getInputMap().put(KeyStroke.getKeyStroke("ENTER"), "enter"); comboBox.getActionMap().put("enter", new AbstractAction() { @Override public void actionPerformed(ActionEvent actionEvent) { selectionMade(); comboBox.setPopupVisible(false); } }); add(comboBox); if (horizontalLayout) { add(Box.createHorizontalStrut(Sizes.dialogUnitXAsPixel(2, this))); } JButton manage = new JButton(Localization.lang("Manage")); gbl.setConstraints(manage, con); add(manage); manage.addActionListener(e -> { ContentSelectorDialog2 csd = new ContentSelectorDialog2(owner, frame, panel, true, metaData, editor.getFieldName()); PositionWindow.placeDialog(csd, frame); // Calling setVisible(true) will open the modal dialog and block // for the dialog to close. csd.setVisible(true); // So we need to rebuild the ComboBox afterwards rebuildComboBox(); }); }