Author: sletellier Date: 2008-12-16 16:01:32 +0000 (Tue, 16 Dec 2008) New Revision: 1675 Added: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/OpenMapEvents.java Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/CellUI.jaxx isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/PortUI.jaxx isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/ZoneUI.jaxx Log: Interaction avec openMap Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/CellUI.jaxx =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/CellUI.jaxx 2008-12-15 17:46:56 UTC (rev 1674) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/CellUI.jaxx 2008-12-16 16:01:32 UTC (rev 1675) @@ -54,10 +54,19 @@ import org.codelutin.topia.persistence.TopiaEntity; import fr.ifremer.isisfish.entities.Zone; import fr.ifremer.isisfish.ui.WelcomePanelUI; +import com.bbn.openmap.event.MapMouseListener; +import com.bbn.openmap.event.SelectMouseMode; +import fr.ifremer.isisfish.map.CellSelectionLayer; +import java.util.logging.Level; +import com.bbn.openmap.omGraphics.OMGraphic; +import java.util.logging.Logger; +import org.codelutin.topia.TopiaException; + protected IsisMapBean cellMap = new IsisMapBean(); protected OpenMapToolPanel toolMap = new OpenMapToolPanel(); protected OMToolSet toolSet = new OMToolSet(); +protected OpenMapEvents mapListener = null; addPropertyChangeListener("bean", new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent evt) { @@ -87,6 +96,9 @@ cellMap.setFisheryRegion(action.getFisheryRegion()); toolSet.setupListeners(cellMap); toolMap.add((Component)toolSet); +// cellMap.setSelectionMode(CellSelectionLayer.SINGLE_SELECTION); +// cellMap.setActiveMouseMode(new SelectMouseMode()); + setMapListener(); cellMapPanel.add(toolMap, BorderLayout.NORTH); cellMapPanel.add(cellMap, BorderLayout.CENTER); @@ -95,7 +107,20 @@ } setChanged(false); } +protected void setMapListener(){ + if (mapListener == null){ + mapListener = new OpenMapEvents(cellMap, new SelectMouseMode(false), CellSelectionLayer.SINGLE_SELECTION) { + @Override + public boolean onMouseClicked() { + for (Cell c : cellMap.getSelectedCells()){ + getParentContainer(InputUI.class).setTreeSelection("$root/$cells/" + c.getTopiaId()); + } + return true; + } + }; + } +} protected void save() { TopiaEntity topia = getContextValue(InputAction.class).save(); getParentContainer(InputUI.class).repaintNode("$root/$cells/" + topia.getTopiaId()); Added: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/OpenMapEvents.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/OpenMapEvents.java (rev 0) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/OpenMapEvents.java 2008-12-16 16:01:32 UTC (rev 1675) @@ -0,0 +1,252 @@ +/* *##% +* Copyright (C) 2005 +* Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License +* as published by the Free Software Foundation; either version 2 +* of the License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software +* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*##%*/ + +/* * +* OpenMapEvents.java +* +* Created: 5 septembre 2005 03:21:41 CEST +* +* @author Benjamin POUSSIN <poussin at codelutin.com> +* @version $Revision: 202 $ +* +* Last update: $Date: 2006-06-30 18:39:09 +0200 (ven, 30 jun 2006) $ +* by : $Author: bpoussin $ +*/ + +package fr.ifremer.isisfish.ui.input; + +import java.awt.event.MouseEvent; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import com.bbn.openmap.Layer; +import com.bbn.openmap.event.DistanceMouseMode; +import com.bbn.openmap.event.MapMouseListener; +import com.bbn.openmap.event.MapMouseMode; +import com.bbn.openmap.event.NullMouseMode; +import com.bbn.openmap.event.ProjectionEvent; +import com.bbn.openmap.event.SelectMouseMode; + +import fr.ifremer.isisfish.map.IsisMapBean; + +public abstract class OpenMapEvents extends Layer implements MapMouseListener { // OpenMapEvents + + /** */ + private static final long serialVersionUID = -8365120112075269288L; + /** to use log facility, just put in your code: log.info(\"...\"); */ + static private Log log = LogFactory.getLog(OpenMapEvents.class); + + public OpenMapEvents (IsisMapBean map, MapMouseMode mouseMode, int selectMode){ + super(); + this.mouseMode = mouseMode; + this.map = map; + this.selectMode = selectMode; + map.setSelectionMode(selectMode); + map.setActiveMouseMode(mouseMode); + map.addMapMouseListener(this); + + } + public void projectionChanged(ProjectionEvent e){ + // do nothing, it's not reel layer + } + + /** + * SelectMouseMode property: Null, Distance, Nav, Select + */ + protected MapMouseMode mouseMode = null; + protected IsisMapBean map = null; + protected int selectMode = 1; + + /** + * OnMouseDragged property. + */ + protected String onMouseDragged = null; + + /** + * Get onMouseDragged property. + * + *@return OnMouseDragged property. + */ + public String getOnMouseDragged() { + return this.onMouseDragged; + } + + /** + * Set onMouseDragged property. + * + *@param onMouseDragged New onMouseDragged property. + */ + public void setOnMouseDragged(String onMouseDragged) { + this.onMouseDragged = onMouseDragged; + } + + /** + * OnMouseEntered property. + */ + protected String onMouseEntered = null; + + /** + * Get onMouseEntered property. + * + *@return OnMouseEntered property. + */ + public String getOnMouseEntered() { + return this.onMouseEntered; + } + + /** + * Set onMouseEntered property. + * + *@param onMouseEntered New onMouseEntered property. + */ + public void setOnMouseEntered(String onMouseEntered) { + this.onMouseEntered = onMouseEntered; + } + + /** + * OnMouseExited property. + */ + protected String onMouseExited = null; + + /** + * Get onMouseExited property. + * + *@return OnMouseExited property. + */ + public String getOnMouseExited() { + return this.onMouseExited; + } + + /** + * Set onMouseExited property. + * + *@param onMouseExited New onMouseExited property. + */ + public void setOnMouseExited(String onMouseExited) { + this.onMouseExited = onMouseExited; + } + + /** + * OnMouseMoved property. + */ + protected String onMouseMoved = null; + + /** + * Get onMouseMoved property. + * + *@return OnMouseMoved property. + */ + public String getOnMouseMoved() { + return this.onMouseMoved; + } + + /** + * Set onMouseMoved property. + * + *@param onMouseMoved New onMouseMoved property. + */ + public void setOnMouseMoved(String onMouseMoved) { + this.onMouseMoved = onMouseMoved; + } + + /** + * OnMousePressed property. + */ + protected String onMousePressed = null; + + /** + * Get onMousePressed property. + * + *@return OnMousePressed property. + */ + public String getOnMousePressed() { + return this.onMousePressed; + } + + /** + * Set onMousePressed property. + * + *@param onMousePressed New onMousePressed property. + */ + public void setOnMousePressed(String onMousePressed) { + this.onMousePressed = onMousePressed; + } + + /** + * OnMouseReleased property. + */ + protected String onMouseReleased = null; + + /** + * Get onMouseReleased property. + * + *@return OnMouseReleased property. + */ + public String getOnMouseReleased() { + return this.onMouseReleased; + } + + /** + * Set onMouseReleased property. + * + *@param onMouseReleased New onMouseReleased property. + */ + public void setOnMouseReleased(String onMouseReleased) { + this.onMouseReleased = onMouseReleased; + } + + public String[] getMouseModeServiceList() { + return new String[] { + SelectMouseMode.modeID + }; + } + + public boolean mouseClicked(MouseEvent e){ + onMouseClicked(); + return true; + } + + public boolean mouseDragged(MouseEvent e){ + return false; + } + + public void mouseEntered(MouseEvent e){ + } + + public void mouseExited(MouseEvent e) { + } + + public void mouseMoved(){ + } + + public boolean mouseMoved(MouseEvent e){ + return false; + } + + public boolean mousePressed(MouseEvent e){ + return false; + } + + public boolean mouseReleased(MouseEvent e){ + return false; + } + + public abstract boolean onMouseClicked(); +} // OpenMapEvents Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/PortUI.jaxx =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/PortUI.jaxx 2008-12-15 17:46:56 UTC (rev 1674) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/PortUI.jaxx 2008-12-16 16:01:32 UTC (rev 1675) @@ -51,12 +51,15 @@ import fr.ifremer.isisfish.map.OpenMapToolPanel; import com.bbn.openmap.gui.OMToolSet; import fr.ifremer.isisfish.ui.WelcomePanelUI; + import fr.ifremer.isisfish.map.CellSelectionLayer; + import com.bbn.openmap.event.SelectMouseMode; import org.codelutin.topia.persistence.TopiaEntity; import org.codelutin.topia.TopiaException; protected IsisMapBean portMap = new IsisMapBean(); protected OpenMapToolPanel toolMap = new OpenMapToolPanel(); protected OMToolSet toolSet = new OMToolSet(); + protected OpenMapEvents mapListener = null; public PortUI (InputAction action){ setContextValue(action); @@ -75,13 +78,6 @@ portCell.setSelectedValue(port.getCell()); fieldPortComment.setText(getContextValue(InputAction.class).getPort().getComment()); - - portMap.setFisheryRegion(getContextValue(InputAction.class).getFisheryRegion()); - toolSet.setupListeners(portMap); - toolMap.add((Component)toolSet); - portMapPanel.add(toolMap, BorderLayout.NORTH); - portMapPanel.add(portMap, BorderLayout.CENTER); - refreshMap(); } else{ fieldPortName.setText(""); @@ -95,14 +91,15 @@ fieldPortComment.setText(""); - portMap.setFisheryRegion(getContextValue(InputAction.class).getFisheryRegion()); - toolSet.setupListeners(portMap); - toolMap.add((Component)toolSet); - portMapPanel.add(toolMap, BorderLayout.NORTH); - portMapPanel.add(portMap, BorderLayout.CENTER); - refreshMap(); } + portMap.setFisheryRegion(getContextValue(InputAction.class).getFisheryRegion()); + toolSet.setupListeners(portMap); + toolMap.add((Component)toolSet); + setMapListener(); + portMapPanel.add(toolMap, BorderLayout.NORTH); + portMapPanel.add(portMap, BorderLayout.CENTER); + refreshMap(); } protected void refreshMap(){ java.util.List<Cell> cells = new ArrayList<Cell>(); @@ -110,6 +107,25 @@ portMap.setSelectedCells(cells); portMap.setSelectedCells(cells); } + protected void setMapListener(){ + if (mapListener == null){ + mapListener = new OpenMapEvents(portMap, new SelectMouseMode(false), CellSelectionLayer.SINGLE_SELECTION) { + + @Override + public boolean onMouseClicked() { + for (Cell c : portMap.getSelectedCells()){ + Port port = getContextValue(InputAction.class).getPort(); + if (port != null){ + port.setCell(c); + } + } + valueChanged(true); + refresh(); + return true; + } + }; + } + } protected void create(){ TopiaEntity topia = getContextValue(InputAction.class).create("Port"); Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/ZoneUI.jaxx =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/ZoneUI.jaxx 2008-12-15 17:46:56 UTC (rev 1674) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/ZoneUI.jaxx 2008-12-16 16:01:32 UTC (rev 1675) @@ -64,49 +64,10 @@ protected MapMouseListener mapListener = null; public ZoneUI (InputAction action){ - setContextValue(action); - this.addFocusListener(new FocusListener() { - - @Override - public void focusGained(FocusEvent e) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public void focusLost(FocusEvent e) {; - if (changed){ - if (!askAndSave()){ - getParentContainer(InputUI.class).setTreeSelection("$root/$zones"+getContextValue(InputAction.class).getZone().getTopiaId()); - } - } - } - }); } - protected boolean askAndSave(){ - boolean result = true; - try { - int choice = JOptionPane.showConfirmDialog(null, _("isisfish.message.page.modified")); - switch (choice) { - case JOptionPane.YES_OPTION: - getContextValue(InputAction.class).getIsisContext().commitTransaction(); - result = true; - break; - case JOptionPane.NO_OPTION: - getContextValue(InputAction.class).getIsisContext().rollbackTransaction(); - result = true; - break; - case JOptionPane.CANCEL_OPTION: - result = false; - break; - }; - } catch (TopiaException ex) { - Logger.getLogger(InputUI.class.getName()).log(Level.SEVERE, null, ex); - } - return result; - } - public void refresh() { - if (! getContextValue(InputAction.class).isNull()){ + public void refresh() { + if (!getContextValue(InputAction.class).isNull()){ Zone z = getContextValue(InputAction.class).getZone(); DefaultListModel zoneCellsModel = new DefaultListModel(); java.util.List<Cell> cells = getContextValue(InputAction.class).getFisheryRegion().getCell(); @@ -143,79 +104,26 @@ zoneMap.setFisheryRegion(getContextValue(InputAction.class).getFisheryRegion()); toolSet.setupListeners(zoneMap); toolMap.add((Component)toolSet); - zoneMap.setActiveMouseMode(new SelectMouseMode()); - zoneMap.setSelectionMode(CellSelectionLayer.MULT_SELECTION); setMapListener(); zoneMapPanel.add(toolMap, BorderLayout.NORTH); zoneMapPanel.add(zoneMap, BorderLayout.CENTER); - valueChanged(false); refreshMap(); } protected void setMapListener(){ if (mapListener == null){ - mapListener = new MapMouseListener() { + mapListener = new OpenMapEvents(zoneMap, new SelectMouseMode(false), CellSelectionLayer.MULT_SELECTION) { @Override - public boolean mouseClicked(MouseEvent e) { - java.util.List<Cell> cells = (java.util.List<Cell>) zoneMap.getSelectedCells(); - if (cells != null){ - int[] indexs = new int[cells.size()]; - int i = 0; - for (Cell c : cells){ - indexs[i] = ((DefaultListModel)zoneCells.getModel()).indexOf(c); - if (log.isDebugEnabled()) { - log.debug("refresh " + c + " " + i); - } - i++; - } - zoneCells.setSelectedIndices(indexs); + public boolean onMouseClicked() { + java.util.List<Cell> selectedCell = zoneMap.getSelectedCells(); + if (!getContextValue(InputAction.class).isNull()){ + getContextValue(InputAction.class).getZone().setCell(selectedCell); + valueChanged(true); + refresh(); return true; } return false; } - - @Override - public String[] getMouseModeServiceList() { - return new String[] { - SelectMouseMode.modeID - }; - } - - @Override - public boolean mousePressed(MouseEvent arg0) { - return false; - } - - @Override - public boolean mouseReleased(MouseEvent arg0) { - return false; - } - - @Override - public void mouseEntered(MouseEvent arg0) { - - } - - @Override - public void mouseExited(MouseEvent arg0) { - - } - - @Override - public boolean mouseDragged(MouseEvent arg0) { - return false; - } - - @Override - public boolean mouseMoved(MouseEvent arg0) { - return false; - } - - @Override - public void mouseMoved() { - - } }; - zoneMap.addMapMouseListener(mapListener); } } protected void refreshMap(){