📄 editmenu.java
字号:
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 + -