From 78f7cf4595f125eb465f19626f325f3a25caa6fc Mon Sep 17 00:00:00 2001 From: Robin Lichtenthaeler Date: Thu, 29 Aug 2019 11:26:01 +0200 Subject: [PATCH 1/5] adjusted gitignore to properly match icon classes --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 0dc966d62cd..736fbd75885 100644 --- a/.gitignore +++ b/.gitignore @@ -350,4 +350,4 @@ lib/ojdbc.jar !/buildSrc/src/main/groovy/org/jabref/build # do not ignore JabRef icons (they are ignored by the macos setting above) -!gui/icon/**/* +!src/main/java/org/jabref/gui/icon From ecdeaedbd2dfc8896cf557c243bd34c020e780bd Mon Sep 17 00:00:00 2001 From: Robin Lichtenthaeler Date: Thu, 29 Aug 2019 11:26:53 +0200 Subject: [PATCH 2/5] workaround for issue #5245, added custom Factory class --- .../gui/copyfiles/CopyFilesDialogView.java | 4 +- .../gui/fieldeditors/LinkedFilesEditor.java | 6 +-- .../java/org/jabref/gui/icon/IconTheme.java | 1 + .../icon/JabRefMaterialDesignIconFactory.java | 51 +++++++++++++++++++ .../gui/util/ViewModelListCellFactory.java | 6 +-- 5 files changed, 60 insertions(+), 8 deletions(-) create mode 100644 src/main/java/org/jabref/gui/icon/JabRefMaterialDesignIconFactory.java diff --git a/src/main/java/org/jabref/gui/copyfiles/CopyFilesDialogView.java b/src/main/java/org/jabref/gui/copyfiles/CopyFilesDialogView.java index 52f46bf22d3..a0b5cc53d57 100644 --- a/src/main/java/org/jabref/gui/copyfiles/CopyFilesDialogView.java +++ b/src/main/java/org/jabref/gui/copyfiles/CopyFilesDialogView.java @@ -7,13 +7,13 @@ import javafx.scene.paint.Color; import javafx.scene.text.Text; +import org.jabref.gui.icon.JabRefMaterialDesignIconFactory; import org.jabref.gui.util.BaseDialog; import org.jabref.gui.util.ValueTableCellFactory; import org.jabref.logic.l10n.Localization; import com.airhacks.afterburner.views.ViewLoader; import de.jensd.fx.glyphs.materialdesignicons.MaterialDesignIcon; -import de.jensd.fx.glyphs.materialdesignicons.utils.MaterialDesignIconFactory; public class CopyFilesDialogView extends BaseDialog { @@ -48,7 +48,7 @@ private void setupTable() { colFile.setCellFactory(new ValueTableCellFactory().withText(item -> item).withTooltip(item -> item)); colStatus.setCellFactory(new ValueTableCellFactory().withGraphic(item -> { - Text icon = MaterialDesignIconFactory.get().createIcon(item); + Text icon = JabRefMaterialDesignIconFactory.get().createIcon(item); if (item == MaterialDesignIcon.CHECK) { icon.setFill(Color.GREEN); } diff --git a/src/main/java/org/jabref/gui/fieldeditors/LinkedFilesEditor.java b/src/main/java/org/jabref/gui/fieldeditors/LinkedFilesEditor.java index 725c206ffa6..ddd420367b3 100644 --- a/src/main/java/org/jabref/gui/fieldeditors/LinkedFilesEditor.java +++ b/src/main/java/org/jabref/gui/fieldeditors/LinkedFilesEditor.java @@ -30,6 +30,7 @@ import org.jabref.gui.DragAndDropDataFormats; import org.jabref.gui.autocompleter.AutoCompleteSuggestionProvider; import org.jabref.gui.copyfiles.CopySingleFileAction; +import org.jabref.gui.icon.JabRefMaterialDesignIconFactory; import org.jabref.gui.keyboard.KeyBinding; import org.jabref.gui.util.TaskExecutor; import org.jabref.gui.util.ViewModelListCellFactory; @@ -43,7 +44,6 @@ import com.airhacks.afterburner.views.ViewLoader; import de.jensd.fx.glyphs.materialdesignicons.MaterialDesignIcon; -import de.jensd.fx.glyphs.materialdesignicons.utils.MaterialDesignIconFactory; public class LinkedFilesEditor extends HBox implements FieldEditorFX { @@ -142,13 +142,13 @@ private static Node createFileDisplay(LinkedFileViewModel linkedFile) { info.setStyle("-fx-padding: 0.5em 0 0.5em 0;"); // To align with buttons below which also have 0.5em padding info.getChildren().setAll(icon, link, desc, progressIndicator); - Button acceptAutoLinkedFile = MaterialDesignIconFactory.get().createIconButton(MaterialDesignIcon.BRIEFCASE_CHECK); + Button acceptAutoLinkedFile = JabRefMaterialDesignIconFactory.get().createIconButton(MaterialDesignIcon.BRIEFCASE_CHECK); acceptAutoLinkedFile.setTooltip(new Tooltip(Localization.lang("This file was found automatically. Do you want to link it to this entry?"))); acceptAutoLinkedFile.visibleProperty().bind(linkedFile.isAutomaticallyFoundProperty()); acceptAutoLinkedFile.setOnAction(event -> linkedFile.acceptAsLinked()); acceptAutoLinkedFile.getStyleClass().setAll("icon-button"); - Button writeXMPMetadata = MaterialDesignIconFactory.get().createIconButton(MaterialDesignIcon.IMPORT); + Button writeXMPMetadata = JabRefMaterialDesignIconFactory.get().createIconButton(MaterialDesignIcon.IMPORT); writeXMPMetadata.setTooltip(new Tooltip(Localization.lang("Write BibTeXEntry as XMP-metadata to PDF."))); writeXMPMetadata.visibleProperty().bind(linkedFile.canWriteXMPMetadataProperty()); writeXMPMetadata.setOnAction(event -> linkedFile.writeXMPMetadata()); diff --git a/src/main/java/org/jabref/gui/icon/IconTheme.java b/src/main/java/org/jabref/gui/icon/IconTheme.java index 131292628cf..44a54608fe3 100644 --- a/src/main/java/org/jabref/gui/icon/IconTheme.java +++ b/src/main/java/org/jabref/gui/icon/IconTheme.java @@ -209,6 +209,7 @@ public enum JabRefIcons implements JabRefIcon { EXPORT_TO_CLIPBOARD(MaterialDesignIcon.CLIPBOARD_ARROW_LEFT) /*css: clipboard-arrow-left */, ATTACH_FILE(MaterialDesignIcon.PAPERCLIP) /*css: paperclip*/, AUTO_FILE_LINK(MaterialDesignIcon.FILE_FIND) /*css: file-find */, + AUTO_LINKED_FILE(MaterialDesignIcon.BRIEFCASE_CHECK) /*css: briefcase-check */, QUALITY_ASSURED(MaterialDesignIcon.CERTIFICATE), /*css: certificate */ QUALITY(MaterialDesignIcon.CERTIFICATE), /*css: certificate */ OPEN(MaterialDesignIcon.FOLDER_OUTLINE) /*css: folder */, diff --git a/src/main/java/org/jabref/gui/icon/JabRefMaterialDesignIconFactory.java b/src/main/java/org/jabref/gui/icon/JabRefMaterialDesignIconFactory.java new file mode 100644 index 00000000000..22d0047ac8d --- /dev/null +++ b/src/main/java/org/jabref/gui/icon/JabRefMaterialDesignIconFactory.java @@ -0,0 +1,51 @@ +package org.jabref.gui.icon; + +import javafx.scene.control.Button; +import javafx.scene.text.Text; + +import de.jensd.fx.glyphs.GlyphIcon; +import de.jensd.fx.glyphs.GlyphIcons; +import de.jensd.fx.glyphs.materialdesignicons.MaterialDesignIcon; +import de.jensd.fx.glyphs.materialdesignicons.MaterialDesignIconView; + +/** + Custom Factory class as a workaround for using de.jensd.fx.glyphs.materialdesignicons.utils.MaterialDesignIconFactory because of the following issue: https://github.com/JabRef/jabref/issues/5245 + If fixed, use de.jensd.fx.glyphs.materialdesignicons.utils.MaterialDesignIconFactory again and delete this class + */ +public class JabRefMaterialDesignIconFactory { + + private static JabRefMaterialDesignIconFactory me; + + private JabRefMaterialDesignIconFactory() { } + + public static JabRefMaterialDesignIconFactory get() { + if (me == null) { + me = new JabRefMaterialDesignIconFactory(); + } + return me; + } + + public Button createIconButton(GlyphIcons icon) { + Text label = createIcon(icon, GlyphIcon.DEFAULT_FONT_SIZE); + Button button = new Button(); + button.setGraphic(label); + return button; + } + + public Text createIcon(GlyphIcons icon) { + return createIcon(icon, GlyphIcon.DEFAULT_FONT_SIZE); + } + + public Text createIcon(GlyphIcons icon, String iconSize) { + if (icon instanceof MaterialDesignIcon) { + // workaround for not using MaterialDesignIconFactory + return new MaterialDesignIconView((MaterialDesignIcon) icon, iconSize); + } else { + // default case copied from GlyphsFactory + Text text = new Text(icon.unicode()); + text.getStyleClass().add("glyph-icon"); + text.setStyle(String.format("-fx-font-family: %s; -fx-font-size: %s;", icon.fontFamily(), iconSize)); + return text; + } + } +} diff --git a/src/main/java/org/jabref/gui/util/ViewModelListCellFactory.java b/src/main/java/org/jabref/gui/util/ViewModelListCellFactory.java index 87b9120b69b..e73d3beff79 100644 --- a/src/main/java/org/jabref/gui/util/ViewModelListCellFactory.java +++ b/src/main/java/org/jabref/gui/util/ViewModelListCellFactory.java @@ -18,10 +18,10 @@ import javafx.scene.text.Text; import javafx.util.Callback; +import org.jabref.gui.icon.JabRefMaterialDesignIconFactory; import org.jabref.model.strings.StringUtil; import de.jensd.fx.glyphs.GlyphIcons; -import de.jensd.fx.glyphs.materialdesignicons.utils.MaterialDesignIconFactory; /** * Constructs a {@link ListCell} based on the view model of the row and a bunch of specified converter methods. @@ -57,7 +57,7 @@ public ViewModelListCellFactory withIcon(Callback toIcon) { this.toGraphic = viewModel -> { GlyphIcons icon = toIcon.call(viewModel); if (icon != null) { - return MaterialDesignIconFactory.get().createIcon(icon); + return JabRefMaterialDesignIconFactory.get().createIcon(icon); } return null; }; @@ -66,7 +66,7 @@ public ViewModelListCellFactory withIcon(Callback toIcon) { public ViewModelListCellFactory withIcon(Callback toIcon, Callback toColor) { this.toGraphic = viewModel -> { - Text graphic = MaterialDesignIconFactory.get().createIcon(toIcon.call(viewModel)); + Text graphic = JabRefMaterialDesignIconFactory.get().createIcon(toIcon.call(viewModel)); graphic.setFill(toColor.call(viewModel)); return graphic; }; From 8aaa3c94016b143ab027a0b19546133a25d2dba1 Mon Sep 17 00:00:00 2001 From: Robin Lichtenthaeler Date: Thu, 29 Aug 2019 11:42:35 +0200 Subject: [PATCH 3/5] added all used icons to IconTheme --- src/main/java/org/jabref/gui/icon/IconTheme.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/jabref/gui/icon/IconTheme.java b/src/main/java/org/jabref/gui/icon/IconTheme.java index 44a54608fe3..4d46326ff0d 100644 --- a/src/main/java/org/jabref/gui/icon/IconTheme.java +++ b/src/main/java/org/jabref/gui/icon/IconTheme.java @@ -252,6 +252,7 @@ public enum JabRefIcons implements JabRefIcon { FIND_DUPLICATES(MaterialDesignIcon.CODE_EQUAL), /*css: code-equal */ CONNECT_DB(MaterialDesignIcon.CLOUD_UPLOAD), /*cloud-upload*/ SUCCESS(MaterialDesignIcon.CHECK_CIRCLE), + CHECK(MaterialDesignIcon.CHECK) /*css: check */, WARNING(MaterialDesignIcon.ALERT), ERROR(MaterialDesignIcon.ALERT_CIRCLE), CASE_SENSITIVE(MaterialDesignIcon.ALPHABETICAL), /* css: mdi-alphabetical */ @@ -293,7 +294,8 @@ public enum JabRefIcons implements JabRefIcon { LATEX_FILE(MaterialDesignIcon.FILE_OUTLINE), LATEX_COMMENT(MaterialDesignIcon.COMMENT_TEXT_OUTLINE), LATEX_LINE(MaterialDesignIcon.FORMAT_LINE_SPACING), - PASSWORD_REVEALED(MaterialDesignIcon.EYE); + PASSWORD_REVEALED(MaterialDesignIcon.EYE), + ALL_ENTRIES_GROUP_DEFAULT_ICON(MaterialDesignIcon.DATABASE); private final JabRefIcon icon; From 2b760cddf53cceae54fd149774226461f5290daa Mon Sep 17 00:00:00 2001 From: Robin Lichtenthaeler Date: Thu, 29 Aug 2019 15:17:26 +0200 Subject: [PATCH 4/5] capsulated all usages of MaterialDesignIcon in gui/icons and removed IconFactory again --- .../gui/copyfiles/CopyFilesDialogView.java | 21 ++++---- .../CopyFilesResultItemViewModel.java | 9 ++-- .../gui/fieldeditors/LinkedFilesEditor.java | 7 ++- .../jabref/gui/groups/GroupNodeViewModel.java | 3 +- .../java/org/jabref/gui/icon/IconTheme.java | 6 +-- .../icon/JabRefMaterialDesignIconFactory.java | 51 ------------------- .../gui/util/ViewModelListCellFactory.java | 20 +++----- .../logic/groups/DefaultGroupsFactory.java | 7 +-- 8 files changed, 30 insertions(+), 94 deletions(-) delete mode 100644 src/main/java/org/jabref/gui/icon/JabRefMaterialDesignIconFactory.java diff --git a/src/main/java/org/jabref/gui/copyfiles/CopyFilesDialogView.java b/src/main/java/org/jabref/gui/copyfiles/CopyFilesDialogView.java index a0b5cc53d57..e8d6d20f859 100644 --- a/src/main/java/org/jabref/gui/copyfiles/CopyFilesDialogView.java +++ b/src/main/java/org/jabref/gui/copyfiles/CopyFilesDialogView.java @@ -5,20 +5,19 @@ import javafx.scene.control.TableColumn; import javafx.scene.control.TableView; import javafx.scene.paint.Color; -import javafx.scene.text.Text; -import org.jabref.gui.icon.JabRefMaterialDesignIconFactory; +import org.jabref.gui.icon.IconTheme; +import org.jabref.gui.icon.JabRefIcon; import org.jabref.gui.util.BaseDialog; import org.jabref.gui.util.ValueTableCellFactory; import org.jabref.logic.l10n.Localization; import com.airhacks.afterburner.views.ViewLoader; -import de.jensd.fx.glyphs.materialdesignicons.MaterialDesignIcon; public class CopyFilesDialogView extends BaseDialog { @FXML private TableView tvResult; - @FXML private TableColumn colStatus; + @FXML private TableColumn colStatus; @FXML private TableColumn colMessage; @FXML private TableColumn colFile; private final CopyFilesDialogViewModel viewModel; @@ -46,16 +45,14 @@ private void setupTable() { colStatus.setCellValueFactory(cellData -> cellData.getValue().getIcon()); colFile.setCellFactory(new ValueTableCellFactory().withText(item -> item).withTooltip(item -> item)); - colStatus.setCellFactory(new ValueTableCellFactory().withGraphic(item -> { - - Text icon = JabRefMaterialDesignIconFactory.get().createIcon(item); - if (item == MaterialDesignIcon.CHECK) { - icon.setFill(Color.GREEN); + colStatus.setCellFactory(new ValueTableCellFactory().withGraphic(item -> { + if (item == IconTheme.JabRefIcons.CHECK) { + item = item.withColor(Color.GREEN); } - if (item == MaterialDesignIcon.ALERT) { - icon.setFill(Color.RED); + if (item == IconTheme.JabRefIcons.WARNING) { + item = item.withColor(Color.RED); } - return icon; + return item.getGraphicNode(); })); tvResult.setItems(viewModel.copyFilesResultListProperty()); diff --git a/src/main/java/org/jabref/gui/copyfiles/CopyFilesResultItemViewModel.java b/src/main/java/org/jabref/gui/copyfiles/CopyFilesResultItemViewModel.java index 12fce765c84..e48f0685112 100644 --- a/src/main/java/org/jabref/gui/copyfiles/CopyFilesResultItemViewModel.java +++ b/src/main/java/org/jabref/gui/copyfiles/CopyFilesResultItemViewModel.java @@ -7,19 +7,20 @@ import javafx.beans.property.SimpleStringProperty; import javafx.beans.property.StringProperty; -import de.jensd.fx.glyphs.materialdesignicons.MaterialDesignIcon; +import org.jabref.gui.icon.IconTheme; +import org.jabref.gui.icon.JabRefIcon; public class CopyFilesResultItemViewModel { private final StringProperty file = new SimpleStringProperty(""); - private final ObjectProperty icon = new SimpleObjectProperty<>(MaterialDesignIcon.ALERT); + private final ObjectProperty icon = new SimpleObjectProperty<>(IconTheme.JabRefIcons.WARNING); private final StringProperty message = new SimpleStringProperty(""); public CopyFilesResultItemViewModel(Path file, boolean success, String message) { this.file.setValue(file.toString()); this.message.setValue(message); if (success) { - this.icon.setValue(MaterialDesignIcon.CHECK); + this.icon.setValue(IconTheme.JabRefIcons.CHECK); } } @@ -31,7 +32,7 @@ public StringProperty getMessage() { return message; } - public ObjectProperty getIcon() { + public ObjectProperty getIcon() { return icon; } diff --git a/src/main/java/org/jabref/gui/fieldeditors/LinkedFilesEditor.java b/src/main/java/org/jabref/gui/fieldeditors/LinkedFilesEditor.java index ddd420367b3..ccbf0b75d54 100644 --- a/src/main/java/org/jabref/gui/fieldeditors/LinkedFilesEditor.java +++ b/src/main/java/org/jabref/gui/fieldeditors/LinkedFilesEditor.java @@ -30,7 +30,7 @@ import org.jabref.gui.DragAndDropDataFormats; import org.jabref.gui.autocompleter.AutoCompleteSuggestionProvider; import org.jabref.gui.copyfiles.CopySingleFileAction; -import org.jabref.gui.icon.JabRefMaterialDesignIconFactory; +import org.jabref.gui.icon.IconTheme; import org.jabref.gui.keyboard.KeyBinding; import org.jabref.gui.util.TaskExecutor; import org.jabref.gui.util.ViewModelListCellFactory; @@ -43,7 +43,6 @@ import org.jabref.preferences.JabRefPreferences; import com.airhacks.afterburner.views.ViewLoader; -import de.jensd.fx.glyphs.materialdesignicons.MaterialDesignIcon; public class LinkedFilesEditor extends HBox implements FieldEditorFX { @@ -142,13 +141,13 @@ private static Node createFileDisplay(LinkedFileViewModel linkedFile) { info.setStyle("-fx-padding: 0.5em 0 0.5em 0;"); // To align with buttons below which also have 0.5em padding info.getChildren().setAll(icon, link, desc, progressIndicator); - Button acceptAutoLinkedFile = JabRefMaterialDesignIconFactory.get().createIconButton(MaterialDesignIcon.BRIEFCASE_CHECK); + Button acceptAutoLinkedFile = IconTheme.JabRefIcons.AUTO_LINKED_FILE.asButton(); acceptAutoLinkedFile.setTooltip(new Tooltip(Localization.lang("This file was found automatically. Do you want to link it to this entry?"))); acceptAutoLinkedFile.visibleProperty().bind(linkedFile.isAutomaticallyFoundProperty()); acceptAutoLinkedFile.setOnAction(event -> linkedFile.acceptAsLinked()); acceptAutoLinkedFile.getStyleClass().setAll("icon-button"); - Button writeXMPMetadata = JabRefMaterialDesignIconFactory.get().createIconButton(MaterialDesignIcon.IMPORT); + Button writeXMPMetadata = IconTheme.JabRefIcons.IMPORT.asButton(); writeXMPMetadata.setTooltip(new Tooltip(Localization.lang("Write BibTeXEntry as XMP-metadata to PDF."))); writeXMPMetadata.visibleProperty().bind(linkedFile.canWriteXMPMetadataProperty()); writeXMPMetadata.setOnAction(event -> linkedFile.writeXMPMetadata()); diff --git a/src/main/java/org/jabref/gui/groups/GroupNodeViewModel.java b/src/main/java/org/jabref/gui/groups/GroupNodeViewModel.java index cb17247dd0c..bd44fb53d33 100644 --- a/src/main/java/org/jabref/gui/groups/GroupNodeViewModel.java +++ b/src/main/java/org/jabref/gui/groups/GroupNodeViewModel.java @@ -37,7 +37,6 @@ import org.jabref.model.strings.StringUtil; import com.google.common.base.Enums; -import de.jensd.fx.glyphs.materialdesignicons.MaterialDesignIcon; import org.fxmisc.easybind.EasyBind; public class GroupNodeViewModel { @@ -200,7 +199,7 @@ private JabRefIcon createDefaultIcon() { } private Optional parseIcon(String iconCode) { - return Enums.getIfPresent(MaterialDesignIcon.class, iconCode.toUpperCase(Locale.ENGLISH)) + return Enums.getIfPresent(IconTheme.JabRefIcons.class, iconCode.toUpperCase(Locale.ENGLISH)) .toJavaUtil() .map(icon -> new InternalMaterialDesignIcon(getColor(), icon)); } diff --git a/src/main/java/org/jabref/gui/icon/IconTheme.java b/src/main/java/org/jabref/gui/icon/IconTheme.java index 4d46326ff0d..98b9a2074e8 100644 --- a/src/main/java/org/jabref/gui/icon/IconTheme.java +++ b/src/main/java/org/jabref/gui/icon/IconTheme.java @@ -18,7 +18,6 @@ import javafx.scene.image.Image; import javafx.scene.paint.Color; -import org.jabref.logic.groups.DefaultGroupsFactory; import org.jabref.preferences.JabRefPreferences; import de.jensd.fx.glyphs.GlyphIcons; @@ -265,7 +264,7 @@ public enum JabRefIcons implements JabRefIcon { DATE_PICKER(MaterialDesignIcon.CALENDAR), /* css: calendar */ DEFAULT_GROUP_ICON_COLORED(MaterialDesignIcon.PLAY), DEFAULT_GROUP_ICON(MaterialDesignIcon.LABEL_OUTLINE), - ALL_ENTRIES_GROUP_ICON(DefaultGroupsFactory.ALL_ENTRIES_GROUP_DEFAULT_ICON), + ALL_ENTRIES_GROUP_ICON(MaterialDesignIcon.DATABASE), IMPORT(MaterialDesignIcon.CALL_RECEIVED), EXPORT(MaterialDesignIcon.CALL_MADE), PREVIOUS_LEFT(MaterialDesignIcon.CHEVRON_LEFT), @@ -294,8 +293,7 @@ public enum JabRefIcons implements JabRefIcon { LATEX_FILE(MaterialDesignIcon.FILE_OUTLINE), LATEX_COMMENT(MaterialDesignIcon.COMMENT_TEXT_OUTLINE), LATEX_LINE(MaterialDesignIcon.FORMAT_LINE_SPACING), - PASSWORD_REVEALED(MaterialDesignIcon.EYE), - ALL_ENTRIES_GROUP_DEFAULT_ICON(MaterialDesignIcon.DATABASE); + PASSWORD_REVEALED(MaterialDesignIcon.EYE); private final JabRefIcon icon; diff --git a/src/main/java/org/jabref/gui/icon/JabRefMaterialDesignIconFactory.java b/src/main/java/org/jabref/gui/icon/JabRefMaterialDesignIconFactory.java deleted file mode 100644 index 22d0047ac8d..00000000000 --- a/src/main/java/org/jabref/gui/icon/JabRefMaterialDesignIconFactory.java +++ /dev/null @@ -1,51 +0,0 @@ -package org.jabref.gui.icon; - -import javafx.scene.control.Button; -import javafx.scene.text.Text; - -import de.jensd.fx.glyphs.GlyphIcon; -import de.jensd.fx.glyphs.GlyphIcons; -import de.jensd.fx.glyphs.materialdesignicons.MaterialDesignIcon; -import de.jensd.fx.glyphs.materialdesignicons.MaterialDesignIconView; - -/** - Custom Factory class as a workaround for using de.jensd.fx.glyphs.materialdesignicons.utils.MaterialDesignIconFactory because of the following issue: https://github.com/JabRef/jabref/issues/5245 - If fixed, use de.jensd.fx.glyphs.materialdesignicons.utils.MaterialDesignIconFactory again and delete this class - */ -public class JabRefMaterialDesignIconFactory { - - private static JabRefMaterialDesignIconFactory me; - - private JabRefMaterialDesignIconFactory() { } - - public static JabRefMaterialDesignIconFactory get() { - if (me == null) { - me = new JabRefMaterialDesignIconFactory(); - } - return me; - } - - public Button createIconButton(GlyphIcons icon) { - Text label = createIcon(icon, GlyphIcon.DEFAULT_FONT_SIZE); - Button button = new Button(); - button.setGraphic(label); - return button; - } - - public Text createIcon(GlyphIcons icon) { - return createIcon(icon, GlyphIcon.DEFAULT_FONT_SIZE); - } - - public Text createIcon(GlyphIcons icon, String iconSize) { - if (icon instanceof MaterialDesignIcon) { - // workaround for not using MaterialDesignIconFactory - return new MaterialDesignIconView((MaterialDesignIcon) icon, iconSize); - } else { - // default case copied from GlyphsFactory - Text text = new Text(icon.unicode()); - text.getStyleClass().add("glyph-icon"); - text.setStyle(String.format("-fx-font-family: %s; -fx-font-size: %s;", icon.fontFamily(), iconSize)); - return text; - } - } -} diff --git a/src/main/java/org/jabref/gui/util/ViewModelListCellFactory.java b/src/main/java/org/jabref/gui/util/ViewModelListCellFactory.java index e73d3beff79..c0ce703dee0 100644 --- a/src/main/java/org/jabref/gui/util/ViewModelListCellFactory.java +++ b/src/main/java/org/jabref/gui/util/ViewModelListCellFactory.java @@ -14,15 +14,12 @@ import javafx.scene.control.Tooltip; import javafx.scene.input.DragEvent; import javafx.scene.input.MouseEvent; -import javafx.scene.paint.Paint; -import javafx.scene.text.Text; +import javafx.scene.paint.Color; import javafx.util.Callback; -import org.jabref.gui.icon.JabRefMaterialDesignIconFactory; +import org.jabref.gui.icon.JabRefIcon; import org.jabref.model.strings.StringUtil; -import de.jensd.fx.glyphs.GlyphIcons; - /** * Constructs a {@link ListCell} based on the view model of the row and a bunch of specified converter methods. * @@ -53,22 +50,21 @@ public ViewModelListCellFactory withGraphic(Callback toGraphic) { return this; } - public ViewModelListCellFactory withIcon(Callback toIcon) { + public ViewModelListCellFactory withIcon(Callback toIcon) { this.toGraphic = viewModel -> { - GlyphIcons icon = toIcon.call(viewModel); + JabRefIcon icon = toIcon.call(viewModel); if (icon != null) { - return JabRefMaterialDesignIconFactory.get().createIcon(icon); + return icon.getGraphicNode(); } return null; }; return this; } - public ViewModelListCellFactory withIcon(Callback toIcon, Callback toColor) { + public ViewModelListCellFactory withIcon(Callback toIcon, Callback toColor) { this.toGraphic = viewModel -> { - Text graphic = JabRefMaterialDesignIconFactory.get().createIcon(toIcon.call(viewModel)); - graphic.setFill(toColor.call(viewModel)); - return graphic; + + return toIcon.call(viewModel).withColor(toColor.call(viewModel)).getGraphicNode(); }; return this; } diff --git a/src/main/java/org/jabref/logic/groups/DefaultGroupsFactory.java b/src/main/java/org/jabref/logic/groups/DefaultGroupsFactory.java index ef085adae08..525d716d20a 100644 --- a/src/main/java/org/jabref/logic/groups/DefaultGroupsFactory.java +++ b/src/main/java/org/jabref/logic/groups/DefaultGroupsFactory.java @@ -1,20 +1,17 @@ package org.jabref.logic.groups; +import org.jabref.gui.icon.IconTheme; import org.jabref.logic.l10n.Localization; import org.jabref.model.groups.AllEntriesGroup; -import de.jensd.fx.glyphs.materialdesignicons.MaterialDesignIcon; - public class DefaultGroupsFactory { - public static MaterialDesignIcon ALL_ENTRIES_GROUP_DEFAULT_ICON = MaterialDesignIcon.DATABASE; - private DefaultGroupsFactory() { } public static AllEntriesGroup getAllEntriesGroup() { AllEntriesGroup group = new AllEntriesGroup(Localization.lang("All entries")); - group.setIconName(ALL_ENTRIES_GROUP_DEFAULT_ICON.name()); + group.setIconName(IconTheme.JabRefIcons.ALL_ENTRIES_GROUP_ICON.name()); return group; } } From 047cbef3e5c1ec1ee20d1d11d231fd8c824f9179 Mon Sep 17 00:00:00 2001 From: Robin Lichtenthaeler Date: Thu, 29 Aug 2019 15:51:50 +0200 Subject: [PATCH 5/5] fixed dependency on gui and added archUnitTest --- .../java/org/jabref/logic/groups/DefaultGroupsFactory.java | 5 +++-- .../architecture/MainArchitectureTestsWithArchUnit.java | 7 ++++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/jabref/logic/groups/DefaultGroupsFactory.java b/src/main/java/org/jabref/logic/groups/DefaultGroupsFactory.java index 525d716d20a..f544aff90d7 100644 --- a/src/main/java/org/jabref/logic/groups/DefaultGroupsFactory.java +++ b/src/main/java/org/jabref/logic/groups/DefaultGroupsFactory.java @@ -1,17 +1,18 @@ package org.jabref.logic.groups; -import org.jabref.gui.icon.IconTheme; import org.jabref.logic.l10n.Localization; import org.jabref.model.groups.AllEntriesGroup; public class DefaultGroupsFactory { + private static String ALL_ENTRIES_GROUP_DEFAULT_ICON = "ALL_ENTRIES_GROUP_ICON"; + private DefaultGroupsFactory() { } public static AllEntriesGroup getAllEntriesGroup() { AllEntriesGroup group = new AllEntriesGroup(Localization.lang("All entries")); - group.setIconName(IconTheme.JabRefIcons.ALL_ENTRIES_GROUP_ICON.name()); + group.setIconName(ALL_ENTRIES_GROUP_DEFAULT_ICON); return group; } } diff --git a/src/test/java/org/jabref/architecture/MainArchitectureTestsWithArchUnit.java b/src/test/java/org/jabref/architecture/MainArchitectureTestsWithArchUnit.java index cd56a07e905..dc7308e77f4 100644 --- a/src/test/java/org/jabref/architecture/MainArchitectureTestsWithArchUnit.java +++ b/src/test/java/org/jabref/architecture/MainArchitectureTestsWithArchUnit.java @@ -41,7 +41,12 @@ public static void doNotUseJGoodies(JavaClasses classes) { public static void doNotUseGlazedLists(JavaClasses classes) { noClasses().should().accessClassesThat().resideInAPackage("ca.odell.glazedlists..").check(classes); } - + + @ArchTest + public static void doNotUseGlyphsDirectly(JavaClasses classes) { + noClasses().that().resideOutsideOfPackage("org.jabref.gui.icon").should().accessClassesThat().resideInAnyPackage("de.jensd.fx.glyphs", "de.jensd.fx.glyphs.materialdesignicons").check(classes); + } + //"Currently disabled as there is no alternative for the rest of classes who need awt" @ArchIgnore @ArchTest