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

📄 excelmappingdiagram.java

📁 OBPM是一个开源
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
			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 + -