Skip to content

Commit 08ff065

Browse files
committed
Merge pull request #793 from oscargus/newselectedinlist
[WIP] More List<BibEntry> instead of BibEntry[]
2 parents 98a06a2 + 3cb8068 commit 08ff065

15 files changed

+123
-142
lines changed

src/main/java/net/sf/jabref/exporter/ExportToClipboardAction.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ public void run() {
6868
if (panel == null) {
6969
return;
7070
}
71-
if (panel.getSelectedEntries().size() == 0) {
71+
if (panel.getSelectedEntries().isEmpty()) {
7272
message = Localization.lang("No entries selected.");
7373
getCallBack().update();
7474
return;
@@ -112,7 +112,7 @@ public void run() {
112112
tmp = File.createTempFile("jabrefCb", ".tmp");
113113
tmp.deleteOnExit();
114114
List<BibEntry> bes = panel.getSelectedEntries();
115-
HashSet<String> entries = new HashSet<>(bes.size());
115+
Set<String> entries = new HashSet<>(bes.size());
116116
for (BibEntry be : bes) {
117117
entries.add(be.getId());
118118
}

src/main/java/net/sf/jabref/external/TransferableFileLinkSelection.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,9 @@ public class TransferableFileLinkSelection implements Transferable {
3737
private final List<File> fileList = new ArrayList<>();
3838

3939

40-
public TransferableFileLinkSelection(BasePanel panel, BibEntry[] selection) {
40+
public TransferableFileLinkSelection(BasePanel panel, List<BibEntry> selection) {
4141
FileListTableModel tm = new FileListTableModel();
42-
selection[0].getFieldOptional(Globals.FILE_FIELD).ifPresent(file -> tm.setContent(file));
42+
selection.get(0).getFieldOptional(Globals.FILE_FIELD).ifPresent(file -> tm.setContent(file));
4343
if (tm.getRowCount() > 0) {
4444
// Find the default directory for this field type, if any:
4545
List<String> dirs = panel.getBibDatabaseContext().getMetaData().getFileDirectory(Globals.FILE_FIELD);

src/main/java/net/sf/jabref/groups/GroupSelector.java

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,6 @@
3030
import java.util.ArrayList;
3131
import java.util.Enumeration;
3232
import java.util.List;
33-
import java.util.Vector;
34-
3533
import javax.swing.AbstractAction;
3634
import javax.swing.Action;
3735
import javax.swing.BorderFactory;
@@ -680,8 +678,8 @@ private void updateGroupContent(GroupTreeNode node) {
680678
// Sort entries into current members and non-members of the group
681679
// Current members will be removed
682680
// Current non-members will be added
683-
ArrayList<BibEntry> toRemove = new ArrayList<>(entries.size());
684-
ArrayList<BibEntry> toAdd = new ArrayList<>(entries.size());
681+
List<BibEntry> toRemove = new ArrayList<>(entries.size());
682+
List<BibEntry> toAdd = new ArrayList<>(entries.size());
685683

686684
for (BibEntry entry : entries) {
687685
// Sort according to current state of the entries
@@ -1447,39 +1445,40 @@ public void setActiveBasePanel(BasePanel panel) {
14471445
* Highlight all groups that contain any/all of the specified entries. If entries is null or has zero length,
14481446
* highlight is cleared.
14491447
*/
1450-
public void showMatchingGroups(BibEntry[] entries, boolean requireAll) {
1451-
if ((entries == null) || (entries.length == 0)) { // nothing selected
1448+
public void showMatchingGroups(List<BibEntry> list, boolean requireAll) {
1449+
if ((list == null) || (list.isEmpty())) { // nothing selected
14521450
groupsTree.setHighlight3Cells(null);
14531451
groupsTree.revalidate();
14541452
return;
14551453
}
1456-
Vector<GroupTreeNode> vec = new Vector<>();
1454+
List<GroupTreeNode> nodeList = new ArrayList<>();
14571455
for (Enumeration<GroupTreeNode> e = groupsRoot.preorderEnumeration(); e.hasMoreElements();) {
14581456
GroupTreeNode node = e.nextElement();
14591457
AbstractGroup group = node.getGroup();
1460-
int i;
1461-
for (i = 0; i < entries.length; ++i) {
1458+
boolean breakFromLoop = false;
1459+
for (BibEntry entry : list) {
14621460
if (requireAll) {
1463-
if (!group.contains(entries[i])) {
1461+
if (!group.contains(entry)) {
1462+
breakFromLoop = true;
14641463
break;
14651464
}
14661465
} else {
1467-
if (group.contains(entries[i])) {
1468-
vec.add(node);
1466+
if (group.contains(entry)) {
1467+
nodeList.add(node);
14691468
}
14701469
}
14711470
}
1472-
if (requireAll && (i >= entries.length)) // did not break from loop
1471+
if (requireAll && (!breakFromLoop)) // did not break from loop
14731472
{
1474-
vec.add(node);
1473+
nodeList.add(node);
14751474
}
14761475
}
1477-
groupsTree.setHighlight3Cells(vec.toArray());
1476+
groupsTree.setHighlight3Cells(nodeList.toArray());
14781477
// ensure that all highlighted nodes are visible
1479-
for (int i = 0; i < vec.size(); ++i) {
1480-
GroupTreeNode node = (GroupTreeNode) vec.elementAt(i).getParent();
1481-
if (node != null) {
1482-
groupsTree.expandPath(new TreePath(node.getPath()));
1478+
for (GroupTreeNode node : nodeList) {
1479+
GroupTreeNode parentNode = (GroupTreeNode) node.getParent();
1480+
if (parentNode != null) {
1481+
groupsTree.expandPath(new TreePath(parentNode.getPath()));
14831482
}
14841483
}
14851484
groupsTree.revalidate();

src/main/java/net/sf/jabref/groups/GroupsTree.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import java.io.IOException;
2727
import java.util.Arrays;
2828
import java.util.Enumeration;
29+
import java.util.List;
2930
import java.util.Vector;
3031

3132
import javax.swing.JTree;
@@ -278,7 +279,7 @@ public void drop(DropTargetDropEvent dtde) {
278279
}
279280
final TransferableEntrySelection selection = (TransferableEntrySelection) transferable
280281
.getTransferData(TransferableEntrySelection.FLAVOR_INTERNAL);
281-
final BibEntry[] entries = selection.getSelection();
282+
final List<BibEntry> entries = selection.getSelection();
282283
int assignedEntries = 0;
283284
for (BibEntry entry : entries) {
284285
if (!target.getGroup().contains(entry)) {
@@ -298,7 +299,7 @@ public void drop(DropTargetDropEvent dtde) {
298299
// edit has to be stored:
299300
groupSelector.getActiveBasePanel().storeCurrentEdit();
300301

301-
AbstractUndoableEdit undo = group.add(Arrays.asList(selection.getSelection()));
302+
AbstractUndoableEdit undo = group.add(selection.getSelection());
302303
if (undo instanceof UndoableChangeAssignment) {
303304
((UndoableChangeAssignment) undo).setEditedNode(target);
304305
}

src/main/java/net/sf/jabref/groups/TransferableEntrySelection.java

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* Copyright (C) 2003-2011 JabRef contributors.
1+
/* Copyright (C) 2003-2016 JabRef contributors.
22
This program is free software; you can redistribute it and/or modify
33
it under the terms of the GNU General Public License as published by
44
the Free Software Foundation; either version 2 of the License, or
@@ -20,6 +20,8 @@
2020
import java.awt.datatransfer.UnsupportedFlavorException;
2121
import java.io.ByteArrayInputStream;
2222
import java.io.IOException;
23+
import java.util.List;
24+
import java.util.stream.Collectors;
2325

2426
import net.sf.jabref.model.entry.BibEntry;
2527

@@ -28,7 +30,7 @@ class TransferableEntrySelection implements Transferable {
2830
public static final DataFlavor FLAVOR_INTERNAL;
2931
private static final DataFlavor FLAVOR_EXTERNAL;
3032
private static final DataFlavor[] FLAVORS;
31-
private final BibEntry[] selectedEntries;
33+
private final List<BibEntry> selectedEntries;
3234
private final String selectedEntriesCiteKeys;
3335

3436
private boolean includeCiteKeyword;
@@ -49,16 +51,10 @@ class TransferableEntrySelection implements Transferable {
4951
}
5052

5153

52-
public TransferableEntrySelection(BibEntry[] selectedEntries) {
53-
this.selectedEntries = selectedEntries;
54-
StringBuilder keys = new StringBuilder();
55-
for (int i = 0; i < selectedEntries.length; ++i) {
56-
keys.append(selectedEntries[i].getCiteKey());
57-
if ((i + 1) < selectedEntries.length) {
58-
keys.append(',');
59-
}
60-
}
61-
selectedEntriesCiteKeys = keys.toString();
54+
public TransferableEntrySelection(List<BibEntry> list) {
55+
this.selectedEntries = list;
56+
selectedEntriesCiteKeys = String.join(",",
57+
this.selectedEntries.stream().map(entry -> entry.getCiteKey()).collect(Collectors.toList()));
6258
}
6359

6460
@Override
@@ -91,7 +87,7 @@ public Object getTransferData(DataFlavor someFlavor)
9187
return new ByteArrayInputStream(s.getBytes(charset.trim()));
9288
}
9389

94-
public BibEntry[] getSelection() {
90+
public List<BibEntry> getSelection() {
9591
return selectedEntries;
9692
}
9793

0 commit comments

Comments
 (0)