📄 bsmapeditview.java
字号:
}
}
/** 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 + -