package com.vci.client.uif.engine.client.compare.dialog;
|
|
import java.awt.Component;
|
import java.awt.event.ActionEvent;
|
import java.awt.event.InputEvent;
|
import java.awt.event.KeyEvent;
|
|
import javax.swing.AbstractAction;
|
import javax.swing.Action;
|
import javax.swing.JComponent;
|
import javax.swing.JMenuItem;
|
import javax.swing.JPopupMenu;
|
import javax.swing.KeyStroke;
|
|
import com.vci.client.uif.engine.client.compare.dialog.renderer.CompareTreeNodeIcons;
|
|
/**
|
* 编辑菜单
|
* @author VCI-STGK006
|
*
|
*/
|
public class CompareDialogPopupMenu {
|
|
/**
|
* 父窗口
|
*/
|
private NodeCompareDialog ed;
|
/**
|
* 右键菜单
|
*/
|
private JPopupMenu pm;
|
|
/**
|
* 打开
|
*/
|
private JMenuItem openMi;
|
|
/**
|
* 忽略菜单
|
*/
|
private JMenuItem ignoredMi;
|
|
/**
|
* 更新link关系
|
*/
|
private JMenuItem updateLinkMi;
|
|
/**
|
* 逐条修改菜单
|
*/
|
private JMenuItem updateRightSingleMi;
|
|
/**
|
* 批量更新菜单
|
*/
|
private JMenuItem updateRightBatchMi;
|
|
/**
|
* 解除关系
|
*/
|
private JMenuItem deleteMi;
|
|
/**
|
* 保存按钮
|
*/
|
private JMenuItem saveMi;
|
|
/**
|
* 调试功能,复制节点对象数据信息到系统剪切板
|
*/
|
private JMenuItem debugMi;
|
|
/**
|
* 构造器
|
* @param eat Action
|
* @param excelTree Excel树
|
* @param dsTree 数据库树
|
*/
|
public CompareDialogPopupMenu(NodeCompareDialog ed) {
|
this.ed = ed;
|
createMenuItem();
|
}
|
|
/**
|
* 构造器
|
* @param eat
|
* @param excelTree
|
* @param dsTree
|
* @param paramString
|
*/
|
public CompareDialogPopupMenu(NodeCompareDialog ed, String title) {
|
this.ed = ed;
|
createMenuItem(title);
|
}
|
|
/**
|
* 创建右键菜单
|
* @param titles 菜单标题
|
*/
|
public void createMenuItem(String ...titles) {
|
if(titles == null || titles.length < 1) {
|
pm = new JPopupMenu();
|
} else {
|
pm = new JPopupMenu(titles[0]);
|
}
|
//打开
|
Action open = new AbstractAction("打开(O)") {
|
private static final long serialVersionUID = 5145219953960994047L;
|
@Override
|
public void actionPerformed(ActionEvent e) {
|
ed.doubleClickAction();
|
}
|
};
|
openMi = new JMenuItem(open);
|
openMi.setMnemonic(KeyEvent.VK_O);
|
openMi.setAccelerator(
|
KeyStroke.getKeyStroke(KeyEvent.VK_O, InputEvent.CTRL_DOWN_MASK, true));
|
//忽略
|
Action ignored = new AbstractAction("忽略/还原(G)",
|
CompareTreeNodeIcons.getInstance().getIcon("Ignored20x15.png")) {
|
private static final long serialVersionUID = 5657208377333035328L;
|
@Override
|
public void actionPerformed(ActionEvent e) {
|
ed.ignored();
|
}
|
};
|
ignoredMi = new JMenuItem(ignored);
|
ignoredMi.setMnemonic(KeyEvent.VK_G);
|
ignoredMi.setAccelerator(
|
KeyStroke.getKeyStroke(KeyEvent.VK_G, InputEvent.CTRL_DOWN_MASK, true));
|
ignoredMi.setVisible(false);
|
|
Action updateLink = new AbstractAction("更新链接(E)",
|
CompareTreeNodeIcons.getInstance().getIcon("UpdateLink20x15.png")) {
|
private static final long serialVersionUID = 3894180318359539111L;
|
public void actionPerformed(ActionEvent e) {
|
ed.updateLink();
|
}
|
};
|
updateLinkMi = new JMenuItem(updateLink);
|
updateLinkMi.setMnemonic(KeyEvent.VK_E);
|
updateLinkMi.setAccelerator(
|
KeyStroke.getKeyStroke(KeyEvent.VK_E, InputEvent.CTRL_DOWN_MASK, true));
|
|
//单个更新
|
Action updateRightSingle = new AbstractAction("更新数据(R)",
|
CompareTreeNodeIcons.getInstance().getIcon("UpdateRightSingle20x15.png")) {
|
private static final long serialVersionUID = 1L;
|
@Override
|
public void actionPerformed(ActionEvent e) {
|
ed.updateRightSingle();
|
}
|
};
|
updateRightSingleMi = new JMenuItem(updateRightSingle);
|
updateRightSingleMi.setMnemonic(KeyEvent.VK_R);
|
updateRightSingleMi.setAccelerator(
|
KeyStroke.getKeyStroke(KeyEvent.VK_R, InputEvent.CTRL_DOWN_MASK));
|
|
//递归更新
|
Action updateRightBatch = new AbstractAction("批量更新(T)",
|
CompareTreeNodeIcons.getInstance().getIcon("UpdateRightBatch20x15.png")){
|
private static final long serialVersionUID = 1L;
|
@Override
|
public void actionPerformed(ActionEvent e) {
|
ed.updateRigthBatch();
|
}
|
};
|
updateRightBatchMi = new JMenuItem(updateRightBatch);
|
updateRightBatchMi.setMnemonic(KeyEvent.VK_T);
|
updateRightBatchMi.setAccelerator(
|
KeyStroke.getKeyStroke(KeyEvent.VK_T, InputEvent.CTRL_DOWN_MASK));
|
|
//删除关系
|
Action delete = new AbstractAction("删除(D)",
|
CompareTreeNodeIcons.getInstance().getIcon("Delete20x15.png")) {
|
private static final long serialVersionUID = 1L;
|
@Override
|
public void actionPerformed(ActionEvent e) {
|
ed.deleteAction();
|
}
|
};
|
deleteMi = new JMenuItem(delete);
|
deleteMi.setMnemonic(KeyEvent.VK_D);
|
deleteMi.setAccelerator(
|
KeyStroke.getKeyStroke(KeyEvent.VK_D, InputEvent.CTRL_DOWN_MASK));
|
|
//保存
|
//绑定保存事件
|
Action save = new AbstractAction("保存(S)",
|
CompareTreeNodeIcons.getInstance().getIcon("Save20x15.png")) {
|
private static final long serialVersionUID = 7678552486046381848L;
|
@Override
|
public void actionPerformed(ActionEvent e) {
|
ed.save();
|
}
|
};
|
saveMi = new JMenuItem(save);
|
saveMi.setMnemonic(KeyEvent.VK_S);
|
saveMi.setAccelerator(
|
KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_DOWN_MASK));
|
|
//debug
|
//复制节点数据到系统剪切板
|
Action debugCopyData = new AbstractAction("复制节点数据(1)") {
|
private static final long serialVersionUID = -7166740287624602439L;
|
public void actionPerformed(ActionEvent paramActionEvent) {
|
ed.debugCopyNodeData();
|
}
|
};
|
debugMi = new JMenuItem(debugCopyData);
|
debugMi.setMnemonic(KeyEvent.VK_1);
|
debugMi.setAccelerator(
|
KeyStroke.getKeyStroke(KeyEvent.VK_1, InputEvent.CTRL_DOWN_MASK, true));
|
|
pm.add(openMi);
|
pm.addSeparator();
|
pm.add(ignoredMi);
|
pm.add(updateLinkMi);
|
pm.add(updateRightSingleMi);
|
pm.add(updateRightBatchMi);
|
pm.addSeparator();
|
pm.add(deleteMi);
|
}
|
|
/**
|
*
|
*/
|
public void show(Component paramComponent, int paramInt1, int paramInt2) {
|
pm.show(paramComponent, paramInt1, paramInt2);
|
}
|
|
/**
|
* 绑定快捷键和事件
|
* @param com
|
*/
|
public void bindHotkeys(JComponent com) {
|
//绑定打开事件
|
bindHotkeys(com, openMi);
|
//绑定忽略事件
|
bindHotkeys(com, ignoredMi);
|
//绑定更新link事件
|
bindHotkeys(com, updateLinkMi);
|
//绑定更新事件
|
bindHotkeys(com, updateRightSingleMi);
|
//绑定批量更新事件
|
bindHotkeys(com, updateRightBatchMi);
|
//绑定删除事件
|
bindHotkeys(com, deleteMi);
|
//绑定保存事件
|
bindHotkeys(com, saveMi);
|
//debug
|
bindHotkeys(com, debugMi);
|
}
|
|
/**
|
* 将菜单快捷键绑定到控件上
|
* 当焦点在窗口中时,会触发绑定事件
|
* 所以整个窗口中只有一个控件绑定就可以了
|
* @param com 控件
|
* @param item 菜单
|
*/
|
private void bindHotkeys(JComponent com, JMenuItem item) {
|
Action action = item.getAction();
|
Object actionKey = action.getValue(Action.NAME);
|
//com.getInputMap().put(item.getAccelerator(), actionKey);
|
com.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(item.getAccelerator(), actionKey);
|
com.getActionMap().put(actionKey, action);
|
}
|
}
|