filesaveasaction.java
来自「mywork是rcp开发的很好的例子」· Java 代码 · 共 61 行
JAVA
61 行
package net.sf.freenote.action;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import net.sf.freenote.FreeNoteConstants;
import net.sf.freenote.model.FileShape;
import net.sf.freenote.parts.ShapeEditPart;
import net.sf.util.StringUtil;
import net.sf.util.TousleUtil;
import org.eclipse.gef.ui.actions.SelectionAction;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.ui.IWorkbenchPart;
/**
* 将文件形体的文件另存出来
* @author levin
* @since 2008-1-20 下午09:42:57
*/
public class FileSaveAsAction extends SelectionAction {
public FileSaveAsAction(IWorkbenchPart part) {
super(part);
setText("另存文件...");
setToolTipText("将形体中的文件另存出来");
setId(FreeNoteConstants.FILE_SAVEAS);
}
@Override
protected boolean calculateEnabled() {
if (getSelectedObjects().size() == 1 && (getSelectedObjects().get(0) instanceof ShapeEditPart)) {
ShapeEditPart part = (ShapeEditPart) getSelectedObjects().get(0);
if(part.getModel() instanceof FileShape && StringUtil.isNotNull(((FileShape)part.getModel()).getFilePath()))
return true;
}
return false;
}
@Override
public void run() {
FileShape shape =(FileShape) ((ShapeEditPart) getSelectedObjects().get(0)).getModel();
final FileDialog fd=new FileDialog(getWorkbenchPart().getSite().getShell(),SWT.SAVE);
File f= new File(shape.getFilePath());
fd.setFileName(f.getName());
String fname=fd.open();
if(fname != null){
try {
//提示是否覆盖
if(! new File(fname).exists() || MessageDialog.openConfirm(fd.getParent(),"文件覆盖确认","文件已经存在,是否覆盖?")){
TousleUtil.copyIntput2Output(new FileInputStream(f), new FileOutputStream(fname));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?