diff --git a/src/main/java/de/neemann/digital/draw/library/ElementLibrary.java b/src/main/java/de/neemann/digital/draw/library/ElementLibrary.java index 5c3d7decb..d72189528 100644 --- a/src/main/java/de/neemann/digital/draw/library/ElementLibrary.java +++ b/src/main/java/de/neemann/digital/draw/library/ElementLibrary.java @@ -263,7 +263,7 @@ public class ElementLibrary implements Iterable if (node != null) return node.getDescription(); } catch (IOException e) { - throw new ElementNotFoundException(Lang.get("msg_errorImportingModel"), e); + throw new ElementNotFoundException(Lang.get("msg_errorImportingModel_N0", elementName), e); } throw new ElementNotFoundException(Lang.get("err_element_N_notFound", elementName)); @@ -436,7 +436,7 @@ public class ElementLibrary implements Iterable } return description; } catch (PinException e) { - throw new IOException(Lang.get("msg_errorImportingModel"), e); + throw new IOException(Lang.get("msg_errorImportingModel_N0", file), e); } } diff --git a/src/main/java/de/neemann/digital/draw/library/LibraryNode.java b/src/main/java/de/neemann/digital/draw/library/LibraryNode.java index 400021b1a..469de3caa 100644 --- a/src/main/java/de/neemann/digital/draw/library/LibraryNode.java +++ b/src/main/java/de/neemann/digital/draw/library/LibraryNode.java @@ -30,6 +30,7 @@ public class LibraryNode implements Iterable { private ElementLibrary library; private LibraryNode parent; private boolean unique; + private boolean descriptionImportError = false; /** * Creates a new node with the given name. @@ -126,8 +127,12 @@ public class LibraryNode implements Iterable { if (description == null) { if (!unique) throw new IOException(Lang.get("err_file_N0_ExistsTwiceBelow_N1", file, library.getRootFilePath())); - - description = library.importElement(file); + try { + description = library.importElement(file); + } catch (IOException e) { + descriptionImportError = true; + throw e; + } library.fireLibraryChanged(this); } return description; @@ -217,6 +222,9 @@ public class LibraryNode implements Iterable { * @throws IOException IOException */ public Icon getIcon(ShapeFactory shapeFactory) throws IOException { + if (descriptionImportError) + return ICON_NOT_UNIQUE; + getDescription(); return getIconOrNull(shapeFactory); } diff --git a/src/main/java/de/neemann/digital/gui/InsertAction.java b/src/main/java/de/neemann/digital/gui/InsertAction.java index 8fc929cb3..dfb78c73d 100644 --- a/src/main/java/de/neemann/digital/gui/InsertAction.java +++ b/src/main/java/de/neemann/digital/gui/InsertAction.java @@ -49,7 +49,7 @@ public final class InsertAction extends ToolTipAction { node.getDescription(); setIcon(node.getIcon(shapeFactory)); } catch (IOException ex) { - SwingUtilities.invokeLater(new ErrorMessage(Lang.get("msg_errorImportingModel")).addCause(ex)); + SwingUtilities.invokeLater(new ErrorMessage(Lang.get("msg_errorImportingModel_N0", node.getName())).addCause(ex)); } } insertHistory.add(this); @@ -80,7 +80,7 @@ public final class InsertAction extends ToolTipAction { final Icon icon = node.getIcon(shapeFactory); setIcon(icon); } catch (IOException ex) { - SwingUtilities.invokeLater(new ErrorMessage(Lang.get("msg_errorImportingModel")).addCause(ex)); + SwingUtilities.invokeLater(new ErrorMessage(Lang.get("msg_errorImportingModel_N0", node.getName())).addCause(ex)); } } diff --git a/src/main/java/de/neemann/digital/gui/LibrarySelector.java b/src/main/java/de/neemann/digital/gui/LibrarySelector.java index 2800504a6..599ace3a6 100644 --- a/src/main/java/de/neemann/digital/gui/LibrarySelector.java +++ b/src/main/java/de/neemann/digital/gui/LibrarySelector.java @@ -73,7 +73,7 @@ public class LibrarySelector implements LibraryListener { try { library.updateEntries(); } catch (IOException ex) { - SwingUtilities.invokeLater(new ErrorMessage(Lang.get("msg_errorImportingModel")).addCause(ex)); + SwingUtilities.invokeLater(new ErrorMessage(Lang.get("msg_errorUpdatingLibrary")).addCause(ex)); } } }.setToolTip(Lang.get("menu_update_tt")).createJMenuItem()); diff --git a/src/main/java/de/neemann/digital/gui/components/tree/SelectTree.java b/src/main/java/de/neemann/digital/gui/components/tree/SelectTree.java index 971932f66..07ad2f585 100644 --- a/src/main/java/de/neemann/digital/gui/components/tree/SelectTree.java +++ b/src/main/java/de/neemann/digital/gui/components/tree/SelectTree.java @@ -50,7 +50,7 @@ public class SelectTree extends JTree { component.setPartToInsert(new VisualElement(d.getName()).setShapeFactory(shapeFactory)); insertHistory.add(new InsertAction(node, insertHistory, component, shapeFactory)); } catch (IOException e) { - SwingUtilities.invokeLater(new ErrorMessage(Lang.get("msg_errorImportingModel")).addCause(e)); + SwingUtilities.invokeLater(new ErrorMessage(Lang.get("msg_errorImportingModel_N0", node.getName())).addCause(e)); } } } diff --git a/src/main/resources/lang/lang_de.xml b/src/main/resources/lang/lang_de.xml index 0dc437f8b..2b8d01971 100644 --- a/src/main/resources/lang/lang_de.xml +++ b/src/main/resources/lang/lang_de.xml @@ -711,7 +711,8 @@ Die Icons stammen aus dem Tango Desktop Project. Fehler beim Erzeugen der Schaltung Fehler während der Vereinfachung. Fehler bei der Eingabe eines Wertes - Fehler beim Import einer Schaltung + Fehler beim Import der Schaltung {0}. + Fehler beim Aktualisieren der Bauteile-Bibliothek! Fehler beim Lesen einer Datei Das Kommando {0} ist unbekannt! Fehler beim Schreiben einer Datei diff --git a/src/main/resources/lang/lang_en.xml b/src/main/resources/lang/lang_en.xml index 66d0036fb..d92333b23 100644 --- a/src/main/resources/lang/lang_en.xml +++ b/src/main/resources/lang/lang_en.xml @@ -698,7 +698,8 @@ The icons are taken from the Tango Desktop Project. Error creating the circuit Error during simplification Error editing a atribute value - Error importing a circuit + Error importing the circuit {0}! + Error updating the component library!! Error reading a file Error writing a file Error at fast run