Revision 35485 branches/v2_0_0_prep/applications/appgvSIG/src/org/gvsig/app/project/documents/view/toolListeners/InfoListener.java
InfoListener.java | ||
---|---|---|
41 | 41 |
package org.gvsig.app.project.documents.view.toolListeners; |
42 | 42 |
|
43 | 43 |
import java.awt.Image; |
44 |
import java.awt.Point; |
|
45 | 44 |
import java.util.HashMap; |
46 | 45 |
import java.util.Map; |
47 | 46 |
|
48 | 47 |
import javax.swing.JDialog; |
48 |
import javax.swing.JPanel; |
|
49 | 49 |
|
50 | 50 |
import org.gvsig.andami.PluginServices; |
51 | 51 |
import org.gvsig.andami.messages.NotificationManager; |
52 |
import org.gvsig.andami.ui.mdiManager.IWindow; |
|
53 |
import org.gvsig.app.ApplicationLocator; |
|
54 |
import org.gvsig.app.ApplicationManager; |
|
52 | 55 |
import org.gvsig.app.project.documents.view.info.gui.FInfoDialog; |
56 |
import org.gvsig.fmap.geom.primitive.Point; |
|
53 | 57 |
import org.gvsig.fmap.mapcontext.layers.FLayer; |
54 | 58 |
import org.gvsig.fmap.mapcontext.layers.operations.InfoByPoint; |
55 | 59 |
import org.gvsig.fmap.mapcontrol.MapControl; |
... | ... | |
58 | 62 |
import org.gvsig.fmap.mapcontrol.tools.BehaviorException; |
59 | 63 |
import org.gvsig.fmap.mapcontrol.tools.Events.PointEvent; |
60 | 64 |
import org.gvsig.fmap.mapcontrol.tools.Listeners.PointListener; |
65 |
import org.gvsig.tools.ToolsLocator; |
|
61 | 66 |
import org.gvsig.tools.dynobject.DynObjectSet; |
67 |
import org.gvsig.tools.extensionpoint.ExtensionPoint; |
|
68 |
import org.gvsig.tools.extensionpoint.ExtensionPointManager; |
|
69 |
import org.gvsig.tools.extensionpoint.ExtensionSingleton; |
|
62 | 70 |
|
63 | 71 |
/** |
64 | 72 |
* Listener that looks for information at the point selected by one |
... | ... | |
76 | 84 |
*/ |
77 | 85 |
// private static final Logger logger = LoggerFactory.getLogger(InfoListener.class); |
78 | 86 |
|
87 |
private static final String EP_INFOTOOL_NAME = "org.gvsig.app.infotool"; |
|
88 |
private static final String EP_INFOTOOL_RENDERER = "renderer"; |
|
89 |
|
|
90 |
public static void initializeExtensionPoint() { |
|
91 |
ExtensionPointManager manager = ToolsLocator.getExtensionPointManager(); |
|
92 |
ExtensionPoint point = manager.add(EP_INFOTOOL_NAME, "Register of data relative to infotool"); |
|
93 |
point.append( |
|
94 |
EP_INFOTOOL_RENDERER, |
|
95 |
"Renderer used to show in a panel the info by point tool.", |
|
96 |
new DefaultInfoByPointRenderer() |
|
97 |
); |
|
98 |
} |
|
99 |
|
|
79 | 100 |
/** |
80 | 101 |
* The image to display when the cursor is active. |
81 | 102 |
*/ |
... | ... | |
107 | 128 |
|
108 | 129 |
public void point(PointEvent event) throws BehaviorException { |
109 | 130 |
try { |
110 |
|
|
111 |
Point imagePoint = |
|
112 |
new Point((int) event.getPoint().getX(), (int) event.getPoint() |
|
113 |
.getY()); |
|
114 |
|
|
131 |
ApplicationManager application = ApplicationLocator.getManager(); |
|
115 | 132 |
int numLayersInfoable = 0; |
116 |
double tol = mapCtrl.getViewPort().toMapDistance(TOL); |
|
133 |
Point point = event.getMapPoint(); |
|
134 |
double tolerance = mapCtrl.getViewPort().toMapDistance(TOL); |
|
117 | 135 |
|
118 | 136 |
FLayer[] sel = mapCtrl.getMapContext().getLayers().getActives(); |
119 | 137 |
Map<String, DynObjectSet> layer2info = |
... | ... | |
123 | 141 |
FLayer laCapa = sel[i]; |
124 | 142 |
if (laCapa instanceof InfoByPoint) { |
125 | 143 |
InfoByPoint layer = (InfoByPoint) laCapa; |
126 |
DynObjectSet info = |
|
127 |
layer.getInfo(imagePoint, tol, null, false); |
|
144 |
DynObjectSet info = layer.getInfo(point, tolerance); |
|
128 | 145 |
layer2info.put(laCapa.getName(), info); |
129 | 146 |
numLayersInfoable++; |
130 | 147 |
} |
131 | 148 |
} |
132 | 149 |
|
133 |
// TODO: set the writable parameter to true to activate |
|
134 |
// edition of the info by point information. |
|
135 |
LayersDynObjectSetComponent infoComponent = |
|
136 |
MapControlLocator.getMapControlManager() |
|
137 |
.createLayersDynObjectSetComponent(layer2info, false); |
|
138 |
FInfoDialog dlgInfo = new FInfoDialog(infoComponent); |
|
139 |
|
|
150 |
ExtensionPointManager extensionPoints = ToolsLocator.getExtensionPointManager(); |
|
151 |
InfoByPointRenderer renderer = (InfoByPointRenderer)extensionPoints.get(EP_INFOTOOL_NAME).create(EP_INFOTOOL_RENDERER); |
|
152 |
IWindow window = renderer.getPanel(layer2info); |
|
153 |
|
|
140 | 154 |
if (numLayersInfoable > 0) { |
141 |
if (PluginServices.getMainFrame() == null) { |
|
155 |
if (PluginServices.getMainFrame() == null) { // ????????????????????? |
|
156 |
JPanel panel = (JPanel) window; |
|
142 | 157 |
JDialog dialog = new JDialog(); |
143 |
dlgInfo.setPreferredSize(dlgInfo.getSize());
|
|
144 |
dialog.getContentPane().add(dlgInfo);
|
|
158 |
panel.setPreferredSize(panel.getSize());
|
|
159 |
dialog.getContentPane().add(panel);
|
|
145 | 160 |
dialog.setModal(false); |
146 | 161 |
dialog.pack(); |
147 | 162 |
dialog.setVisible(true); |
148 | 163 |
|
149 | 164 |
} else { |
150 |
dlgInfo = |
|
151 |
(FInfoDialog) PluginServices.getMDIManager().addWindow( |
|
152 |
dlgInfo); |
|
165 |
application.getUIManager().addWindow(window); |
|
153 | 166 |
} |
154 | 167 |
|
155 | 168 |
} |
... | ... | |
170 | 183 |
public void pointDoubleClick(PointEvent event) throws BehaviorException { |
171 | 184 |
// Nothing to do |
172 | 185 |
} |
186 |
|
|
187 |
public interface InfoByPointRenderer { |
|
188 |
public IWindow getPanel( Map<String, DynObjectSet> layersInfo); |
|
189 |
} |
|
190 |
|
|
191 |
public static class DefaultInfoByPointRenderer implements InfoByPointRenderer, ExtensionSingleton { |
|
192 |
public IWindow getPanel(Map<String, DynObjectSet> layersInfo) { |
|
193 |
// TODO: set the writable parameter to true to activate |
|
194 |
// edition of the info by point information. |
|
195 |
LayersDynObjectSetComponent infoComponent = |
|
196 |
MapControlLocator.getMapControlManager() |
|
197 |
.createLayersDynObjectSetComponent(layersInfo, false); |
|
198 |
FInfoDialog dlgInfo = new FInfoDialog(infoComponent); |
|
199 |
return dlgInfo; |
|
200 |
} |
|
201 |
|
|
202 |
} |
|
203 |
|
|
204 |
|
|
173 | 205 |
} |
Also available in: Unified diff