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

📄 formpanel.java

📁 一个简单的visio程序。
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
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 + -