Search in sources :

Example 1 with MyFileChooser

use of de.neemann.gui.MyFileChooser 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 2 with MyFileChooser

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

the class GenerateFile method generate.

@Override
public void generate(JDialog parent, File circuitFile, TruthTable table, ExpressionListenerStore expressions) throws Exception {
    ModelAnalyserInfo mai = table.getModelAnalyzerInfo();
    if (mai == null) {
        JOptionPane.showMessageDialog(parent, new LineBreaker().toHTML().breakLines(Lang.get("msg_circuitIsRequired")), Lang.get("msg_warning"), JOptionPane.WARNING_MESSAGE);
        return;
    } else {
        ArrayList<String> pinsWithoutNumber = mai.getPinsWithoutNumber();
        if (!pinsWithoutNumber.isEmpty()) {
            int res = JOptionPane.showConfirmDialog(parent, new LineBreaker().toHTML().breakLines(Lang.get("msg_thereAreMissingPinNumbers", pinsWithoutNumber)), Lang.get("msg_warning"), JOptionPane.OK_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE);
            if (res != JOptionPane.OK_OPTION)
                return;
        }
    }
    if (circuitFile == null)
        circuitFile = new File("circuit." + suffix);
    else
        circuitFile = SaveAsHelper.checkSuffix(circuitFile, suffix);
    JFileChooser fileChooser = new MyFileChooser();
    fileChooser.setFileFilter(new FileNameExtensionFilter("JEDEC", suffix));
    fileChooser.setSelectedFile(circuitFile);
    if (fileChooser.showSaveDialog(parent) == JFileChooser.APPROVE_OPTION) {
        ExpressionToFileExporter expressionExporter = factory.create();
        expressionExporter.getPinMapping().addAll(mai.getPins());
        expressionExporter.getPinMapping().setClockPin(mai.getClockPinInt());
        new BuilderExpressionCreator(expressionExporter.getBuilder(), ExpressionModifier.IDENTITY).create(expressions);
        expressionExporter.export(SaveAsHelper.checkSuffix(fileChooser.getSelectedFile(), suffix));
    }
}
Also used : MyFileChooser(de.neemann.gui.MyFileChooser) ModelAnalyserInfo(de.neemann.digital.analyse.ModelAnalyserInfo) ExpressionToFileExporter(de.neemann.digital.builder.ExpressionToFileExporter) LineBreaker(de.neemann.gui.LineBreaker) FileNameExtensionFilter(javax.swing.filechooser.FileNameExtensionFilter) File(java.io.File) BuilderExpressionCreator(de.neemann.digital.gui.components.table.BuilderExpressionCreator)

Example 3 with MyFileChooser

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

the class GenerateCUPL method generate.

@Override
public void generate(JDialog parent, File circuitFile, TruthTable table, ExpressionListenerStore expressions) throws Exception {
    File cuplPath;
    if (circuitFile == null) {
        JFileChooser fc = new MyFileChooser();
        fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
        fc.setDialogTitle(Lang.get("msg_selectAnEmptyFolder"));
        if (fc.showSaveDialog(parent) == JFileChooser.APPROVE_OPTION) {
            cuplPath = fc.getSelectedFile();
            circuitFile = cuplPath;
        } else {
            return;
        }
    } else {
        if (circuitFile.isDirectory()) {
            cuplPath = circuitFile;
        } else {
            String name = circuitFile.getName();
            if (name.length() > 3 && name.charAt(name.length() - 4) == '.')
                name = name.substring(0, name.length() - 4);
            cuplPath = new File(circuitFile.getParentFile(), "CUPL_" + name);
        }
    }
    if (!cuplPath.mkdirs())
        if (!cuplPath.exists())
            throw new IOException(Lang.get("err_couldNotCreateFolder_N0", cuplPath.getPath()));
    File f = new File(cuplPath, "CUPL.PLD");
    CuplExporter cuplExporter = cuplExporterFactory.create();
    cuplExporter.setProjectName(circuitFile.getName());
    final ModelAnalyserInfo modelAnalyzerInfo = table.getModelAnalyzerInfo();
    if (modelAnalyzerInfo != null)
        cuplExporter.getPinMapping().addAll(modelAnalyzerInfo.getPins());
    new BuilderExpressionCreator(cuplExporter.getBuilder(), ExpressionModifier.IDENTITY).create(expressions);
    try (FileOutputStream out = new FileOutputStream(f)) {
        cuplExporter.writeTo(out);
    }
}
Also used : MyFileChooser(de.neemann.gui.MyFileChooser) ModelAnalyserInfo(de.neemann.digital.analyse.ModelAnalyserInfo) FileOutputStream(java.io.FileOutputStream) IOException(java.io.IOException) File(java.io.File) BuilderExpressionCreator(de.neemann.digital.gui.components.table.BuilderExpressionCreator) CuplExporter(de.neemann.digital.builder.Gal16v8.CuplExporter)

Aggregations

MyFileChooser (de.neemann.gui.MyFileChooser)3 File (java.io.File)3 ModelAnalyserInfo (de.neemann.digital.analyse.ModelAnalyserInfo)2 ExpressionToFileExporter (de.neemann.digital.builder.ExpressionToFileExporter)2 CuplExporter (de.neemann.digital.builder.Gal16v8.CuplExporter)2 BuilderExpressionCreator (de.neemann.digital.gui.components.table.BuilderExpressionCreator)2 AnalyseException (de.neemann.digital.analyse.AnalyseException)1 TruthTable (de.neemann.digital.analyse.TruthTable)1 TruthTableTableModel (de.neemann.digital.analyse.TruthTableTableModel)1 Expression (de.neemann.digital.analyse.expression.Expression)1 ExpressionException (de.neemann.digital.analyse.expression.ExpressionException)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 FormatterException (de.neemann.digital.analyse.expression.format.FormatterException)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 TwoInputs (de.neemann.digital.analyse.expression.modify.TwoInputs)1 TruthTableFormatterLaTeX (de.neemann.digital.analyse.format.TruthTableFormatterLaTeX)1