Skip to content

Commit

Permalink
workaround for issue JabRef#5245, added custom Factory class
Browse files Browse the repository at this point in the history
  • Loading branch information
r0light committed Aug 29, 2019
1 parent 78f7cf4 commit ecdeaed
Show file tree
Hide file tree
Showing 5 changed files with 60 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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<Void> {

Expand Down Expand Up @@ -48,7 +48,7 @@ private void setupTable() {
colFile.setCellFactory(new ValueTableCellFactory<CopyFilesResultItemViewModel, String>().withText(item -> item).withTooltip(item -> item));
colStatus.setCellFactory(new ValueTableCellFactory<CopyFilesResultItemViewModel, MaterialDesignIcon>().withGraphic(item -> {

Text icon = MaterialDesignIconFactory.get().createIcon(item);
Text icon = JabRefMaterialDesignIconFactory.get().createIcon(item);
if (item == MaterialDesignIcon.CHECK) {
icon.setFill(Color.GREEN);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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 {

Expand Down Expand Up @@ -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());
Expand Down
1 change: 1 addition & 0 deletions src/main/java/org/jabref/gui/icon/IconTheme.java
Original file line number Diff line number Diff line change
Expand Up @@ -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 */,
Expand Down
Original file line number Diff line number Diff line change
@@ -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;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down Expand Up @@ -57,7 +57,7 @@ public ViewModelListCellFactory<T> withIcon(Callback<T, GlyphIcons> toIcon) {
this.toGraphic = viewModel -> {
GlyphIcons icon = toIcon.call(viewModel);
if (icon != null) {
return MaterialDesignIconFactory.get().createIcon(icon);
return JabRefMaterialDesignIconFactory.get().createIcon(icon);
}
return null;
};
Expand All @@ -66,7 +66,7 @@ public ViewModelListCellFactory<T> withIcon(Callback<T, GlyphIcons> toIcon) {

public ViewModelListCellFactory<T> withIcon(Callback<T, GlyphIcons> toIcon, Callback<T, Paint> 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;
};
Expand Down

0 comments on commit ecdeaed

Please sign in to comment.