/** @param edit */ @Override public void setRoomEditMode(boolean edit) { roomEditMode = edit; if (roomEditMode) { Callout callout = new Callout( this.getClass().getCanonicalName(), "info", I18n.msg("environment_editing_instructions") + ":\n" + "- " + I18n.msg("environment_editing_instructions_add_new_room") + "\n" + "- " + I18n.msg("environment_editing_instructions_change_room_shape") + "\n" + "- " + I18n.msg("environment_editing_instructions_remove_room") + "\n" + "- " + I18n.msg("environment_editing_instructions_create_draggable_point") + "\n" + "- " + I18n.msg("environment_editing_instructions_delete_draggable_point") + "\n", 100, 200, 0, -1); createCallout(callout); createHandles(null); // find the first room and select it Room selectedRoom = getCurrEnv().getRooms().get(0); if (selectedRoom != null) { setSelectedZone(selectedRoom); } } else { handles.clear(); indicators.clear(); selectedZone = null; calloutsUpdater.clearAll(); } setNeedRepaint(true); }
/** @param e */ @Override public void mouseClicked(MouseEvent e) { if (!roomEditMode) { EnvObjectLogic obj = mouseOnObject(e.getPoint()); if (obj != null) { // single click on an object if (e.getButton() == MouseEvent.BUTTON1) { if (e.getClickCount() == 1) { mouseClickObject(obj); } else { // double click on an object if (e.getClickCount() == 2) { mouseDoubleClickObject(obj); } } } else { // right click on an object if (e.getButton() == MouseEvent.BUTTON3) { if (e.getClickCount() == 1) { mouseRightClickObject(obj); } } } } else { removeIndicators(); calloutsUpdater.clearAll(); } } else { // if edit mode removeIndicators(); calloutsUpdater.clearAll(); toRealCoords(e.getPoint()); // click on an handle in edit mode Handle clickedHandle = mouseOnHandle(e.getPoint()); // single right click if (clickedHandle != null) { if ((e.getClickCount() == 1) && (e.getButton() == MouseEvent.BUTTON1)) { clickedHandle.setSelected(true); } else { // double right click if ((e.getClickCount() == 2) && (e.getButton() == MouseEvent.BUTTON1)) { clickedHandle.addAdiacent(); setSelectedZone(clickedHandle.getZone()); } else { // single left click if ((e.getClickCount() == 1) && (e.getButton() == MouseEvent.BUTTON3)) { clickedHandle.remove(); setSelectedZone(clickedHandle.getZone()); } } } } else { // click on a zone in edit mode if no handle is selected ZoneLogic zone = mouseOnZone(e.getPoint()); if (zone != null) { Callout callout = new Callout( this.getClass().getCanonicalName(), "info", I18n.msg("room_zone_selected") + " [" + zone.getPojo().getName() + "]", 50, 150, 0, -1); createCallout(callout); setSelectedZone(zone); } else { handles.clear(); // createHandles(null); } } setNeedRepaint(true); } }