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

📄 casediagrampanel.java

📁 一个数据挖掘软件ALPHAMINERR的整个过程的JAVA版源代码
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
				operator = (Operator) comp[i];
				break;
			}
		}
		return operator;
	}

	public static Operator getOperator(String a_CaseID, String a_NodeID) throws SysException
	{
		CaseDiagramPanel aCaseDiagramPanel = m_CaseDiagrams.get(a_CaseID);
		if (aCaseDiagramPanel != null)
		{
			return aCaseDiagramPanel.getOperator(a_NodeID);
		}else
		{
			throw new SysException("Case of CaseID: " + a_CaseID + " Not Found");
		}
		
	}

	/**
	 * Save any changes of the Case diagram.
	 */
	public void saveCaseDiagram() {

		Component[] comp = m_PanelDiagramDrawing.getComponents();
		try {
			
			BICase saveCase =
				CaseHandler.getInstance().getCase(getCaseID(), false);
			
			Iterator<String> iteratorNode = deletedNode.iterator();
			while(iteratorNode.hasNext()) {
				saveCase.removeNode(NodeFactory.OPERATOR, iteratorNode.next());
			}
			deletedNode.clear();
			Iterator<ArrowNodes> iteratorArrow = deletedArrow.iterator();
			while(iteratorArrow.hasNext()) {
				ArrowNodes an = iteratorArrow.next();
				saveCase.removeConnection(an.HeadNodeID, an.TailNodeID);
			}
			deletedArrow.clear();
			
			TaskNode task = (TaskNode) saveCase.getNode(NodeFactory.TASK, null);
			task.setCompanyName(m_CaseInformationLayer.getCompany());
			task.setDepartmentName(m_CaseInformationLayer.getDepartment());
			task.setIndustry(m_CaseInformationLayer.getIndustry());
			task.setProblemType(m_CaseInformationLayer.getProblemType());
			task.setBusinessObjective(
				m_CaseInformationLayer.getBusinessObjective());
			task.setDataMiningGoal(m_CaseInformationLayer.getDataMiningGoal());
			//<<21/02/2005 Mark Li: Add Case Name
			task.setCaseName(m_CaseInformationLayer.getCaseName());
		    //21/02/2005 Mark Li: Add Case Name>>
			
			Node node = null;
			Operator operator = null;
			for (int i = 0; comp != null && i < comp.length; i++) {
				if (comp[i] instanceof Operator) {
					operator = (Operator) comp[i];
					node =
						saveCase.getNode(
							NodeFactory.OPERATOR,
							operator.getNodeID());
					node.setPositionX(operator.getLocation().getX());
					node.setPositionY(operator.getLocation().getY());
					node.setNodeDescription(operator.getDescription());
					saveCase.setNode(node);
				}
			}
		} catch (BaseException be) {
			System.err.println(be.getMessage());
		}
	}

	/**
	 * Refreshes current drawing of the Case diagram.
	 */
	public void refreshCaseDiagram() {
		Component[] comp = m_PanelDiagramDrawing.getComponents();
		Operator operator = null;
		int startX = -1;
		int startY = -1;
		int x = 0;
		int y = 0;
		double unitX = Operator.OPERATOR_WIDTH * 1.1;
		double unitY = Operator.OPERATOR_HEIGHT * 1.1;

		for (int i = 0; comp != null && i < comp.length; i++) {
			if (comp[i] instanceof Operator) {
				operator = (Operator) comp[i];
				if (startX < 0 || operator.getX() < startX)
					startX = operator.getX();
				if (startY < 0 || operator.getY() < startY)
					startY = operator.getY();
			}
		}

		for (int i = 0; comp != null && i < comp.length; i++) {
			if (comp[i] instanceof Operator) {
				operator = (Operator) comp[i];
				x = (int) (((operator.getX() - startX) / unitX) + 0.5);
				y = (int) (((operator.getY() - startY) / unitY) + 0.5);
				operator.setLocation(
					(int) (startX + unitX * x),
					(int) (startY + unitY * y));
			}
		}

		m_PanelDiagramDrawing.repaint();
	}

	/**
	 * Clear existing drawing of Case diagram.
	 */
	public void clearCaseDiagram() {
		Component[] comp = m_PanelDiagramDrawing.getComponents();
		for (int i = 0; comp != null && i < comp.length; i++) {
			if (comp[i] instanceof CaseInformationLayer
				|| comp[i] == m_CaseInformationButton)
				continue;
			m_PanelDiagramDrawing.remove(comp[i]);
		}
		m_PanelDiagramDrawing.repaint();
	}

	public void enableDrag(boolean canDrag) {
		m_DropTarget.setActive(canDrag);
	}
	
	/**
	 * Draws the Case diagram.
	 * @throws SysException 
	 * @throws UnsupportedEncodingException 
	 */
	@SuppressWarnings("unchecked")
	public void drawCaseDiagram() throws SysException {

		BICase drawCase = null;
		try {
			drawCase = CaseHandler.getInstance().getCase(getCaseID(), false);
		} catch (BaseException be) {
			System.err.println(be.getMessage());
		}
		if (drawCase == null)
			return;

		TaskNode taskNode = (TaskNode) drawCase.getNode(NodeFactory.TASK, null);
		m_CaseInformationLayer.setData(taskNode);

		Node[] nodes = drawCase.getOperatorNodeListArray();
		if (nodes == null) {
			m_PanelDiagramDrawing.setPreferredSize(new Dimension());
			return;
		}

		Hashtable<String, Operator> processedNode = new Hashtable<String, Operator>();
		Operator operator = null;
		for (int i = 0; i < nodes.length; i++) {
			operator =
				OperatorFactory.createOperator(
					getCaseID(),
					((OperatorNode) nodes[i]).getOperatorDefinitionID());
//					getCaseWindow(),
//					m_DMEngineType);
			
			// fail to create that operator
			if (operator==null)
			{
				// Throw Exception and Skip this operator
				if (m_SystemMessageHandler==null)
				{
					m_SystemMessageHandler = m_CaseHandler.getSystemMessageHandler(m_CaseID);
				}
				m_SystemMessageHandler.appendMessage("Operator ["+((OperatorNode) nodes[i]).getOperatorDefinitionID()+"] is not defined.");
				continue;
			}
			String temp = new String(nodes[i].getNodeDescription());
			operator.setDescription(temp);//new String(str.getBytes("")),"GBK")str.getBytes("ISO-8859-1"), "GB2312")
			operator.setNodeID(nodes[i].getNodeID());
			Point aPoint = new Point();
			aPoint.setLocation(
				nodes[i].getPositionX(),
				nodes[i].getPositionY());
			operator.setBounds(aPoint);
			m_PanelDiagramDrawing.add(operator);

			/*
			if (((OperatorNode) nodes[i]).getOperatorNodeType()==OperatorNode.INPUT_DATA)
			{
				String filename = ((OperatorNode) nodes[i]).getParameterValue("Source location");
				if (filename!=null)
				{
					try
					{
						((InputDataOperator) operator).setMetaData(MiningDataSpecification.getMiningDataSpecification(filename));		
					} catch (MiningException me)
					{}	
				}
			}
			*/
			
			operator.loadTempOutputData();
			
			processedNode.put(nodes[i].getNodeID(), operator);
		}
		Dimension dimension = getDimension();
		m_PanelDiagramDrawing.setSize(dimension);
		m_PanelDiagramDrawing.setPreferredSize(dimension);
		m_ScrollPaneDiagram.getViewport().scrollRectToVisible(
			new Rectangle(0, 0, 1, 1));

		drawArrow(drawCase, processedNode);
		m_PanelDiagramDrawing.repaint();
	}

	public void drop(DropTargetDropEvent e) {
		try {
			drop(e, e.getLocation());
		} catch (SysException e1) { 
			e1.printStackTrace();
		}
	}
	
	/**
	 * @throws SysException
	 * @see java.awt.dnd.DropTargetListener#drop(DropTargetDropEvent)
	 */
	public void drop(DropTargetDropEvent e, Point dropPoint) throws SysException {
		DataFlavor stringFlavor = DataFlavor.stringFlavor;
		Transferable tr = e.getTransferable();
		String operatorDefinitionID = "";

		if (m_CaseInformationLayer.isVisible())
			// && m_CaseInformationLayer.contains(e.getLocation()))
			return;

		if (e.isDataFlavorSupported(stringFlavor)) {
			try {
				operatorDefinitionID = (String) tr.getTransferData(stringFlavor);
			} catch (Exception ex) {
				throw new SysException(ex);
			}
			e.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE);
			e.dropComplete(true);


			String id = null;
			try {
				id = CaseHandler.getInstance().createNode(m_CaseID, operatorDefinitionID);
				
				// <<25/07/2005 Kenneth Lai: Add for JHelp
				
				// 25/07/2005 Kenneth Lai: Add for JHelp>>
			} catch (BaseException be) {
				throw new SysException(be);
			}
			getCaseWindow().setModified(true);
			Operator operator =	OperatorFactory.createOperator(m_CaseID, operatorDefinitionID);//, getCaseWindow(), m_DMEngineType);
			operator.setNodeID(id);

			operator.setOperatorBounds(dropPoint.getLocation());

			m_PanelDiagramDrawing.add(operator);
			
			int width = m_PanelDiagramDrawing.getWidth();
			int height = m_PanelDiagramDrawing.getHeight();

			int x = dropPoint.x;
			int y = dropPoint.y;
			setActiveComponent(operator);
//			<<11/07/2005 Kenneth Lai: Resolve the newly added node deletion problem
			this.requestFocus();
//			11/07/2005 Kenneth Lai: Resolve the newly added node deletion problem>>
			
			// If the operator dropped closed to the right and bottom boundary, enlarge the case diagram
//			<<16/06/2005 Mark Li: Modified for multi-selection
//			if (x + getActiveComponent().getWidth() > width + 20)
//				width = x + getActiveComponent().getWidth();
//			if (y + getActiveComponent().getHeight() > height + 20)
//				height = y + getActiveComponent().getHeight();
			if (x + m_ActiveComponent[0].getWidth()> width + 20)
				width = x + m_ActiveComponent[0].getWidth();
			if (y + m_ActiveComponent[0].getHeight() > height + 20)
				height = y + m_ActiveComponent[0].getHeight();

//			16/06/2005 Mark Li: Modified for multi-selection>>
			if (width != m_PanelDiagramDrawing.getWidth()
				|| height != m_PanelDiagramDrawing.getHeight()) {
				// Adjust panel size according to the operator which is farthest away from the origin of Viewport
				m_PanelDiagramDrawing.setPreferredSize(getDimension());
				m_PanelDiagramDrawing.setSize(getDimension());
				m_ScrollPaneDiagram.getViewport().scrollRectToVisible(
//						<<16/06/2005 Mark Li: Modified for multi-selection				        
				        m_ActiveComponent[0].getBounds());
//					getActiveComponent().getBounds());
//				16/06/2005 Mark Li: Modified for multi-selection>>
			} //else {
//				m_PanelDiagramDrawing.setPreferredSize(getDimension());
//				m_PanelDiagramDrawing.setSize(getDimension());
//				m_ScrollPaneDiagram.getViewport().scrollRectToVisible(
//					getActiveComponent().getBounds());
//				// Roll the panel to visible the operator
//				Rectangle rect = m_ScrollPaneDiagram.getViewport().getViewRect();
//				if (!rect.contains(getActiveComponent().getBounds())) { 
//					m_PanelDiagramDrawing.setPreferredSize(getDimension());
//					m_PanelDiagramDrawing.setSize(getDimension());
//					m_ScrollPaneDiagram.getViewport().scrollRectToVisible(
//						getActiveComponent().getBounds());
//				}
//			}
			m_IsDragging = false;
			m_PanelDiagramDrawing.repaint(); 

			this.repaint();

		} else
			e.rejectDrop();
		
	} 

	/**
	 * @see java.awt.dnd.DropTargetListener#dragEnter(DropTargetDragEvent)
	 */
	public void dragEnter(DropTargetDragEvent e) {
	}
	/**
	 * @see java.awt.dnd.DropTargetListener#dragExit(DropTargetEvent)
	 */
	public void dragExit(DropTargetEvent e) {
	}
	/**
	 * @see java.awt.dnd.DropTargetListener#dragOver(DropTargetDragEvent)
	 */
	public void dragOver(DropTargetDragEvent e) {
	}
	/**
	 * @see java.awt.dnd.DropTargetListener#dropActionChanged(DropTargetDragEvent)
	 */
	public void dropActionChanged(DropTargetDragEvent e) {
	}

	/**
	 * @see java.awt.event.ActionListener#actionPerformed(ActionEvent)
	 */
	public void actionPerformed(ActionEvent e) {
		Object source = e.getSource();
		
		if(e.getSource()==m_CaseInformationButton) {
			m_CaseInformationLayer.setVisible(!m_CaseInformationLayer.isVisible());
			if (m_CaseInformationLayer.isVisible()) {
				int oriWidth = m_PanelDiagramDrawing.getWidth();
				int oriHeight = m_PanelDiagramDrawing.getHeight();
				int width =
					m_CaseInformationLayer.getX()
						+ m_CaseInformationLayer.getWidth();
				int height =

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -