From df6d7179d2bc3cfbd6547ded8c7bfa8ff7498f42 Mon Sep 17 00:00:00 2001 From: Siedlerchr Date: Sat, 27 Oct 2018 20:44:47 +0200 Subject: [PATCH] further implement viewModel --- .../gui/openoffice/CitationManager.java | 19 +++++++---------- .../openoffice/ManageCitationsDialogView.java | 5 +++++ .../ManageCitationsDialogViewModel.java | 9 +++++++- .../ManageCitationsItemViewModel.java | 21 +++++++++++++++++++ .../logic/openoffice/CitationEntry.java | 5 +++-- 5 files changed, 45 insertions(+), 14 deletions(-) diff --git a/src/main/java/org/jabref/gui/openoffice/CitationManager.java b/src/main/java/org/jabref/gui/openoffice/CitationManager.java index ae75d693d95..a1956db2042 100644 --- a/src/main/java/org/jabref/gui/openoffice/CitationManager.java +++ b/src/main/java/org/jabref/gui/openoffice/CitationManager.java @@ -57,7 +57,7 @@ class CitationManager { private final DefaultEventTableModel tableModel; public CitationManager(OOBibBase ooBase, DialogService dialogService) - throws NoSuchElementException, WrappedTargetException, UnknownPropertyException { + throws NoSuchElementException, WrappedTargetException, UnknownPropertyException { diag = new JDialog((JFrame) null, Localization.lang("Manage citations"), true); this.ooBase = ooBase; @@ -66,8 +66,8 @@ public CitationManager(OOBibBase ooBase, DialogService dialogService) List names = ooBase.getJabRefReferenceMarks(nameAccess); for (String name : names) { list.add(new CitationEntry(name, - "..." + ooBase.getCitationContext(nameAccess, name, 30, 30, true) + "...", - ooBase.getCustomProperty(name))); + "..." + ooBase.getCitationContext(nameAccess, name, 30, 30, true) + "...", + ooBase.getCustomProperty(name))); } tableModel = new DefaultEventTableModel<>(list, new CitationEntryFormat()); table = new JTable(tableModel); @@ -91,7 +91,7 @@ public CitationManager(OOBibBase ooBase, DialogService dialogService) try { storeSettings(); } catch (UnknownPropertyException | NotRemoveableException | PropertyExistException | IllegalTypeException | - IllegalArgumentException ex) { + IllegalArgumentException ex) { LOGGER.warn("Problem modifying citation", ex); dialogService.showErrorDialogAndWait(Localization.lang("Problem modifying citation"), ex); } @@ -107,8 +107,7 @@ public void actionPerformed(ActionEvent actionEvent) { }; cancel.addActionListener(cancelAction); - bb.getPanel().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put - (Globals.getKeyPrefs().getKey(KeyBinding.CLOSE), "close"); + bb.getPanel().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(Globals.getKeyPrefs().getKey(KeyBinding.CLOSE), "close"); bb.getPanel().getActionMap().put("close", cancelAction); table.getColumnModel().getColumn(0).setPreferredWidth(580); @@ -118,7 +117,7 @@ public void actionPerformed(ActionEvent actionEvent) { } private void storeSettings() throws UnknownPropertyException, NotRemoveableException, PropertyExistException, - IllegalTypeException, IllegalArgumentException { + IllegalTypeException, IllegalArgumentException { for (CitationEntry entry : list) { Optional pageInfo = entry.getPageInfo(); if (entry.pageInfoChanged() && pageInfo.isPresent()) { @@ -180,7 +179,6 @@ class SingleCitationDialog { private final JButton cancelButton = new JButton(Localization.lang("Cancel")); private final CitationEntry entry; - public SingleCitationDialog(CitationEntry citEntry) { this.entry = citEntry; pageInfo.setText(entry.getPageInfo().orElse("")); @@ -188,7 +186,7 @@ public SingleCitationDialog(CitationEntry citEntry) { singleCiteDialog = new JDialog(CitationManager.this.diag, Localization.lang("Citation"), true); FormBuilder builder = FormBuilder.create() - .layout(new FormLayout("left:pref, 4dlu, fill:150dlu:grow", "pref, 4dlu, pref")); + .layout(new FormLayout("left:pref, 4dlu, fill:150dlu:grow", "pref, 4dlu, pref")); builder.add(entry.getContext()).xyw(1, 1, 3); builder.add(Localization.lang("Extra information (e.g. page number)")).xy(1, 3); builder.add(pageInfo).xy(3, 3); @@ -222,8 +220,7 @@ public void actionPerformed(ActionEvent actionEvent) { }; cancelButton.addActionListener(cancelAction); - builder.getPanel().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put - (Globals.getKeyPrefs().getKey(KeyBinding.CLOSE), "close"); + builder.getPanel().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(Globals.getKeyPrefs().getKey(KeyBinding.CLOSE), "close"); builder.getPanel().getActionMap().put("close", cancelAction); } diff --git a/src/main/java/org/jabref/gui/openoffice/ManageCitationsDialogView.java b/src/main/java/org/jabref/gui/openoffice/ManageCitationsDialogView.java index a7f07a086bd..786024b574b 100644 --- a/src/main/java/org/jabref/gui/openoffice/ManageCitationsDialogView.java +++ b/src/main/java/org/jabref/gui/openoffice/ManageCitationsDialogView.java @@ -2,6 +2,7 @@ import javafx.fxml.FXML; import javafx.scene.control.TableColumn; +import javafx.scene.control.TableColumn.CellEditEvent; import javafx.scene.control.TableView; import org.jabref.gui.DialogService; @@ -40,6 +41,10 @@ private void initialize() throws NoSuchElementException, WrappedTargetException, colCitation.setCellValueFactory(cellData -> cellData.getValue().citationProperty()); colExtraInfo.setCellValueFactory(cellData -> cellData.getValue().extraInformationProperty()); + colExtraInfo.setEditable(true); + colExtraInfo.setOnEditCommit((CellEditEvent cell) -> { + cell.getRowValue().setExtraInfo(cell.getNewValue()); + }); } } diff --git a/src/main/java/org/jabref/gui/openoffice/ManageCitationsDialogViewModel.java b/src/main/java/org/jabref/gui/openoffice/ManageCitationsDialogViewModel.java index 214598ab897..8eaf8dd9865 100644 --- a/src/main/java/org/jabref/gui/openoffice/ManageCitationsDialogViewModel.java +++ b/src/main/java/org/jabref/gui/openoffice/ManageCitationsDialogViewModel.java @@ -2,6 +2,10 @@ import java.util.List; +import javafx.beans.property.ListProperty; +import javafx.beans.property.SimpleListProperty; +import javafx.collections.FXCollections; + import org.jabref.gui.DialogService; import org.jabref.logic.openoffice.CitationEntry; @@ -12,12 +16,15 @@ public class ManageCitationsDialogViewModel { + private final ListProperty citations = new SimpleListProperty<>(FXCollections.observableArrayList()); + public ManageCitationsDialogViewModel(OOBibBase ooBase, DialogService dialogService) throws NoSuchElementException, WrappedTargetException, UnknownPropertyException { + XNameAccess nameAccess = ooBase.getReferenceMarks(); List names = ooBase.getJabRefReferenceMarks(nameAccess); for (String name : names) { new CitationEntry(name, - "..." + ooBase.getCitationContext(nameAccess, name, 30, 30, true) + "...", + "..." + ooBase.getCitationContext(nameAccess, name, 30, 30, true) + "...", ooBase.getCustomProperty(name)); } } diff --git a/src/main/java/org/jabref/gui/openoffice/ManageCitationsItemViewModel.java b/src/main/java/org/jabref/gui/openoffice/ManageCitationsItemViewModel.java index 3dc9e17253e..7bd88bf5d42 100644 --- a/src/main/java/org/jabref/gui/openoffice/ManageCitationsItemViewModel.java +++ b/src/main/java/org/jabref/gui/openoffice/ManageCitationsItemViewModel.java @@ -3,10 +3,27 @@ import javafx.beans.property.SimpleStringProperty; import javafx.beans.property.StringProperty; +import org.jabref.logic.openoffice.CitationEntry; + public class ManageCitationsItemViewModel { private final StringProperty citation = new SimpleStringProperty(""); private final StringProperty extraInformation = new SimpleStringProperty(""); + private final String refMarkName; + + public ManageCitationsItemViewModel(String refMarkName, String citation, String extraInfo) { + this.refMarkName = refMarkName; + this.citation.setValue(citation); + this.extraInformation.setValue(extraInfo); + } + + public ManageCitationsItemViewModel fromCitationEntry(CitationEntry citationEntry) { + return new ManageCitationsItemViewModel(citationEntry.getRefMarkName(), citationEntry.getContext(), citationEntry.getPageInfo().orElse("")); + } + + public CitationEntry toCitationEntry() { + return new CitationEntry(refMarkName, citation.getValue(), extraInformation.getValue()); + } public StringProperty citationProperty() { return citation; @@ -16,4 +33,8 @@ public StringProperty extraInformationProperty() { return extraInformation; } + public void setExtraInfo(String extraInfo) { + extraInformation.setValue(extraInfo); + } + } diff --git a/src/main/java/org/jabref/logic/openoffice/CitationEntry.java b/src/main/java/org/jabref/logic/openoffice/CitationEntry.java index b2273cd7aaa..de0f9dcc7d3 100644 --- a/src/main/java/org/jabref/logic/openoffice/CitationEntry.java +++ b/src/main/java/org/jabref/logic/openoffice/CitationEntry.java @@ -1,5 +1,6 @@ package org.jabref.logic.openoffice; +import java.util.Objects; import java.util.Optional; public class CitationEntry implements Comparable { @@ -59,14 +60,14 @@ public boolean equals(Object o) { } if (o instanceof CitationEntry) { CitationEntry other = (CitationEntry) o; - return this.refMarkName.equals(other.refMarkName); + return Objects.equals(this.refMarkName, other.refMarkName); } return false; } @Override public int hashCode() { - return this.refMarkName.hashCode(); + return Objects.hash(refMarkName); } public String getContext() {