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

📄 bsmapeditview.java

📁 一款即时通讯软件
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
        }
    }
    
    /** Shows popup menu if supposed to */
    private void maybeShowPopup(MouseEvent e) {
        // if that was context popup event
        if (e.isPopupTrigger()) {
        //if (e.getClickCount() == 1 && SwingUtilities.isRightMouseButton(e)) {
            // gets the clicked label
            Object src = e.getSource();
            
            // if we clicked on the group node
            if (src instanceof BSMapEditJIDLabel) {
                BSMapEditJIDLabel label = (BSMapEditJIDLabel) src;
                JID jid = label.getJID();
                jidPopupMenu.removeAll();
                
                if (label.isEditable()) {
                    jidPopupMenu.add(addMenuItem);
                    jidPopupMenu.add(deleteMenuItem);
                    //jidPopupMenu.add(jidMenuItem);
                    jidPopupMenu.add(new JSeparator());
                }
                
                jidPopupMenu.add(layerMenuItem);
                jidPopupMenu.add(addLayerMenuItem);
                jidPopupMenu.add(deleteLayerMenuItem);
                jidPopupMenu.add(new JSeparator());
                infoMenuItem.setText(jid.toString());
                jidPopupMenu.add(infoMenuItem);
                
                jidPopupMenu.show(e.getComponent(), e.getX(), e.getY());
                //adjustPopupPosition(jidPopupMenu);*/
            }
            
            // else if we clicked on image panel
            else if (src instanceof BSMapEditImagePanel) {
                BSMapEditImagePanel imgPanel = (BSMapEditImagePanel) src;
                
                imgPopupMenu.removeAll();
                
                if (imgPanel.isEditable()) {
                    imgPopupMenu.add(changeMenuItem);
                    imgPopupMenu.add(new JSeparator());
                    imgPopupMenu.add(addMenuItem);
                }
                
                imgPopupMenu.add(layerMenuItem);
                imgPopupMenu.add(addLayerMenuItem);
                imgPopupMenu.add(deleteLayerMenuItem);
                imgPopupMenu.add(new JSeparator());
                infoMenuItem.setText(imgPanel.getTag().getSrc());
                imgPopupMenu.add(infoMenuItem);
                
                imgPopupMenu.show(e.getComponent(), e.getX(), e.getY());
                //adjustPopupPosition(jidPopupMenu);*/
            }
            
            // else if we clicked on cluster label
            else if (src instanceof BSMapEditClusterLabel) {
                
                BSMapEditClusterLabel label = (BSMapEditClusterLabel) src;
                clusterPopupMenu.removeAll();
                
                if (label.isEditable()) {
                    clusterPopupMenu.add(addMenuItem);
                    clusterPopupMenu.add(deleteClusterMenuItem);
                    clusterPopupMenu.add(setClusterNameMenuItem);
                    //jidPopupMenu.add(jidMenuItem);
                    clusterPopupMenu.add(new JSeparator());
                }
                
                clusterPopupMenu.add(layerMenuItem);
                clusterPopupMenu.add(addLayerMenuItem);
                clusterPopupMenu.add(deleteLayerMenuItem);
                clusterPopupMenu.add(new JSeparator());
                
                Enumeration jids = label.getJIDs();
                // for all jids in cluster
                while (jids.hasMoreElements()) {
                    JID j = (JID) jids.nextElement();
                    clusterPopupMenu.add(new JMenuItem(j.toString()));
                }
                
                clusterPopupMenu.show(e.getComponent(), e.getX(), e.getY());
                //adjustPopupPosition(jidPopupMenu);*/
                
            } // else(cluster)
        } //if(popup)
    }
    
    
    // *** presence listener stuff ***
    
    /** <code>MouseListener</code> method - catches double-clicks */
    public void mouseClicked(MouseEvent e) {
        // handles only double clicks on JID nodes
        if ( e.getClickCount() == 2 ) {
            //maybeOpenChatWindow(e);
            //tree.repaint();
        }
    }
    
    /** <code>MouseListener</code> method - catches popup-menu clicks */
    public void mousePressed(MouseEvent e) {
        selectComponent(e);
        maybeShowPopup(e);
    }
    
    /** <code>MouseListener</code> method - catches popup-menu clicks */
    public void mouseReleased(MouseEvent e) {
        //selectComponent(e);
        if (refreshOnRelease) {
            refresh();
            refreshOnRelease = false;
        }
        else {
            maybeShowPopup(e);
        }
    }
    
    /** <code>MouseListener</code> method - empty implementation */
    public void mouseEntered(MouseEvent e) { }
    /** <code>MouseListener</code> method - empty implementation */
    public void mouseExited(MouseEvent e) { }
    
    public void mouseDragged(MouseEvent e) {
        if (selectedComponent == null)
            moveLayer(e);
        else
            moveComponent(e);
    }
    
    public void mouseMoved(MouseEvent e) { }
    
    
    /** Selects component */
    protected void selectComponent(MouseEvent e) {
        unselectComponent();
        Object component = e.getSource();
        posInSelectedX = e.getX();
        posInSelectedY = e.getY();
        
        if (component instanceof BSMapEditJIDLabel) {
            BSMapEditJIDLabel label = (BSMapEditJIDLabel) component;
            mapPanel.setSelectedLayer(label.getLayerTag().getID());
            if (label.isEditable()) {
                selectedComponent = component;
                label.setAsEdited(true);
            }
        }
        else if (component instanceof BSMapEditClusterLabel) {
            BSMapEditClusterLabel label = (BSMapEditClusterLabel) component;
            mapPanel.setSelectedLayer(label.getLayerTag().getID());
            if (label.isEditable()) {
                selectedComponent = component;
                label.setAsEdited(true);
            }
        }
        else if (component instanceof BSMapEditImagePanel) {
            BSMapEditImagePanel imgPanel = (BSMapEditImagePanel) component;
            mapPanel.setSelectedLayer(imgPanel.getLayerTag().getID());
            if (imgPanel.isEditable()) {
                selectedComponent = component;
                imgPanel.setAsEdited(true);
            }
        }
    }
    
    
    /** Unselects selected component */
    protected void unselectComponent() {
        if (selectedComponent == null) return;
        
        if (selectedComponent instanceof BSMapEditJIDLabel)
            ((BSMapEditJIDLabel) selectedComponent).setAsEdited(false);
        else if (selectedComponent instanceof BSMapEditClusterLabel)
            ((BSMapEditClusterLabel) selectedComponent).setAsEdited(false);
        else if (selectedComponent instanceof BSMapEditImagePanel)
            ((BSMapEditImagePanel) selectedComponent).setAsEdited(false);
        
        selectedComponent = null;
    }
    
    
    /** Moves component */
    protected void moveComponent(MouseEvent e) {
        Object component = e.getSource();
        
        if (component != selectedComponent) return;
        
        if (component instanceof BSMapEditJIDLabel) {
            BSMapEditJIDLabel label = (BSMapEditJIDLabel) component;
            //ImgTag img = label.getLayerTag().getImg();
            Point p = label.getLocation();
            p.translate(e.getX()-posInSelectedX, e.getY()-posInSelectedY);
            label.setLocation(p);
            float lon = (float)(p.getX() + label.getWidth()/2);
            float lat = (float)(p.getY() + label.getHeight()/2);
            LayerTag layer = label.getLayerTag();
            lon = (lon - layer.getOffsetXInt())/layer.getScaleFloat();
            lat = (lat - layer.getOffsetYInt())/layer.getScaleFloat();
            ItemTag tag = label.getTag();
            tag.setLon(lon);
            tag.setLat(lat);
        }
        else if (component instanceof BSMapEditClusterLabel) {
            BSMapEditClusterLabel label = (BSMapEditClusterLabel) component;
            //ImgTag img = label.getLayerTag().getImg();
            Point p = label.getLocation();
            p.translate(e.getX()-posInSelectedX, e.getY()-posInSelectedY);
            label.setLocation(p);
            float lon = (float)(p.getX() + label.getWidth()/2);
            float lat = (float)(p.getY() + label.getHeight()/2);
            LayerTag layer = label.getLayerTag();
            lon = (lon - layer.getOffsetXInt())/layer.getScaleFloat();
            lat = (lat - layer.getOffsetYInt())/layer.getScaleFloat();
            ClusterTag tag = label.getTag();
            tag.setLonFloat(lon);
            tag.setLatFloat(lat);
        }
        else if (component instanceof BSMapEditImagePanel) {
            moveLayer(e);
        }
    }
    
    
    /** Moves whole layer */
    protected void moveLayer(MouseEvent e) {
        
        if (selectedMapLayer == null) return;
        
        Vector components = (Vector) layersComponents.get(selectedMapLayer);
        if (components == null) return;
        
        int moveX = e.getX()-posInSelectedX;
        int moveY = e.getY()-posInSelectedY;
        Enumeration compEnum = components.elements();
        while (compEnum.hasMoreElements()) {
            Component c = (Component) compEnum.nextElement();
            Point p = c.getLocation();
            p.translate(moveX, moveY);
            c.setLocation(p);
        }
        selectedMapLayer.setOffsetX(Integer.toString(
                                    selectedMapLayer.getOffsetXInt() + moveX));
        selectedMapLayer.setOffsetY(Integer.toString(
                                    selectedMapLayer.getOffsetYInt() + moveY));
        refreshOnRelease = true;
    }
    
    
    /** Handles actions from GUI controls */
    public void actionPerformed(ActionEvent e) {
        Object src = e.getSource();
        
        // adds buddy into cluster
        if (src == addMenuItem) {
            /*JID j = chatMenuItem.getJID();
            if (j != null)
                mapPanel.openChat(j);*/
            if (selectedComponent instanceof BSMapEditImagePanel) {
                mapPanel.addBuddy();
            }
            if (selectedComponent instanceof BSMapEditClusterLabel) {
                mapPanel.addBuddy();
            }
            else if (selectedComponent instanceof BSMapEditJIDLabel) {
                mapPanel.addBuddy();
            }
        }
        
        // deletes buddy
        else if (src == deleteMenuItem) {
            if (selectedComponent == null)
                return;
            if (selectedComponent instanceof BSMapEditJIDLabel) {
                BSMapEditJIDLabel label = (BSMapEditJIDLabel) selectedComponent;
                label.getLayerTag().removeItem(label.getTag());
                mainPanel.remove(label);
                ((Vector)layersComponents.get(label.getLayerTag())).remove(label);
            }
            mainPanel.repaint();
        }
        
        // deletes cluster
        else if (src == deleteClusterMenuItem) {
            if (selectedComponent == null)
                return;
            if (selectedComponent instanceof BSMapEditClusterLabel) {
                BSMapEditClusterLabel label = (BSMapEditClusterLabel) selectedComponent;
                label.getLayerTag().removeCluster(label.getTag());
                mainPanel.remove(label);
                ((Vector)layersComponents.get(label.getLayerTag())).remove(label);
            }
            mainPanel.repaint();
        }
        
        // sets name of cluster
        else if (src == setClusterNameMenuItem) {
            if (selectedComponent == null)
                return;
            if (selectedComponent instanceof BSMapEditClusterLabel) {
                BSMapEditClusterLabel label = (BSMapEditClusterLabel) selectedComponent;
                ClusterTag tag = label.getTag();
                if (tag != null)
                    mapPanel.setClusterName(tag.getName());
                else 
                    mapPanel.setClusterName(null);
            }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -