📄 casediagrampanel.java
字号:
transparent.setVisible(false);
m_PanelDiagramDrawing.add(transparent);
transparent.setLocation(e.getPoint());
tempArrow =
new ArrowComponent(
(JComponent) operator,
(JComponent) transparent,
true);
m_PanelDiagramDrawing.add(tempArrow);
m_PanelDiagramDrawing.repaint();
break;
}
//}
}
}
// <<16/06/2005 Mark Li: Modified for multi-selection
if(!isHitOperatorFlag){
setActiveComponent(null);
}
m_PanelDiagramDrawing.repaint();
// 16/06/2005 Mark Li: Modified for multi-selection>>
}
}
/**
* @see java.awt.event.MouseListener#mouseReleased(MouseEvent)
*/
public void mouseReleased(MouseEvent e) {
// m_IsDragging = false; //<<16/06/2005 Mark Li: Modified for multi-selection>>
ArrowComponent arrow = null;
Component[] comp = null;
Operator operator = null;
// <<27/07/2005 Kenneth Lai: Add for JHelp
boolean clickOnNode = false;
if ( isHelpMode() ) {
for (int i = 0; comp != null && i < comp.length; i++) {
if (comp[i] instanceof Operator) {
operator = (Operator) comp[i];
if (operator // click on the operator node
.getModePanel()
.getBounds()
.contains(
e.getX() - operator.getX(),
e.getY() - operator.getY())) {
clickOnNode = true;
}
}
}
if ( !clickOnNode ) {
setHelpMode(false);
HelpObserveSubject.sendNotify(false);
}
}
// 27/07/2005 Kenneth Lai: Add for JHelp>>
else {
if (m_CaseInformationLayer.isVisible()){
m_IsDragging = false;
return;
}
try {
if (transparent != null) {
m_IsDragging = false;//<<16/06/2005 Mark Li: Modified for multi-selection>>
comp = m_PanelDiagramDrawing.getComponents();
for (int i = 0; comp != null && i < comp.length; i++) {
if (comp[i] instanceof Operator) {
operator = (Operator) comp[i];
if (operator == ((Operator) tempArrow.getParentNode()))
continue;
if (operator
.getBounds()
.contains(e.getX(), e.getY())) {
if (operator
.getModePanel()
.getBounds()
.contains(
e.getX() - operator.getX(),
e.getY() - operator.getY())) {
if (CaseHandler
.getInstance()
.createConnection(
m_CaseID,
((Operator) tempArrow.getParentNode())
.getNodeID(),
operator.getNodeID())) {
//System.out.println("success insert connection");
arrow = new ArrowComponent(tempArrow
.getParentNode(),
(JComponent) operator, false);
m_PanelDiagramDrawing.add(arrow);
getCaseWindow().setModified(true);
} else
//System.out.println("fail");
break;
}
}
}
}
m_PanelDiagramDrawing.remove(tempArrow);
m_PanelDiagramDrawing.remove(transparent);
transparent = null;
m_PanelDiagramDrawing.repaint();
// <<16/06/2005 Mark Li: Modified for multi-selection
}else if (m_IsDragging && (m_ActiveComponent != null)) {
m_IsDragging = false;
int DragMovementDistanceX = getDragMovementDistanceX();
int DragMovementDistanceY = getDragMovementDistanceY();
for(int i = 0; i< m_ActiveComponent.length; i++){
// System.out.println("\nm_ActiveComponent->->"+i);
int origX = m_ActiveComponent[i].getLocation().x;
// System.out.println("\norigX->"+origX);
int origY = m_ActiveComponent[i].getLocation().y;
// System.out.println("\norigY->"+origY);
if(DragMovementDistanceX !=0 && DragMovementDistanceY != 0)
m_ActiveComponent[i].setLocation(origX+DragMovementDistanceX-Operator.ICON_WIDTH,origY+DragMovementDistanceY);
// System.out.println("\ngetDragMovementDistanceX()->"+DragMovementDistanceX);
// System.out.println("\ngetDragMovementDistanceY()->"+DragMovementDistanceY);
// System.out.println("\nNewLocation: x->"+(origX+getDragMovementDistanceX())+",y->"+(origY+getDragMovementDistanceY()));
}
if(m_ArrowInActiveComponents != null){
for(int i = 0; i< m_ArrowInActiveComponents.size();i++){
if(m_ArrowInActiveComponents.get(i) != null){
arrow = m_ArrowInActiveComponents.get(i);
int origX = arrow.getLocation().x;
int origY = arrow.getLocation().y;
// System.out.println("DragMovementDistanceX"+DragMovementDistanceX);
// System.out.println("m_ScrollPaneDiagram.getViewport().getWidth()"+m_ScrollPaneDiagram.getViewport().getWidth());
// System.out.println("DragMovementDistanceY"+DragMovementDistanceY);
// System.out.println("m_ScrollPaneDiagram.getViewport().getHeight()"+m_ScrollPaneDiagram.getViewport().getHeight());
if((new BigInteger(DragMovementDistanceX+"")).abs().intValue() > m_ScrollPaneDiagram.getViewport().getWidth() || (new BigInteger(DragMovementDistanceY+"").abs()).intValue() > m_ScrollPaneDiagram.getViewport().getHeight()){
m_PanelDiagramDrawing.remove(i);
arrow.setLocation(origX+DragMovementDistanceX-Operator.ICON_WIDTH,origY+DragMovementDistanceY);
m_PanelDiagramDrawing.add(arrow,i);
}
}
}
// m_ArrowInActiveComponents.removeAllElements();
}
if(isFirstMutiSelect && m_ActiveComponent.length>1 && !e.isControlDown()){
isFirstMutiSelect = false;
}
// if(m_ActiveComponent.length == 1)
// updateActiveComponentsBorderLocation((int)(getActiveComponentBorder().getX()-Operator.ICON_WIDTH), (int)getActiveComponentBorder().getY());
// repaint();
// 16/06/2005 Mark Li: Modified for multi-selection>>
}
// m_Start.setLocation(0, 0);
// setActiveComponent(null); //<<16/06/2005 Mark Li: Modified for multi-selection>>
m_PanelDiagramDrawing.repaint();
repaint();
} catch (BaseException be) {
be.printStackTrace();
}
}
}
/**
* @see java.awt.event.MouseMotionListener#mouseDragged(MouseEvent)
*/
public void mouseDragged(MouseEvent e) {
// <<27/07/2005 Kenneth Lai: Add for JHelp
if ( isHelpMode() ) {
// no operation
}
// 27/07/2005 Kenneth Lai: Add for JHelp>>
else {
int x, y, width, height;
//System.err.println("mouseDragged(MouseEvent e):"+e.toString());
if (m_CaseInformationLayer.isVisible())
return;
m_IsDragging = true;
// if((e.getWhen()-temRec)<DRAGSPEED){
// return;
// }else{
// temRec = e.getWhen();
// }
// Dragging the arrow
if (transparent != null) {
// Make sure the arrow is not going out of the panel boundaries
x = e.getX();
y = e.getY();
width = m_PanelDiagramDrawing.getWidth();
height = m_PanelDiagramDrawing.getHeight();
if (x
< m_CaseInformationButton.getX()
+ m_CaseInformationButton.getWidth()
&& y
<= m_CaseInformationButton.getY()
+ m_CaseInformationButton.getHeight())
y =
m_CaseInformationButton.getY()
+ m_CaseInformationButton.getHeight();
if (y
< m_CaseInformationButton.getY()
+ m_CaseInformationButton.getHeight()
&& x
<= m_CaseInformationButton.getX()
+ m_CaseInformationButton.getWidth())
x =
m_CaseInformationButton.getX()
+ m_CaseInformationButton.getWidth();
if (x == e.getX() && x < 0)
x = 0;
else if (x == e.getX() && x > width)
x = width;
if (y == e.getY() && y < 0)
y = 0;
else if (y == e.getY() && y > height)
y = height;
transparent.setLocation(x, y);
// Roll the panel until the arrow is visible
Rectangle rect = m_ScrollPaneDiagram.getViewport().getViewRect();
Point pt =
m_ScrollPaneDiagram.getViewport().toViewCoordinates(
new Point(x, y));
// Rectangle tran =
// new Rectangle((int) pt.getX(), (int) pt.getY(), 1, 1);
Rectangle tran =
// new Rectangle((int) pt.getX(), (int) pt.getY(), rect.width, rect.height);
new Rectangle((int) pt.getX(), (int) pt.getY(), 1, 1);
if (!rect.contains(tran)) {
m_PanelDiagramDrawing.scrollRectToVisible(tran);
m_PanelDiagramDrawing.revalidate();
// m_PanelDiagramDrawing.setPreferredSize(new Dimension(0, 0));
// m_PanelDiagramDrawing.setSize(new Dimension(0, 0));
// m_ScrollPaneDiagram.getViewport().scrollRectToVisible(tran);
// m_PanelDiagramDrawing.setPreferredSize(
// new Dimension(width, height));
// m_PanelDiagramDrawing.setSize(new Dimension(width, height));
// m_ScrollPaneDiagram.getViewport().scrollRectToVisible(tran);
}
m_PanelDiagramDrawing.repaint();
}
// Dragging an operator
else if (m_IsDragging) {
// Makes sure the operator is not
//System.err.println("In drag------>e.getX()->"+e.getX()+",e.getY()->"+e.getY());
if (m_ActiveComponent == null) return;
if(m_ActiveComponent.length == 1 ||isFirstMutiSelect){
x = (int) (e.getX() - m_Start.getX() + Operator.ICON_WIDTH);
}
else{
x = (int) (e.getX() - m_Start.getX());
}
y = (int) (e.getY() - m_Start.getY());
//System.err.println("In drag------>X->"+x+",Y->"+y);
if (x
< m_CaseInformationButton.getX()
+ m_CaseInformationButton.getWidth()
&& y
< m_CaseInformationButton.getY()
+ m_CaseInformationButton.getHeight()){
y =
m_CaseInformationButton.getY()
+ m_CaseInformationButton.getHeight();
//System.err.println("--------------------------------------------------------------");
}
if (y
< m_CaseInformationButton.getY()
+ m_CaseInformationButton.getHeight()
&& x
< m_CaseInformationButton.getX()
+ m_CaseInformationButton.getWidth())
x =
m_CaseInformationButton.getX()
+ m_CaseInformationButton.getWidth();
//System.out.println("x-->"+x+"== e.getX() - m_Start.getX()"+(e.getX() - m_Start.getX()));
// <<11/07/2005 Kenneth Lai: Left margin
if( /*m_ActiveComponent.length == 1 && */x == (int) ( e.getX() - m_Start.getX() + Operator.ICON_WIDTH )
&& (x-Operator.ICON_WIDTH) < 20 )
x = SCROLLPANE_X_MARGIN;
else if (x == (int) (e.getX() - m_Start.getX()) && x < SCROLLPANE_X_MARGIN)
x = SCROLLPANE_X_MARGIN;
// else if(isFirstMutiSelect && x< 45)
// x = 0;
// 11/07/2005 Kenneth Lai: Left margin>>
if (y == (int) (e.getY() - m_Start.getY()) && y < 2)
y = 2;
// <<16/06/2005 Mark Li: Modified for multi-selection
// getActiveComponent().setLocation(x, y);
//System.err.println("In drag---Updated--->X->"+x+",Y->"+y);
// updateActiveComponentsBorderLocation(x,y);
// 16/06/2005 Mark Li: Modified for multi-selection>>
updateActiveComponentsBorderLocation(x,y);
width = m_PanelDiagramDrawing.getWidth();
height = m_PanelDiagramDrawing.getHeight();
// <<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 + getActiveComponentWidth() + SCROLLPANE_X_MARGIN > width )
width = x + getActiveComponentWidth() + SCROLLPANE_X_MARGIN;
if (y + getActiveComponentHeight() + SCROLLPANE_Y_MARGIN > height)
height = y + getActiveComponentHeight() + SCROLLPANE_Y_MARGIN;
// 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
// getActiveComponent().getBounds());
getActiveComponentBorder());
m_ScrollPaneDiagram.getViewport().getAlignmentX();
m_ScrollPaneDiagram.getViewport().getAlignmentY();
m_ScrollPaneDiagram.getViewport().getLocation();
m_ScrollPaneDiagram.getViewport().getLocationOnScreen();
m_ScrollPaneDiagram.getViewport().getView();
m_ScrollPaneDiagram.getViewport().getViewPosition();
m_ScrollPaneDiagram.getViewport().getViewSize();
m_ScrollPaneDiagram.getViewport().getViewRect();
m_ScrollPaneDiagram.getViewport().getVisibleRect();
// 16/06/2005 Mark Li: Modified for multi-selection>>
} else {
// m_PanelDiagramDrawing.setPreferredSize(getDimension());
// m_PanelDiagramDrawing.setSize(getDimension());
// m_ScrollPaneDiagram.getViewport().scrollRectToVisible(
//// <<16/06/2005 Mark Li: Modified for multi-selection
//// getActiveComponent().getBounds());
// getActiveComponentBorder());
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -