Search in sources :

Example 1 with ErrorMessage

use of de.neemann.gui.ErrorMessage in project Digital by hneemann.

the class LibrarySelector method libraryChanged.

@Override
public void libraryChanged(LibraryNode node) {
    componentsMenu.removeAll();
    for (LibraryNode n : library.getRoot()) addComponents(componentsMenu, n);
    if (library.getCustomNode() != null) {
        JMenuItem m = componentsMenu.getItem(componentsMenu.getItemCount() - 1);
        if (m instanceof JMenu) {
            JMenu menu = (JMenu) m;
            menu.addSeparator();
            menu.add(new ToolTipAction(Lang.get("menu_update")) {

                @Override
                public void actionPerformed(ActionEvent e) {
                    try {
                        library.updateEntries();
                    } catch (IOException ex) {
                        SwingUtilities.invokeLater(new ErrorMessage(Lang.get("msg_errorUpdatingLibrary")).addCause(ex));
                    }
                }
            }.setToolTip(Lang.get("menu_update_tt")).createJMenuItem());
        }
    }
}
Also used : ToolTipAction(de.neemann.gui.ToolTipAction) ActionEvent(java.awt.event.ActionEvent) IOException(java.io.IOException) ErrorMessage(de.neemann.gui.ErrorMessage) LibraryNode(de.neemann.digital.draw.library.LibraryNode)

Example 2 with ErrorMessage

use of de.neemann.gui.ErrorMessage in project Digital by hneemann.

the class SaveAsHelper method checkOverwrite.

/**
 * Uses the JFileChooser to select a file and checks, if the file exists.
 * Uses the gicen interface to save the file.
 *
 * @param saveAs used to save the file
 */
public void checkOverwrite(SaveAs saveAs) {
    do {
        repeat = false;
        if (fc.showSaveDialog(parent) == JFileChooser.APPROVE_OPTION) {
            final File selectedFile = checkSuffix(fc.getSelectedFile(), suffix);
            if (selectedFile.exists()) {
                Object[] options = { Lang.get("btn_overwrite"), Lang.get("btn_newName") };
                int res = JOptionPane.showOptionDialog(parent, Lang.get("msg_fileExists", selectedFile.getName()), Lang.get("msg_warning"), JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[0]);
                if (res == 1) {
                    repeat = true;
                    continue;
                }
            }
            try {
                saveAs.saveAs(selectedFile);
            } catch (IOException e) {
                new ErrorMessage(Lang.get("msg_errorWritingFile")).addCause(e).show(parent);
            }
        }
    } while (repeat);
}
Also used : IOException(java.io.IOException) ErrorMessage(de.neemann.gui.ErrorMessage) File(java.io.File)

Example 3 with ErrorMessage

use of de.neemann.gui.ErrorMessage in project Digital by hneemann.

the class TableDialog method createFileMenu.

private JMenu createFileMenu() {
    JMenu fileMenu = new JMenu(Lang.get("menu_file"));
    fileMenu.add(new ToolTipAction(Lang.get("menu_open")) {

        @Override
        public void actionPerformed(ActionEvent e) {
            JFileChooser fc = new MyFileChooser();
            if (TableDialog.this.filename != null)
                fc.setSelectedFile(SaveAsHelper.checkSuffix(TableDialog.this.filename, "tru"));
            if (fc.showOpenDialog(TableDialog.this) == JFileChooser.APPROVE_OPTION) {
                try {
                    File file = fc.getSelectedFile();
                    TruthTable truthTable = TruthTable.readFromFile(file);
                    setModel(new TruthTableTableModel(truthTable));
                    TableDialog.this.filename = file;
                } catch (IOException e1) {
                    new ErrorMessage().addCause(e1).show(TableDialog.this);
                }
            }
        }
    });
    fileMenu.add(new ToolTipAction(Lang.get("menu_save")) {

        @Override
        public void actionPerformed(ActionEvent e) {
            JFileChooser fc = new MyFileChooser();
            if (TableDialog.this.filename != null)
                fc.setSelectedFile(SaveAsHelper.checkSuffix(TableDialog.this.filename, "tru"));
            new SaveAsHelper(TableDialog.this, fc, "tru").checkOverwrite(file -> {
                model.getTable().save(file);
                TableDialog.this.filename = file;
            });
        }
    });
    fileMenu.add(new ToolTipAction(Lang.get("menu_table_exportTableLaTeX")) {

        @Override
        public void actionPerformed(ActionEvent e) {
            try {
                ExpressionListener expressionListener = new LaTeXExpressionListener(model);
                if (createJK.isSelected())
                    expressionListener = new ExpressionListenerJK(expressionListener);
                lastGeneratedExpressions.replayTo(expressionListener);
            } catch (ExpressionException | FormatterException e1) {
                new ErrorMessage(Lang.get("msg_errorDuringCalculation")).addCause(e1).show(TableDialog.this);
            }
        }
    });
    fileMenu.add(new ToolTipAction(Lang.get("menu_table_exportHex")) {

        @Override
        public void actionPerformed(ActionEvent e) {
            int res = JOptionPane.OK_OPTION;
            if (model.getTable().getVars().size() > 20)
                res = JOptionPane.showConfirmDialog(TableDialog.this, Lang.get("msg_tableHasManyRowsConfirm"));
            if (res == JOptionPane.OK_OPTION) {
                JFileChooser fc = new MyFileChooser();
                if (TableDialog.this.filename != null)
                    fc.setSelectedFile(SaveAsHelper.checkSuffix(TableDialog.this.filename, "hex"));
                new SaveAsHelper(TableDialog.this, fc, "hex").checkOverwrite(file -> model.getTable().saveHex(file));
            }
        }
    }.setToolTip(Lang.get("menu_table_exportHex_tt")).createJMenuItem());
    createJK = new JCheckBoxMenuItem(Lang.get("menu_table_JK"));
    createJK.addActionListener(e -> calculateExpressions());
    fileMenu.add(createJK);
    return fileMenu;
}
Also used : Gal22v10JEDECExporter(de.neemann.digital.builder.Gal22v10.Gal22v10JEDECExporter) AttributeDialog(de.neemann.digital.gui.components.AttributeDialog) BoolTableByteArray(de.neemann.digital.analyse.quinemc.BoolTableByteArray) ExpressionToFileExporter(de.neemann.digital.builder.ExpressionToFileExporter) CuplExporter(de.neemann.digital.builder.Gal16v8.CuplExporter) JTableHeader(javax.swing.table.JTableHeader) ElementAttributes(de.neemann.digital.core.element.ElementAttributes) KarnaughMapDialog(de.neemann.digital.gui.components.karnaugh.KarnaughMapDialog) TruthTableFormatterLaTeX(de.neemann.digital.analyse.format.TruthTableFormatterLaTeX) ExpressionModifier(de.neemann.digital.analyse.expression.modify.ExpressionModifier) TruthTableTableModel(de.neemann.digital.analyse.TruthTableTableModel) MouseAdapter(java.awt.event.MouseAdapter) MyFileChooser(de.neemann.gui.MyFileChooser) Main(de.neemann.digital.gui.Main) FormatToExpression(de.neemann.digital.analyse.expression.format.FormatToExpression) TableModelEvent(javax.swing.event.TableModelEvent) GenerateCUPL(de.neemann.digital.gui.components.table.hardware.GenerateCUPL) Lang(de.neemann.digital.lang.Lang) Key(de.neemann.digital.core.element.Key) NAnd(de.neemann.digital.analyse.expression.modify.NAnd) Circuit(de.neemann.digital.draw.elements.Circuit) ToolTipAction(de.neemann.gui.ToolTipAction) DefaultTableCellRenderer(javax.swing.table.DefaultTableCellRenderer) List(java.util.List) Gal16v8JEDECExporter(de.neemann.digital.builder.Gal16v8.Gal16v8JEDECExporter) ExpressionException(de.neemann.digital.analyse.expression.ExpressionException) NOr(de.neemann.digital.analyse.expression.modify.NOr) Screen(de.neemann.gui.Screen) Gal22v10CuplExporter(de.neemann.digital.builder.Gal22v10.Gal22v10CuplExporter) TwoInputs(de.neemann.digital.analyse.expression.modify.TwoInputs) HashMap(java.util.HashMap) TableModelListener(javax.swing.event.TableModelListener) ArrayList(java.util.ArrayList) Expression(de.neemann.digital.analyse.expression.Expression) FormatterException(de.neemann.digital.analyse.expression.format.FormatterException) StringTokenizer(java.util.StringTokenizer) FormatToTableLatex(de.neemann.digital.analyse.expression.format.FormatToTableLatex) ErrorMessage(de.neemann.gui.ErrorMessage) HardwareDescriptionGenerator(de.neemann.digital.gui.components.table.hardware.HardwareDescriptionGenerator) Keys(de.neemann.digital.core.element.Keys) TruthTable(de.neemann.digital.analyse.TruthTable) ElementOrderer(de.neemann.digital.gui.components.ElementOrderer) IOException(java.io.IOException) ActionEvent(java.awt.event.ActionEvent) MouseEvent(java.awt.event.MouseEvent) File(java.io.File) Preferences(java.util.prefs.Preferences) ATFDevice(de.neemann.digital.builder.ATF150x.ATFDevice) CircuitBuilder(de.neemann.digital.builder.circuit.CircuitBuilder) java.awt(java.awt) AnalyseException(de.neemann.digital.analyse.AnalyseException) Variable(de.neemann.digital.analyse.expression.Variable) SaveAsHelper(de.neemann.digital.gui.SaveAsHelper) ElementLibrary(de.neemann.digital.draw.library.ElementLibrary) GenerateFile(de.neemann.digital.gui.components.table.hardware.GenerateFile) ShapeFactory(de.neemann.digital.draw.shapes.ShapeFactory) javax.swing(javax.swing) ActionEvent(java.awt.event.ActionEvent) IOException(java.io.IOException) SaveAsHelper(de.neemann.digital.gui.SaveAsHelper) ToolTipAction(de.neemann.gui.ToolTipAction) MyFileChooser(de.neemann.gui.MyFileChooser) TruthTable(de.neemann.digital.analyse.TruthTable) ErrorMessage(de.neemann.gui.ErrorMessage) File(java.io.File) GenerateFile(de.neemann.digital.gui.components.table.hardware.GenerateFile) TruthTableTableModel(de.neemann.digital.analyse.TruthTableTableModel)

Example 4 with ErrorMessage

use of de.neemann.gui.ErrorMessage in project Digital by hneemann.

the class InsertAction method update.

/**
 * Updates this action to a new node
 *
 * @param node the node
 */
public void update(LibraryNode node) {
    this.node = node;
    try {
        final Icon icon = node.getIcon(shapeFactory);
        setIcon(icon);
    } catch (IOException ex) {
        SwingUtilities.invokeLater(new ErrorMessage(Lang.get("msg_errorImportingModel_N0", node.getName())).addCause(ex));
    }
}
Also used : IOException(java.io.IOException) ErrorMessage(de.neemann.gui.ErrorMessage)

Example 5 with ErrorMessage

use of de.neemann.gui.ErrorMessage in project Digital by hneemann.

the class InsertAction method actionPerformed.

@Override
public void actionPerformed(ActionEvent e) {
    if (node.isUnique()) {
        VisualElement visualElement = new VisualElement(node.getName()).setPos(new Vector(10, 10)).setShapeFactory(shapeFactory);
        if (getIcon() == null) {
            try {
                node.getDescription();
                setIcon(node.getIcon(shapeFactory));
            } catch (IOException ex) {
                SwingUtilities.invokeLater(new ErrorMessage(Lang.get("msg_errorImportingModel_N0", node.getName())).addCause(ex));
            }
        }
        if (visualElement.getShape() instanceof MissingShape)
            return;
        circuitComponent.setPartToInsert(visualElement);
        insertHistory.add(this);
    }
}
Also used : VisualElement(de.neemann.digital.draw.elements.VisualElement) IOException(java.io.IOException) ErrorMessage(de.neemann.gui.ErrorMessage) Vector(de.neemann.digital.draw.graphics.Vector) MissingShape(de.neemann.digital.draw.shapes.MissingShape)

Aggregations

ErrorMessage (de.neemann.gui.ErrorMessage)10 IOException (java.io.IOException)8 ExpressionException (de.neemann.digital.analyse.expression.ExpressionException)3 FormatterException (de.neemann.digital.analyse.expression.format.FormatterException)3 AnalyseException (de.neemann.digital.analyse.AnalyseException)2 CircuitBuilder (de.neemann.digital.builder.circuit.CircuitBuilder)2 Circuit (de.neemann.digital.draw.elements.Circuit)2 Main (de.neemann.digital.gui.Main)2 ToolTipAction (de.neemann.gui.ToolTipAction)2 ActionEvent (java.awt.event.ActionEvent)2 File (java.io.File)2 TruthTable (de.neemann.digital.analyse.TruthTable)1 TruthTableTableModel (de.neemann.digital.analyse.TruthTableTableModel)1 Expression (de.neemann.digital.analyse.expression.Expression)1 Variable (de.neemann.digital.analyse.expression.Variable)1 FormatToExpression (de.neemann.digital.analyse.expression.format.FormatToExpression)1 FormatToTableLatex (de.neemann.digital.analyse.expression.format.FormatToTableLatex)1 ExpressionModifier (de.neemann.digital.analyse.expression.modify.ExpressionModifier)1 NAnd (de.neemann.digital.analyse.expression.modify.NAnd)1 NOr (de.neemann.digital.analyse.expression.modify.NOr)1