Skip to content

Commit

Permalink
Added behaviors to accommodate different drag-drop ways along with pr…
Browse files Browse the repository at this point in the history
…eference default
  • Loading branch information
shahamish150294 committed Oct 31, 2018
1 parent dc46641 commit b4d4b2d
Show file tree
Hide file tree
Showing 5 changed files with 58 additions and 45 deletions.
62 changes: 53 additions & 9 deletions src/main/java/org/jabref/gui/entryeditor/EntryEditor.java
Original file line number Diff line number Diff line change
Expand Up @@ -146,17 +146,61 @@ public EntryEditor(BasePanel panel, EntryEditorPreferences preferences, FileUpda

FileDragDropPreferenceType dragDropPreferencesType = Globals.prefs.getEntryEditorFileLinkPreference();

if (dragDropPreferencesType == FileDragDropPreferenceType.RENAME_COPY) {
LOGGER.debug("Mode MOVE"); //shift on win or no modifier
fileHandler.addToEntryRenameAndMoveToFileDir(entry, files);
if (dragDropPreferencesType == FileDragDropPreferenceType.MOVE)
{
if(event.getTransferMode() == TransferMode.LINK) //alt on win
{
LOGGER.debug("Mode LINK");
fileHandler.addToEntry(entry, files);
}
else if (event.getTransferMode() == TransferMode.COPY) //ctrl on win, no modifier on Xubuntu
{
LOGGER.debug("Mode COPY");
fileHandler.copyFilesToFileDirAndAddToEntry(entry, files);
}
else
{
LOGGER.debug("Mode MOVE"); //shift on win or no modifier
fileHandler.addToEntryRenameAndMoveToFileDir(entry, files);
}
}
if (dragDropPreferencesType == FileDragDropPreferenceType.LINK) {
LOGGER.debug("Mode LINK"); //alt on win
fileHandler.addToEntry(entry, files);

if (dragDropPreferencesType == FileDragDropPreferenceType.COPY)
{
if(event.getTransferMode() == TransferMode.COPY) //ctrl on win, no modifier on Xubuntu
{
LOGGER.debug("Mode MOVE");
fileHandler.addToEntryRenameAndMoveToFileDir(entry, files);
}
else if (event.getTransferMode() == TransferMode.LINK) //alt on win
{
LOGGER.debug("Mode LINK");
fileHandler.addToEntry(entry, files);
}
else
{
LOGGER.debug("Mode COPY"); //shift on win or no modifier
fileHandler.copyFilesToFileDirAndAddToEntry(entry, files);
}
}
if (dragDropPreferencesType == FileDragDropPreferenceType.COPY) {
LOGGER.debug("Mode COPY"); //ctrl on win, no modifier on Xubuntu
fileHandler.copyFilesToFileDirAndAddToEntry(entry, files);

if (dragDropPreferencesType == FileDragDropPreferenceType.LINK)
{
if(event.getTransferMode() == TransferMode.COPY) //ctrl on win, no modifier on Xubuntu
{
LOGGER.debug("Mode COPY");
fileHandler.copyFilesToFileDirAndAddToEntry(entry, files);
}
else if (event.getTransferMode() == TransferMode.LINK) //alt on win
{
LOGGER.debug("Mode MOVE");
fileHandler.addToEntryRenameAndMoveToFileDir(entry, files);
}
else
{
LOGGER.debug("Mode LINK"); //shift on win or no modifier
fileHandler.addToEntry(entry, files);
}
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,5 @@
public enum FileDragDropPreferenceType {
COPY,
LINK,
RENAME_COPY;
MOVE;
}
35 changes: 2 additions & 33 deletions src/main/java/org/jabref/gui/fieldeditors/LinkedFilesEditor.java
Original file line number Diff line number Diff line change
Expand Up @@ -70,42 +70,15 @@ public LinkedFilesEditor(String fieldName, DialogService dialogService, BibDatab
.setOnDragOver(this::handleOnDragOver);

listView.setCellFactory(cellFactory);

setUpFilesDragAndDrop();

Bindings.bindContentBidirectional(listView.itemsProperty().get(), viewModel.filesProperty());
setUpKeyBindings();
}

private void setUpFilesDragAndDrop() {
listView.setOnDragOver(event -> {
if (event.getDragboard().hasFiles()) {
event.acceptTransferModes(TransferMode.COPY, TransferMode.LINK);
}
});

listView.setOnDragDropped(event -> {
Dragboard dragboard = event.getDragboard();
boolean success = false;
ObservableList<LinkedFileViewModel> items = listView.itemsProperty().get();

if (dragboard.hasFiles()) {
List<LinkedFileViewModel> linkedFiles = dragboard.getFiles().stream().map(File::toPath).map(viewModel::fromFile).collect(Collectors.toList());
items.addAll(linkedFiles);
success = true;
}
event.setDropCompleted(success);
event.consume();
});

}

private void handleOnDragOver(LinkedFileViewModel originalItem, DragEvent event) {
if ((event.getGestureSource() != originalItem) && event.getDragboard().hasContent(DragAndDropDataFormats.LINKED_FILE)) {
event.acceptTransferModes(TransferMode.MOVE);
}
if (event.getDragboard().hasFiles()) {
event.acceptTransferModes(TransferMode.COPY, TransferMode.LINK);
}
}

private void handleOnDragDetected(@SuppressWarnings("unused") LinkedFileViewModel linkedFile, MouseEvent event) {
Expand Down Expand Up @@ -143,11 +116,7 @@ private void handleOnDragDropped(LinkedFileViewModel originalItem, DragEvent eve
items.set(thisIdx, transferedItem);
success = true;
}
if (dragboard.hasFiles()) {
List<LinkedFileViewModel> linkedFiles = dragboard.getFiles().stream().map(File::toPath).map(viewModel::fromFile).collect(Collectors.toList());
items.addAll(linkedFiles);
success = true;
}

event.setDropCompleted(success);
event.consume();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -257,7 +257,7 @@ else if (autoCompFF.isSelected()) {
} else if (linkFile.isSelected()) {
prefs.storeEntryEditorFileLinkPreference(FileDragDropPreferenceType.LINK);
} else {
prefs.storeEntryEditorFileLinkPreference(FileDragDropPreferenceType.RENAME_COPY);
prefs.storeEntryEditorFileLinkPreference(FileDragDropPreferenceType.MOVE);
}

prefs.storeAutoCompletePreferences(autoCompletePreferences);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -792,7 +792,7 @@ private JabRefPreferences() {
// set default theme
defaults.put(JabRefPreferences.FX_THEME, ThemeLoader.DEFAULT_MAIN_CSS);

defaults.put(ENTRY_EDITOR_DRAG_DROP_PREFERENCE_TYPE, FileDragDropPreferenceType.COPY.name());
defaults.put(ENTRY_EDITOR_DRAG_DROP_PREFERENCE_TYPE, FileDragDropPreferenceType.MOVE.name());

setLanguageDependentDefaultValues();
}
Expand Down

0 comments on commit b4d4b2d

Please sign in to comment.