Revision 38562 branches/v2_0_0_prep/applications/appgvSIG/src/org/gvsig/app/project/documents/view/toolListeners/InfoListener.java
InfoListener.java | ||
---|---|---|
47 | 47 |
import javax.swing.JDialog; |
48 | 48 |
import javax.swing.JPanel; |
49 | 49 |
|
50 |
import org.slf4j.Logger; |
|
51 |
import org.slf4j.LoggerFactory; |
|
52 |
|
|
50 | 53 |
import org.gvsig.andami.PluginServices; |
51 | 54 |
import org.gvsig.andami.messages.NotificationManager; |
52 | 55 |
import org.gvsig.andami.ui.mdiManager.IWindow; |
... | ... | |
82 | 85 |
/** |
83 | 86 |
* Object used to log messages for this listener. |
84 | 87 |
*/ |
85 |
// private static final Logger logger = LoggerFactory.getLogger(InfoListener.class); |
|
88 |
// |
|
89 |
private static final Logger logger = LoggerFactory.getLogger(InfoListener.class); |
|
86 | 90 |
|
87 | 91 |
private static final String EP_INFOTOOL_NAME = "org.gvsig.app.infotool"; |
88 | 92 |
private static final String EP_INFOTOOL_RENDERER = "renderer"; |
... | ... | |
146 | 150 |
numLayersInfoable++; |
147 | 151 |
} |
148 | 152 |
} |
153 |
|
|
154 |
if (numLayersInfoable == 0) { |
|
155 |
return; |
|
156 |
} |
|
149 | 157 |
|
150 | 158 |
ExtensionPointManager extensionPoints = ToolsLocator.getExtensionPointManager(); |
151 | 159 |
InfoByPointRenderer renderer = (InfoByPointRenderer)extensionPoints.get(EP_INFOTOOL_NAME).create(EP_INFOTOOL_RENDERER); |
152 |
IWindow window = renderer.getPanel(layer2info); |
|
153 | 160 |
|
154 |
if (numLayersInfoable > 0) { |
|
155 |
if (PluginServices.getMainFrame() == null) { // ????????????????????? |
|
156 |
JPanel panel = (JPanel) window; |
|
157 |
JDialog dialog = new JDialog(); |
|
158 |
panel.setPreferredSize(panel.getSize()); |
|
159 |
dialog.getContentPane().add(panel); |
|
160 |
dialog.setModal(false); |
|
161 |
dialog.pack(); |
|
162 |
dialog.setVisible(true); |
|
161 |
IWindow window = renderer.getPanel(); |
|
162 |
boolean first_time = (window == null); |
|
163 |
renderer.resetPanel(layer2info); |
|
164 |
|
|
165 |
window = renderer.getPanel(); |
|
166 |
if (window == null) { |
|
167 |
logger.info("Error. Unable to create info panel."); |
|
168 |
return; |
|
169 |
} |
|
170 |
|
|
171 |
|
|
172 |
if (first_time) { |
|
173 |
PluginServices.getMDIManager().addCentredWindow(window); |
|
174 |
} else { |
|
175 |
// perhaps bring to front |
|
176 |
} |
|
177 |
|
|
163 | 178 |
|
164 |
} else { |
|
165 |
application.getUIManager().addWindow(window); |
|
166 |
} |
|
167 |
|
|
168 |
} |
|
169 | 179 |
} catch (Exception e) { |
170 | 180 |
NotificationManager.addError("Info by Point", e); |
171 | 181 |
e.printStackTrace(); |
... | ... | |
185 | 195 |
} |
186 | 196 |
|
187 | 197 |
public interface InfoByPointRenderer { |
188 |
public IWindow getPanel( Map<String, DynObjectSet> layersInfo); |
|
198 |
|
|
199 |
public FInfoDialog getPanel(); |
|
200 |
public void resetPanel(Map<String, DynObjectSet> layersInfo); |
|
201 |
|
|
189 | 202 |
} |
190 | 203 |
|
191 | 204 |
public static class DefaultInfoByPointRenderer implements InfoByPointRenderer, ExtensionSingleton { |
192 |
public IWindow getPanel(Map<String, DynObjectSet> layersInfo) { |
|
205 |
|
|
206 |
private FInfoDialog dlgInfo = null; |
|
207 |
|
|
208 |
public FInfoDialog getPanel() { |
|
209 |
return dlgInfo; |
|
210 |
} |
|
211 |
|
|
212 |
|
|
213 |
public void resetPanel(Map<String, DynObjectSet> layersInfo) { |
|
193 | 214 |
// TODO: set the writable parameter to true to activate |
194 | 215 |
// edition of the info by point information. |
195 | 216 |
LayersDynObjectSetComponent infoComponent = |
196 | 217 |
MapControlLocator.getMapControlManager() |
197 | 218 |
.createLayersDynObjectSetComponent(layersInfo, false); |
198 |
FInfoDialog dlgInfo = new FInfoDialog(infoComponent); |
|
199 |
return dlgInfo; |
|
219 |
|
|
220 |
if (dlgInfo == null) { |
|
221 |
dlgInfo = new FInfoDialog(infoComponent); |
|
222 |
} else { |
|
223 |
dlgInfo.setInfo(infoComponent); |
|
224 |
} |
|
200 | 225 |
} |
201 | 226 |
|
202 | 227 |
} |
Also available in: Unified diff