Skip to content

Commit 3c4a3ef

Browse files
authored
Make it easier to create FXML dialogs (#3880)
* Extract swing dialog display to dialog service * Embed preference dialog in JavaFX window * Use new version of afterburner * Fix injection into controller classes * Fix build and code cleanup
1 parent 06d6736 commit 3c4a3ef

File tree

52 files changed

+1677
-1855
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+1677
-1855
lines changed

build.gradle

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ configurations {
8585
}
8686

8787
dependencies {
88+
// Include all jar-files in the 'lib' folder as dependencies
8889
compile fileTree(dir: 'lib', includes: ['*.jar'])
8990

9091
compile 'com.jgoodies:jgoodies-common:1.8.1'
@@ -123,7 +124,6 @@ dependencies {
123124
compile 'com.google.guava:guava:24.1-jre'
124125

125126
// JavaFX stuff
126-
compile 'com.airhacks:afterburner.fx:1.7.0'
127127
compile 'de.codecentric.centerdevice:javafxsvg:1.3.0'
128128
compile 'de.jensd:fontawesomefx-materialdesignfont:1.7.22-4'
129129
compile 'de.saxsys:mvvmfx-validation:1.7.0'
@@ -132,6 +132,7 @@ dependencies {
132132
compile 'org.fxmisc.flowless:flowless:0.6'
133133
compile 'org.fxmisc.richtext:richtextfx:0.8.2'
134134
compile 'com.sibvisions.external.jvxfx:dndtabpane:0.1'
135+
compile 'javax.inject:javax.inject:1'
135136

136137

137138
// Cannot be updated to 9.*.* until Jabref works with Java 9
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<root>
2+
<item name='javafx.scene.control.Dialog dialogPane'>
3+
<annotation name='javafx.fxml.FXML'/>
4+
</item>
5+
</root>

lib/afterburner.fx.jar

17.8 KB
Binary file not shown.

src/main/java/org/jabref/gui/AbstractController.java

Lines changed: 0 additions & 35 deletions
This file was deleted.

src/main/java/org/jabref/gui/AbstractDialogView.java

Lines changed: 0 additions & 16 deletions
This file was deleted.

src/main/java/org/jabref/gui/AbstractView.java

Lines changed: 0 additions & 50 deletions
This file was deleted.

src/main/java/org/jabref/gui/DefaultInjector.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,4 +59,14 @@ public <T> T instantiatePresenter(Class<T> clazz, Function<String, Object> injec
5959

6060
return Injector.instantiatePresenter(clazz, injectionContext);
6161
}
62+
63+
@Override
64+
public void injectMembers(Object instance, Function<String, Object> injectionContext) {
65+
LOGGER.debug("Inject into " + instance.getClass().getName());
66+
67+
// Use our own method to construct dependencies
68+
Injector.setInstanceSupplier(DefaultInjector::createDependency);
69+
70+
Injector.injectMembers(instance, injectionContext);
71+
}
6272
}

src/main/java/org/jabref/gui/actions/CleanupAction.java

Lines changed: 5 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,12 @@
44
import java.util.Optional;
55

66
import javax.swing.JOptionPane;
7-
import javax.swing.JScrollPane;
8-
9-
import javafx.embed.swing.SwingNode;
10-
import javafx.scene.control.ButtonType;
11-
import javafx.scene.control.DialogPane;
127

138
import org.jabref.Globals;
149
import org.jabref.gui.BasePanel;
1510
import org.jabref.gui.DialogService;
1611
import org.jabref.gui.JabRefFrame;
12+
import org.jabref.gui.cleanup.CleanupDialog;
1713
import org.jabref.gui.cleanup.CleanupPresetPanel;
1814
import org.jabref.gui.undo.NamedCompound;
1915
import org.jabref.gui.undo.UndoableFieldChange;
@@ -67,27 +63,14 @@ public void run() {
6763
if (canceled) {
6864
return;
6965
}
70-
CleanupPresetPanel presetPanel = new CleanupPresetPanel(panel.getBibDatabaseContext(),
71-
CleanupPreset.loadFromPreferences(preferences));
72-
73-
SwingNode node = new SwingNode();
74-
presetPanel.getScrollPane().setVisible(true);
75-
76-
JScrollPane scrollPane = presetPanel.getScrollPane();
77-
node.setContent(scrollPane);
78-
node.setVisible(true);
79-
80-
DialogPane pane = new DialogPane();
81-
pane.setContent(node);
82-
pane.setPrefSize(600, 600);
83-
84-
Optional<ButtonType> ok = dialogService.showCustomDialogAndWait(Localization.lang("Cleanup entries"), pane, ButtonType.OK, ButtonType.CANCEL);
66+
CleanupDialog cleanupDialog = new CleanupDialog(panel.getBibDatabaseContext(), CleanupPreset.loadFromPreferences(preferences));
8567

86-
if (!ok.isPresent() || ((ok.isPresent() && (ok.get() == ButtonType.CANCEL)))) {
68+
Optional<CleanupPreset> chosenPreset = cleanupDialog.showAndWait();
69+
if (!chosenPreset.isPresent()) {
8770
canceled = true;
8871
return;
8972
}
90-
CleanupPreset cleanupPreset = presetPanel.getCleanupPreset();
73+
CleanupPreset cleanupPreset = chosenPreset.get();
9174
cleanupPreset.storeInPreferences(preferences);
9275

9376
if (cleanupPreset.isRenamePDF() && Globals.prefs.getBoolean(JabRefPreferences.ASK_AUTO_NAMING_PDFS_AGAIN)) {

src/main/java/org/jabref/gui/actions/CopyFilesAction.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,8 @@ private void showDialog(List<CopyFilesResultItemViewModel> data) {
4747
dialogService.showInformationDialogAndWait(Localization.lang("Copy linked files to folder..."), Localization.lang("No linked files found for export."));
4848
return;
4949
}
50-
CopyFilesDialogView dlg = new CopyFilesDialogView(databaseContext, new CopyFilesResultListDependency(data));
51-
dlg.show();
50+
CopyFilesDialogView dialog = new CopyFilesDialogView(databaseContext, new CopyFilesResultListDependency(data));
51+
dialog.show();
5252
}
5353

5454
@Override

src/main/java/org/jabref/gui/actions/ShowPreferencesAction.java

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,12 @@ public ShowPreferencesAction(JabRefFrame jabRefFrame) {
1414

1515
@Override
1616
public void execute() {
17-
// output(Localization.lang("Opening preferences..."));
1817
if (prefsDialog == null) {
1918
prefsDialog = new PreferencesDialog(jabRefFrame);
20-
//prefsDialog.setLocationRelativeTo(JabRefFrame.this);
2119
} else {
2220
prefsDialog.setValues();
2321
}
2422

25-
prefsDialog.setVisible(true);
26-
//output("");
27-
23+
prefsDialog.show();
2824
}
29-
3025
}

0 commit comments

Comments
 (0)