📄 undoableeditfactory.java
字号:
package com.sunking.tp.util;
import javax.swing.undo.*;
import com.sunking.tp.framework.*;
import com.sunking.tp.undoredo.*;
/**
*
* <p>Title: UndoableEditFactory</p>
* <p>Description: UndoableEdit创建工厂</p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: </p>
* @author <a href="mailto:sunkingxie@hotmail.com">SunKing</a>
* @version 1.0
*/
public class UndoableEditFactory {
/**
* 创建JTPButton
*/
public final static int CREATE_JTPBUTTON = 0;
/**
* 创建JTPTextArea
*/
public final static int CREATE_JTPTEXTAREA = 1;
/**
* 创建JTPImage
*/
public final static int CREATE_JTPIMAGE = 2;
/**
* 拖动
*/
public final static int DRAG = 3;
/**
* 调整
*/
public final static int ADJUST = 4;
/**
* 创建直线连线
*/
public final static int CREATE_ASSOICATORLINE_0 = 5;
/**
* 创建空心箭头
*/
public final static int CREATE_ASSOICATORLINE_1 = 6;
/**
* 创建实心箭头
*/
public final static int CREATE_ASSOICATORLINE_2 = 7;
/**
* 删除
*/
public final static int DELETE = 8;
/**
* 粘贴
*/
public final static int PASTE = 9;
/**
* 设置文字
*/
public final static int CHANGE_TEXT = 10;
/**
* 设置图片
*/
public final static int CHANGE_IMAGE = 11;
/**
* 编辑类型
*/
private int editType = -1;
/**
* 当前桌面
*/
private Desktop desk = null;
/**
* 用户自定义数据
*/
private Object userObject = null;
/**
* 单键模式实现唯一实例
*/
private static UndoableEditFactory defaultInstance;
UndoableEdit edit = null;
public static UndoableEditFactory getDefault() {
if (defaultInstance == null) {
defaultInstance = new UndoableEditFactory();
}
return defaultInstance;
}
private UndoableEditFactory() {
}
/**
* 开始编辑
* @param editType
* @param desk
* @param userObject
*/
public void startEdit(int editType, Desktop desk, Object userObject) {
this.editType = editType;
this.desk = desk;
this.userObject = userObject;
edit = null;
try {
switch (editType) {
case CREATE_JTPBUTTON:
edit = new CreateUndoableEdit(
CreateUndoableEdit.CREATE_JTPBUTTON, desk, (JTPComponent) userObject);
break;
case CREATE_JTPTEXTAREA:
edit = new CreateUndoableEdit(
CreateUndoableEdit.CREATE_JTPTEXTAREA, desk, (JTPComponent) userObject);
break;
case CREATE_JTPIMAGE:
edit = new CreateUndoableEdit(
CreateUndoableEdit.CREATE_JTPIMAGE, desk, (JTPComponent) userObject);
break;
case DRAG:
edit = new DragUndoableEdit(desk, (JTPComponent[]) userObject);
break;
case ADJUST:
edit = new AdjustUndoableEdit(desk, (JTPComponent) userObject);
break;
case CREATE_ASSOICATORLINE_0:
edit = new AssoicatorUndoableEdit(desk, (AssoicatorLine) userObject);
break;
case CREATE_ASSOICATORLINE_1:
edit = new AssoicatorUndoableEdit(desk, (AssoicatorLine) userObject);
break;
case CREATE_ASSOICATORLINE_2:
edit = new AssoicatorUndoableEdit(desk, (AssoicatorLine) userObject);
break;
case DELETE:
edit = new DeleteUndoableEdit(desk, (JTPComponent[]) userObject);
break;
case PASTE:
edit = new PasteUndoableEdit(desk, (JTPComponent[]) userObject);
break;
case CHANGE_TEXT:
edit = new ChangeTextUndoableEdit(desk, (JTPComponent[]) userObject);
break;
case CHANGE_IMAGE:
edit = new ChangeImageUndoableEdit(desk, (JTPComponent[]) userObject);
break;
default:
break;
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
/**
* 停止编辑
* @param userObject1
*/
public void stopEdit(Object userObject1) {
if (edit != null) {
UndoRedoManager.getDefault().postUndoableEdit(edit);
}
init();
}
/**
* 变量初始化
*/
void init(){
editType = -1;
desk = null;
userObject = null;
edit = null;
}
/**
* 取消编辑
*/
public void cancelEdit() {
init();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -