From: Cameron S. <csh...@bi...> - 2002-06-25 22:06:22
|
I've been thinking about how to implement the geotools Tools and would like ideas on how people think this should be implemented. I'm thinking that we should have a Tools interface similar to the geotools1 project, but I'm not sure if that will fit in with the advanced features of java. I notice that the ZoomMap example is using JDK features for zooming. Do the tools deserve their own module, or should they be incorporated into another module. If so, which one? Note that while some tools (like zoom/pan) are stateless, the feature entry tools retain state between clicks. Typical Tools required: -------------------------- Click and Drag Zoom In/Out One Click Zoom In/Out Pan Enter a Point Click to enter a point. Enter a Line Left Click to enter first or another point Right Click to enter last point Enter a Shape Similar to entering a line. Select a feature on hover Select a feature on click Edit a Line or Shape. Select the features Select a point within the shape Delete the point and merge the line or Split the line into two or Split the shape into two or Move the point Select a line within a feature Add another point on the line -- Cameron Shorter http://cameron.shorter.net Open Source Developer http://mapbuilder.sourceforge.net Senior Software Engineer http://www.adi-limited.com/ |
From: Martin D. <mar...@te...> - 2002-06-26 07:57:27
|
Hello Cameron Shorter wrote: > I'm thinking that we should have a Tools interface similar to the geotools1 > project, but I'm not sure if that will fit in with the advanced features of > java. I notice that the ZoomMap example is using JDK features for zooming. > > Do the tools deserve their own module, or should they be incorporated > into another module. If so, which one? A own module seems to make sense. However, the current ZoomPane already provide a limited set of feature. We could: 1) Refactor ZoomPane and its internal tools (MouseReshapeTracker and MouseSelectionTracker) in an other package. I'm totally open to refactor it if peoples feels we should. 2) Add new tools straight into the current org.geotools.swing.gui package, maybe with package-private access in order to keep the API light. 3) Any other suggestion? > Typical Tools required: > -------------------------- > Click and Drag Zoom In/Out > One Click Zoom In/Out > Pan Current ZoomPane support "Click and Drag zoom in". The default implementation doesn't provide "One click Zoom in/out", but it provides "Mouse wheel zoom in/out". One click zoom in/out would be esay to implement if we want it. > > Enter a Point > Click to enter a point. > > Enter a Line > Left Click to enter first or another point > Right Click to enter last point > > Enter a Shape > Similar to entering a line. Already implemented (not exactly that way but close) in ZoomPane: 1) Create a ZoomPane subclass. 2) Override 'Shape getMouseSelectionShape(Point2D point)'. This method is automatically invoked when the user start dragging. The 'point' argument is the logical coordinate (not the pixel coordinate), so you can returns an arbitrary shape (line, rectangle, ellipse, arrow or whatever) based on user coordinates. 3) Override 'void mouseSelectionPerformed(final Shape area)'. This method is automatically invoked when the user finish dragging. ZoomPane subclass could store the selected coordinates there. > Select a feature on hover > Select a feature on click > > Edit a Line or Shape. > Select the features > Select a point within the shape > Delete the point and merge the line or > Split the line into two or > Split the shape into two or > Move the point > > Select a line within a feature > Add another point on the line ZoomPane provides no support for this. But we could add them to a ZoomPane subclasses for example, or create a tools package. Regards, Martin. |