diff --git a/diylc/diylc-core/lib/AppleJavaExtensions.jar b/diylc/diylc-core/lib/AppleJavaExtensions.jar deleted file mode 100644 index 6659a81c..00000000 Binary files a/diylc/diylc-core/lib/AppleJavaExtensions.jar and /dev/null differ diff --git a/diylc/diylc-core/lib/guava-31.1-jre.jar b/diylc/diylc-core/lib/guava-31.1-jre.jar deleted file mode 100644 index 16819229..00000000 Binary files a/diylc/diylc-core/lib/guava-31.1-jre.jar and /dev/null differ diff --git a/diylc/diylc-core/lib/jettison-1.0.1.jar b/diylc/diylc-core/lib/jettison-1.0.1.jar deleted file mode 100644 index fed929fd..00000000 Binary files a/diylc/diylc-core/lib/jettison-1.0.1.jar and /dev/null differ diff --git a/diylc/diylc-core/lib/junit-4.7.jar b/diylc/diylc-core/lib/junit-4.7.jar deleted file mode 100644 index 700ad695..00000000 Binary files a/diylc/diylc-core/lib/junit-4.7.jar and /dev/null differ diff --git a/diylc/diylc-core/lib/log4j-1.2.15.jar b/diylc/diylc-core/lib/log4j-1.2.15.jar deleted file mode 100644 index c930a6ab..00000000 Binary files a/diylc/diylc-core/lib/log4j-1.2.15.jar and /dev/null differ diff --git a/diylc/diylc-core/lib/xstream-1.4.19.jar b/diylc/diylc-core/lib/xstream-1.4.19.jar deleted file mode 100644 index 95d1c6a6..00000000 Binary files a/diylc/diylc-core/lib/xstream-1.4.19.jar and /dev/null differ diff --git a/diylc/diylc-core/pom.xml b/diylc/diylc-core/pom.xml index dea8719d..33097b3a 100644 --- a/diylc/diylc-core/pom.xml +++ b/diylc/diylc-core/pom.xml @@ -47,6 +47,16 @@ guava 31.1-jre + + org.codehaus.jettison + jettison + 1.5.4 + + + org.reflections + reflections + 0.10.2 + junit junit @@ -54,11 +64,6 @@ - - org.diylc.local - AppleJavaExtensions - 1.0 - org.diylc.local app-framework @@ -74,10 +79,5 @@ java-http-proxy 1.0 - - org.diylc.local - jettison-1.0.1 - 1.0 - diff --git a/diylc/diylc-core/src/main/java/org/diylc/common/IPlugInPort.java b/diylc/diylc-core/src/main/java/org/diylc/common/IPlugInPort.java index 16779e43..f5c69b3f 100644 --- a/diylc/diylc-core/src/main/java/org/diylc/common/IPlugInPort.java +++ b/diylc/diylc-core/src/main/java/org/diylc/common/IPlugInPort.java @@ -147,7 +147,7 @@ public interface IPlugInPort extends ISelectionProcessor, IMouseProcessor, IKeyP * * @param project * @param freshStart - * @param optional file name when loading from a file + * @param filename file name when loading from a file */ void loadProject(Project project, boolean freshStart, String filename); diff --git a/diylc/diylc-core/src/main/java/org/diylc/lang/LangUtil.java b/diylc/diylc-core/src/main/java/org/diylc/lang/LangUtil.java index 69d1762c..55b3824e 100644 --- a/diylc/diylc-core/src/main/java/org/diylc/lang/LangUtil.java +++ b/diylc/diylc-core/src/main/java/org/diylc/lang/LangUtil.java @@ -17,12 +17,12 @@ */ package org.diylc.lang; -import java.io.File; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.PrintWriter; +import java.io.*; +import java.net.URISyntaxException; +import java.net.URL; import java.nio.charset.StandardCharsets; import java.nio.file.Files; +import java.nio.file.Path; import java.nio.file.Paths; import java.util.ArrayList; import java.util.Collections; @@ -34,7 +34,7 @@ import org.apache.log4j.Logger; import org.diylc.appframework.miscutils.ConfigurationManager; import org.diylc.common.IPlugInPort; -import org.diylc.utils.ResourceLoader; +import org.diylc.utils.ResourceUtils; public class LangUtil { @@ -89,21 +89,17 @@ public class LangUtil { LOG.info("Loading translation for " + language); dict = new HashMap(); try { - String path = ResourceLoader.getFile(LANG_DIR + File.separator + language + ".txt").getAbsolutePath(); - LOG.debug("Loading language file: " + path); - try (Stream stream = Files.lines( - Paths.get(path), StandardCharsets.UTF_8)) { - stream.forEach(s -> { - if (s.contains("|")) { - String[] parts = s.split("\\|"); - if (parts.length == 2) - dict.put(parts[0].toLowerCase().trim(), parts[1].trim()); - } else { - dict.put(s.toLowerCase(), s); - } - }); - } catch (IOException e) { - LOG.error("Error loading language file", e); + BufferedReader reader = new BufferedReader(new InputStreamReader( + (LangUtil.class.getResourceAsStream("/" + LANG_DIR + File.separator + language + ".txt")))); + while(reader.ready()) { + String s = reader.readLine(); + if (s.contains("|")) { + String[] parts = s.split("\\|"); + if (parts.length == 2) + dict.put(parts[0].toLowerCase().trim(), parts[1].trim()); + } else { + dict.put(s.toLowerCase(), s); + } } } catch (Exception e) { LOG.error("Error loading language file", e); @@ -128,9 +124,8 @@ public class LangUtil { public static List getAvailableLanguages() { List res = new ArrayList(); - File[] files = ResourceLoader.getFiles(LANG_DIR); - if (files == null) - return res; + + List files = ResourceUtils.getResourceFiles(LANG_DIR); try { for (File file : files) { String key = file.getName().replaceFirst("[.][^.]+$", ""); diff --git a/diylc/diylc-core/src/main/java/org/diylc/presenter/Presenter.java b/diylc/diylc-core/src/main/java/org/diylc/presenter/Presenter.java index b3e4909d..2aeda614 100644 --- a/diylc/diylc-core/src/main/java/org/diylc/presenter/Presenter.java +++ b/diylc/diylc-core/src/main/java/org/diylc/presenter/Presenter.java @@ -80,6 +80,7 @@ import org.diylc.core.Project; import org.diylc.core.Template; import org.diylc.core.Theme; import org.diylc.core.VisibilityPolicy; +import org.diylc.core.annotations.ComponentDescriptor; import org.diylc.core.annotations.IAutoCreator; import org.diylc.core.gerber.GerberExporter; import org.diylc.core.measures.Size; @@ -95,6 +96,11 @@ import org.diylc.test.DIYTest; import org.diylc.test.Snapshot; import org.diylc.utils.Constants; import org.diylc.utils.ReflectionUtils; +import org.reflections.Reflections; +import org.reflections.util.ConfigurationBuilder; +import org.reflections.util.FilterBuilder; + +import static org.reflections.scanners.Scanners.TypesAnnotated; /** * The main presenter class, contains core app logic and drawing routines. @@ -442,21 +448,14 @@ public class Presenter implements IPlugInPort, IConfigListener { if (componentTypes == null) { LOG.info("Loading component types."); componentTypes = new HashMap>(); + Reflections reflections = new Reflections( + new ConfigurationBuilder() + .forPackage("org.diylc") + .filterInputsBy(new FilterBuilder().includePackage("org.diylc.components")) + .setScanners(TypesAnnotated)); Set> componentTypeClasses = null; try { - componentTypeClasses = Utils.getClasses("org.diylc.components"); - File libraryFile = new File("library"); - if (libraryFile.exists() && libraryFile.isDirectory() && !Utils.isMac()) { - LOG.info("Loading additional library JARs"); - try { - List> additionalComponentTypeClasses = - JarScanner.getInstance().scanFolder("library", IDIYComponent.class); - if (additionalComponentTypeClasses != null) - componentTypeClasses.addAll(additionalComponentTypeClasses); - } catch (Exception e) { - LOG.warn("Could not find additional type classes", e); - } - } + componentTypeClasses = reflections.getTypesAnnotatedWith(ComponentDescriptor.class, false); for (Class clazz : componentTypeClasses) { if (!Modifier.isAbstract(clazz.getModifiers()) && IDIYComponent.class.isAssignableFrom(clazz)) { diff --git a/diylc/diylc-core/src/main/java/org/diylc/utils/ResourceLoader.java b/diylc/diylc-core/src/main/java/org/diylc/utils/ResourceLoader.java deleted file mode 100644 index 28a9d9c8..00000000 --- a/diylc/diylc-core/src/main/java/org/diylc/utils/ResourceLoader.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * - * DIY Layout Creator (DIYLC). Copyright (c) 2009-2018 held jointly by the individual authors. - * - * This file is part of DIYLC. - * - * DIYLC is free software: you can redistribute it and/or modify it under the terms of the GNU - * General Public License as published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * DIYLC is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even - * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General - * Public License for more details. - * - * You should have received a copy of the GNU General Public License along with DIYLC. If not, see - * . - * - */ -package org.diylc.utils; - -import java.io.File; -import org.apache.log4j.Logger; - -public class ResourceLoader { - - private static final Logger LOG = Logger.getLogger(ResourceLoader.class); - - public static File[] getFiles(String relativePath) { - String bundlePath; - try { - bundlePath = com.apple.eio.FileManager.getPathToApplicationBundle(); - //LOG.debug("Detected OSX bundle path: " + bundlePath); - } catch (Exception e) { - bundlePath = null; // on non-OSX platforms - } - try { - String absolutePath; - if (bundlePath == null) - absolutePath = relativePath; - else - absolutePath = bundlePath + File.separator + "Contents" + File.separator + "Resources" + File.separator + relativePath; - LOG.debug("Looking for files in: " + absolutePath); - File absoluteFile = new File(absolutePath); - return absoluteFile.listFiles(); - } catch (Exception e) { - LOG.error("Error while looking for files in: " + relativePath, e); - return null; - } - } - - public static File getFile(String relativePath) { - String bundlePath; - try { - bundlePath = com.apple.eio.FileManager.getPathToApplicationBundle(); - //LOG.debug("Detected OSX bundle path: " + bundlePath); - } catch (Exception e) { - bundlePath = null; // on non-OSX platforms - } - try { - String absolutePath; - if (bundlePath == null) - absolutePath = relativePath; - else - absolutePath = bundlePath + File.separator + "Contents" + File.separator + "Resources" + File.separator + relativePath; - File absoluteFile = new File(absolutePath); - return absoluteFile; - } catch (Exception e) { - LOG.error("Error while finding file: " + relativePath, e); - return null; - } - } -} diff --git a/diylc/diylc-core/src/main/java/org/diylc/utils/ResourceUtils.java b/diylc/diylc-core/src/main/java/org/diylc/utils/ResourceUtils.java new file mode 100644 index 00000000..9a638584 --- /dev/null +++ b/diylc/diylc-core/src/main/java/org/diylc/utils/ResourceUtils.java @@ -0,0 +1,38 @@ +package org.diylc.utils; + +import org.apache.log4j.Logger; +import org.diylc.lang.LangUtil; + +import java.io.File; +import java.io.IOException; +import java.net.URISyntaxException; +import java.net.URL; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.List; + +public class ResourceUtils { + + private static final Logger LOG = Logger.getLogger(LangUtil.class); + + public static List getResourceFiles(String dir) { + List files = new ArrayList<>(); + URL url = LangUtil.class.getResource("/" + dir); + Path path = null; + try { + path = Paths.get(url.toURI()); + Files.walk(path, 5).forEach(p -> { + if (!p.toFile().isDirectory()) { + files.add(p.toFile()); + } + }); + } catch (URISyntaxException e) { + LOG.error("Error loading language file", e); + } catch (IOException e) { + LOG.error("Error loading language file", e); + } + return files; + } +} diff --git a/diylc/diylc-library/lib/log4j-1.2.15.jar b/diylc/diylc-library/lib/log4j-1.2.15.jar deleted file mode 100644 index c930a6ab..00000000 Binary files a/diylc/diylc-library/lib/log4j-1.2.15.jar and /dev/null differ diff --git a/diylc/diylc-library/lib/poi-3.5-FINAL-20090928.jar b/diylc/diylc-library/lib/poi-3.5-FINAL-20090928.jar deleted file mode 100644 index 9ff92b02..00000000 Binary files a/diylc/diylc-library/lib/poi-3.5-FINAL-20090928.jar and /dev/null differ diff --git a/diylc/diylc-library/lib/xstream-1.4.19.jar b/diylc/diylc-library/lib/xstream-1.4.19.jar deleted file mode 100644 index 95d1c6a6..00000000 Binary files a/diylc/diylc-library/lib/xstream-1.4.19.jar and /dev/null differ diff --git a/diylc/diylc-swing/dict.txt b/diylc/diylc-swing/dict.txt index c954d5ae..65525c4c 100644 --- a/diylc/diylc-swing/dict.txt +++ b/diylc/diylc-swing/dict.txt @@ -188,6 +188,7 @@ Default Font Size Delete Selection Description Designation +Deutsch Diameter Dimension Mode Directional @@ -206,6 +207,7 @@ Drag control point(s) of Drag the mouse over the canvas to place a new Draw Standard Drop +DualPot Duodecar B12C Duplicate E+ @@ -219,9 +221,11 @@ Electro-Mechanical Electrode Labels Enable Cache Boost End Arrow +English Enjoying DIYLC? Click here to buy me a coffee :) Error Error occurred while editing selection. Check the log for details. +Español Exit Expand Selection Explicit Dimensions @@ -250,6 +254,7 @@ Font Italic Font Size Font Size Override Four +Français Full Fuse G-D-S JFET @@ -306,6 +311,7 @@ Inner 6 Inside Color Integration Invert Polarity +Italiano Label Label Color Label Orientation @@ -358,6 +364,7 @@ Moveable Label NPN Name Nand +Nederlands Negative New New version available @@ -420,6 +427,7 @@ Pole Pieces Pole Pieces 1 Pole Pieces 2 Poles +Português Positions Positive Power Rating @@ -513,6 +521,7 @@ Source Type Spacing Square Square BR-3 +Srpski Standard Start Arrow Start Recording @@ -533,6 +542,8 @@ Submit a Bug Suppressor grid Switched Switches +TO-92 w/ 2 Leads +TO-92 w/ 3 Leads Tab Tab Border Tabbed Toolbar @@ -554,6 +565,7 @@ Tick Width Ticks Timing Title +Title Block Toolbox Top Top Lead diff --git a/diylc/diylc-swing/lib/AppleJavaExtensions.jar b/diylc/diylc-swing/lib/AppleJavaExtensions.jar deleted file mode 100644 index 6659a81c..00000000 Binary files a/diylc/diylc-swing/lib/AppleJavaExtensions.jar and /dev/null differ diff --git a/diylc/diylc-swing/lib/balloontip-1.2.4.1.jar b/diylc/diylc-swing/lib/balloontip-1.2.4.1.jar deleted file mode 100644 index a7c8b4d2..00000000 Binary files a/diylc/diylc-swing/lib/balloontip-1.2.4.1.jar and /dev/null differ diff --git a/diylc/diylc-swing/lib/commons-compiler-3.0.6.jar b/diylc/diylc-swing/lib/commons-compiler-3.0.6.jar deleted file mode 100644 index b9aaa551..00000000 Binary files a/diylc/diylc-swing/lib/commons-compiler-3.0.6.jar and /dev/null differ diff --git a/diylc/diylc-swing/lib/commons-logging-1.2.jar b/diylc/diylc-swing/lib/commons-logging-1.2.jar deleted file mode 100644 index 93a3b9f6..00000000 Binary files a/diylc/diylc-swing/lib/commons-logging-1.2.jar and /dev/null differ diff --git a/diylc/diylc-swing/lib/gestures-wrapper-0.2.jar b/diylc/diylc-swing/lib/gestures-wrapper-0.2.jar deleted file mode 100644 index d72ddc8a..00000000 Binary files a/diylc/diylc-swing/lib/gestures-wrapper-0.2.jar and /dev/null differ diff --git a/diylc/diylc-swing/lib/guava-31.1-jre.jar b/diylc/diylc-swing/lib/guava-31.1-jre.jar deleted file mode 100644 index 16819229..00000000 Binary files a/diylc/diylc-swing/lib/guava-31.1-jre.jar and /dev/null differ diff --git a/diylc/diylc-swing/lib/janino-3.0.6.jar b/diylc/diylc-swing/lib/janino-3.0.6.jar deleted file mode 100644 index 41ab429d..00000000 Binary files a/diylc/diylc-swing/lib/janino-3.0.6.jar and /dev/null differ diff --git a/diylc/diylc-swing/lib/jettison-1.0.1.jar b/diylc/diylc-swing/lib/jettison-1.0.1.jar deleted file mode 100644 index fed929fd..00000000 Binary files a/diylc/diylc-swing/lib/jettison-1.0.1.jar and /dev/null differ diff --git a/diylc/diylc-swing/lib/junit-4.7.jar b/diylc/diylc-swing/lib/junit-4.7.jar deleted file mode 100644 index 700ad695..00000000 Binary files a/diylc/diylc-swing/lib/junit-4.7.jar and /dev/null differ diff --git a/diylc/diylc-swing/lib/log4j-1.2.15.jar b/diylc/diylc-swing/lib/log4j-1.2.15.jar deleted file mode 100644 index c930a6ab..00000000 Binary files a/diylc/diylc-swing/lib/log4j-1.2.15.jar and /dev/null differ diff --git a/diylc/diylc-swing/lib/orsonpdf-1.8.jar b/diylc/diylc-swing/lib/orsonpdf-1.8.jar deleted file mode 100644 index 768b37bd..00000000 Binary files a/diylc/diylc-swing/lib/orsonpdf-1.8.jar and /dev/null differ diff --git a/diylc/diylc-swing/lib/pdfbox-2.0.27.jar b/diylc/diylc-swing/lib/pdfbox-2.0.27.jar deleted file mode 100644 index 5510e409..00000000 Binary files a/diylc/diylc-swing/lib/pdfbox-2.0.27.jar and /dev/null differ diff --git a/diylc/diylc-swing/lib/poi-3.5-FINAL-20090928.jar b/diylc/diylc-swing/lib/poi-3.5-FINAL-20090928.jar deleted file mode 100644 index 9ff92b02..00000000 Binary files a/diylc/diylc-swing/lib/poi-3.5-FINAL-20090928.jar and /dev/null differ diff --git a/diylc/diylc-swing/lib/xstream-1.4.19.jar b/diylc/diylc-swing/lib/xstream-1.4.19.jar deleted file mode 100644 index 95d1c6a6..00000000 Binary files a/diylc/diylc-swing/lib/xstream-1.4.19.jar and /dev/null differ diff --git a/diylc/diylc-swing/pom.xml b/diylc/diylc-swing/pom.xml index ef8cdb7e..afd926b1 100644 --- a/diylc/diylc-swing/pom.xml +++ b/diylc/diylc-swing/pom.xml @@ -77,43 +77,48 @@ pdfbox 2.0.27 - - - org.diylc.local - AppleJavaExtensions - 1.0 + com.orsonpdf + orsonpdf + 1.9.1 + + org.codehaus.janino + janino + 3.1.12 + + + org.codehaus.janino + commons-compiler + 3.1.12 + + + net.java.balloontip + balloontip + 1.2.4.1 + + + org.codehaus.jettison + jettison + 1.5.4 + + + com.guigarage + gestures-wrapper + 0.2 + + + org.diylc.local app-framework 1.0 - - org.diylc.local - balloontip-1.2.4.1 - 1.0 - - - org.diylc.local - commons-compiler-3.0.6 - 1.0 - org.diylc.local gerber-writer-api-1.0.0 1.0 - - org.diylc.local - gestures-wrapper-0.2 - 1.0 - - - org.diylc.local - janino-3.0.6 - 1.0 - org.diylc.local jar-loader @@ -129,16 +134,6 @@ jep-2.4.1 1.0 - - org.diylc.local - jettison-1.0.1 - 1.0 - - - org.diylc.local - orsonpdf-1.8 - 1.0 - org.diylc.local svgSalamander-1.1.2.4 diff --git a/diylc/diylc-swing/src/main/java/org/diylc/DIYLCStarter.java b/diylc/diylc-swing/src/main/java/org/diylc/DIYLCStarter.java index 04b8aaa3..e6215d86 100644 --- a/diylc/diylc-swing/src/main/java/org/diylc/DIYLCStarter.java +++ b/diylc/diylc-swing/src/main/java/org/diylc/DIYLCStarter.java @@ -88,7 +88,7 @@ public class DIYLCStarter { } } - URL url = DIYLCStarter.class.getResource("log4j.properties"); + URL url = DIYLCStarter.class.getResource("/log4j.properties"); Properties properties = new Properties(); try { properties.load(url.openStream()); @@ -116,6 +116,7 @@ public class DIYLCStarter { + System.getProperty("java.vm.vendor")); LOG.debug("Java home: " + System.getProperty("java.home")); LOG.debug("OS: " + System.getProperty("os.name") + " " + System.getProperty("os.version")); +// LOG.debug("Classpath: " + System.getProperty("java.class.path")); // set OS name as HTTP agent, java will append java version Properties props = System.getProperties(); diff --git a/diylc/diylc-swing/src/main/java/org/diylc/swing/plugins/config/ConfigPlugin.java b/diylc/diylc-swing/src/main/java/org/diylc/swing/plugins/config/ConfigPlugin.java index 6b361634..2d67a217 100644 --- a/diylc/diylc-swing/src/main/java/org/diylc/swing/plugins/config/ConfigPlugin.java +++ b/diylc/diylc-swing/src/main/java/org/diylc/swing/plugins/config/ConfigPlugin.java @@ -42,14 +42,14 @@ import org.diylc.lang.Language; import org.diylc.swing.ActionFactory; import org.diylc.swing.ISwingUI; import org.diylc.utils.IconLoader; -import org.diylc.utils.ResourceLoader; +import org.diylc.utils.ResourceUtils; /** * Controls configuration menu. * * @author Branislav Stojkovic */ -public class ConfigPlugin implements IPlugIn { +public class ConfigPlugin implements IPlugIn { private static final Logger LOG = Logger.getLogger(ConfigPlugin.class); @@ -64,7 +64,8 @@ public class ConfigPlugin implements IPlugIn { public static final String TABBED_TOOLBAR = "Tabbed Toolbar"; private static final String LANGUAGE_MENU = LangUtil.translate("Language"); - private static final String LANG_RESTART = LangUtil.translate("Language selection will be applied after the application is restarted."); + private static final String LANG_RESTART = LangUtil.translate("Language selection will be applied after the application is restarted."); + public static final String THEMES_DIR = "themes"; private ISwingUI swingUI; @@ -170,8 +171,8 @@ public class ConfigPlugin implements IPlugIn { ActionFactory.getInstance() .createConfigAction(plugInPort, "Sticky Points", IPlugInPort.STICKY_POINTS_KEY, true), CONFIG_MENU); - File[] themeFiles = ResourceLoader.getFiles("themes"); - if (themeFiles != null && themeFiles.length > 0) { + List themeFiles = ResourceUtils.getResourceFiles(THEMES_DIR); + if (!themeFiles.isEmpty()) { XStream xStream = new XStream(new DomDriver()); xStream.addPermission(AnyTypePermission.ANY); swingUI.injectSubmenu(THEME_MENU, IconLoader.Pens.getIcon(), CONFIG_MENU); diff --git a/diylc/install-dependencies.bat b/diylc/install-dependencies.bat index 112a9c16..067f4deb 100644 --- a/diylc/install-dependencies.bat +++ b/diylc/install-dependencies.bat @@ -13,7 +13,7 @@ REM Define the group ID for all local dependencies set GROUP_ID=org.diylc.local REM List of module lib directories to process -set MODULES=diylc-core diylc-library diylc-swing +set MODULES=diylc-swing echo Processing dependencies... echo. diff --git a/diylc/install-dependencies.sh b/diylc/install-dependencies.sh index 01d5dd4d..71ee8b09 100755 --- a/diylc/install-dependencies.sh +++ b/diylc/install-dependencies.sh @@ -12,7 +12,7 @@ echo GROUP_ID="org.diylc.local" # List of module lib directories to process -MODULES=("diylc-core" "diylc-library" "diylc-swing") +MODULES=("diylc-swing") echo "Processing dependencies..." echo