private void popup(MouseEvent e) {
		if (!popupMenuEnabled)
			return;
		int x = e.getX();
		int y = e.getY();
		if (e.isShiftDown()) {
			GayBerneParticle p = whichParticle(x, y);
			if (p != null) {
				if (selectedComponent != null && selectedComponent != p)
					selectedComponent.setSelected(false);
				p.setSelected(true);
				repaint();
				showGbPopupMenu(p, x, y);
				return;
			}
			if (selectedComponent != null) {
				selectedComponent.setSelected(false);
				selectedComponent = null;
			}
			defaultPopupMenu.setCoor(x, y);
			defaultPopupMenu.show(this, x, y);
			return;
		}
		if (openLayeredComponentPopupMenus(x, y, Layered.IN_FRONT_OF_PARTICLES))
			return;
		if (getSelectedComponent(e.getModifiersEx(), x, y) instanceof GayBerneParticle) {
			GayBerneParticle p = (GayBerneParticle) selectedComponent;
			p.setSelected(true);
			p.storeCurrentState();
			repaint();
			showGbPopupMenu(p, x, y);
			return;
		}
		if (openLayeredComponentPopupMenus(x, y, Layered.BEHIND_PARTICLES))
			return;
		defaultPopupMenu.setCoor(x, y);
		defaultPopupMenu.show(this, x, y);
	}