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

📄 undoableeditfactory.java

📁 说明 功能: 可对组件进行选取删除复制粘贴等动作 可进行两组件之间的连线 可在多组件之问交叉连 可创建多种形式的连线(目前包括无箭头空心箭头实心箭头)
💻 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 + -