Skip to content

Commit

Permalink
Bibentrysource contextmenu (#5007)
Browse files Browse the repository at this point in the history
* Added ContextMenu

* Refactor deprecated Actions

* changelog

* whitespace

* whitespaces the second

* fix codeArea

* Added styleclass

* Forgot requestFocus

* Whitespace and refactor

* Changelog

* Checkstyle

* minor corrections

* minor corrections

* Refactor overlooked
  • Loading branch information
calixtus authored and matthiasgeiger committed Jun 10, 2019
1 parent 9cc4e65 commit eb42850
Show file tree
Hide file tree
Showing 3 changed files with 52 additions and 3 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ We refer to [GitHub issues](https://github.com/JabRef/jabref/issues) by using `#
- We added an option in the preference dialog box that allows user to enable helpful tooltips.[#3599](https://github.com/JabRef/jabref/issues/3599)
- We moved the dropdown menu for selecting the push-application from the toolbar into the external application preferences. [#674](https://github.com/JabRef/jabref/issues/674)
- We removed the alphabetical ordering of the custom tabs and updated the error message when trying to create a general field with a name containing an illegal character. [#5019](https://github.com/JabRef/jabref/issues/5019)
- We added a context menu to the bib(la)tex-source-editor to copy'n'paste. [#5007](https://github.com/JabRef/jabref/pull/5007)


### Fixed
Expand Down
4 changes: 4 additions & 0 deletions src/main/java/org/jabref/gui/entryeditor/EntryEditor.css
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,10 @@
-fx-font-weight: normal;
}

.code-area .context-menu {
-fx-font-family: sans-serif;
}

.icon-button.narrow {
-fx-padding: 0.1em;
}
Expand Down
50 changes: 47 additions & 3 deletions src/main/java/org/jabref/gui/entryeditor/SourceTab.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,16 @@
import javafx.beans.property.SimpleObjectProperty;
import javafx.collections.ListChangeListener;
import javafx.geometry.Point2D;
import javafx.scene.control.ContextMenu;
import javafx.scene.control.Tooltip;
import javafx.scene.input.InputMethodRequests;

import org.jabref.Globals;
import org.jabref.gui.DialogService;
import org.jabref.gui.StateManager;
import org.jabref.gui.actions.ActionFactory;
import org.jabref.gui.actions.SimpleCommand;
import org.jabref.gui.actions.StandardActions;
import org.jabref.gui.icon.IconTheme;
import org.jabref.gui.undo.CountingUndoManager;
import org.jabref.gui.undo.NamedCompound;
Expand Down Expand Up @@ -63,10 +68,37 @@ public class SourceTab extends EntryEditorTab {
private final FileUpdateMonitor fileMonitor;
private final DialogService dialogService;
private final StateManager stateManager;

private Optional<Pattern> searchHighlightPattern = Optional.empty();
private CodeArea codeArea;

private class EditAction extends SimpleCommand {

private final StandardActions command;

public EditAction(StandardActions command) { this.command = command; }

@Override
public void execute() {
if (codeArea != null) {
switch (command) {
case COPY:
codeArea.copy();
break;
case CUT:
codeArea.cut();
break;
case PASTE:
codeArea.paste();
break;
case SELECT_ALL:
codeArea.selectAll();
break;
}
codeArea.requestFocus();
}
}
}

public SourceTab(BibDatabaseContext bibDatabaseContext, CountingUndoManager undoManager, LatexFieldFormatterPreferences fieldFormatterPreferences, ImportFormatPreferences importFormatPreferences, FileUpdateMonitor fileMonitor, DialogService dialogService, StateManager stateManager) {
this.mode = bibDatabaseContext.getMode();
this.setText(Localization.lang("%0 source", mode.getFormattedName()));
Expand Down Expand Up @@ -143,6 +175,19 @@ private CodeArea createSourceEditor() {
}
});
codeArea.setId("bibtexSourceCodeArea");

ActionFactory factory = new ActionFactory(Globals.getKeyPrefs());
ContextMenu contextMenu = new ContextMenu();
contextMenu.getItems().addAll(
factory.createMenuItem(StandardActions.CUT, new EditAction(StandardActions.CUT)),
factory.createMenuItem(StandardActions.COPY, new EditAction(StandardActions.COPY)),
factory.createMenuItem(StandardActions.PASTE, new EditAction(StandardActions.PASTE)),
factory.createMenuItem(StandardActions.SELECT_ALL, new EditAction(StandardActions.SELECT_ALL))
);

contextMenu.getStyleClass().add("context-menu");
codeArea.setContextMenu(contextMenu);

return codeArea;
}

Expand All @@ -169,6 +214,7 @@ protected void bindToEntry(BibEntry entry) {
});
this.setContent(codeArea);
this.codeArea = codeArea;

// Store source for on focus out event in the source code (within its text area)
// and update source code for every change of entry field values
BindingsHelper.bindContentBidirectional(entry.getFieldsObservable(), codeArea.focusedProperty(), onFocus -> {
Expand All @@ -181,7 +227,6 @@ protected void bindToEntry(BibEntry entry) {
try {
codeArea.appendText(getSourceString(entry, mode, fieldFormatterPreferences));
highlightSearchPattern();

} catch (IOException ex) {
codeArea.setEditable(false);
codeArea.appendText(ex.getMessage() + "\n\n" +
Expand Down Expand Up @@ -271,5 +316,4 @@ private void storeSource(BibEntry outOfFocusEntry, String text) {
LOGGER.debug("Incorrect source", ex);
}
}

}

0 comments on commit eb42850

Please sign in to comment.