📄 excelmappingdiagram.java
字号:
if (em._subelems != null) {
for (Enumeration sube = em._subelems.elements(); sube
.hasMoreElements();) {
vct.addElement(sube.nextElement());
}
}
}
return vct;
}
/**
* @param id
* @return excelimport.Element
* @roseuid 3E0A6E1B00F1
*/
public Element getElementByID(String id) {
if (id == null || id.trim().length() == 0) {
return null;
}
for (Enumeration e = _elems.elements(); e.hasMoreElements();) {
Element em = (Element) e.nextElement();
if (em.id != null && em.id.equals(id)) {
return em;
}
if (em._subelems != null) {
for (Enumeration sube = em._subelems.elements(); sube
.hasMoreElements();) {
Element subem = (Element) sube.nextElement();
if (subem.id != null && subem.id.equals(id)) {
return subem;
}
}
}
}
return null;
}
/**
* @throws java.lang.Exception
* @roseuid 3E0A6E1B010F
*/
private void jbInit() throws Exception {
this.addComponentListener(new java.awt.event.ComponentAdapter() {
public void componentResized(ComponentEvent e) {
this_componentResized(e);
}
});
this.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
public void mouseMoved(MouseEvent e) {
this_mouseMoved(e);
}
public void mouseDragged(MouseEvent e) {
this_mouseDragged(e);
}
});
this.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(MouseEvent e) {
this_mouseClicked(e);
}
public void mousePressed(MouseEvent e) {
this_mousePressed(e);
}
public void mouseReleased(MouseEvent e) {
this_mouseReleased(e);
}
public void mouseEntered(MouseEvent e) {
this_mouseEntered(e);
}
});
}
/**
* @param e
* @roseuid 3E0A6E1B0123
*/
void this_mouseClicked(MouseEvent e) {
int count = e.getClickCount();
if (count >= 2) {
Element em = this.chkSelectedElement(e.getX(), e.getY());
if (em != null) {
win.eval("javascript:editElement()");
}
}
}
// protected void processMouseEvent(MouseEvent e) {
// if (e.getID() == MouseEvent.MOUSE_CLICKED) {
// }
// super.processMouseEvent(e);
// }
//
// public boolean isSelectElement(MouseEvent e){
// Element em = this.chkSelectedElement(e.getX(), e.getY());
// if ((em != null) && !(em instanceof Relation)) {
// return true;
// }else{
// return false;
// }
// }
/**
* @param e
* @roseuid 3E0A6E1B0137
*/
void this_mousePressed(MouseEvent e) {
int x = e.getX();
int y = e.getY();
boolean isChangeCursor = false;
Element em = this.chkSelectedElement(x, y);
if (em != null) {
if (em instanceof Node) {
((Node)em).holdPoint.x = x -((Node)em).x;
((Node)em).holdPoint.y = y -((Node)em).y;
}
_changed = true;
if (_statues == ACTION_REMOVE) {
deleteMSG = null;
if (em instanceof Relation) {
Relation r = (Relation) em;
if (r.ispassed) {
deleteMSG = "相关流程已处理,不能删除!";
}
}
if (em instanceof Node) {
Node nd = (Node) em;
for (Enumeration el = this.getAllElements().elements(); deleteMSG == null
&& el.hasMoreElements();) {
Element elem = (Element) el.nextElement();
if (elem instanceof Relation) {
Relation rl = (Relation) elem;
if (((rl.startnodeid != null && rl.startnodeid
.equals(em.id)) || (rl.endnodeid != null && rl.endnodeid
.equals(em.id)))
&& rl.ispassed) {
deleteMSG = "相关流程已处理,不能删除!";
}
}
}
}
if (deleteMSG == null) {
this.removeElement(em);
} else { // 提示不能删除的原因
ErrorDialog errordialog = new ErrorDialog(new Frame(),
"操作错误!", true);
Label lab = new Label(deleteMSG);
errordialog.setLayout(new BorderLayout());
errordialog.add(lab, BorderLayout.CENTER);
errordialog.setBounds(300, 300, 250, 70);
errordialog.show();
}
} else if (_statues == ACTION_BREAK_LINE) { // add by gusd
if (em instanceof Relation) {
_selected = (Element) em;
Relation relation = (Relation) _selected;
relation.setBreakpoint(new Point(x, y));
isChangeCursor = true;
}
} // add by gusd
else {
if (_selected instanceof Relation && em instanceof Node) {
Relation r = (Relation) _selected;
if (r.getStartnode() == null && em != null) {
r.setStartnode((Node) em);
Node node = (Node) em;
Point point = new Point(node.x, node.y);
r.addVector((Object) point);
}
} else if (em instanceof Relation) {
this.changeStatues(ACTION_BREAK_LINE);
_selected = (Element) em;
Relation relation = (Relation) _selected;
relation.setChangevector(-1);
int pos = relation.checkWhichpoint(new Point(x, y)); // 检查按下点是否恰好在该流程线的原有折点上,如果是,返回该折点的位置
relation.setBreakpoint(new Point(x, y));
relation.setCurrentselect(true);
isChangeCursor = true;
} else {
this._selected = em;
_selected.moveTo(x, y);
}
}
repaint();
} else {
if ((_statues == this.ACTION_ADD_RELATION)
&& (_selected instanceof Relation)) {
Relation r = (Relation) _selected;
if (r.getStartnode() == null) {
removeElement(r);
r = null;
_selected = null;
}
}
}
if (!isChangeCursor) { // isChangeCursor为true时,用户准备拖拉流程线,不释放鼠标指针的拖拉样式
this.changeStatues(this.ACTION_NORMAL);
isChangeCursor = false;
}
}
/**
* @param e
* @roseuid 3E0A6E1B0155
*/
void this_mouseReleased(MouseEvent e) {
int x = e.getX();
int y = e.getY();
Element em = this.chkSelectedElement(x, y);
if (_selected instanceof Relation && (em instanceof Node || em == null)) {
Relation r = (Relation) _selected;
r.setCurrentselect(false);
if (r.getEndnode() == null) {
if (em != null) {
_changed = true;
r.setEndnode((Node) em);
Node node = (Node) em;
Point point = new Point(node.x, node.y);
r.addVector((Object) point);
}
if (em == null || r.getStartnode().id.equals(r.getEndnode().id)) {
// r.getStartnode().removeSubElement(r.id);
this.removeElement(r);
}
// } else {
// r.getStartnode().removeSubElement(r.id);
// }
} else {
int pos = r.getChangevector();
r.setCurrentselect(false);
if (pos == -1) { // 原先按下的点不是原有折点
boolean bool = r.checkDistance(new Point(x, y));
if (!bool) { // 检查鼠标释放的点拖拉的距离是否小于一个常量,如果是,则当作没有拖拉
r.addVector((Object) new Point(x, y)); // 如果鼠标释放的点拖拉的距离大于一个常量,则当作一个新的折点
}
} else { // 原先按下的点为原有折点,鼠标释放后要改变原有折点的坐标
r.changeVector(new Point(x, y));
r.setChangevector(-1);
}
}
}
// 设置当前选中
if (_selected != null && em != null && _selected.equals(em)) {
_currToEdit = em;
}
this.changeStatues(this.ACTION_NORMAL);
_selected = null;
this.repaint();
}
/**
* @param e
* @roseuid 3E0A6E1B0169
*/
void this_mouseMoved(MouseEvent e) {
if ((this._statues == ACTION_ADD_NODE)
|| (this._statues == ACTION_ADD_ACTOR)) {
this.this_mouseDragged(e);
} else if (this._statues == ACTION_BREAK_LINE) {
}
else {
int x;
int y;
Graphics tg = this.getGraphics();
tg.setColor(java.awt.Color.black);
Element em = this.chkSelectedElement(e.getX(), e.getY());
if ((em != null) && !(em instanceof Relation)) {
this.changeStatues(this._statues);
// if(this._statues == ACTION_REMOVE){
// }
Node nd = (Node) em;
java.awt.FontMetrics fm = this.getFontMetrics(nd.font);
if (em.isSelected(e.getX(), e.getY())) {
String snote = "";
if (nd.description == null || nd.description.equals("null")) {
snote = "";
} else if (nd.description.getBytes().length <= 18) {
snote = nd.description;
} else {
snote = nd.description.substring(0, 9) + "...";
}
nd.showTips(tg); // 显示注释
}
} else {
this.repaint();
}
}
}
/**
* @param e
* @roseuid 3E0A6E1B0187
*/
void this_mouseDragged(MouseEvent e) {
int x = e.getX();
int y = e.getY();
if (this._selected != null && this._statues != ACTION_BREAK_LINE
&& this._selected instanceof Relation) { // 从一个结点到另一个结点画流程的拖拉过程中
Relation r = (Relation) this._selected;
if (r.getEndnode() == null) {
_selected.moveTo(x, y);
this.repaint();
}
} else if (this._selected != null && this._statues != ACTION_BREAK_LINE) {
_selected.moveTo(x, y);
this.repaint();
} else if (this._selected != null && this._selected instanceof Relation
&& this._statues == ACTION_BREAK_LINE) { // 拖拉流程线产生折点的过程
Relation r = (Relation) this._selected;
Point p = new Point(x, y);
int pos = r.getChangevector(); // 检查拖拉点是否原有折点
r.setCurrentselect(true);
if (pos == -1) { // 拖拉点不是原有折点,把鼠标移动点作为临时的_movepoint
r.setMovepoint(p);
} else { // 拖拉点是原有折点,鼠标移动点当作原有折点的新位置
r.changeVector(p);
}
this.repaint();
} // end
}
/**
* @param e
* @roseuid 3E0A6E1B019B
*/
void this_componentResized(ComponentEvent e) {
_tmpimg = this.createImage(this.size().width, this.size().height);
}
void this_mouseEntered(MouseEvent e) {
}
void appendElement(Element e) {
_elems.addElement(e);
}
public static void main(String[] args) {
}
public void toJpegImage(File file) throws Exception {
FileOutputStream out = new FileOutputStream(file);
toJpegImage(out);
out.close();
}
public void toJpegImage(OutputStream out) throws Exception {
this.setSize(1000, 600);
// BufferedImage image = new BufferedImage(this.getSize().width, this
// .getSize().height, BufferedImage.TYPE_INT_RGB);
//
BufferedImage image = (BufferedImage) _tmpimg;
Graphics g = image.getGraphics();
//
// this._tmpimg = image;
update(g, true);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
encoder.encode(image);
out.close();
}
public MasterSheet getMasterSheet() {
Iterator iter = this._elems.iterator();
while (iter.hasNext()) {
Element element = (Element) iter.next();
if (element instanceof MasterSheet) {
return (MasterSheet) element;
}
}
return null;
}
public Collection getDetailSheets() {
Vector rtn = new Vector();
Iterator iter = this._elems.iterator();
while (iter.hasNext()) {
Element element = (Element) iter.next();
if (element instanceof DetailSheet) {
rtn.addElement(element);
}
}
return rtn;
}
public Collection getLinkageKeys() {
Vector rtn = new Vector();
Iterator iter = this._elems.iterator();
while (iter.hasNext()) {
Element element = (Element) iter.next();
if (element instanceof Relation) {
LinkageKey lk = ((Relation) element).getLinkageKey();
if (lk!=null) {
rtn.addElement(lk);
}
}
}
return rtn;
}
public LinkageKey getLinkageKeyByMasterKey(Column masterKeyColumn) {
Collection linkageKeys = getLinkageKeys();
Iterator iter = linkageKeys.iterator();
while (iter.hasNext()) {
LinkageKey key = (LinkageKey) iter.next();
Column msk = key.getMasterSheetKeyColumn();
if (msk.name != null && msk.name.equals(masterKeyColumn.name)) {
return key;
}
}
return null;
}
public LinkageKey getLinkageKeyByDetailKey(Column detailKeyColumn) {
Collection linkageKeys = getLinkageKeys();
Iterator iter = linkageKeys.iterator();
while (iter.hasNext()) {
LinkageKey key = (LinkageKey) iter.next();
Column msk = key.getDetailSheetKeyColumn();
if (msk.name != null && msk.name.equals(detailKeyColumn.name)) {
return key;
}
}
return null;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -