📄 casediagrampanel.java
字号:
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>>
// Roll the panel to visible the operator
Rectangle rect = m_ScrollPaneDiagram.getViewport().getViewRect();
// <<16/06/2005 Mark Li: Modified for multi-selection
// if (!rect.contains(getActiveComponent().getBounds())) {
// m_PanelDiagramDrawing.scrollRectToVisible(getActiveComponent().getBounds());
if (!rect.contains(getActiveComponentBorder())) {
m_PanelDiagramDrawing.scrollRectToVisible(getActiveComponentBorder());
// 16/06/2005 Mark Li: Modified for multi-selection>>
m_PanelDiagramDrawing.revalidate();
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();
}
// if (!rect.contains(getActiveComponent().getBounds())) {
//// m_PanelDiagramDrawing.setSize(new Dimension(0, 0));
//// m_PanelDiagramDrawing.setPreferredSize(new Dimension(0, 0));
//// m_ScrollPaneDiagram.getViewport().scrollRectToVisible(
//// getActiveComponent().getBounds());
// m_PanelDiagramDrawing.setPreferredSize(getDimension());
// m_PanelDiagramDrawing.setSize(getDimension());
// m_ScrollPaneDiagram.getViewport().scrollRectToVisible(
// getActiveComponent().getBounds());
// }
}
// <<16/06/2005 Mark Li: Modified for multi-selection
repaint();
m_PanelDiagramDrawing.repaint();
getCaseWindow().setModified(true);
// 16/06/2005 Mark Li: Modified for multi-selection>>
}
}
}
/**
* @see java.awt.event.MouseMotionListener#mouseMoved(MouseEvent)
*/
public void mouseMoved(MouseEvent e) {
Component[] comp = m_PanelDiagramDrawing.getComponents();
Operator operator = null;
// <<27/07/2005 Kenneth Lai: Add for JHelp
HelpCursor helpCursor = new HelpCursor();
if ( isHelpMode() ) {
setCursor(helpCursor.getCursor());
}
else {
setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
// 27/07/2005 Kenneth Lai: Add for JHelp>>
if (m_CaseInformationLayer.isVisible())
return;
for (int i = 0; comp != null && i < comp.length; i++) {
if (comp[i] instanceof Operator) {
operator = (Operator) comp[i];
if (operator.getBounds().contains(e.getX(), e.getY())) {
if (operator
.getOperatorImage()
.getBounds()
.contains(
e.getX() - operator.getX(),
e.getY() - operator.getY())) {
setCursor(
Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
break;
} else if (
operator.getModePanel().getBounds().contains(
e.getX() - operator.getX(),
e.getY() - operator.getY())) {
setCursor(
Cursor.getPredefinedCursor(
Cursor.CROSSHAIR_CURSOR));
break;
} else
setCursor(Cursor.getDefaultCursor());
} else
setCursor(Cursor.getDefaultCursor());
}
}
}
}
/**
* @see java.awt.KeyEventDispatcher#dispatchKeyEvent(KeyEvent)
*/
public boolean dispatchKeyEvent(KeyEvent e) {
if (!this.isFocusOwner())
return false;
if (e.getID() == KeyEvent.KEY_PRESSED
&& getCaseWindow().isSelected()) {
if (getActiveComponent() != null
&& e.getKeyCode() == KeyEvent.VK_DELETE
&& !m_CaseInformationLayer.isVisible()) {
// <<16/06/2005 Mark Li: Modified for multi-selection
// if (getActiveComponent() instanceof ArrowComponent)
if(getActiveComponent() != null){
deleteArrow();
// else {
deleteOperator();
setCursor(Cursor.getDefaultCursor());
// <<08/07/2005 Kenneth Lai: Disabled to eliminate screen splash problem
//m_PanelDiagramDrawing.setPreferredSize(getDimension());
//m_PanelDiagramDrawing.setSize(getDimension());
// 08/07/2005 Kenneth Lai: Disabled to eliminate screen splash problem>>
m_PanelDiagramDrawing.repaint();
setActiveComponent(null);
getCaseWindow().setModified(true);
// }
return true;
}
//16/06/2005 Mark Li: Modified for multi-selection>>
}
else if(e.getKeyCode() == KeyEvent.VK_F5) {
//refresh window
m_CurrentPanel.refreshCaseDiagram();
m_CurrentPanel.getCaseWindow().setModified(true);
}
return false;
}
return false;
}
//<<16/06/2005 Mark Li: Add for components multi-selection
/**
* Sets given Components as active components.
* This is similar as setActiveComponent(Jcomponent comp),
* but use different parameter
* @param compArray: the Componenets to be set
*/
public void setActiveComponents(Vector<JComponent> compArray){
m_ActiveComponent = new JComponent[compArray.size()];
for (int i = 0; i < compArray.size(); i++) {
m_ActiveComponent[i] = compArray.get(i);
if (m_ActiveComponent[i] instanceof ArrowComponent)
((ArrowComponent) m_ActiveComponent[i]).setSelect();
else if (m_ActiveComponent[i] instanceof Operator) {
String id = ((Operator) m_ActiveComponent[i]).getNodeID();
String des = null;
try {
des = (String) ((OperatorNode) CaseHandler.getInstance().getCase(
getCaseID(), false).getNode(NodeFactory.OPERATOR,
id)).getParameterValue("Tips");
String[] superscript = new String[2];
superscript[0] = Resource.srcStr("print_caseName")+": "+ m_Parent.getCaseName();
superscript[1] = Resource.srcStr("print_operatorName")+": "+ ((Operator)m_ActiveComponent[i]).getLabel();
if (des == null) {
((CaseWindow) getCaseWindow()).getDescriptionPanel()
.setDescription("",superscript);
} else if (des != null)
((CaseWindow) getCaseWindow()).getDescriptionPanel()
.setDescription(des,superscript);
} catch (BaseException be) {
// System.out.println("error in setting description");
}
((Operator) m_ActiveComponent[i]).setSelectMode();
}
}
setActiveComponentBorder();
isFirstMutiSelect = true;
}
/**
* Get the Width for the Active Component(s),
* The size of the Active component(s) Width is the number of Active Component(s)
* @return the Width of Active Component(s)
*/
public int getActiveComponentWidth(){
int width;
Rectangle recActiveComponent = getActiveComponentBorder();
if(recActiveComponent == null)
return 0;
width = (int)recActiveComponent.getWidth();
return width;
}
/**
* Get the Height for the Active Component(s),
* The size of the Active component(s) Height is the number of Active Component(s)
* @return the Height of Active Component(s)
*/
public int getActiveComponentHeight(){
int height;
Rectangle recActiveComponent = getActiveComponentBorder();
if(recActiveComponent == null)
return 0;
height = (int)recActiveComponent.getHeight();
return height;
}
public void updateActiveComponentsBorderLocation(int updatedX,int updatedY){
// System.out.println("\nm_recActiveComponent.setLocation(updatedX-->"+updatedX+",updatedY-->"+updatedY+");");
if(m_recActiveComponent == null) return;
m_recActiveComponent.setLocation(updatedX,updatedY);
}
public int getDragMovementDistanceX(){
int minActiveComponentX;
if (m_ActiveComponent == null){
System.err.println("m_ActiveComponent == null");
return 0;
}
minActiveComponentX = m_ActiveComponent[0].getX();
for(int i = 1; i< m_ActiveComponent.length; i++){
if(minActiveComponentX > m_ActiveComponent[i].getLocation().x)
minActiveComponentX = m_ActiveComponent[i].getLocation().x;
}
return (getActiveComponentBorder().getLocation().x - minActiveComponentX);//-Operator.ICON_WIDTH);
}
public int getDragMovementDistanceY(){
int minActiveComponentY;
if (m_ActiveComponent == null)
return 0;
minActiveComponentY = m_ActiveComponent[0].getY();
for(int i = 1; i< m_ActiveComponent.length; i++){
if(minActiveComponentY > m_ActiveComponent[i].getLocation().y){
minActiveComponentY = m_ActiveComponent[i].getLocation().y;
}
}
int temp = getActiveComponentBorder().getLocation().y - minActiveComponentY;
return temp;
}
@SuppressWarnings("unchecked")
public void setActiveComponentBorder(){
int RectangleMinX = 0;
int RectangleMinY = 0;
int RectangleMaxX = 0;
int RectangleMaxY = 0;
int DefaultRectangleHeight = Operator.ICON_HEIGHT;// 55;
int DefaultRectangleWidth = Operator.ICON_WIDTH;//44;
int i;
m_recActiveComponent = null;
if(m_ActiveComponent == null)
return;
for( i = 0; i < m_ActiveComponent.length; i++){
if( i == 0){
RectangleMinX = (int) m_ActiveComponent[i].getX();// + DefaultRectangleWidth;
RectangleMinY = (int) m_ActiveComponent[i].getY();
RectangleMaxX = (int) m_ActiveComponent[i].getX();
RectangleMaxY = (int) m_ActiveComponent[i].getY();
continue;
}
if(RectangleMinX > (int) m_ActiveComponent[i].getX())
RectangleMinX = (int) m_ActiveComponent[i].getX();// + DefaultRectangleWidth;
if(RectangleMaxX < (int) m_ActiveComponent[i].getX())
RectangleMaxX = (int) m_ActiveComponent[i].getX();
if(RectangleMinY > (int) m_ActiveComponent[i].getY())
RectangleMinY = (int) m_ActiveComponent[i].getY();
if(RectangleMaxY < (int) m_ActiveComponent[i].getY())
RectangleMaxY = (int) m_ActiveComponent[i].getY();
}
DefaultRectangleWidth = RectangleMaxX - RectangleMinX + DefaultRectangleWidth;//*2;
DefaultRectangleHeight = RectangleMaxY - RectangleMinY + DefaultRectangleHeight;
m_recActiveComponent = new Rectangle(RectangleMinX,RectangleMinY,
DefaultRectangleWidth,DefaultRectangleHeight);
//Set m_ArrowInActiveComponents
Component[] comp = m_PanelDiagramDrawing.getComponents();
ArrowComponent arrow = null;
m_ArrowInActiveComponents.removeAllElements();
m_ArrowInActiveComponents.setSize(comp.length);
for (i = 0; comp != null && i < comp.length; i++) {
if (comp[i] instanceof ArrowComponent) {
arrow = (ArrowComponent) comp[i];
JComponent from = arrow.getParentNode();
JComponent to = arrow.getChildNode();
for(int j = 0 ; j< m_ActiveComponent.length; j++)
{
if(from.equals(m_ActiveComponent[j]) || to.equals(m_ActiveComponent[j]))
m_ArrowInActiveComponents.insertElementAt(arrow,i);
}
// System.out.println("m_recActiveComponent.toString()"+m_recActiveComponent.toString());
// System.out.println("arrow.getChildNode().getLocation()"+arrow.getChildNode().getLocation());
// System.out.println("arrow.getParent().getLocation()"+arrow.getParent().getLocation());
// if (//m_recActiveComponent.contains(arrow.getParent().getLocation())
// !m_ArrowInActiveComponents.contains(arrow)
// &&m_recActiveComponent.contains(arrow.getChildNode().getLocation())) {
// }
}
}
}
/**
* Get the Border for the Active Component(s),
* The size of the Active component(s) Border is the number of Active Component(s)
* @return the Border of Active Component(s)
*/
public Rectangle getActiveComponentBorder(){
return m_recActiveComponent;
}
//16/06/2005 Mark Li: Add for components multi-selection>>
/**
* Sets a given Component as an active component.
* That is the same as selecting the given Component.
* @param comp the Component to be set.
*/
public void setActiveComponent(JComponent comp) {
// ((CaseWindow)getCaseWindow()).getDescriptionPanel().clearDescription();
/*
if (m_ActiveComponent instanceof ArrowComponent)
((ArrowComponent) m_ActiveComponent).clearSelect();
else if (m_ActiveCompo
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -