Revision 38562

View differences:

branches/v2_0_0_prep/applications/appgvSIG/src/org/gvsig/app/project/documents/view/toolListeners/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
    }
branches/v2_0_0_prep/applications/appgvSIG/src/org/gvsig/app/project/documents/view/info/gui/FInfoDialog.java
23 23
    IWindowListener {
24 24

  
25 25
    private static final long serialVersionUID = -6707094091114785970L;
26
    private final LayersDynObjectSetComponent infoViewer;
26
    private LayersDynObjectSetComponent infoViewer;
27 27

  
28
    public FInfoDialog(LayersDynObjectSetComponent infoViewer) {
28
    public FInfoDialog(LayersDynObjectSetComponent info) {
29 29
        super(new BorderLayout());
30
        this.infoViewer = infoViewer;
30
        this.infoViewer = info;
31 31
        add(infoViewer.asJComponent(), BorderLayout.CENTER);
32
		setSize(600, 375);
32
		setSize(500, 375);
33 33
	}
34
    
35
    public void setInfo(LayersDynObjectSetComponent info) {
36
        
37
        if (infoViewer != null) {
38
            infoViewer.dispose();
39
        }
40
        
41
        this.removeAll();
42
        this.infoViewer = info;
43
        add(infoViewer.asJComponent(), BorderLayout.CENTER);
44
    }
34 45

  
35 46
	public WindowInfo getWindowInfo() {
36 47

  

Also available in: Unified diff