Revision 835

View differences:

org.gvsig.chart/tags/org.gvsig.chart-1.0.154/org.gvsig.chart.app/org.gvsig.chart.app.mainplugin/buildNumber.properties
1
#Mon Nov 15 22:19:07 CET 2021
2
buildNumber=169
0 3

  
org.gvsig.chart/tags/org.gvsig.chart-1.0.154/org.gvsig.chart.app/org.gvsig.chart.app.mainplugin/src/main/assembly/gvsig-plugin-package.xml
1
<assembly>
2
  <id>gvsig-plugin-package</id>
3
  <formats>
4
    <format>zip</format>
5
  </formats>
6
  <baseDirectory>${project.artifactId}</baseDirectory>
7
  <includeBaseDirectory>true</includeBaseDirectory>
8
  <files>
9
    <file>
10
      <source>target/${project.artifactId}-${project.version}.jar</source>
11
      <outputDirectory>lib</outputDirectory>
12
    </file>
13
    <file>
14
      <source>target/package.info</source>
15
    </file>
16
  </files>
17

  
18
  <fileSets>
19
    <fileSet>
20
      <directory>src/main/resources-plugin</directory>
21
      <outputDirectory>.</outputDirectory>
22
    </fileSet>
23
  </fileSets>
24

  
25
  <dependencySets>
26
    <dependencySet>
27
      <useProjectArtifact>false</useProjectArtifact>
28
      <useTransitiveDependencies>false</useTransitiveDependencies>
29
      <outputDirectory>lib</outputDirectory>
30
      <includes>
31
				<include>org.gvsig:org.gvsig.chart.lib.api</include>
32
				<include>org.gvsig:org.gvsig.chart.swing.api</include>
33
				<include>org.gvsig:org.gvsig.chart.lib.base</include>
34
				<include>org.gvsig:org.gvsig.chart.swing.base</include>
35
				<include>org.gvsig:org.gvsig.chart.lib.impl</include>
36
				<include>org.gvsig:org.gvsig.chart.swing.impl</include>
37
      </includes>
38
    </dependencySet>
39
  </dependencySets>
40

  
41
</assembly>
0 42

  
org.gvsig.chart/tags/org.gvsig.chart-1.0.154/org.gvsig.chart.app/org.gvsig.chart.app.mainplugin/src/main/java/org/gvsig/app/chart/mainplugin/ChartExtension.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 */
22
package org.gvsig.app.chart.mainplugin;
23

  
24
import java.awt.Dimension;
25
import java.awt.Graphics2D;
26
import java.awt.Rectangle;
27
import java.awt.image.BufferedImage;
28
import java.io.File;
29
import java.io.IOException;
30

  
31
import javax.imageio.ImageIO;
32
import javax.swing.ImageIcon;
33
import javax.swing.JComponent;
34
import javax.swing.JDialog;
35
import javax.swing.JFileChooser;
36
import javax.swing.JOptionPane;
37

  
38
import org.gvsig.andami.IconThemeHelper;
39
import org.gvsig.andami.PluginServices;
40
import org.gvsig.andami.plugins.ExclusiveUIExtension;
41
import org.gvsig.andami.plugins.Extension;
42
import org.gvsig.andami.plugins.IExtension;
43
import org.gvsig.andami.ui.mdiManager.IWindow;
44
import org.gvsig.app.project.documents.chart.ChartDocument;
45
import org.gvsig.app.project.documents.chart.ChartDocumentManager;
46
import org.gvsig.app.project.documents.chart.gui.DefaultChartDocumentPanel;
47
import org.gvsig.app.project.documents.chart.gui.DefaultEditorGroupedChartIWindow;
48
import org.gvsig.app.project.documents.chart.gui.EditorChartServiceJDialog;
49
import org.gvsig.chart.ChartLocator;
50
import org.gvsig.chart.ChartService;
51
import org.gvsig.chart.lib.spi.ChartServiceManager;
52
import org.gvsig.chart.swing.ChartSwingLocator;
53
import org.gvsig.chart.swing.ChartSwingManager;
54
import org.gvsig.chart.swing.editors.EditorChartServicePanel;
55
import org.gvsig.chart.swing.spi.ChartSwingServiceManager;
56
import org.gvsig.tools.library.LibraryException;
57
import org.gvsig.tools.util.Caller;
58
import org.gvsig.tools.util.impl.DefaultCaller;
59
import org.jfree.ui.ExtensionFileFilter;
60
import org.slf4j.Logger;
61
import org.slf4j.LoggerFactory;
62

  
63
/**
64
 * Andami extension to show Chart in the application.
65
 * 
66
 * @author gvSIG Team
67
 * @version $Id$
68
 */
69
public class ChartExtension extends Extension implements ExclusiveUIExtension {
70
	static ImageIcon LOGO;
71

  
72
	private static final Logger logger = LoggerFactory
73
			.getLogger(ChartExtension.class);
74

  
75
	private static final String MY_VIEW_NAME = "Chart plugin";
76

  
77
	private static final String TOOL_NAME = "Chart.infotool";
78
	private static final String ACTION_CREATEPLOT = "chart-create-plot";
79
	private static final String ACTION_EDITPLOT = "chart-edit-plot";
80
	private static final String ACTION_EXPORTTOPDF = "chart-export-pdf";
81
	private static final String ACTION_EXPORTTOPNG = "chart-export-png";
82

  
83
	private ChartServiceManager manager;
84
	private ChartSwingServiceManager swingServiceManager;
85
	private ChartSwingManager swingManager;
86

  
87
	public void initialize() {
88
		registerIcons();
89
	}
90

  
91
	public void postInitialize() {
92
		manager = ChartLocator.getServiceManager();
93
		swingServiceManager = ChartSwingLocator.getSwingManager();
94
		swingManager = swingServiceManager.getChartSwingManager();
95

  
96
		// initializeDocumentActionsExtensionPoint();
97
		try {
98
			registerIcons();	
99
		}
100
		catch (Exception e) {
101
			e.printStackTrace();
102
		}
103
		
104
		ChartDocumentManager.register();
105
		// registerContextMenuOptions();
106
		
107
		
108
		
109
		Caller caller = new DefaultCaller();
110
		/*
111
         * Add registry of persistent styles
112
         */
113
        caller.add( new ChartDocument.RegisterPersistence() );
114
        
115
        /*
116
         * Do register of all
117
         */
118
        if( !caller.call() ) {
119
        	throw new LibraryException(ChartExtension.class, caller.getExceptions());
120
        }
121
	}
122

  
123

  
124
	/**
125
	 * Execute the actions associated to this extension.
126
	 */
127
	public void execute(String actionCommand) {
128
		if (ACTION_EDITPLOT.equalsIgnoreCase(actionCommand)) {
129
			IWindow window = PluginServices.getMDIManager().getActiveWindow();
130
			if ((window instanceof DefaultChartDocumentPanel)) {
131
//				DefaultChartDocumentPanel chartPanel = (DefaultChartDocumentPanel) window;
132
//				EditorGroupedChartPanel editor = ChartSwingLocator.getSwingManager().getChartSwingManager().createEditorChartPanel(
133
//						(GroupedCharts)chartPanel.getChartPanel().getOverlayChart());
134
				DefaultChartDocumentPanel chartPanel = (DefaultChartDocumentPanel) window;
135
				ChartDocument document = (ChartDocument)chartPanel.getDocument();
136
				DefaultEditorGroupedChartIWindow windowPanel = 
137
					new DefaultEditorGroupedChartIWindow(document);
138
				JDialog dlg = new JDialog();
139
//				dlg.getContentPane().add(editor.getComponent());
140
				windowPanel.setParentDialog(dlg);
141
				dlg.getContentPane().add(windowPanel);
142
//				dlg.pack();
143
				dlg.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
144
				
145
				dlg.setPreferredSize(new Dimension(700, 600));
146
				dlg.setModal(true);
147
				dlg.pack();
148
				dlg.setSize(840, 650);
149
				dlg.setVisible(true);
150
				
151
				return;
152
			}
153
		}
154
		if (ACTION_CREATEPLOT.equalsIgnoreCase(actionCommand)) {
155
			IWindow window = PluginServices.getMDIManager().getActiveWindow();
156
			if ((window instanceof DefaultChartDocumentPanel)) {
157
				DefaultChartDocumentPanel chartPanel = (DefaultChartDocumentPanel) window;
158
				ChartDocument document = (ChartDocument)chartPanel.getDocument();
159
				DefaultEditorGroupedChartIWindow windowPanel = 
160
					new DefaultEditorGroupedChartIWindow(document);
161
				
162
				EditorChartServicePanel editorChartServicePanel = swingManager.createNewChartPanel(windowPanel.getChartDocument().getChartService());
163
				editorChartServicePanel.addObserver(windowPanel.getEditorPanel());
164
				windowPanel.setEditorChartServicePanel(
165
						editorChartServicePanel
166
				);
167
				
168
				ChartService service = EditorChartServiceJDialog.showDialog(
169
						this.swingManager.getTranslation("Add_new_variable"),
170
						windowPanel.getEditorChartServicePanel());
171
				
172
				if(service != null){
173
					document.getChartService().addChartService(service);
174
				}
175
				
176
				windowPanel.setEditorChartServicePanel(null);
177
//				JDialog dlg = new JDialog();
178
//				dlg.setTitle("Add variable to current Chart");
179
////				dlg.setContentPane(new ChartUsedFieldPanel(document));
180
//				dlg.pack();
181
//				dlg.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
182
//
183
//				dlg.setVisible(true);
184
				
185
				return;
186
			}
187
		}
188
		
189
		if (ACTION_EXPORTTOPDF.equalsIgnoreCase(actionCommand)) {
190
			IWindow window = PluginServices.getMDIManager().getActiveWindow();
191
			if ((window instanceof DefaultChartDocumentPanel)) {
192
				DefaultChartDocumentPanel chartPanel = (DefaultChartDocumentPanel) window;
193
				ChartDocument document = (ChartDocument)chartPanel.getDocument();
194
				JFileChooser chooser = new JFileChooser();
195
				
196
				ExtensionFileFilter filter=new ExtensionFileFilter(this.swingManager.getTranslation("PDF_Image_Files"),".pdf");
197
				chooser.addChoosableFileFilter(filter);
198
				
199
				chooser.setCurrentDirectory(new File(System.getProperty("user.home")));
200
				chooser.setDialogTitle(this.swingManager.getTranslation("SavePDF"));
201
								
202
				chooser.setFileSelectionMode( JFileChooser.FILES_AND_DIRECTORIES );
203
//				chooser.setAcceptAllFileFilterUsed(true);
204

  
205
				if (chooser.showSaveDialog(null) == JFileChooser.APPROVE_OPTION) {
206
				  
207
//				  System.out.println("getCurrentDirectory(): " + chooser.getCurrentDirectory());
208
//				  System.out.println("getSelectedFile() : " + chooser.getSelectedFile().getAbsolutePath());
209
//				  
210
				  String filename = chooser.getSelectedFile().getAbsolutePath();
211
			      
212
				  if (!filename.endsWith(".pdf")) {
213
			        filename=filename + ".pdf";
214
			      }
215
			      
216
				  document.getChartService().exportAsPDF(
217
						    filename, 
218
							chartPanel.getWidth(), 
219
							chartPanel.getHeight()
220
					);
221
				  
222
				  	JOptionPane.showMessageDialog(null, this.swingManager.getTranslation("Document_exported"));
223
				} else {
224
				  System.out.println("No Selection ");
225
				}
226
				
227

  
228

  
229
				return;
230
			}
231
		}
232
		
233
		if (ACTION_EXPORTTOPNG.equalsIgnoreCase(actionCommand)) {
234
			IWindow window = PluginServices.getMDIManager().getActiveWindow();
235
			if ((window instanceof DefaultChartDocumentPanel)) {
236
				DefaultChartDocumentPanel chartPanel = (DefaultChartDocumentPanel) window;
237
				JFileChooser chooser = new JFileChooser();
238
				
239
				ExtensionFileFilter filter=new ExtensionFileFilter(this.swingManager.getTranslation("PNG_Image_Files"),".png");
240
				chooser.addChoosableFileFilter(filter);
241
				
242
				chooser.setCurrentDirectory(new File(System.getProperty("user.home")));
243
				chooser.setDialogTitle(this.swingManager.getTranslation("SavePNG"));
244
								
245
				chooser.setFileSelectionMode( JFileChooser.FILES_AND_DIRECTORIES );
246
//				chooser.setAcceptAllFileFilterUsed(true);
247

  
248
				if (chooser.showSaveDialog(null) == JFileChooser.APPROVE_OPTION) {
249
				  
250
//				  System.out.println("getCurrentDirectory(): " + chooser.getCurrentDirectory());
251
//				  System.out.println("getSelectedFile() : " + chooser.getSelectedFile().getAbsolutePath());
252
//				  
253
				  String filename = chooser.getSelectedFile().getAbsolutePath();
254
			      
255
				  if (!filename.endsWith(".png")) {
256
			        filename=filename + ".png";
257
			      }
258
			      
259
				 BufferedImage bi = this.createImage(chartPanel, chartPanel.getBounds());
260
				 this.writeImage(bi, filename);
261
				 
262
				 JOptionPane.showMessageDialog(null, this.swingManager.getTranslation("Document_exported"));
263
				 
264
				} else {
265
				  System.out.println("No Selection ");
266
				}
267
				
268

  
269

  
270
				return;
271
			}
272
		}
273
	}
274
	
275
	public void writeImage(BufferedImage image, String fileName){
276
		if (fileName == null) return;
277
	
278
		int offset = fileName.lastIndexOf( "." );
279
		if (offset == -1){
280
			return;
281
		}
282
	
283
		String type = fileName.substring(offset + 1);
284
		try {
285
			ImageIO.write(image, type, new File( fileName ));
286
		} catch (IOException e) {
287
			// TODO Auto-generated catch block
288
			e.printStackTrace();
289
		}
290
	}
291
	
292
	private BufferedImage createImage(JComponent component, Rectangle region)
293
	{
294
        //  Make sure the component has a size and has been layed out.
295
        //  (necessary check for components not added to a realized frame)
296

  
297
		if (! component.isDisplayable())
298
		{
299
			Dimension d = component.getSize();
300

  
301
			if (d.width == 0 || d.height == 0)
302
			{
303
				d = component.getPreferredSize();
304
				component.setSize( d );
305
			}
306

  
307
//			layoutComponent( component );
308
		}
309

  
310
		BufferedImage image = new BufferedImage(region.width, region.height, BufferedImage.TYPE_INT_RGB);
311
		Graphics2D g2d = image.createGraphics();
312

  
313
		//  Paint a background for non-opaque components,
314
		//  otherwise the background will be black
315

  
316
		if (! component.isOpaque())
317
		{
318
			g2d.setColor( component.getBackground() );
319
			g2d.fillRect(region.x, region.y, region.width, region.height);
320
		}
321

  
322
		g2d.translate(-region.x, -region.y);
323
		component.paint( g2d );
324
		g2d.dispose();
325
		return image;
326
	}
327

  
328

  
329
	/**
330
	 * Check if tools of this extension are enabled.
331
	 */
332
	public boolean isEnabled() {
333
		//
334
		// By default the tool is always enabled
335
		//
336
		return true;
337
	}
338

  
339
	/**
340
	 * Check if tools of this extension are visible.
341
	 */
342
	public boolean isVisible() {
343
		IWindow f = PluginServices.getMDIManager().getActiveWindow();
344
		if (f == null) {
345
			return false;
346
		}
347

  
348
		if (f instanceof DefaultChartDocumentPanel) {
349
			return true;
350
		}
351
		return false;
352
	}
353

  
354
	/**
355
	 * Check if an extension is enabled.
356
	 */
357
	public boolean isEnabled(IExtension extension) {
358
		return extension.isEnabled();
359
	}
360

  
361
	/**
362
	 * Check if an extension is visible.
363
	 */
364
	public boolean isVisible(IExtension extension) {
365
		return extension.isVisible();
366
	}
367

  
368
	private void registerIcons() {
369
		IconThemeHelper.registerIcon("chart", "chart-create-plot", this.getClass());
370
		IconThemeHelper.registerIcon("chart", "chart-edit-plot", this.getClass());
371
		IconThemeHelper.registerIcon("chart", "chart-export-pdf", this.getClass());
372
		IconThemeHelper.registerIcon("chart", "chart-export-png", this.getClass());
373
		
374
		IconThemeHelper.registerIcon("document", "document-chart-unselect", ChartDocumentManager.class);
375
		IconThemeHelper.registerIcon("document", "document-chart-select", ChartDocumentManager.class);
376
		
377
	}
378

  
379
}
0 380

  
org.gvsig.chart/tags/org.gvsig.chart-1.0.154/org.gvsig.chart.app/org.gvsig.chart.app.mainplugin/src/main/java/org/gvsig/app/chart/mainplugin/package.html
1
<?xml version="1.0" encoding="UTF-8" ?>
2
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
<html xmlns="http://www.w3.org/1999/xhtml">
4
<head>
5
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
6
<title>org.gvsig.landregistryviewer package documentation</title>
7
</head>
8
<body>
9

  
10
	<p>LandRegistryViewer gvSIG extension</p>
11
	
12
	<p>
13
	Shows LandRegistryViewer into gvSIG.
14
	</p>
15

  
16
</body>
17
</html>
0 18

  
org.gvsig.chart/tags/org.gvsig.chart-1.0.154/org.gvsig.chart.app/org.gvsig.chart.app.mainplugin/src/main/java/org/gvsig/app/project/documents/chart/events/ChartPropertiesChangeEvent.java
1
package org.gvsig.app.project.documents.chart.events;
2

  
3
import java.util.EventObject;
4

  
5
public class ChartPropertiesChangeEvent extends EventObject {
6
    /**
7
	 * 
8
	 */
9
	private static final long serialVersionUID = -1974434668957358782L;
10

  
11
	public ChartPropertiesChangeEvent(Object source) {
12
        super(source);
13
    }
14
}
0 15

  
org.gvsig.chart/tags/org.gvsig.chart-1.0.154/org.gvsig.chart.app/org.gvsig.chart.app.mainplugin/src/main/java/org/gvsig/app/project/documents/chart/events/ChartPropertiesChangeListener.java
1
package org.gvsig.app.project.documents.chart.events;
2

  
3
import java.util.EventListener;
4

  
5
public interface ChartPropertiesChangeListener extends EventListener {
6
    public void chartPropertiesChange(ChartPropertiesChangeEvent evt);
7
}
0 8

  
org.gvsig.chart/tags/org.gvsig.chart-1.0.154/org.gvsig.chart.app/org.gvsig.chart.app.mainplugin/src/main/java/org/gvsig/app/project/documents/chart/gui/DefaultEditorChartServiceJDialog.java
1
package org.gvsig.app.project.documents.chart.gui;
2

  
3
import java.awt.Dimension;
4
import java.awt.event.ComponentEvent;
5
import java.awt.event.ComponentListener;
6

  
7
import javax.swing.JDialog;
8

  
9
import org.gvsig.chart.ChartService;
10
import org.gvsig.chart.swing.editors.EditorChartServicePanel;
11

  
12
/**
13
 * A dialog for choosing a font from the available system fonts.
14
 *
15
 * @author Jos? Bad?a
16
 */
17
public class DefaultEditorChartServiceJDialog  extends JDialog {
18

  
19
    /**
20
	 * 
21
	 */
22
	private static final long serialVersionUID = 822457766380562414L;
23
	
24
    private EditorChartServicePanel editorPanel;
25

  
26
    /**
27
     * Standard constructor - builds a font chooser dialog owned by another dialog.
28
     *
29
     * @param owner  the dialog that 'owns' this dialog.
30
     * @param title  the title for the dialog.
31
     * @param modal  a boolean that indicates whether or not the dialog is modal.
32
     * @param font  the initial font displayed.
33
     */
34
    public DefaultEditorChartServiceJDialog(String title, boolean modal, EditorChartServicePanel panel) {
35
        super();
36
        editorPanel = panel;
37
        setTitle(title);
38
        setContentPane(panel.getComponent());
39
        panel.getComponent().addComponentListener(new ComponentListener() {
40
			
41
			public void componentShown(ComponentEvent arg0) {
42
				// TODO Auto-generated method stub
43
				
44
			}
45
			
46
			public void componentResized(ComponentEvent arg0) {
47
				// TODO Auto-generated method stub
48
				
49
			}
50
			
51
			public void componentMoved(ComponentEvent arg0) {
52
				// TODO Auto-generated method stub
53
				
54
			}
55
			
56
			public void componentHidden(ComponentEvent arg0) {
57
				DefaultEditorChartServiceJDialog.this.dispose();
58
			}
59
		});
60
        getContentPane().setVisible(true);
61
        setPreferredSize(new Dimension(850,500));
62
        setModal(true);
63
        
64
        pack();
65
        setSize(840, 500);
66
        setVisible(true);
67
    }
68

  
69
    
70
    public EditorChartServicePanel getMainPanel(){
71
    	return this.editorPanel;
72
    }
73

  
74
    /**
75
     * Returns the ChartService
76
     *
77
     * @return the ChartService.
78
     */
79
    public ChartService getChartService() {
80
        return this.editorPanel.getNewChartService();
81
    }
82

  
83

  
84
}
0 85

  
org.gvsig.chart/tags/org.gvsig.chart-1.0.154/org.gvsig.chart.app/org.gvsig.chart.app.mainplugin/src/main/java/org/gvsig/app/project/documents/chart/gui/EditorChartServiceJDialog.java
1
package org.gvsig.app.project.documents.chart.gui;
2

  
3
import org.gvsig.chart.ChartService;
4
import org.gvsig.chart.swing.editors.EditorChartServicePanel;
5
import org.gvsig.chart.swing.editors.panels.EditorChartPropertiesPanel;
6

  
7
public class EditorChartServiceJDialog  {
8
	
9
    public static ChartService showDialog(String title, EditorChartServicePanel editorPanel) {
10
    	
11
    	DefaultEditorChartServiceJDialog dlg = new DefaultEditorChartServiceJDialog(title, true, editorPanel);
12
    	if(dlg.getMainPanel().isCancelled()) {
13
    		dlg.setVisible(false);
14
    		return null;
15
    	}
16
    	return dlg.getChartService();
17
    }
18
    
19
    public static ChartService showDialog(String title, EditorChartPropertiesPanel editorPanel) {
20
    	
21
    	DefaultEditorChartPropertiesJDialog dlg = new DefaultEditorChartPropertiesJDialog(title, true, editorPanel);
22
    	if(dlg.getMainPanel().isCancelled()) {
23
    		dlg.setVisible(false);
24
    		return null;
25
    	}
26
    	return dlg.getChartService();
27
    }
28
}
0 29

  
org.gvsig.chart/tags/org.gvsig.chart-1.0.154/org.gvsig.chart.app/org.gvsig.chart.app.mainplugin/src/main/java/org/gvsig/app/project/documents/chart/gui/DefaultEditorChartPropertiesJDialog.java
1
package org.gvsig.app.project.documents.chart.gui;
2

  
3
import java.awt.Dimension;
4
import java.awt.Font;
5
import java.awt.event.ComponentEvent;
6
import java.awt.event.ComponentListener;
7

  
8
import javax.swing.JDialog;
9

  
10
import org.gvsig.app.gui.utils.FontChooser;
11
import org.gvsig.chart.ChartService;
12
import org.gvsig.chart.swing.ChartSwingLocator;
13
import org.gvsig.chart.swing.ChartSwingManager;
14
import org.gvsig.chart.swing.editors.panels.EditorChartPropertiesPanel;
15
import org.gvsig.chart.swing.editors.panels.format.chartarea.ChartServiceFormatLegendPanel;
16
import org.gvsig.chart.swing.editors.panels.format.chartarea.ChartServiceFormatTitlePanel;
17
import org.gvsig.tools.observer.Observable;
18
import org.gvsig.tools.observer.Observer;
19

  
20
/**
21
 * A dialog for choosing a font from the available system fonts.
22
 *
23
 * @author Jos? Bad?a
24
 */
25
public class DefaultEditorChartPropertiesJDialog  extends JDialog implements Observer{
26

  
27
    /**
28
	 * 
29
	 */
30
	private static final long serialVersionUID = 822457766380562414L;
31
	
32
    private EditorChartPropertiesPanel panel;
33

  
34
	private ChartSwingManager swingManager;
35

  
36
    /**
37
     * Standard constructor - builds a font chooser dialog owned by another dialog.
38
     *
39
     * @param owner  the dialog that 'owns' this dialog.
40
     * @param title  the title for the dialog.
41
     * @param modal  a boolean that indicates whether or not the dialog is modal.
42
     * @param font  the initial font displayed.
43
     */
44
    public DefaultEditorChartPropertiesJDialog(String title, boolean modal, EditorChartPropertiesPanel panel) {
45
        super();
46
        this.panel = panel;
47
        this.panel.addObserver(this);
48
    	swingManager = ChartSwingLocator.getSwingManager().getChartSwingManager();
49
        setTitle(title);
50
        setContentPane(panel.getComponent());
51
        panel.getComponent().addComponentListener(new ComponentListener() {
52
			
53
			public void componentShown(ComponentEvent arg0) {
54
				// TODO Auto-generated method stub
55
				
56
			}
57
			
58
			public void componentResized(ComponentEvent arg0) {
59
				// TODO Auto-generated method stub
60
				
61
			}
62
			
63
			public void componentMoved(ComponentEvent arg0) {
64
				// TODO Auto-generated method stub
65
				
66
			}
67
			
68
			public void componentHidden(ComponentEvent arg0) {
69
				DefaultEditorChartPropertiesJDialog.this.dispose();
70
			}
71
		});
72
        getContentPane().setVisible(true);
73
        setPreferredSize(new Dimension(850,500));
74
        setModal(true);
75
        
76
        pack();
77
        setSize(700, 500);
78
        setVisible(true);
79
    }
80

  
81
    
82
    public ChartService getChartService(){
83
    	return panel.getChartService();
84
    }
85

  
86

  
87
	public EditorChartPropertiesPanel getMainPanel() {
88
		return this.panel;
89
	}
90

  
91

  
92
	public void update(Observable observable, Object notification) {
93
		if(observable instanceof EditorChartPropertiesPanel){
94
			
95
			if(observable instanceof ChartServiceFormatTitlePanel){
96
				ChartServiceFormatTitlePanel titlePanel = (ChartServiceFormatTitlePanel)observable;
97
				Font newFont = null;
98
				newFont = FontChooser.showDialog(this.swingManager.getTranslation("Pick_Color"), titlePanel.getTitleFont());
99
				if (newFont == null) {
100
					return;
101
				}
102
				titlePanel.setTitleFont(newFont);
103
			}
104
			if(observable instanceof ChartServiceFormatLegendPanel){
105
				ChartServiceFormatLegendPanel titlePanel = (ChartServiceFormatLegendPanel)observable;
106
				Font newFont = null;
107
				newFont = FontChooser.showDialog(this.swingManager.getTranslation("Pick_Color"), titlePanel.getLegendTitleFont());
108
				if (newFont == null) {
109
					return;
110
				}
111
				titlePanel.setLegendTitleFont(newFont);
112
			}
113
		}
114
	}
115

  
116
}
0 117

  
org.gvsig.chart/tags/org.gvsig.chart-1.0.154/org.gvsig.chart.app/org.gvsig.chart.app.mainplugin/src/main/java/org/gvsig/app/project/documents/chart/gui/DefaultEditorGroupedChartIWindow.java
1
package org.gvsig.app.project.documents.chart.gui;
2

  
3
import java.awt.GridBagConstraints;
4
import java.awt.GridBagLayout;
5
import java.awt.Insets;
6
import java.awt.event.ActionEvent;
7
import java.awt.event.ActionListener;
8
import java.beans.PropertyChangeEvent;
9
import java.beans.PropertyChangeListener;
10
import java.util.ArrayList;
11
import java.util.HashMap;
12
import java.util.List;
13
import java.util.Map;
14
import java.util.Properties;
15

  
16
import javax.swing.JButton;
17
import javax.swing.JDialog;
18
import javax.swing.JOptionPane;
19
import javax.swing.JPanel;
20

  
21
import org.gvsig.andami.PluginServices;
22
import org.gvsig.andami.ui.mdiManager.IWindow;
23
import org.gvsig.andami.ui.mdiManager.WindowInfo;
24
import org.gvsig.app.ApplicationLocator;
25
import org.gvsig.app.ApplicationManager;
26
import org.gvsig.app.project.Project;
27
import org.gvsig.app.project.ProjectManager;
28
import org.gvsig.app.project.documents.Document;
29
import org.gvsig.app.project.documents.chart.ChartDocument;
30
import org.gvsig.app.project.documents.table.TableDocument;
31
import org.gvsig.app.project.documents.table.TableManager;
32
import org.gvsig.chart.ChartProperties;
33
import org.gvsig.chart.ChartService;
34
import org.gvsig.chart.GroupedCharts;
35
import org.gvsig.chart.model.ChartDataSet;
36
import org.gvsig.chart.model.variables.RequiredField;
37
import org.gvsig.chart.swing.ChartSwingLocator;
38
import org.gvsig.chart.swing.ChartSwingManager;
39
import org.gvsig.chart.swing.editors.EditorChartServicePanel;
40
import org.gvsig.chart.swing.editors.EditorGroupedChartPanel;
41
import org.gvsig.chart.swing.editors.panels.ChartServiceDataPanel;
42
import org.gvsig.chart.swing.editors.panels.EditorChartPropertiesPanel;
43
import org.gvsig.fmap.dal.exception.DataException;
44
import org.gvsig.fmap.dal.feature.Feature;
45
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
46
import org.gvsig.fmap.dal.feature.FeatureSelection;
47
import org.gvsig.fmap.dal.feature.FeatureSet;
48
import org.gvsig.fmap.dal.feature.FeatureType;
49
import org.gvsig.tools.dispose.DisposableIterator;
50
import org.gvsig.tools.observer.Observable;
51
import org.gvsig.tools.observer.Observer;
52

  
53
public class DefaultEditorGroupedChartIWindow extends JPanel implements IWindow, Observer {
54

  
55
	/**
56
	 * 
57
	 */
58
	private static final long serialVersionUID = -412071853707015402L;
59
	private static final long ROW_LIMIT = 750;
60
	private static final long ROW_ALERT_LIMIT = 200;
61
	private EditorGroupedChartPanel editorPanel;
62
	private GroupedCharts charts;
63
	private EditorChartServicePanel editorChartServicePanel = null;
64
	private ChartSwingManager swingManager;
65
	private ChartDocument document;
66
	private boolean isFirstTime = true;
67
	private boolean allowOnlySelectedRows = false;
68
	private JDialog dialogParent;
69
	private HashMap<String, TableDocument> tableDocs;
70
	
71
	
72
	public DefaultEditorGroupedChartIWindow(ChartDocument doc) {
73
		this.document = doc;
74
		charts = doc.getChartService().copy();
75
		
76
		swingManager = ChartSwingLocator.getSwingManager().getChartSwingManager();
77
		
78
		editorPanel = ChartSwingLocator.getSwingManager().getChartSwingManager().createEditorChartPanel(charts);
79
		editorPanel.addObserver(this);
80
		
81
		GridBagLayout gridBagLayout = new GridBagLayout();
82
		/*gridBagLayout.columnWidths = new int[]{0, 0, 655, 0, 0, 0};
83
		/*gridBagLayout.rowHeights = new int[]{0, 0, 0};
84
		gridBagLayout.columnWeights = new double[]{0.0, 0.0, 0.0, 0.0, 0.0, Double.MIN_VALUE};
85
		gridBagLayout.rowWeights = new double[]{0.0, 0.0, Double.MIN_VALUE};*/
86
		setLayout(gridBagLayout);
87
				
88
		JButton acceptButton = new JButton(this.swingManager.getTranslation("accept"));
89
		acceptButton.addActionListener(new ActionListener() {
90
			
91
			public void actionPerformed(ActionEvent arg0) {
92
				updateDocument();
93
				closeMainWindow();
94
				
95
			}
96
		});
97
		acceptButton.setSize(100, acceptButton.getHeight());
98

  
99
		GridBagConstraints gbc_panel = new GridBagConstraints();
100
		gbc_panel.gridwidth = 5;
101
		gbc_panel.insets = new Insets(5, 5, 5, 5);
102
		gbc_panel.gridx = 0;
103
		gbc_panel.gridy = 0;
104
		gbc_panel.fill = GridBagConstraints.BOTH;
105
		gbc_panel.weightx = 1.0;
106
		gbc_panel.weighty = 1.0;
107
		add(editorPanel.getComponent(), gbc_panel);
108
		
109
		JButton cancelButton = new JButton(this.swingManager.getTranslation("Cancel"));
110
		cancelButton.addActionListener(new ActionListener() {
111
			public void actionPerformed(ActionEvent arg0) {
112
				closeMainWindow();
113
			}
114
		});
115
		
116
		
117
		GridBagConstraints gbc_btnNewButton_2 = new GridBagConstraints();
118
		gbc_btnNewButton_2.anchor = GridBagConstraints.EAST;
119
		gbc_btnNewButton_2.insets = new Insets(5, 5, 5, 5);
120
		gbc_btnNewButton_2.gridx = 4;
121
		gbc_btnNewButton_2.gridy = 1;
122
		
123
		add(acceptButton, gbc_btnNewButton_2);
124
		
125
		cancelButton.setSize(100, cancelButton.getHeight());
126
		GridBagConstraints gbc_btnNewButton_1 = new GridBagConstraints();
127
		gbc_btnNewButton_1.anchor = GridBagConstraints.EAST;
128
		gbc_btnNewButton_1.insets = new Insets(5, 5, 5, 75);
129
		gbc_panel.fill = GridBagConstraints.BOTH;
130
		gbc_panel.weightx = 1.0;
131
		gbc_panel.weighty = 0.0;
132
		gbc_btnNewButton_1.gridx = 4;
133
		gbc_btnNewButton_1.gridy = 1;
134
		add(cancelButton, gbc_btnNewButton_1);
135
				
136

  
137
		
138
	}
139

  
140
	protected void closeMainWindow() {
141
		if(this.dialogParent!=null){
142
			this.dialogParent.dispose();
143
		}else{
144
			PluginServices.getMDIManager().closeWindow(this);
145
		}
146
	}
147
	
148
	public void setParentDialog(JDialog parent){
149
		this.dialogParent = parent;
150
	}
151
	
152
	public EditorChartServicePanel getEditorChartServicePanel(){
153
		return this.editorChartServicePanel;
154
	}
155
	
156
	public TableDocument getDocument(String name){
157
		if(tableDocs != null && !tableDocs.isEmpty()){
158
			return tableDocs.get(name);
159
		}
160
		return null;
161
	}
162

  
163
	public WindowInfo getWindowInfo() {
164
		WindowInfo m_viewinfo = new WindowInfo(WindowInfo.MODALDIALOG
165
				| WindowInfo.RESIZABLE);
166
		m_viewinfo
167
				.setTitle(PluginServices.getText(this, this.swingManager.getTranslation("propiedades_grafico")));
168
		m_viewinfo.setWidth(830);
169
		m_viewinfo.setHeight(545);
170
		return m_viewinfo;
171
	}
172

  
173
	public Object getWindowProfile() {
174
		return WindowInfo.PROPERTIES_PROFILE;
175
	}
176
	
177
	public EditorGroupedChartPanel getEditorPanel() {
178
		return editorPanel;
179
	}
180
	
181
	private void initializeDataSource(ChartServiceDataPanel panel) {
182
		ApplicationManager appManager = ApplicationLocator.getManager();
183
		final Project project = appManager.getCurrentProject();
184
		ProjectManager projectManager = appManager.getProjectManager();
185

  
186
		List<Document> tableDocuments = project
187
				.getDocuments(TableManager.TYPENAME);
188
		TableDocument[] pts = tableDocuments
189
				.toArray(new TableDocument[tableDocuments.size()]);
190

  
191
		Properties extendedProps = new Properties();
192
		tableDocs = new HashMap<String, TableDocument>();
193
		List<String> tableNames = new ArrayList<String>();
194
		
195
		for (TableDocument t : pts) {
196
			tableDocs.put(t.getName(), t);
197
			tableNames.add(t.getName());
198
		}
199
		
200
		//props.setDataTableModel(tableNames);
201
		panel.setTableNameModel(tableNames);
202
		
203
		if(tableNames.size() > 0){
204
			String tableName = panel.getPreviousChartProperties().getChartTableName();
205
			if(tableName != null && tableName != ""){
206
				panel.setSelectedTableName(tableName);
207
				setFieldsForTable(panel, tableName);
208
			}else{
209
				panel.setSelectedTableName(tableNames.get(0));
210
				setFieldsForTable(panel, tableNames.get(0));
211
			}
212
		}
213
		
214
		panel.fillTableData();
215
		
216
	}
217
	
218
	private boolean isActivatedPanel(ChartServiceDataPanel panel, long total, long selected){
219
		if(total>ROW_LIMIT && (selected>ROW_LIMIT || selected ==0)){
220
			editorChartServicePanel.setDisableChartCreation(false);
221
			return false;
222
		}
223
		return true;
224
	}
225
	
226
	private void getAlertMessages(ChartServiceDataPanel panel, String tableName){
227
		ApplicationManager appManager = ApplicationLocator.getManager();
228
		final Project project = appManager.getCurrentProject();
229

  
230
		TableDocument selDoc = (TableDocument) project.getDocument(tableName,
231
			TableManager.TYPENAME);
232
		if (selDoc != null) {
233
			try {
234
				long total = selDoc.getStore().getFeatureCount();
235
				long selected = selDoc.getStore().getFeatureSelection().getSize();
236
				this.allowOnlySelectedRows=false;
237
				editorChartServicePanel.setDisableChartCreation(true);
238
				String text="";
239
				int messageType = JOptionPane.PLAIN_MESSAGE;			
240
				if(total>ROW_LIMIT && (selected>ROW_LIMIT || selected == 0)){
241
					// alert
242
					text += this.swingManager.getTranslation("chart_data_limit_exceeded");
243
					text += "\n";
244
					text += this.swingManager.getTranslation("chart_data_more_info");
245
					text += "\n";
246
					messageType = JOptionPane.ERROR_MESSAGE;
247
					this.allowOnlySelectedRows=true;
248
					editorChartServicePanel.setDisableChartCreation(false);
249
				}
250
				if(total>ROW_LIMIT && selected<ROW_LIMIT && selected>ROW_ALERT_LIMIT){
251
					if(!panel.getOnlySelectedRows()){
252
						// alert for that
253
						text += this.swingManager.getTranslation("chart_data_using_selected_rows");
254
						text += "\n";
255
						text += this.swingManager.getTranslation("chart_data_more_info");
256
						text += "\n";
257
					}
258
					this.allowOnlySelectedRows=true;
259
					// alert for too time
260
					text += this.swingManager.getTranslation("chart_data_operation_seconds");
261
					text += "\n";
262
					messageType = JOptionPane.WARNING_MESSAGE;
263
				}
264
				if(total>ROW_LIMIT && selected<=ROW_ALERT_LIMIT && selected > 0){
265
					if(!panel.getOnlySelectedRows()){
266
						// alert for that
267
						text += this.swingManager.getTranslation("chart_data_using_selected_rows");
268
						text += "\n";
269
						text += this.swingManager.getTranslation("chart_data_more_info");
270
						text += "\n";
271
						messageType = JOptionPane.WARNING_MESSAGE;
272
					}
273
					this.allowOnlySelectedRows=true;
274
				}	
275
				if(total>ROW_ALERT_LIMIT && total<=ROW_LIMIT && (selected == 0 || selected > ROW_ALERT_LIMIT)){
276
					// alert for too time
277
					text += this.swingManager.getTranslation("chart_data_operation_seconds");
278
					text += "\n";
279
					messageType = JOptionPane.INFORMATION_MESSAGE;
280
				}
281
				if(selected == 0 && panel.getOnlySelectedRows()){
282
					text += this.swingManager.getTranslation("chart_data_no_rows_selected");
283
					messageType = JOptionPane.WARNING_MESSAGE;
284
				}
285
				
286
				panel.setOnlySelectedRows(this.allowOnlySelectedRows);
287
				
288
				if(!text.equals("") && !isFirstTime){
289
					JOptionPane.showConfirmDialog(this, text,
290
		                    "Chart data limit exceeded",
291
		                    JOptionPane.DEFAULT_OPTION,
292
		                    messageType);
293
				}
294
			} catch (DataException e) {
295
				// TODO Auto-generated catch block
296
				e.printStackTrace();
297
			}
298
		}
299
	}
300
	
301
	private void setFieldsForTable(ChartServiceDataPanel panel, String tableName) {
302
		ApplicationManager appManager = ApplicationLocator.getManager();
303
		final Project project = appManager.getCurrentProject();
304

  
305
		TableDocument selDoc = (TableDocument) project.getDocument(tableName,
306
			TableManager.TYPENAME);
307
		if (selDoc != null) {
308
			// We get the fields of this table and put them to lstFields
309
			try {
310
				long total_rows = selDoc.getStore().getFeatureCount();
311
				long selected_rows = selDoc.getStore().getFeatureSelection().getSize();
312
				
313
				boolean activated = isActivatedPanel(panel, total_rows, selected_rows);
314
				
315
				FeatureType featType = selDoc.getStore()
316
						.getDefaultFeatureType();
317
				FeatureAttributeDescriptor[] atts = featType
318
						.getAttributeDescriptors();
319
				List<String> newFields = new ArrayList<String>();
320
				List<RequiredField> rFields = null;
321
				if(panel.getPreviousChartProperties().getChartType().equals(panel.getChartProperties().getChartType())){
322
					rFields = panel.getPreviousChartProperties().getRequiredFields();
323
				}
324
				else{
325
					rFields = panel.getChartProperties().getRequiredFields();
326
				}
327
				int j=0;
328
				for (RequiredField rf : rFields) {
329
					if (rf.isOptional())
330
						newFields.add("");
331
					
332
					for (int i = 0; i < atts.length; i++) {
333
						if(rf.isNumeric()){
334
							if (atts[i].getDataType().isNumeric()) {
335
								newFields.add(atts[i].getName());
336
							}
337
						}else{
338
							newFields.add(atts[i].getName());
339
						 }
340
					}
341
					
342
					panel.setRequiredFieldModel(rFields, rf, newFields, activated);
343
					
344
					// Seleccionamos el valor previo
345
					if(rf.getValue()!=null){
346
						panel.setSelectedRequiredField(rFields, rf, rf.getValue(), activated);
347
					}
348
					
349
						
350
					
351
					newFields = new ArrayList<String>();					
352
					j++;
353
				}
354
	//			Properties props = ((ChartPanel) panelProps).getExtendedData();
355
	//			props.put("fieldsCombo", newFields);
356
	//			((ChartPanel) panelProps).setExtendedData(props);
357
			} catch (DataException e) {
358
				// TODO Auto-generated catch block
359
				e.printStackTrace();
360
			}
361
		}
362
	}
363

  
364
	public void update(Observable observable, Object notification) {
365
		if(observable instanceof EditorGroupedChartPanel){
366
			EditorGroupedChartPanel editorPanel = (EditorGroupedChartPanel)observable;
367
			if(notification instanceof GroupedCharts){
368
				EditorChartPropertiesPanel editorPropertiesPanel = ChartSwingLocator.getSwingManager().getChartSwingManager().createEditorChartPropertiesPanel(
369
						(ChartService)editorPanel.getGroupedChart(),
370
						editorPanel.getGroupedChart());
371
				ChartService service =  EditorChartServiceJDialog.showDialog(
372
						this.swingManager.getTranslation("General_options"), 
373
						editorPropertiesPanel
374
				);
375
				if(service != null){
376
					editorPanel.refreshInformation();
377
				}
378
			}
379
			if(notification == null){
380
				ChartSwingManager swingManager = ChartSwingLocator.getSwingManager().getChartSwingManager();
381
				editorChartServicePanel = swingManager.createNewChartPanel(this.charts);
382
				editorChartServicePanel.addObserver(getEditorPanel());
383
				ChartService service =  EditorChartServiceJDialog.showDialog(
384
						this.swingManager.getTranslation("Add_new_variable"), 
385
						editorChartServicePanel);
386
				if(service != null){
387
					getEditorPanel().getGroupedChart().addChartService(service);
388
					getEditorPanel().notifyObservers(getEditorPanel().getGroupedChart(), service);
389
					int services = getEditorPanel().getGroupedChart().getChartServices().size();
390
					if(services > 1){
391
						for(int x=services; x>1; x--){
392
							ChartService prev_service = getEditorPanel().getGroupedChart().getChartServices().get(x-2);
393
							service = getEditorPanel().getGroupedChart().getChartServices().get(x-1);
394
							getEditorPanel().getGroupedChart().updateChartService(x-2, service);
395
							getEditorPanel().getGroupedChart().updateChartService(x-1, prev_service);
396
						}
397
						getEditorPanel().getGroupedChart().refreshCharts();
398
						getEditorPanel().getGroupedChart().redrawCharts();
399
						getEditorPanel().getGroupedChart().notifyChange(
400
								getEditorPanel().getGroupedChart());
401
						
402
					}
403
				}
404
				editorChartServicePanel = null;
405
			}
406
			if(!(notification instanceof GroupedCharts) &&
407
					notification instanceof ChartService){
408
				int index = getEditorPanel().getGroupedChart().getChartServices().indexOf((ChartService)notification);
409
				createNewChartVariable(index);
410
			}
411
			getEditorPanel().getGroupedChart().refreshCharts();
412
		}
413
		if(observable instanceof ChartServiceDataPanel){
414
			if(notification != null && notification instanceof String){
415
				setFieldsForTable(((ChartServiceDataPanel)observable), (String) notification);
416
				getAlertMessages(((ChartServiceDataPanel)observable), (String) notification);
417
				isFirstTime=false;
418
			}
419
			if(notification != null && notification instanceof ChartService){
420
				try {
421
					if(editorChartServicePanel != null){
422
						if(editorChartServicePanel.isEditing()){
423
							getEditorPanel().getGroupedChart().updateChartService(
424
									editorChartServicePanel.getChartServiceIndexEdited(), 
425
									editorChartServicePanel.getNewChartService());
426
							ChartServiceDataPanel dataPanel = (ChartServiceDataPanel)observable;
427
							dataPanel.fillTableData();
428
							getEditorPanel().getGroupedChart().updateChartService(
429
									editorChartServicePanel.getChartServiceIndexEdited(), 
430
									editorChartServicePanel.getPreviousChartService());
431
						}else{
432
							getEditorPanel().getGroupedChart().addChartService(editorChartServicePanel.getNewChartService());
433
							getEditorPanel().notifyObservers(getEditorPanel().getGroupedChart(), editorChartServicePanel.getNewChartService());
434
//							ChartServiceDataPanel dataPanel = (ChartServiceDataPanel)observable;
435
//							editorChartServicePanel.getNewChartService().createChartLegendItems();
436
//							dataPanel.fillTableData();
437
							getEditorPanel().getGroupedChart().deleteChartService(editorChartServicePanel.getNewChartService());
438
						}
439
					}
440
					
441

  
442
					refreshChartServiceData((ChartService)notification);
443
				} catch (DataException e) {
444
					// TODO Auto-generated catch block
445
					e.printStackTrace();
446
				}
447
			}
448
			if(notification == null){
449
				initializeDataSource(((ChartServiceDataPanel)observable));
450
			}
451
		}
452
		if(observable instanceof GroupedCharts){
453
//			if(notification != null && notification instanceof ChartService){
454
//				try {
455
//					refreshChartServiceData((ChartService)notification);
456
//				} catch (DataException e) {
457
//					// TODO Auto-generated catch block
458
//					e.printStackTrace();
459
//				}
460
//			}else{
461
				refreshGroupedChartsData();
462
//			}
463
		}
464
	}
465
	
466
	public void createNewChartVariable(int index) {
467
	
468
		ChartSwingManager swingManager = ChartSwingLocator.getSwingManager().getChartSwingManager();
469
		editorChartServicePanel = swingManager.createEditorChartPanel(index, this.charts);
470
		editorChartServicePanel.addObserver(getEditorPanel());
471
		ChartService service =  EditorChartServiceJDialog.showDialog(
472
				this.swingManager.getTranslation("Edit_a_variable"),
473
				editorChartServicePanel);
474
		if(service != null){
475
			getEditorPanel().getGroupedChart().updateChartService(index, service);
476
			getEditorPanel().getGroupedChart().refreshCharts();
477
			getEditorPanel().getGroupedChart().redrawCharts();
478
			getEditorPanel().getGroupedChart().notifyChange(
479
					getEditorPanel().getGroupedChart());
480
			getEditorPanel().notifyObservers(getEditorPanel().getGroupedChart(), service);
481

  
482
		}
483
		editorChartServicePanel = null;
484
	}
485

  
486
	public ChartDocument getChartDocument(){
487
		return this.document;
488
	}
489
	
490
	private void updateDocument(){
491
		getChartDocument().setChartService(this.charts);
492
	}
493
	
494
	/**
495
	 * We read the actual data and create the ChartDataSet
496
	 * @param cs
497
	 * @throws DataException
498
	 */
499
	public void refreshChartServiceData(ChartService cs) throws DataException{
500
		ApplicationManager appManager = ApplicationLocator.getManager();
501
		Project project = appManager.getCurrentProject();
502
		
503
		ChartProperties cp = cs.getChartProperties();
504

  
505
		FeatureSet fs;
506
		String tableName = cs.getChartProperties().getChartTableName();
507
		if(tableName != null){
508
			TableDocument table = (TableDocument) project.getDocument(
509
					tableName, TableManager.TYPENAME);
510

  
511
			if (table == null) {
512
				throw new RuntimeException("No se encuentra la tabla "
513
						+ tableName);
514
			}
515
			ChartDataSet dataSet = cs.getChartDataSet();
516
			FeatureSelection fsel = table.getStore().getFeatureSelection();
517
			fs = table.getStore().getFeatureSet(); 
518
			
519
			DisposableIterator it = null;
520
			
521
			if (cp.getUseSelectedFeatures()) {
522
				it = fsel.fastIterator();
523
			}
524
			else {
525
				it = fs.fastIterator();
526
			}
527

  
528
			int[] fieldIDs = new int[cp.getRequiredFields().size()];
529
			ArrayList[] data = new ArrayList[cp.getRequiredFields().size()];
530

  
531
			// Buscamos los ID de los campos que vamos a usar.
532
			for (int j = 0; j < cp.getRequiredFields().size(); j++) {
533
				RequiredField rq = cp.getRequiredFields().get(j);
534

  
535
					if (fs.getDefaultFeatureType()
536
							.getAttributeDescriptor(rq.getValue()) == null)
537
						fieldIDs[j] = -1;
538
					else{
539
						fieldIDs[j] = fs.getDefaultFeatureType()
540
							.getAttributeDescriptor(rq.getValue()).getIndex();
541
					}
542

  
543
				ArrayList<Object> aux = new ArrayList<Object>();
544
				data[j] = aux;
545
			}
546

  
547
			// if onlyRecordsSelected is set, we should iterate by selected features only
548
			while (it.hasNext()) {
549
				Feature f = (Feature) it.next();
550
				for (int j = 0; j < fieldIDs.length; j++) {
551
					if (fieldIDs[j] != -1)
552
						data[j].add(f.get(fieldIDs[j]));
553
				}
554
			}
555
			for (int j = 0; j < fieldIDs.length; j++) {
556
				RequiredField rq = cp.getRequiredFields().get(j);
557
				if (fieldIDs[j] != -1)
558
					dataSet.addData(rq.getName(),
559
						data[j]);
560
			}
561
			it.dispose();
562
			cs.setChartDataSet(dataSet);
563
		}
564
	}
565
	
566
	public void refreshGroupedChartsData() {
567
		List<ChartService> chartServices = charts.getChartServices();
568
		for (int i = 0; i < chartServices.size(); i++) {
569
			try {
570
				ChartService cs = chartServices.get(i);
571
				refreshChartServiceData(cs);
572
			} catch (DataException e) {
573
				// TODO Auto-generated catch block
574
				e.printStackTrace();
575
			}
576
		}
577
		
578
//		try {
579
//			overlay = this.chartDocumentContext.getMainChart();
580
//			
581
//			if(overlay instanceof GroupedCharts){
582
//				GroupedCharts oc = (GroupedCharts)overlay;
583
//				oc.setChartServices(chartServices);
584
//				
585
//				this.previewPanel.setChartService(overlay);
586
//			}
587
//			
588
//		} catch (ServiceException e) {
589
//			// TODO Auto-generated catch block
590
//			e.printStackTrace();
591
//		}
592
		
593
	}
594

  
595
	public void setEditorChartServicePanel(
596
			EditorChartServicePanel createNewChartPanel) {
597
		this.editorChartServicePanel = createNewChartPanel;
598
	}
599

  
600
}
601

  
0 602

  
org.gvsig.chart/tags/org.gvsig.chart-1.0.154/org.gvsig.chart.app/org.gvsig.chart.app.mainplugin/src/main/java/org/gvsig/app/project/documents/chart/gui/DefaultChartDocumentPanel.java
1
package org.gvsig.app.project.documents.chart.gui;
2

  
3
import java.awt.BorderLayout;
4
import java.awt.Dimension;
5
import java.beans.PropertyChangeEvent;
6
import java.beans.PropertyChangeListener;
7

  
8
import javax.swing.JPanel;
9

  
10
import org.gvsig.andami.PluginServices;
11
import org.gvsig.andami.ui.mdiManager.IWindowListener;
12
import org.gvsig.andami.ui.mdiManager.IWindowTransform;
13
import org.gvsig.andami.ui.mdiManager.SingletonWindow;
14
import org.gvsig.andami.ui.mdiManager.WindowInfo;
15
import org.gvsig.app.project.documents.Document;
16
import org.gvsig.app.project.documents.chart.ChartDocument;
17
import org.gvsig.app.project.documents.chart.events.ChartPropertiesChangeEvent;
18
import org.gvsig.app.project.documents.chart.events.ChartPropertiesChangeListener;
19
import org.gvsig.app.project.documents.gui.IDocumentWindow;
20
import org.gvsig.app.project.documents.gui.WindowLayout;
21
import org.gvsig.chart.swing.ChartSwingLocator;
22
import org.gvsig.chart.swing.ViewChartPanel;
23

  
24
public class DefaultChartDocumentPanel extends JPanel 
25
	implements ChartPropertiesChangeListener,IDocumentWindow, IWindowListener, IWindowTransform, SingletonWindow {
26
	/**
27
	 * 
28
	 */
29
	private static final long serialVersionUID = -3830098539680196793L;
30

  
31
    private static final int DEFAULT_HEIGHT = 400;
32
    private static final int DEFAULT_WIDTH = 800;
33
		
34
//	private static MapControlManager mapControlManager = MapControlLocator.getMapControlManager();
35

  
36
	private ChartDocument model = null;
37
	
38
    private WindowInfo m_viewInfo = null;
39
    
40
    private ViewChartPanel mainPanel = null;
41
    
42
	public DefaultChartDocumentPanel(){
43
		super();
44
    	this.initialize();
45
	}
46
	
47
	public DefaultChartDocumentPanel(Document document) {
48
    	super();
49
    	this.model = (ChartDocument) document;
50
    	this.initialize();
51
    	
52
    	this.setDocument(document);
53
    }
54
	
55
	public void initialize() {
56
    	this.setName("Chart");
57

  
58
//    	//TODO Remove this when the system to load libraries is finished
59
//    	if (mapControlManager == null){
60
//    		 mapControlManager = MapControlLocator.getMapControlManager();
61
//    	}
62
    	
63
		ViewChartPanel chartPanel = ChartSwingLocator.getSwingManager().getChartSwingManager().createViewChartPanel(getChartDocument().getChartService());
64
		this.mainPanel = chartPanel;
65
		
66
		this.setLayout(new BorderLayout());
67
		this.add(chartPanel.getComponent(), BorderLayout.CENTER);
68
	}
69

  
70
	public void windowActivated() {
71
		// TODO Auto-generated method stub
72
		
73
	}
74

  
75
	public void windowClosed() {
76
		// TODO Auto-generated method stub
77
		
78
	}
79

  
80
	public void toPalette() {
81
		// TODO Auto-generated method stub
82
		
83
	}
84

  
85
	public void restore() {
86
		// TODO Auto-generated method stub
87
		
88
	}
89

  
90
	public boolean isPalette() {
91
		// TODO Auto-generated method stub
92
		return false;
93
	}
94

  
95
	public Object getWindowModel() {
96
		return this.model.getName();
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff