📄 formpanel.java
字号:
package webide.form;
import java.awt.*;
import java.awt.event.*;
import java.beans.Beans;
import java.util.Vector;
import java.util.Enumeration;
import webide.MainConsole;
import webide.views.toolbox.ToolBox;
public class FormPanel extends Panel
implements MouseListener,
MouseMotionListener,
ComponentListener,
KeyListener {
public static FormPanel formpan= null;
public FormPanel(MainConsole mainConsole) {
super();
setLayout(null);
setName("FormPanel");
setBackground(Color.white);
setFocusPoint(this);
pForm = new PainterForm(mainConsole,this);
this.mainConsole = mainConsole;
this.add(pForm);
setCurrentComponent(pForm.topWrapper);
pForm.setBounds(7,7,400,400);
pForm.addMouseListener(this);
pForm.addMouseMotionListener(this);
pForm.addComponentListener(this);
pForm.addKeyListener(this);
addMouseListener(this);
addMouseMotionListener(this);
addComponentListener(this);
formpan = this;
}
public PainterForm newPainterForm() {
this.remove(pForm);
FPoint.setVisible(false);
pForm = new PainterForm(getMain(),this);
pForm.setBounds(7,7,400,400);
pForm.addMouseListener(this);
pForm.addMouseMotionListener(this);
pForm.addComponentListener(this);
pForm.addKeyListener(this);
getMain().pf = pForm;
this.add(pForm);
return pForm;
}
private void setFocusPoint(FormPanel formPanel) {
//------add focus point--------
FPoint fPoint = new FPoint(formPanel);
fPoint.addFocusPoint(formPanel);
//------add line---------------
ResizeLine.setResizeLine(formPanel);
}//end of setFocusPoint.
//==============================================
//PainterForm must provide's parameter.
public PainterForm getForm() {
return this.pForm;
}//end of getForm.
//get current form's coordinate.
public Point getStartPoint() {
int x = 0;
int y = 0;
if (! endRelease) {
x = startx - getForm().getLocation().x;
y = starty - getForm().getLocation().y;
}
return new Point(x,y);
}//end of startPoint.
public Point getEndPoint() {
int x = 0;
int y = 0;
if (! endRelease) {
x = endx - getForm().getLocation().x;
y = endy - getForm().getLocation().y;
}
return new Point(x,y);
}//end of endPoint.
//====================================================
public MainConsole getMain() {
return mainConsole;
}//end of getMain.
public ToolBox getToolBox() {
return getMain().toolbox;
}//end of getToolBox.
public void setCurrentComponent(webide.Wrapper wrap) {
getMain().setCurrentFocus(wrap);
}
public void setCurrentComponent(Component comp) {
webide.Wrapper wrap = getForm().findWrapper(comp);
getMain().setCurrentFocus(wrap);
}
public void convertFocus(Component comp) {
if (getSelectBean() != null) return;
webide.Wrapper newWrap = getForm().findWrapper(comp);
webide.Wrapper oldWrap = getForm().focusWrapper;
if (comp == getForm() && comp != oldWrap.getChild()) {
getMain().setCurrentFocus(newWrap,true);
} else if (getSelectBean() == null && newWrap != oldWrap) {
if (leftKey) {
getMain().setCurrentFocus(newWrap,false);
} else {
getMain().setCurrentFocus(newWrap,true);
}
}
}//end of convertFocus.
public webide.Wrapper getWrapper(Component comp) {
return getForm().findWrapper(selectComponent);
}
//-----ComponentEvent -------------------------------------
public void componentHidden(ComponentEvent e) {}
public void componentMoved(ComponentEvent e) {}
public void componentResized(ComponentEvent e) {}
public void componentShown(ComponentEvent e) {}
public void keyPressed(KeyEvent event) {
int key = event.getKeyCode();
if (key == KeyEvent.VK_DELETE)
DeleteComponent.KeyDelete(getForm());
}
public void keyReleased(KeyEvent event) {
}
public void keyTyped(KeyEvent event) {
}
//-------Mouse event ----------------------------------------
public void mouseClicked(MouseEvent e) {
Component comp = e.getComponent();
if ((e.getClickCount() == 2) && (e.getModifiers() == e.BUTTON1_MASK)) {
webide.Wrapper wrap = getForm().findWrapper(comp);
String hyperlink = ((String)(wrap.getPropValue("Hyperlink"))).trim();
this.mainConsole.loadProject(hyperlink);
}
}//end of mouseClicked.
public void mouseEntered(MouseEvent e) {
}//end of mouseEntered.
public void mouseExited(MouseEvent e) {
}//end of mouseExited.
//about comnponent change form containter.
public Container getCurrentContainer(Component comp) {
if (comp != null) {
while (comp != null && !isContainer(comp)) {
comp = comp.getParent();
}
return (Container)comp;
}
return getForm();
}
public Object getSelectBean() {
return getMain().getSelectBean();
}//end of getSelecBean.
public void setSelectBean() {
endRelease = true;
getMain().setBean(null);
}//end of setSelectBean
// about get Component's parent if Containter
public boolean isContainer(Component comp) {
boolean iscontainer = false;
if (comp == getForm()) {
iscontainer = true;
} else if (comp instanceof webInterface.ContainerCtrl) {
iscontainer = ((webInterface.ContainerCtrl)comp).getControlContainer();
}
return iscontainer;
}//end of isContainer.
private Component doMousePressStuff(Component child) {
if (child == null) return null;
if (getSelectBean() == null) {
// Check if we need to resize or move.
if (FPoint.cursorCheck() && getForm().focusWrapper != null) {
child = getForm().focusWrapper.getChild();
resizeChild = child;
getForm().pContainer = child.getParent();
return child;
} else if (FPoint.cursor == FPoint.defaultCursor) {
if (child == this) {
child = null;
moveChild = child;
getForm().pContainer = pForm;
} else {
moveChild = child;
getForm().pContainer = child.getParent();
}
return child;
}
} else if (getSelectBean() != null) {
getForm().pContainer = getCurrentContainer(child);
}
return child;
}// end of doMouseStuff.
private Point getRelativePoint(MouseEvent e) {
Component comp = e.getComponent();
int x = getForm().pContainer.getLocation().x;
int y = getForm().pContainer.getLocation().y;
x = getBox(comp,getForm().pContainer).x - x;
y = getBox(comp,getForm().pContainer).y - y;
x = x + e.getX();
y = y + e.getY();
x = getBorderPoint(x,y,true).x;
y = getBorderPoint(x,y,true).y;
return new Point(x,y);
}//end of getRelativePoint.
//=== draw Grid and Picture ================================
public void paintForm(Graphics g,PainterForm pf) {
createBuffer(pf);
drawImageOfBuffer(g,pf);
}//end of piant.
public void createBuffer(PainterForm pf) {
if (pf.isChange()) {
Dimension dim = pf.getSize();
backImage = pf.createImage(dim.width,dim.height); //for draw Point.
Graphics backG= backImage.getGraphics();
paintGraid(pf,backG);
backG.dispose();
bufferImage = pf.createImage(dim.width, dim.height); //for draw line.
}
} //end of createBuffer.
public void drawImageOfBuffer(Graphics g,PainterForm pf) {
if (bufferImage != null) {
Graphics bufferG = bufferImage.getGraphics();
bufferG.drawImage(backImage,0,0,pf);
pf.drawPicture(bufferG);
g.drawImage(bufferImage, 0, 0,pf);
bufferG.dispose();
}
}//end of drawImageOfBuffer.
private static void paintGraid(PainterForm pf,Graphics g) {
Dimension d = pf.getSize();
g.setColor(pf.getBackground());
g.fillRect(0,0,d.width, d.height);
g.setColor(webide.itools.Util.updateColor(pf.getForeColor()));
} //end of drawPointOfImageBuffer.
private static void drawGrid(PainterForm pf,Graphics g) {
Dimension dim = pf.getSize();
for (int i=pf.getInsets().left; i<pf.gridWidth; i+=pf.gridw) {
for (int j=pf.getInsets().top;j<pf.gridHeight;j+=pf.gridh) {
g.drawLine(i,j,i,j);
}
}
} //end of drawGrid.
//======================================================
public boolean leftKey = false;
private void setLeftKey(MouseEvent event) {
int keyCode = event.getModifiers();
int code = InputEvent.BUTTON1_MASK;
if (event.isControlDown() && ! event.isShiftDown()) {
code = 18;
} else if (! event.isControlDown() && event.isShiftDown()) {
code = 17;;
}
if (keyCode == code) {
leftKey = true;
} else {
leftKey = false;
}
}//end of isLeftKey.
private boolean isRightKey(MouseEvent event) {
int rightKey = event.getModifiers();
if (rightKey == InputEvent.BUTTON3_MASK) {
return true;
}
return false;
}//end of isRightKey.
private boolean isShowLine(MouseEvent e,Component comp) {
if (leftKey && comp != this && getSelectBean() == null) {
return true;
}
return false;
}//end of isShowLine.
public void mousePressed(MouseEvent e) {
Component comp = e.getComponent();
if (comp == this) {
selectComponent = this;
moveChild = null;
return;
}
dragCount = 0;
setLeftKey(e);
endRelease = false;
//hide focus point.
if (comp != getForm() && leftKey)
FPoint.setVisible(false);
selectComponent = doMousePressStuff(comp);
//set Current focus component.
convertFocus(comp);
//===============================================//
//show current component's line.
if (isShowLine(e,comp)) {
Rectangle rec = getBox(comp,this);
setSizeLine(getForm().pContainer,rec);
}
//get current container coordinate.
relativeStartX = getRelativePoint(e).x;
relativeStartY = getRelativePoint(e).y;
//get myself(formPanel) coordinate.
startx = getBox(comp,this).x + e.getX();
starty = getBox(comp,this).y + e.getY();
endx = startx;
endy = starty;
}//mousePressed.
public void mouseReleased(MouseEvent e) {
Component comp = e.getComponent();
if (selectComponent == this) return;
getForm().myRequestFocus();
endx = getBox(comp,this).x + e.getX();
endy = getBox(comp,this).y + e.getY();
if (leftKey) {
if (Beans.isDesignTime() && getSelectBean() != null) {
ResizeLine.setLineVisible(false);
addComponentOnForm(comp);
return;
} else if (moveChild != null) {
finishMove(startx,starty,endx,endy);
return;
} else if (resizeChild != null && recSize != null) {
finishResize(recSize);
return;
}
}
endRelease = true;
}//mouseReleased.
public void mouseDragged(MouseEvent e) {
Component comp = e.getComponent();
endx = getBox(comp,this).x + e.getX();
endy = getBox(comp,this).y + e.getY();
if (leftKey) {
if (getSelectBean() != null && !isMe(comp)) {
//add component.
relativeEndX = getRelativePoint(e).x;
relativeEndY = getRelativePoint(e).y;
recBean = getAddBeanRectangle(startx,starty,endx,endy);
setSizeLine(getForm().pContainer,recBean);
return;
} else if (moveChild != null) {
//move component.
recMove = moveRectangle(startx,starty,endx,endy);
setSizeLine(moveChild.getParent(),recMove);
return;
} else if (resizeChild != null) {
//reSize component.
recSize = reSizeRectangle(startx,starty,endx,endy);
recSize = getBorder(recSize);
setSizeLine(resizeChild.getParent(),recSize);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -