diff --git a/diylc/diylc-core/src/org/diylc/presenter/update.xml b/diylc/diylc-core/src/org/diylc/presenter/update.xml
index b0b182f5..44bf0a97 100644
--- a/diylc/diylc-core/src/org/diylc/presenter/update.xml
+++ b/diylc/diylc-core/src/org/diylc/presenter/update.xml
@@ -3366,6 +3366,10 @@
NEW_FEATURE
Added 'Neutrik Jack' component based on Neutrik NMJx series. Mono/Stereo and PCB/Panel mount options are available
+
+ NEW_FEATURE
+ Analyze fonts in the background to identify ones that are causing slowness when editing 'Label' components and skip font preview for them to optimize performance
+
IMPROVEMENT
Improved performance of the application when using dashed and dotted style for 'Hookup Wire' component
diff --git a/diylc/diylc-swing/lib/swing-framework.jar b/diylc/diylc-swing/lib/swing-framework.jar
index 4d035652..5c5c54e9 100644
Binary files a/diylc/diylc-swing/lib/swing-framework.jar and b/diylc/diylc-swing/lib/swing-framework.jar differ
diff --git a/diylc/diylc-swing/src/org/diylc/DIYLCStarter.java b/diylc/diylc-swing/src/org/diylc/DIYLCStarter.java
index 2e1b397f..44d490fa 100644
--- a/diylc/diylc-swing/src/org/diylc/DIYLCStarter.java
+++ b/diylc/diylc-swing/src/org/diylc/DIYLCStarter.java
@@ -17,11 +17,7 @@
*/
package org.diylc;
-import java.awt.Font;
-import java.awt.FontFormatException;
-import java.awt.GraphicsEnvironment;
import java.io.File;
-import java.io.IOException;
import java.lang.reflect.Field;
import java.net.URL;
import java.util.List;
@@ -29,7 +25,6 @@ import java.util.Properties;
import javax.activity.InvalidActivityException;
import javax.swing.JOptionPane;
-import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
@@ -45,8 +40,7 @@ import org.diylc.presenter.Presenter;
import org.diylc.serialization.ProjectFileManager;
import org.diylc.swing.gui.MainFrame;
import org.diylc.swing.gui.TemplateDialog;
-import org.diylc.swingframework.FontChooserComboBox;
-import org.diylc.utils.ResourceLoader;
+import org.diylc.swingframework.fonts.FontOptimizer;
import com.apple.eawt.AppEvent;
import com.apple.eawt.Application;
@@ -149,34 +143,10 @@ public class DIYLCStarter {
@Override
public void run() {
- LOG.debug("Starting font pre-loading");
-
- File[] fonts = ResourceLoader.getFiles("fonts");
-
- if (fonts != null)
- for (int i = 0; i < fonts.length; i++) {
- try {
- LOG.info("Dynamically loading font: " + fonts[i].getName());
- Font customFont =
- Font.createFont(Font.TRUETYPE_FONT, new File(fonts[i].getAbsolutePath()))
- .deriveFont(12f);
- GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
- // register the font
- ge.registerFont(customFont);
- } catch (IOException e) {
- LOG.error("Could not load font", e);
- } catch (FontFormatException e) {
- LOG.error("Font format error", e);
- }
- }
-
- FontChooserComboBox box = new FontChooserComboBox();
- box.getPreferredSize();
- JPanel p = new JPanel();
- box.paint(p.getGraphics());
- LOG.debug("Finished font pre-loading");
+ FontOptimizer.run(ConfigurationManager.getInstance());
}
});
+ fontThread.setPriority(Thread.MIN_PRIORITY);
fontThread.start();
String val = System.getProperty(SCRIPT_RUN);
diff --git a/diylc/diylc-swing/src/org/diylc/swing/gui/editor/FontEditor.java b/diylc/diylc-swing/src/org/diylc/swing/gui/editor/FontEditor.java
index 37195844..eeadd02a 100644
--- a/diylc/diylc-swing/src/org/diylc/swing/gui/editor/FontEditor.java
+++ b/diylc/diylc-swing/src/org/diylc/swing/gui/editor/FontEditor.java
@@ -1,6 +1,6 @@
/*
- DIY Layout Creator (DIYLC).
+O DIY Layout Creator (DIYLC).
Copyright (c) 2009-2018 held jointly by the individual authors.
This file is part of DIYLC.
@@ -21,16 +21,16 @@
*/
package org.diylc.swing.gui.editor;
-import java.awt.Color;
-import java.awt.Font;
-import java.awt.event.ItemEvent;
-import java.awt.event.ItemListener;
-
-import javax.swing.BorderFactory;
-import javax.swing.JTextField;
-
-import org.diylc.common.PropertyWrapper;
-import org.diylc.swingframework.FontChooserComboBox;
+import java.awt.Color;
+import java.awt.Font;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
+
+import javax.swing.BorderFactory;
+import javax.swing.JTextField;
+
+import org.diylc.common.PropertyWrapper;
+import org.diylc.swingframework.fonts.FontChooserComboBox;
import org.diylc.utils.Constants;
public class FontEditor extends FontChooserComboBox {