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

📄 editmenu.java

📁 一个用Java 造成的小画家
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
        if(ClipboardHelper.getImageFromClipboard() != null) {
            pasteMenuItem.setEnabled(true);
            pasteBtn.setEnabled(true);
        }
        else {
            pasteMenuItem.setEnabled(false);
            pasteBtn.setEnabled(false);
        }
        
        // check undo menuitem
        if(getMementoManager(canvas).isUndoable()) {
            undoMenuItem.setEnabled(true);
        }
        else {
            undoMenuItem.setEnabled(false);
        }
        
        // check redo menuitem
        if(getMementoManager(canvas).isRedoable()) {
            redoMenuItem.setEnabled(true);
        }
        else {
            redoMenuItem.setEnabled(false);
        }
    }
    
    private Image copySelectedImage() {
        CanvasComponent canvas = getCanvasOfSelectedFrame();
        Rectangle2D rect = canvas.getSelectedRect();
        
        if(rect.getWidth() <= 0 || rect.getWidth() <=0) {
            infoMessageBox("No area selected.");
            return null;
        }

        return imageProcessor.copyRectImage(canvas.getImage(), rect, null);
    }
    
    private void copyToClipBoard(boolean cut) {
        Image image = copySelectedImage();
        
        if(image == null)
            return;
        
        transferableImage.setImage(image);
        
        ClipboardHelper.imageToClipboard(transferableImage);
        
        if(cut) {
            CanvasComponent canvas = getCanvasOfSelectedFrame();

            image = copyImage(canvas);
            
            // set up undo
            getMementoManager(canvas).addImage(image);
            
            Graphics g = canvas.getImage().getGraphics();
            Rectangle2D rect = getCanvasOfSelectedFrame().getSelectedRect();
            g.setColor(getCanvasOfSelectedFrame().getBackground());
            g.fillRect((int)rect.getX(), (int)rect.getY(), 
            (int)rect.getWidth(),(int)rect.getHeight());
            getCanvasOfSelectedFrame().repaint();
            setStarBeforeTitle();
        }
    }
    
    private void pasteToNew() {
        Image image = ClipboardHelper.getImageFromClipboard();
        
        if(image == null)
            return;
        
        // new a internalFrame for the copied image
        JInternalFrame internalFrame = createImageInternalFrame("*untitled", image); 
        getDesktopPane().add(internalFrame);
        
        try {
            internalFrame.setVisible(true);
            internalFrame.setSelected(true);

            fitAppSize(image);
        }
        catch(PropertyVetoException e) {
            infoMessageBox(e.getMessage());
        }
    }
        
    private void crop() {
        Image image = copySelectedImage();
        
        if(image == null)
            return;
        
        CanvasComponent canvas = getCanvasOfSelectedFrame();
        
        // set up undo
        getMementoManager(canvas).addImage(canvas.getImage());
        
        // use current internalFrame for the corped image
        canvas.setImage(image);
        
        // let the dashed rect disappear
        canvas.resetRect();
        
        fitAppSize(image);

        setStarBeforeTitle();
    }
    
    private void paste() {
        CanvasComponent canvas = getCanvasOfSelectedFrame();

        if(canvas == null)
            return;
        
        Image image = ClipboardHelper.getImageFromClipboard();
        
        if(image != null) {
            canvas.setEditMode(CanvasComponent.PasteMode);
            canvas.setPastedImage(image);
        }
    }
    
    private int mergeImage(CanvasComponent canvas) {
        int option = JOptionPane.showOptionDialog(null, 
                "merge images?", "merge?", JOptionPane.YES_NO_CANCEL_OPTION,
                JOptionPane.QUESTION_MESSAGE, smallLogo, null, null);
        
        switch(option) {
            case JOptionPane.YES_OPTION:
                getMementoManager(canvas).addImage(copyImage(canvas));
                canvas.mergePastedImage();
                setStarBeforeTitle();
                checkEditMenuItem();
                break;                   
            case JOptionPane.NO_OPTION:
                break;
            case JOptionPane.CANCEL_OPTION:
                canvas.setPastedImage(null);
                canvas.setStart(null);
                break;     
        }
        
        return option;
    }
    

    private int mergeText(CanvasComponent canvas) {
        int option = JOptionPane.showOptionDialog(null, 
                "merge text into image?", "merge?", JOptionPane.YES_NO_CANCEL_OPTION,
                JOptionPane.QUESTION_MESSAGE, smallLogo, null, null);
        
        switch(option) {
            case JOptionPane.YES_OPTION:
                getMementoManager(canvas).addImage(copyImage(canvas));
                canvas.mergeText();
                setStarBeforeTitle();
                checkEditMenuItem();
                //break;
            case JOptionPane.CANCEL_OPTION:
                canvas.setText(null, null);
                canvas.setStart(null);
                break;
            case JOptionPane.NO_OPTION:
                break;
        }
        
        return option;
    }
    
    private void inputText(CanvasComponent canvas) {
        int option = FontDialog.showDialog(null, "Font information", smallLogo);
        
        if(option == JOptionPane.OK_OPTION) {
            canvas.setText(FontDialog.getInputText(), FontDialog.getFont());
        }
    }
    
    private void resize() {
        Image image = getCanvasOfSelectedFrame().getImage();
        
        int option = ResizeDialog.showDialog(null, "Resize Information", image.getWidth(null), image.getHeight(null), smallLogo);
        
        if(option == JOptionPane.OK_OPTION) {
            try {
                if(ResizeDialog.isPercentage()) {
                    int scale = ResizeDialog.getScalePercentage(); 
                    resize(scale);    
                }
                else if(ResizeDialog.isCustomWidthHeight()) {
                    int width = ResizeDialog.getPixelWidth();
                    int height = ResizeDialog.getPixelHeight();
                    resize(width, height);
                }
            }
            catch(Exception e) {
                infoMessageBox(e.getMessage());
            }
        }
    }
    
    private Image preResize() {
        CanvasComponent canvas = getCanvasOfSelectedFrame();
        canvas.resetRect();
        
        // set up undo
        getMementoManager(canvas).addImage(canvas.getImage());
        
        return canvas.getImage();
    }
    
    private void resize(int scale) {
        Image image = preResize();
        
        image = imageProcessor.resize(image, scale * 0.01, null);
        
        postResize(image);
    }
    
    private void resize(int width, int height) {
        Image image = preResize();
        
        image = imageProcessor.resize(image, width, height, null);
        
        postResize(image);
    }
    
    private void postResize(Image image) {
        CanvasComponent canvas = getCanvasOfSelectedFrame();
        
        canvas.setImage(image);
        
        fitAppSize(image);
        
        setStarBeforeTitle();
    }
    
    private void mirror(boolean horizontal) {
        CanvasComponent canvas = getCanvasOfSelectedFrame();
        
        // set up undo
        getMementoManager(canvas).addImage(canvas.getImage());
        
        Image image = canvas.getImage();
        
        if(horizontal) 
            image = imageProcessor.horizontalMirror(image, null);
        else
            image = imageProcessor.verticalMirror(image, null);
        
        canvas.setImage(image);
        canvas.repaint();
        
        setStarBeforeTitle();
    }
    
    private void clockwise(boolean counter) {
        CanvasComponent canvas = getCanvasOfSelectedFrame();
        canvas.resetRect();
        
        // set up undo
        getMementoManager(canvas).addImage(canvas.getImage());
        
        Image image = canvas.getImage();
        
        if(counter) 
            image = imageProcessor.counterClockwise(image, null);
        else
            image = imageProcessor.clockwise(image, null);
        
        canvas.setImage(image);
        
        fitAppSize(image);
        
        setStarBeforeTitle();
    }
    
    private void batch() {
        int option = JOptionPane.showOptionDialog(null, 
                batchComboBox, "batch..", JOptionPane.OK_CANCEL_OPTION,
                JOptionPane.QUESTION_MESSAGE, smallLogo, null, null);
        
        if(option == JOptionPane.OK_OPTION) {
            int selected = batchComboBox.getSelectedIndex();
            IBatcher batcher = null;
            switch(selected) {
                case 0: // resize
                    Image image = getCanvasOfSelectedFrame().getImage();
                    
                    option = ResizeDialog.showDialog(null, "Resize Information", image.getWidth(null), image.getHeight(null), smallLogo);
                    
                    if(option == JOptionPane.OK_OPTION) {
                        try {
                            if(ResizeDialog.isPercentage()) {
                                final int scale = ResizeDialog.getScalePercentage(); 
                                batcher = new IBatcher() {
                                    public void execute() {
                                        resize(scale);
                                    }
                                };
                            }
                            else if(ResizeDialog.isCustomWidthHeight()) {
                                final int width = ResizeDialog.getPixelWidth();
                                final int height = ResizeDialog.getPixelHeight();
                                batcher = new IBatcher() {
                                    public void execute() {
                                        resize(width, height);
                                    }
                                };
                            }
                        }
                        catch(Exception e) {
                            infoMessageBox(e.getMessage());
                        }
                    } 
                    else {
                        return;
                    }
                    
                    break;
                case 1: // horizontal mirror
                    batcher = new IBatcher() {
                        public void execute() {
                            mirror(true);
                        }
                    };
                    break;
                case 2: // vertical mirror
                    batcher = new IBatcher() {
                        public void execute() {
                            mirror(false);
                        }
                    };
                    break;
                case 3: // clockwise
                    batcher = new IBatcher() {
                        public void execute() {
                            clockwise(false);
                        }
                    };
                    break;
                case 4: // counter-clockwise
                    batcher = new IBatcher() {
                        public void execute() {
                            clockwise(true);
                        }
                    };
                    break;
                default: // do nothing
            }
            
            batch(batcher);
        }
        
    }
    
    private Image copyImage(CanvasComponent canvas) {
        // copy the original            
        Image image = canvas.getImage();
        Rectangle2D rect = new Rectangle2D.Double(); 
        rect.setRect(0, 0, image.getWidth(null), image.getHeight(null));
        image = imageProcessor.copyRectImage(image, rect, null);
        return image;
    }
    
    private void setEditInfo(CanvasComponent canvas) {
        canvas.setEditMode(editMode);
        canvas.setForeground(foreColorBox.getColor());
        canvas.setBackground(backColorBox.getColor());
        canvas.setBrushWidth(((Integer)brushSpinner.getValue()).intValue());
    }
}

⌨️ 快捷键说明

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