⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 erdsavedialog.java

📁 eq跨平台查询工具源码 eq跨平台查询工具源码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
        if (result == JFileChooser.CANCEL_OPTION) {            return;        }                File file = fileChooser.getSelectedFile();                if (file != null) {            if (file.exists()) {                int _result = GUIUtilities.displayConfirmCancelDialog(                                                "Overwrite existing file?");                                if (_result == JOptionPane.CANCEL_OPTION) {                    return;                } else if (_result == JOptionPane.NO_OPTION) {                    showFileChooser();                }            }                        filePath = fileChooser.getSelectedFile().getAbsolutePath();        }                fileExtension = "." + fileExtension;        if (!filePath.endsWith(fileExtension)) {            filePath += fileExtension;        }                pathField.setText(filePath);    }        /** <p>Saves the image in the specified format. */    private String save(String path, int fileFormat) {        File file = new File(path);        if (fileFormat == EQ_FORMAT) {            return saveApplicationFileFormat(file);        }        Dimension extents = parent.getMaxImageExtents();        int width = (int)extents.getWidth();        int height = (int)extents.getHeight();                int imageType = 0;        int bgType = backgroundCombo.getSelectedIndex();        FileOutputStream fos = null;        if ((fileFormat == GIF_FORMAT || fileFormat == PNG_FORMAT)                                 && bgType == TRANSPARENT_BACKGROUND) {            imageType = BufferedImage.TYPE_INT_ARGB;        }        else if (fileFormat == SVG_FORMAT)  {            imageType = BufferedImage.TYPE_INT_ARGB;        }        else {            imageType = BufferedImage.TYPE_INT_RGB;        }        BufferedImage buffImage = new BufferedImage(width, height, imageType);        Graphics2D g2d = buffImage.createGraphics();        if (fileFormat == JPEG_FORMAT || bgType == WHITE_BACKGROUND) {            g2d.setColor(Color.WHITE);            g2d.fillRect(0, 0, width, height);        }        paintImage(g2d);                try {                        if (fileFormat == PNG_FORMAT) {                ImageHandlerPNGEncoder ihandler = new ImageHandlerPNGEncoder(                                                        file.getParent(), null);                ihandler.encodeImage(buffImage, file);            }            else if (fileFormat == SVG_FORMAT)  {                DOMImplementation domImpl =                    GenericDOMImplementation.getDOMImplementation();                Document document = domImpl.createDocument(null, "svg", null);                SVGGraphics2D g = null;                SVGGeneratorContext ctx = SVGGeneratorContext.createDefault(document);                ctx.setComment("Generated by Execute Query with Batik SVG Generator");                g = new SVGGraphics2D(ctx, svgFontCheckbox.isSelected());                g.drawImage(buffImage, new AffineTransform(1f,0f,0f,1f,0,0), null);                fos = new FileOutputStream(file);                Writer out = new OutputStreamWriter(fos, "UTF-8");                g.stream(out, true);                fos.flush();                out.close();                           }            else if (fileFormat == JPEG_FORMAT) {                    // ---------------------------------------------                    // for JPEG images using javax.imageio package                    // also works well - no quality setting however.                    // used as shown below:                    // ---------------------------------------------                    // ImageIO.write(buffImage, "jpeg", file);                    // buffImage.flush();                    // ---------------------------------------------                    fos = new FileOutputStream(file);                    BufferedOutputStream bfos = new BufferedOutputStream(fos);                    JPEGImageEncoder jpegEncoder = JPEGCodec.createJPEGEncoder(bfos);                    JPEGEncodeParam jpegParam = jpegEncoder.getDefaultJPEGEncodeParam(buffImage);                    float quality = (qualitySlider.getValue()*10)/100.0f;                    jpegParam.setQuality(quality, false);                    jpegEncoder.setJPEGEncodeParam(jpegParam);                    jpegEncoder.encode(buffImage);                    bfos.flush();                    bfos.close();            }            else if (fileFormat == GIF_FORMAT) {                fos = new FileOutputStream(file);                GifEncoder gifEncoder = new GifEncoder(buffImage, fos);                gifEncoder.encode();            }            GUIUtilities.scheduleGC();            savedResult = SaveFunction.SAVE_COMPLETE;            //dispose();            return "done";        }        catch (Exception e) {            savedResult = SaveFunction.SAVE_FAILED;            GUIUtilities.displayExceptionErrorDialog("An error occured saving to file:\n" +                                                        e.getMessage(), e);            return "failed";        }        finally {            if (fos != null) {                try {                    fos.close();                } catch (IOException e) {}            }        }            }        private void paintImage(Graphics2D g) {        // set the highest quality rendering        g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,            RenderingHints.VALUE_ANTIALIAS_ON);        g.setRenderingHint(RenderingHints.KEY_RENDERING,            RenderingHints.VALUE_RENDER_QUALITY);        g.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS,            RenderingHints.VALUE_FRACTIONALMETRICS_ON);        g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,            RenderingHints.VALUE_INTERPOLATION_BICUBIC);        g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,            RenderingHints.VALUE_TEXT_ANTIALIAS_ON);        g.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING,            RenderingHints.VALUE_COLOR_RENDER_QUALITY);        g.setRenderingHint(RenderingHints.KEY_DITHERING,            RenderingHints.VALUE_DITHER_ENABLE);        g.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL,            RenderingHints.VALUE_STROKE_NORMALIZE);        g.setRenderingHint(RenderingHints.KEY_ALPHA_INTERPOLATION,            RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY);        parent.resetAllTableJoins();        parent.getDependenciesPanel().drawDependencies(g);        ErdTable[] tablesArray = parent.getAllComponentsArray();        for (int i = 0; i < tablesArray.length; i++) {            tablesArray[i].setSelected(false);            tablesArray[i].drawTable(g, tablesArray[i].getX(), tablesArray[i].getY());        }        ErdTitlePanel title = parent.getTitlePanel();        if (title != null) {            title.setSelected(false);            title.drawTitlePanel(g, title.getX(), title.getY());        }    }        public int getSaved() {        return savedResult;    }        /** <p>Removes the listeners within the JPEG options     *  components so changes do not propagate. */    private void removeListeners() {        qualityTextField.removeKeyListener(this);        qualityCombo.removeActionListener(this);        qualitySlider.removeChangeListener(this);    }        /** <p>Adds the listeners within the JPEG options components. */    private void addListeners() {        qualityTextField.addKeyListener(this);        qualityCombo.addActionListener(this);        qualitySlider.addChangeListener(this);    }        /** <p>Processes a change in the sliders value.     *     *  @param the event object     */    public void stateChanged(ChangeEvent e) {        removeListeners();                int value = qualitySlider.getValue();        qualityTextField.setText(Integer.toString(value));                if (value == 10)            qualityCombo.setSelectedIndex(3);        else if (value >= 8)            qualityCombo.setSelectedIndex(2);        else if (value >= 3)            qualityCombo.setSelectedIndex(1);        else            qualityCombo.setSelectedIndex(0);                addListeners();            }        public void keyReleased(KeyEvent e) {        removeListeners();        int value = qualityTextField.getValue();                if (value > 10) {            value = 10;        }        qualitySlider.setValue(value);                if (value == 10)            qualityCombo.setSelectedIndex(3);        else if (value >= 8)            qualityCombo.setSelectedIndex(2);        else if (value >= 3)            qualityCombo.setSelectedIndex(1);        else            qualityCombo.setSelectedIndex(0);                addListeners();            }    public void keyPressed(KeyEvent e) {}    public void keyTyped(KeyEvent e) {}        private void enableOptionsPanels(int index) {                switch (index) {            case 0:                enableJpegPanel(false);                enableGifPanel(false);                enableSvgPanel(false);                break;            case 1:                enableJpegPanel(true);                enableGifPanel(false);                enableSvgPanel(false);                break;            case 2:            case 3:                enableJpegPanel(false);                enableGifPanel(true);                enableSvgPanel(false);                break;            case 4:                enableJpegPanel(false);                enableGifPanel(false);                enableSvgPanel(true);                break;        }    }    private void enableSvgPanel(boolean enable) {        svgFontCheckbox.setEnabled(enable);    }        private void enableJpegPanel(boolean enable) {        qualityLabel.setEnabled(enable);        qualityTextField.setEnabled(enable);        qualityCombo.setEnabled(enable);        qualitySlider.setEnabled(enable);    }        private void enableGifPanel(boolean enable) {        backgroundCombo.setEnabled(enable);        backgroundLabel.setEnabled(enable);    }        /** <p>Performs the respective action upon selection     *  of a button within this dialog.     *     *  @param the <code>ActionEvent</code>     */    public void actionPerformed(ActionEvent e) {        String command = e.getActionCommand();                if (command.equals("Cancel")) {            dispose();        }        else if (command.equals("Browse")) {            showFileChooser();            return;        }        else if (command.equals("Save")) {            final String path = pathField.getText();            if (MiscUtils.isNull(path)) {                GUIUtilities.displayErrorMessage("You must enter a file name");                return;            }            final int fileFormat = imageTypeCombo.getSelectedIndex();            if ((fileFormat == EQ_FORMAT && !path.endsWith(".eqd")) ||                (fileFormat == JPEG_FORMAT && !path.endsWith(".jpeg")) ||                (fileFormat == SVG_FORMAT && !path.endsWith(".svg")) ||                (fileFormat == PNG_FORMAT && !path.endsWith(".png")) ||                (fileFormat == GIF_FORMAT && !path.endsWith(".gif"))) {                GUIUtilities.displayErrorMessage("Invalid file extension for selected file type");                return;            }            doSave(path, fileFormat);            return;        }                removeListeners();        Object object = e.getSource();                if (object == imageTypeCombo) {            enableOptionsPanels(imageTypeCombo.getSelectedIndex());        }        else if (object == qualityCombo) {            int value = -1;            int index = qualityCombo.getSelectedIndex();            if (index == 0)                value = 3;            else if (index == 1)                value = 5;            else if (index == 2)                value = 8;            else if (index == 3)                value = 10;                        qualitySlider.setValue(value);            qualityTextField.setText(Integer.toString(value));                    }                addListeners();            }        private void doSave(final String path, final int fileFormat) {        SwingWorker worker = new SwingWorker() {            public Object construct() {                try {                    setVisible(false);                    GUIUtilities.showWaitCursor();                    return save(path, fileFormat);                }                finally {                    GUIUtilities.showNormalCursor();                }            }            public void finished() {                GUIUtilities.showNormalCursor();                if (savedResult == SaveFunction.SAVE_COMPLETE) {                    dispose();                } else {                    setVisible(true);                }            }        };        worker.start();    }        private String saveApplicationFileFormat(File file) {        savedResult = parent.saveApplicationFileFormat(file);        SystemUtilities.addRecentOpenFile(file.getAbsolutePath());        GUIUtilities.scheduleGC();                if (savedResult == SaveFunction.SAVE_COMPLETE) {            GUIUtilities.setTabTitleForComponent(parent, ErdViewerPanel.TITLE +                                          " - " + file.getName());        }        return "done";    }    }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -