Search in sources :

Example 1 with SortedList

use of ca.odell.glazedlists.SortedList in project jabref by JabRef.

the class StyleSelectDialog method setupTable.

private void setupTable() {
    styles = new BasicEventList<>();
    EventList<OOBibStyle> sortedStyles = new SortedList<>(styles);
    tableModel = (DefaultEventTableModel<OOBibStyle>) GlazedListsSwing.eventTableModelWithThreadProxyList(sortedStyles, new StyleTableFormat());
    table = new JTable(tableModel);
    TableColumnModel cm = table.getColumnModel();
    cm.getColumn(0).setPreferredWidth(100);
    cm.getColumn(1).setPreferredWidth(200);
    cm.getColumn(2).setPreferredWidth(80);
    selectionModel = (DefaultEventSelectionModel<OOBibStyle>) GlazedListsSwing.eventSelectionModelWithThreadProxyList(sortedStyles);
    table.setSelectionModel(selectionModel);
    table.getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    table.addMouseListener(new MouseAdapter() {

        @Override
        public void mousePressed(MouseEvent mouseEvent) {
            if (mouseEvent.isPopupTrigger()) {
                tablePopup(mouseEvent);
            }
        }

        @Override
        public void mouseReleased(MouseEvent mouseEvent) {
            if (mouseEvent.isPopupTrigger()) {
                tablePopup(mouseEvent);
            }
        }
    });
    selectionModel.getSelected().addListEventListener(new EntrySelectionListener());
}
Also used : OOBibStyle(org.jabref.logic.openoffice.OOBibStyle) MouseEvent(java.awt.event.MouseEvent) JTable(javax.swing.JTable) SortedList(ca.odell.glazedlists.SortedList) MouseAdapter(java.awt.event.MouseAdapter) TableColumnModel(javax.swing.table.TableColumnModel)

Example 2 with SortedList

use of ca.odell.glazedlists.SortedList in project jabref by JabRef.

the class SearchResultFrame method init.

private void init(String title) {
    searchResultFrame = new JFrame();
    searchResultFrame.setTitle(title);
    searchResultFrame.setIconImages(IconTheme.getLogoSet());
    preview = new PreviewPanel(null, null);
    sortedEntries = new SortedList<>(entries, new EntryComparator(false, true, FieldName.AUTHOR));
    model = (DefaultEventTableModel<BibEntry>) GlazedListsSwing.eventTableModelWithThreadProxyList(sortedEntries, new EntryTableFormat());
    entryTable = new JTable(model);
    GeneralRenderer renderer = new GeneralRenderer(Color.white);
    entryTable.setDefaultRenderer(JLabel.class, renderer);
    entryTable.setDefaultRenderer(String.class, renderer);
    setWidths();
    TableComparatorChooser<BibEntry> tableSorter = TableComparatorChooser.install(entryTable, sortedEntries, AbstractTableComparatorChooser.MULTIPLE_COLUMN_KEYBOARD);
    setupComparatorChooser(tableSorter);
    JScrollPane sp = new JScrollPane(entryTable);
    final DefaultEventSelectionModel<BibEntry> selectionModel = (DefaultEventSelectionModel<BibEntry>) GlazedListsSwing.eventSelectionModelWithThreadProxyList(sortedEntries);
    entryTable.setSelectionModel(selectionModel);
    selectionModel.getSelected().addListEventListener(new EntrySelectionListener());
    entryTable.addMouseListener(new TableClickListener());
    contentPane.setTopComponent(sp);
    contentPane.setBottomComponent(preview);
    // Key bindings:
    AbstractAction closeAction = new AbstractAction() {

        @Override
        public void actionPerformed(ActionEvent e) {
            dispose();
        }
    };
    ActionMap actionMap = contentPane.getActionMap();
    InputMap inputMap = contentPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
    inputMap.put(Globals.getKeyPrefs().getKey(KeyBinding.CLOSE_DIALOG), "close");
    inputMap.put(Globals.getKeyPrefs().getKey(KeyBinding.CLOSE_DATABASE), "close");
    actionMap.put("close", closeAction);
    actionMap = entryTable.getActionMap();
    inputMap = entryTable.getInputMap();
    //Override 'selectNextColumnCell' and 'selectPreviousColumnCell' to move rows instead of cells on TAB
    actionMap.put("selectNextColumnCell", new AbstractAction() {

        @Override
        public void actionPerformed(ActionEvent e) {
            selectNextEntry();
        }
    });
    actionMap.put("selectPreviousColumnCell", new AbstractAction() {

        @Override
        public void actionPerformed(ActionEvent e) {
            selectPreviousEntry();
        }
    });
    actionMap.put("selectNextRow", new AbstractAction() {

        @Override
        public void actionPerformed(ActionEvent e) {
            selectNextEntry();
        }
    });
    actionMap.put("selectPreviousRow", new AbstractAction() {

        @Override
        public void actionPerformed(ActionEvent e) {
            selectPreviousEntry();
        }
    });
    String selectFirst = "selectFirst";
    inputMap.put(Globals.getKeyPrefs().getKey(KeyBinding.SELECT_FIRST_ENTRY), selectFirst);
    actionMap.put(selectFirst, new AbstractAction() {

        @Override
        public void actionPerformed(ActionEvent event) {
            selectFirstEntry();
        }
    });
    String selectLast = "selectLast";
    inputMap.put(Globals.getKeyPrefs().getKey(KeyBinding.SELECT_LAST_ENTRY), selectLast);
    actionMap.put(selectLast, new AbstractAction() {

        @Override
        public void actionPerformed(ActionEvent event) {
            selectLastEntry();
        }
    });
    actionMap.put("copy", new AbstractAction() {

        @Override
        public void actionPerformed(ActionEvent e) {
            if (!selectionModel.getSelected().isEmpty()) {
                List<BibEntry> bes = selectionModel.getSelected();
                TransferableBibtexEntry trbe = new TransferableBibtexEntry(bes);
                // ! look at ClipBoardManager
                Toolkit.getDefaultToolkit().getSystemClipboard().setContents(trbe, frame.getCurrentBasePanel());
                frame.output(Localization.lang("Copied") + ' ' + (bes.size() > 1 ? bes.size() + " " + Localization.lang("entries") : "1 " + Localization.lang("entry") + '.'));
            }
        }
    });
    // override standard enter-action; enter opens the selected entry
    entryTable.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), "Enter");
    actionMap.put("Enter", new AbstractAction() {

        @Override
        public void actionPerformed(ActionEvent ae) {
            BibEntry entry = sortedEntries.get(entryTable.getSelectedRow());
            selectEntryInBasePanel(entry);
        }
    });
    searchResultFrame.addWindowListener(new WindowAdapter() {

        @Override
        public void windowOpened(WindowEvent e) {
            contentPane.setDividerLocation(0.5f);
        }

        @Override
        public void windowClosing(WindowEvent event) {
            dispose();
        }
    });
    searchResultFrame.getContentPane().add(contentPane, BorderLayout.CENTER);
    // Remember and default to last size:
    SearchPreferences searchPreferences = new SearchPreferences(Globals.prefs);
    searchResultFrame.setSize(searchPreferences.getSeachDialogWidth(), searchPreferences.getSeachDialogHeight());
    searchResultFrame.setLocation(searchPreferences.getSearchDialogPosX(), searchPreferences.getSearchDialogPosY());
    searchResultFrame.addComponentListener(new ComponentAdapter() {

        @Override
        public void componentResized(ComponentEvent e) {
            new SearchPreferences(Globals.prefs).setSearchDialogWidth(searchResultFrame.getSize().width).setSearchDialogHeight(searchResultFrame.getSize().height);
        }

        @Override
        public void componentMoved(ComponentEvent e) {
            new SearchPreferences(Globals.prefs).setSearchDialogPosX(searchResultFrame.getLocation().x).setSearchDialogPosY(searchResultFrame.getLocation().y);
        }
    });
}
Also used : ActionEvent(java.awt.event.ActionEvent) GeneralRenderer(org.jabref.gui.renderer.GeneralRenderer) WindowAdapter(java.awt.event.WindowAdapter) PreviewPanel(org.jabref.gui.PreviewPanel) JFrame(javax.swing.JFrame) SortedList(ca.odell.glazedlists.SortedList) List(java.util.List) BasicEventList(ca.odell.glazedlists.BasicEventList) EventList(ca.odell.glazedlists.EventList) AbstractAction(javax.swing.AbstractAction) ComponentAdapter(java.awt.event.ComponentAdapter) JScrollPane(javax.swing.JScrollPane) BibEntry(org.jabref.model.entry.BibEntry) ActionMap(javax.swing.ActionMap) TransferableBibtexEntry(org.jabref.gui.TransferableBibtexEntry) DefaultEventSelectionModel(ca.odell.glazedlists.swing.DefaultEventSelectionModel) SearchPreferences(org.jabref.preferences.SearchPreferences) EntryComparator(org.jabref.logic.bibtex.comparator.EntryComparator) JTable(javax.swing.JTable) WindowEvent(java.awt.event.WindowEvent) InputMap(javax.swing.InputMap) ComponentEvent(java.awt.event.ComponentEvent)

Aggregations

SortedList (ca.odell.glazedlists.SortedList)2 JTable (javax.swing.JTable)2 BasicEventList (ca.odell.glazedlists.BasicEventList)1 EventList (ca.odell.glazedlists.EventList)1 DefaultEventSelectionModel (ca.odell.glazedlists.swing.DefaultEventSelectionModel)1 ActionEvent (java.awt.event.ActionEvent)1 ComponentAdapter (java.awt.event.ComponentAdapter)1 ComponentEvent (java.awt.event.ComponentEvent)1 MouseAdapter (java.awt.event.MouseAdapter)1 MouseEvent (java.awt.event.MouseEvent)1 WindowAdapter (java.awt.event.WindowAdapter)1 WindowEvent (java.awt.event.WindowEvent)1 List (java.util.List)1 AbstractAction (javax.swing.AbstractAction)1 ActionMap (javax.swing.ActionMap)1 InputMap (javax.swing.InputMap)1 JFrame (javax.swing.JFrame)1 JScrollPane (javax.swing.JScrollPane)1 TableColumnModel (javax.swing.table.TableColumnModel)1 PreviewPanel (org.jabref.gui.PreviewPanel)1