📄 casediagrampanel.java
字号:
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 + -