Revision 527

View differences:

tags/org.gvsig.app.document.layout2.app-2.0.74/pom.xml
1
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
2

  
3
    <modelVersion>4.0.0</modelVersion>
4
    <artifactId>org.gvsig.app.document.layout2.app</artifactId>
5
    <packaging>pom</packaging>
6
    <version>2.0.74</version>
7

  
8
    <name>${project.artifactId}</name>
9
    <description>This plugin adds creation/management of layout (map) documents.</description>
10

  
11
    <parent>
12
        <groupId>org.gvsig</groupId>
13
        <artifactId>org.gvsig.desktop</artifactId>
14
        <version>2.0.127</version>
15
    </parent>
16

  
17
	<url>https://devel.gvsig.org/redmine/projects/gvsig-app-document-layout</url>
18

  
19
    <scm>
20
        <connection>scm:svn:https://devel.gvsig.org/svn/gvsig-app-document-layout/tags/org.gvsig.app.document.layout2.app-2.0.74</connection>
21
        <developerConnection>scm:svn:https://devel.gvsig.org/svn/gvsig-app-document-layout/tags/org.gvsig.app.document.layout2.app-2.0.74</developerConnection>
22
        <url>https://devel.gvsig.org/redmine/projects/gvsig-app-document-layout/repository/show/tags/org.gvsig.app.document.layout2.app-2.0.74</url>
23
    </scm>
24
    <repositories>
25
      <repository>
26
        <id>gvsig-public-http-repository</id>
27
        <name>gvSIG maven public HTTP repository</name>
28
        <url>http://devel.gvsig.org/m2repo/j2se</url>
29
        <releases>
30
          <enabled>true</enabled>
31
          <updatePolicy>daily</updatePolicy>
32
          <checksumPolicy>warn</checksumPolicy>
33
        </releases>
34
        <snapshots>
35
          <enabled>true</enabled>
36
          <updatePolicy>daily</updatePolicy>
37
          <checksumPolicy>warn</checksumPolicy>
38
        </snapshots>
39
      </repository>
40
    </repositories>
41

  
42
	<build>
43
		<plugins>
44
			<plugin>
45
				<groupId>org.apache.maven.plugins</groupId>
46
				<artifactId>maven-release-plugin</artifactId>
47
				<configuration>
48
					<tagBase>https://devel.gvsig.org/svn/gvsig-app-document-layout/tags</tagBase>
49
				</configuration>
50
			</plugin>
51
		</plugins>
52
	</build>
53

  
54
    <dependencyManagement>
55
         <dependencies>
56
            <!--
57
            Versions of child projects
58
            -->
59
            <dependency>
60
                <groupId>org.gvsig</groupId>
61
                <artifactId>org.gvsig.app.document.layout2.app.mainplugin</artifactId>
62
                <version>2.0.74</version>
63
            </dependency>
64

  
65
        </dependencies>
66
    </dependencyManagement>
67

  
68
	<modules>
69
		<module>org.gvsig.app.document.layout2.app.mainplugin</module>
70
	</modules>
71

  
72
</project>
tags/org.gvsig.app.document.layout2.app-2.0.74/org.gvsig.app.document.layout2.app.mainplugin/buildNumber.properties
1
#Mon Feb 15 08:45:33 CET 2016
2
buildNumber=93
tags/org.gvsig.app.document.layout2.app-2.0.74/org.gvsig.app.document.layout2.app.mainplugin/src/test/resources/log4j.xml
1
<?xml version="1.0" encoding="ISO-8859-1" ?>
2
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
3

  
4
<!-- 
5
Log4J configuration file for unit tests execution.
6
 -->
7
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
8

  
9
	<!-- Appender configuration to show logging messages through the console -->
10
	<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
11
		<layout class="org.apache.log4j.PatternLayout">
12
			<param name="ConversionPattern" value="%d{HH:mm:ss,SSS} %-5p [%c{2}.%M()]\n  %m%n" />
13
		</layout>
14
	</appender>
15

  
16
	<!-- 
17
	Activate logging messages of DEBUG level of higher only for the
18
	org.gvsig.tools packages.
19
	You can put full classes names or packages instead, to configure
20
	logging for all the classes and subpackages of the package.
21
	-->
22
	<category name="org.gvsig.tools">
23
		<priority value="DEBUG" />
24
	</category>
25
	<category name="org.gvsig.app.document.layout">
26
		<priority value="DEBUG" />
27
	</category>
28

  
29
	<!-- 
30
	By default, show only logging messages of INFO level or higher, 
31
	through the previously configured CONSOLE appender. 
32
	-->
33
	<root>
34
		<priority value="INFO" />
35
		<appender-ref ref="CONSOLE" />
36
	</root>
37
</log4j:configuration>
tags/org.gvsig.app.document.layout2.app-2.0.74/org.gvsig.app.document.layout2.app.mainplugin/src/test/resources/README.txt
1
Put into this folder the resources needed by your test classes.
2

  
3
This folder is added to the Tests classpath, so you can load any resources 
4
through the ClassLoader.
5

  
6
By default, in this folder you can find an example of log4j configuration,
7
prepared to log messages through the console, so logging works when you
8
run your tests classes.
0 9

  
tags/org.gvsig.app.document.layout2.app-2.0.74/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/gui/preferencespage/PrintPropertiesPage.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.gui.preferencespage;
23

  
24
import java.awt.Dimension;
25
import java.awt.GridLayout;
26

  
27
import javax.swing.ButtonGroup;
28
import javax.swing.ImageIcon;
29
import javax.swing.JCheckBox;
30
import javax.swing.JLabel;
31
import javax.swing.JPanel;
32
import javax.swing.JRadioButton;
33
import javax.swing.JTextField;
34

  
35
import org.gvsig.andami.PluginServices;
36
import org.gvsig.andami.preferences.AbstractPreferencePage;
37
import org.gvsig.andami.preferences.StoreException;
38

  
39
public class PrintPropertiesPage extends AbstractPreferencePage {
40

  
41
    private static final long serialVersionUID = 5806304468312341691L;
42
    private static final boolean FACTORY_DEFAULT_LANDSCAPED_PAGE = true;
43
    protected static String id = PrintPropertiesPage.class.getName();
44
    private ImageIcon icon;
45
    private JRadioButton rdBtnPortraitPage;
46
    private JRadioButton rdBtnLandscapePage;
47
    private JCheckBox chkCustomMargins;
48
    private JTextField txtTopMargin;
49
    private JTextField txtLeftMargin;
50
    private JTextField txtBottomMargin;
51
    private JTextField txtRightMargin;
52

  
53
    public PrintPropertiesPage() {
54
        super();
55
        setParentID(LayoutPage.class.getName());
56
        icon = PluginServices.getIconTheme().get("prepare-page-icon");
57
        rdBtnPortraitPage =
58
            new JRadioButton(PluginServices.getText(this,
59
                "options.layout.paper_properties.portrait"));
60
        ImageIcon portrait =
61
            PluginServices.getIconTheme().get("portrait-page-setup");
62
        rdBtnLandscapePage =
63
            new JRadioButton(PluginServices.getText(this,
64
                "options.layout.paper_properties.landscaped"));
65
        ImageIcon landscape =
66
            PluginServices.getIconTheme().get("landscape-page-setup");
67

  
68
        ButtonGroup group = new ButtonGroup();
69
        group.add(rdBtnLandscapePage);
70
        group.add(rdBtnPortraitPage);
71

  
72
        JPanel aux = new JPanel(new GridLayout(2, 2, 10, 0));
73
        aux.setPreferredSize(new Dimension(200, 150));
74
        aux.setSize(200, 150);
75
        aux.add(new JLabel(landscape));
76
        aux.add(new JLabel(portrait));
77
        aux.add(rdBtnLandscapePage);
78
        aux.add(rdBtnPortraitPage);
79

  
80
        addComponent(new JLabel(PluginServices.getText(this,
81
            "options.layout.paper_properties.paper_direction")));
82
        addComponent("", aux);
83
        addComponent(chkCustomMargins =
84
            new JCheckBox(PluginServices.getText(this, "personalizar_margenes")));
85

  
86
        JPanel aux2 = new JPanel(new GridLayout(2, 4, 10, 3));
87
        aux2.add(new JLabel(PluginServices.getText(this, "Superior")));
88
        aux2.add(txtTopMargin = new JTextField(10));
89
        aux2.add(new JLabel(PluginServices.getText(this, "Izquierdo")));
90
        aux2.add(txtLeftMargin = new JTextField(10));
91
        aux2.add(new JLabel(PluginServices.getText(this, "Inferior")));
92
        aux2.add(txtBottomMargin = new JTextField(10));
93
        aux2.add(new JLabel(PluginServices.getText(this, "Derecho")));
94
        aux2.add(txtRightMargin = new JTextField(10));
95
        addComponent("", aux2);
96
    }
97

  
98
    public void storeValues() throws StoreException {
99
        // TODO Auto-generated method stub
100

  
101
    }
102

  
103
    public void setChangesApplied() {
104
        // TODO Auto-generated method stub
105

  
106
    }
107

  
108
    public String getID() {
109
        return id;
110
    }
111

  
112
    public String getTitle() {
113
        return PluginServices.getText(this,
114
            "options.layout.paper_properties.title");
115
    }
116

  
117
    public JPanel getPanel() {
118
        return this;
119
    }
120

  
121
    public void initializeValues() {
122
        // TODO Auto-generated method stub
123

  
124
    }
125

  
126
    public void initializeDefaults() {
127
        rdBtnLandscapePage.setSelected(FACTORY_DEFAULT_LANDSCAPED_PAGE);
128
        rdBtnPortraitPage.setSelected(!FACTORY_DEFAULT_LANDSCAPED_PAGE);
129
    }
130

  
131
    public ImageIcon getIcon() {
132
        return icon;
133
    }
134

  
135
    public boolean isValueChanged() {
136
        // TODO Auto-generated method stub
137
        return false;
138
    }
139

  
140
}
tags/org.gvsig.app.document.layout2.app-2.0.74/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/gui/preferencespage/LayoutPage.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.gui.preferencespage;
23

  
24
import java.awt.GridBagConstraints;
25
import java.awt.Insets;
26

  
27
import javax.swing.BorderFactory;
28
import javax.swing.ImageIcon;
29
import javax.swing.JCheckBox;
30
import javax.swing.JComboBox;
31
import javax.swing.JLabel;
32
import javax.swing.JPanel;
33
import javax.swing.JTextField;
34

  
35
import org.gvsig.andami.IconThemeHelper;
36
import org.gvsig.andami.PluginServices;
37
import org.gvsig.andami.PluginsLocator;
38
import org.gvsig.andami.preferences.AbstractPreferencePage;
39
import org.gvsig.andami.preferences.StoreException;
40
import org.gvsig.app.project.ProjectManager;
41
import org.gvsig.app.project.documents.layout.Attributes;
42
import org.gvsig.app.project.documents.layout.DefaultLayoutManager;
43
import org.gvsig.fmap.mapcontext.MapContext;
44
import org.gvsig.gui.beans.swing.GridBagLayoutPanel;
45
import org.gvsig.i18n.Messages;
46
import org.gvsig.utils.XMLEntity;
47

  
48
/**
49
 * Layout preference page where the user can establish default values for
50
 * <ol>
51
 * <li><b>grid horizontal gap</b></li>
52
 * <li><b>grid vertical gap</b></li>
53
 * <li><b>show or hide grid</b></li>
54
 * <li><b>adjust elements to grid</b></li>
55
 * <li><b>show or hide rules</b></li>
56
 * </ol>
57
 * 
58
 * @author jaume dominguez faus - jaume.dominguez@iver.es
59
 * 
60
 */
61
public class LayoutPage extends AbstractPreferencePage {
62

  
63
    private static final long serialVersionUID = -8225970409668105935L;
64
    static String id = LayoutPage.class.getName();;
65
    private ImageIcon icon;
66
    private JCheckBox chkGridEnabled;
67
    private JCheckBox chkShowRules;
68
    private JCheckBox chkShowGrid;
69
    private JTextField txtVGap;
70
    private JTextField txtHGap;
71
    private JCheckBox chkShowInitialPageConfig;
72
	private JCheckBox chkShowLayoutTOC;
73
	private JComboBox cbHGapUnit;
74
	private JComboBox cbVGapUnit;
75

  
76
    private static DefaultLayoutManager layoutManager = null;
77

  
78
    /**
79
     * Builds preference page where the user can establish default values for
80
     * <ol>
81
     * <li><b>grid horizontal gap</b></li>
82
     * <li><b>grid vertical gap</b></li>
83
     * <li><b>show or hide grid</b></li>
84
     * <li><b>adjust elements to grid</b></li>
85
     * <li><b>show or hide rules</b></li>
86
     * </ol>
87
     */
88
    public LayoutPage() {
89
        super();
90
        layoutManager =
91
            (DefaultLayoutManager) ProjectManager.getInstance()
92
                .getDocumentManager(DefaultLayoutManager.TYPENAME);
93

  
94
        icon = IconThemeHelper.getImageIcon("document-map-icon");
95

  
96
        GridBagLayoutPanel gridRulerPanel = new GridBagLayoutPanel();
97
        Insets topInsets = new Insets(10, 10, 0, 10);
98
        Insets insets = new Insets(8, 10, 0, 10);
99
        Insets lastInsets = new Insets(8, 10, 12, 10);
100
        gridRulerPanel.setBorder(BorderFactory.createTitledBorder(Messages.getText("Grid_and_ruler")));
101
        
102
        // horizontal gap text field and units combo
103
        cbHGapUnit = new JComboBox();
104
        String[] names = MapContext.getDistanceNames();
105
        for (int i = 0; i < names.length; i++) {
106
        	cbHGapUnit.addItem(PluginServices.getText(this, names[i]));
107
        }
108
        gridRulerPanel.addComponent(new JLabel(PluginServices.getText(this, "espaciado_horizontal")),
109
            txtHGap = new JTextField(5), cbHGapUnit, GridBagConstraints.NONE, insets);
110
        
111
        // vertical gap text field and units combo
112
        cbVGapUnit = new JComboBox();
113
        for (int i = 0; i < names.length; i++) {
114
        	cbVGapUnit.addItem(PluginServices.getText(this, names[i]));
115
        }
116
        gridRulerPanel.addComponent(new JLabel(PluginServices.getText(this, "espaciado_vertical")),
117
        		txtVGap = new JTextField(5), cbVGapUnit, GridBagConstraints.NONE, insets);
118

  
119
        // show/hide show check
120
        gridRulerPanel.addComponent(chkShowGrid =
121
            new JCheckBox(PluginServices.getText(this, "visualizar_cuadricula")), insets);
122

  
123
        // enable/disable grid
124
        gridRulerPanel.addComponent(chkGridEnabled =
125
            new JCheckBox(PluginServices.getText(this, "malla_activada")), insets);
126

  
127
        // show/hide rules
128
        gridRulerPanel.addComponent(chkShowRules =
129
            new JCheckBox(PluginServices.getText(this, "activar_regla")), lastInsets);
130
        
131
        addComponent(gridRulerPanel, topInsets);
132
        
133
        GridBagLayoutPanel behaviourPanel = new GridBagLayoutPanel();
134
        behaviourPanel.setBorder(BorderFactory.createTitledBorder(Messages.getText("User_interface")));
135
        
136
        behaviourPanel.addComponent(
137
        		chkShowInitialPageConfig = new JCheckBox(Messages.getText("Show_page_config_dialog_when_layout_document_is_created")),
138
        		insets);
139
        
140
        behaviourPanel.addComponent(
141
        		chkShowLayoutTOC = new JCheckBox(Messages.getText("Show_table_of_contents_TOC_for_Layout_views")),
142
        		insets);
143
        
144
        addComponent(behaviourPanel, lastInsets);
145

  
146
    }
147

  
148
    public void storeValues() throws StoreException {
149
        double hGap, vGap;
150
        boolean gridEnabled, showRules, showGrid, showInitPageConfig,
151
        	showLayoutToc;
152
        String hGapUnits, vGapUnits;
153
        try {
154
            hGap = Double.parseDouble(txtHGap.getText());
155
            hGapUnits = MapContext.getDistanceAbbr()[cbHGapUnit.getSelectedIndex()];
156
            vGap = Double.parseDouble(txtVGap.getText());
157
            vGapUnits = MapContext.getDistanceAbbr()[cbVGapUnit.getSelectedIndex()];
158
            gridEnabled = chkGridEnabled.isSelected();
159
            showGrid = chkShowGrid.isSelected();
160
            showRules = chkShowRules.isSelected();
161
            showInitPageConfig = chkShowInitialPageConfig.isSelected();
162
            showLayoutToc = chkShowLayoutTOC.isSelected();
163
        } catch (Exception e) {
164
            throw new StoreException(PluginServices.getText(this,
165
                "invalid_value_for_gap"));
166
        }
167
        layoutManager.setDefaultShowGrid(showGrid);
168
        layoutManager.setDefaultAdjustToGrid(gridEnabled);
169
        layoutManager.setDefaultShowRulers(showRules);
170
        Attributes.setDefaultGridGap(hGap, vGap, hGapUnits, vGapUnits);
171
        PluginServices ps = PluginsLocator.getManager().getPlugin(this);
172
		XMLEntity xml = ps.getPersistentXML();
173
        xml.putProperty(PreferenceKeys.DEFAULT_LAYOUT_GRID_HORIZONTAL_GAP_KEY_NAME, hGap);
174
        xml.putProperty(PreferenceKeys.DEFAULT_LAYOUT_GRID_VERTICAL_GAP_KEY_NAME, vGap);
175
        xml.putProperty(PreferenceKeys.DEFAULT_LAYOUT_GRID_HORIZONTAL_GAP_UNITS_KEY_NAME, hGapUnits);
176
        xml.putProperty(PreferenceKeys.DEFAULT_LAYOUT_GRID_VERTICAL_GAP_UNITS_KEY_NAME, vGapUnits);
177
        xml.putProperty(PreferenceKeys.DEFAULT_SHOW_LAYOUT_GRID_KEY_NAME, showGrid);
178
        xml.putProperty(PreferenceKeys.DEFAULT_ENABLE_LAYOUT_GRID_KEY_NAME, gridEnabled);
179
        xml.putProperty(PreferenceKeys.DEFAULT_SHOW_LAYOUT_RULERS_KEY_NAME, showRules);
180
        xml.putProperty(PreferenceKeys.DEFAULT_SHOW_INITIAL_CONFIG_DIALOG_KEY_NAME, showInitPageConfig);
181
        xml.putProperty(PreferenceKeys.DEFAULT_SHOW_LAYOUT_TOC_KEY_NAME, showLayoutToc);
182
    }
183

  
184
    public String getID() {
185
        return id;
186
    }
187

  
188
    public String getTitle() {
189
        return PluginServices.getText(this, "Mapa");
190
    }
191

  
192
    public JPanel getPanel() {
193
        return this;
194
    }
195

  
196
    public void initializeValues() {
197
    	PluginServices ps = PluginsLocator.getManager().getPlugin(this);
198
		XMLEntity xml = ps.getPersistentXML();
199
        double hGap = PreferenceKeys.FACTORY_DEFAULT_HORIZONTAL_GAP;
200
        double vGap = PreferenceKeys.FACTORY_DEFAULT_VERTICAL_GAP;
201
        boolean showGrid = PreferenceKeys.FACTORY_DEFAULT_LAYOUT_GRID_SHOW;
202
        boolean gridEnabled = PreferenceKeys.FACTORY_DEFAULT_LAYOUT_GRID_ENABLE;
203
        boolean showRules = PreferenceKeys.FACTORY_DEFAULT_LAYOUT_ENABLE_RULERS;
204
        boolean showInitPageConfig = PreferenceKeys.FACTORY_DEFAULT_SHOW_INITIAL_CONFIG_DIALOG_FOR_LAYOUT;
205
        boolean showLayoutToc = PreferenceKeys.FACTORY_DEFAULT_SHOW_LAYOUT_TOC;
206
        // horizontal gap
207
        if (xml.contains(PreferenceKeys.DEFAULT_LAYOUT_GRID_HORIZONTAL_GAP_KEY_NAME)) {
208
            hGap =
209
                xml.getDoubleProperty(PreferenceKeys.DEFAULT_LAYOUT_GRID_HORIZONTAL_GAP_KEY_NAME);
210
        }
211
        txtHGap.setText(String.valueOf(hGap));
212

  
213
        // vertical gap
214
        if (xml.contains(PreferenceKeys.DEFAULT_LAYOUT_GRID_VERTICAL_GAP_KEY_NAME)) {
215
            vGap =
216
                xml.getDoubleProperty(PreferenceKeys.DEFAULT_LAYOUT_GRID_VERTICAL_GAP_KEY_NAME);
217
        }
218
        txtVGap.setText(String.valueOf(vGap));
219
        
220
        String hGapUnit = xml.contains(PreferenceKeys.DEFAULT_LAYOUT_GRID_HORIZONTAL_GAP_UNITS_KEY_NAME)?
221
        		xml.getStringProperty(PreferenceKeys.DEFAULT_LAYOUT_GRID_HORIZONTAL_GAP_UNITS_KEY_NAME):
222
        			PreferenceKeys.FACTORY_DEFAULT_HORIZONTAL_GAP_UNIT;
223
        cbHGapUnit.setSelectedIndex(Attributes.getDistanceAbbrPosition(hGapUnit));
224
        
225
        String vGapUnit = xml.contains(PreferenceKeys.DEFAULT_LAYOUT_GRID_VERTICAL_GAP_UNITS_KEY_NAME)?
226
                		xml.getStringProperty(PreferenceKeys.DEFAULT_LAYOUT_GRID_VERTICAL_GAP_UNITS_KEY_NAME):
227
                			PreferenceKeys.FACTORY_DEFAULT_VERTICAL_GAP_UNIT;
228
        cbVGapUnit.setSelectedIndex(Attributes.getDistanceAbbrPosition(vGapUnit));
229

  
230
        // show/hide grid check
231
        if (xml.contains(PreferenceKeys.DEFAULT_SHOW_LAYOUT_GRID_KEY_NAME)) {
232
            showGrid =
233
                xml.getBooleanProperty(PreferenceKeys.DEFAULT_SHOW_LAYOUT_GRID_KEY_NAME);
234
        }
235
        chkShowGrid.setSelected(showGrid);
236

  
237
        // enable/disable grid check
238
        if (xml.contains(PreferenceKeys.DEFAULT_ENABLE_LAYOUT_GRID_KEY_NAME)) {
239
            gridEnabled =
240
                xml.getBooleanProperty(PreferenceKeys.DEFAULT_ENABLE_LAYOUT_GRID_KEY_NAME);
241
        }
242
        chkGridEnabled.setSelected(gridEnabled);
243

  
244
        // enable/disable rules
245
        if (xml.contains(PreferenceKeys.DEFAULT_SHOW_LAYOUT_RULERS_KEY_NAME)) {
246
            showRules =
247
                xml.getBooleanProperty(PreferenceKeys.DEFAULT_SHOW_LAYOUT_RULERS_KEY_NAME);
248
        }
249
        chkShowRules.setSelected(showRules);
250
        
251
        if (xml.contains(PreferenceKeys.DEFAULT_SHOW_INITIAL_CONFIG_DIALOG_KEY_NAME)) {
252
        	showInitPageConfig = xml.getBooleanProperty(PreferenceKeys.DEFAULT_SHOW_INITIAL_CONFIG_DIALOG_KEY_NAME);
253
        }
254
        chkShowInitialPageConfig.setSelected(showInitPageConfig);
255
        
256
        if (xml.contains(PreferenceKeys.DEFAULT_SHOW_LAYOUT_TOC_KEY_NAME)) {
257
        	showLayoutToc = xml.getBooleanProperty(PreferenceKeys.DEFAULT_SHOW_LAYOUT_TOC_KEY_NAME);
258
        }
259
        chkShowLayoutTOC.setSelected(showLayoutToc);
260

  
261
        layoutManager.setDefaultShowGrid(showGrid);
262
        layoutManager.setDefaultAdjustToGrid(gridEnabled);
263
        layoutManager.setDefaultShowRulers(showRules);
264
        Attributes.setDefaultGridGap(hGap, vGap, hGapUnit, vGapUnit);
265
    }
266

  
267
    public void initializeDefaults() {
268
        txtHGap.setText(String.valueOf(PreferenceKeys.FACTORY_DEFAULT_HORIZONTAL_GAP));
269
        txtVGap.setText(String.valueOf(PreferenceKeys.FACTORY_DEFAULT_VERTICAL_GAP));
270
        cbHGapUnit.setSelectedIndex(Attributes.getDistanceAbbrPosition(PreferenceKeys.FACTORY_DEFAULT_HORIZONTAL_GAP_UNIT));
271
        cbVGapUnit.setSelectedIndex(Attributes.getDistanceAbbrPosition(PreferenceKeys.FACTORY_DEFAULT_VERTICAL_GAP_UNIT));
272
        chkShowGrid.setSelected(PreferenceKeys.FACTORY_DEFAULT_LAYOUT_GRID_SHOW);
273
        chkGridEnabled.setSelected(PreferenceKeys.FACTORY_DEFAULT_LAYOUT_GRID_ENABLE);
274
        chkShowRules.setSelected(PreferenceKeys.FACTORY_DEFAULT_LAYOUT_ENABLE_RULERS);
275
        chkShowInitialPageConfig.setSelected(PreferenceKeys.FACTORY_DEFAULT_SHOW_INITIAL_CONFIG_DIALOG_FOR_LAYOUT);
276
    }
277

  
278
    public ImageIcon getIcon() {
279
        return icon;
280
    }
281

  
282
    public boolean isValueChanged() {
283
        return super.hasChanged();
284
    }
285

  
286
    public void setChangesApplied() {
287
        setChanged(false);
288
    }
289
}
tags/org.gvsig.app.document.layout2.app-2.0.74/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/gui/preferencespage/PreferenceKeys.java
1
package org.gvsig.app.gui.preferencespage;
2

  
3
/**
4
 * The purpose of this interface is to define the keys used for the
5
 * persistence of this plugin in order to make these keys available
6
 * on library level, instead of defining them within the
7
 * preference page (which has UI dependences).
8
 * 
9
 * @author Cesar Martinez Izquierdo <cesar.izq@gmail.com>
10
 *
11
 */
12
public interface PreferenceKeys {
13
    String DEFAULT_SHOW_LAYOUT_GRID_KEY_NAME = "DefaultShowLayoutGrid";
14
    String DEFAULT_ENABLE_LAYOUT_GRID_KEY_NAME = "DefaultEnableLayoutGrid";
15
    String DEFAULT_SHOW_LAYOUT_RULERS_KEY_NAME = "DefaultShowLayoutRules";
16
    String DEFAULT_LAYOUT_GRID_VERTICAL_GAP_KEY_NAME = "DefaultGridVerticalGap";
17
    String DEFAULT_LAYOUT_GRID_HORIZONTAL_GAP_KEY_NAME = "DefaultGridHorizontalGap";
18
    String DEFAULT_LAYOUT_GRID_VERTICAL_GAP_UNITS_KEY_NAME = "DefaultGridVerticalGapUnits";
19
    String DEFAULT_LAYOUT_GRID_HORIZONTAL_GAP_UNITS_KEY_NAME = "DefaultGridHorizontalGapUnits";
20
    String DEFAULT_SHOW_INITIAL_CONFIG_DIALOG_KEY_NAME = "DefaulShowInitialPageConfigLayout";
21
    String DEFAULT_SHOW_LAYOUT_TOC_KEY_NAME = "DefaultShowLayoutToc";
22
    boolean FACTORY_DEFAULT_LAYOUT_ENABLE_RULERS = true;
23
    boolean FACTORY_DEFAULT_LAYOUT_GRID_SHOW = true;
24
    double FACTORY_DEFAULT_VERTICAL_GAP = 1.0d;
25
    double FACTORY_DEFAULT_HORIZONTAL_GAP = 1.0d;
26
    String FACTORY_DEFAULT_VERTICAL_GAP_UNIT = "cm";
27
    String FACTORY_DEFAULT_HORIZONTAL_GAP_UNIT = "cm";
28
    boolean FACTORY_DEFAULT_LAYOUT_GRID_ENABLE = false;
29
    boolean FACTORY_DEFAULT_SHOW_INITIAL_CONFIG_DIALOG_FOR_LAYOUT = true;
30
    boolean FACTORY_DEFAULT_SHOW_LAYOUT_TOC = true;
31

  
32
}
0 33

  
tags/org.gvsig.app.document.layout2.app-2.0.74/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/DefaultLayoutControl.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.project.documents.layout;
23

  
24
import java.awt.Color;
25
import java.awt.Cursor;
26
import java.awt.Graphics;
27
import java.awt.Graphics2D;
28
import java.awt.Image;
29
import java.awt.Point;
30
import java.awt.Rectangle;
31
import java.awt.Toolkit;
32
import java.awt.geom.AffineTransform;
33
import java.awt.geom.Rectangle2D;
34
import java.awt.geom.Rectangle2D.Double;
35
import java.awt.image.BufferedImage;
36
import java.awt.image.MemoryImageSource;
37
import java.util.HashMap;
38

  
39
import javax.swing.JComponent;
40

  
41
import org.gvsig.andami.PluginsLocator;
42
import org.gvsig.app.project.documents.layout.fframes.IFFrame;
43
import org.gvsig.app.project.documents.layout.fframes.IFFrameEditableVertex;
44
import org.gvsig.app.project.documents.layout.fframes.IFFrameUseFMap;
45
import org.gvsig.app.project.documents.layout.geometryadapters.GeometryAdapter;
46
import org.gvsig.app.project.documents.layout.geometryadapters.PolyLineAdapter;
47
import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
48
import org.gvsig.app.project.documents.layout.tools.LayoutAddBoxListenerImpl;
49
import org.gvsig.app.project.documents.layout.tools.LayoutAddCircleListenerImpl;
50
import org.gvsig.app.project.documents.layout.tools.LayoutAddLegendListenerImpl;
51
import org.gvsig.app.project.documents.layout.tools.LayoutAddLineListenerImpl;
52
import org.gvsig.app.project.documents.layout.tools.LayoutAddNorthListenerImpl;
53
import org.gvsig.app.project.documents.layout.tools.LayoutAddOverViewListenerImpl;
54
import org.gvsig.app.project.documents.layout.tools.LayoutAddPictureListenerImpl;
55
import org.gvsig.app.project.documents.layout.tools.LayoutAddPointListenerImpl;
56
import org.gvsig.app.project.documents.layout.tools.LayoutAddPolygonListenerImpl;
57
import org.gvsig.app.project.documents.layout.tools.LayoutAddPolylineListenerImpl;
58
import org.gvsig.app.project.documents.layout.tools.LayoutAddRectangleListenerImpl;
59
import org.gvsig.app.project.documents.layout.tools.LayoutAddScaleListenerImpl;
60
import org.gvsig.app.project.documents.layout.tools.LayoutAddTextListenerImpl;
61
import org.gvsig.app.project.documents.layout.tools.LayoutAddViewListenerImpl;
62
import org.gvsig.app.project.documents.layout.tools.LayoutEditGraphicsListenerImpl;
63
import org.gvsig.app.project.documents.layout.tools.LayoutPanListenerImpl;
64
import org.gvsig.app.project.documents.layout.tools.LayoutSelectListenerImpl;
65
import org.gvsig.app.project.documents.layout.tools.LayoutViewPanListenerImpl;
66
import org.gvsig.app.project.documents.layout.tools.LayoutViewZoomInListenerImpl;
67
import org.gvsig.app.project.documents.layout.tools.LayoutViewZoomOutListenerImpl;
68
import org.gvsig.app.project.documents.layout.tools.LayoutZoomInListenerImpl;
69
import org.gvsig.app.project.documents.layout.tools.LayoutZoomOutListenerImpl;
70
import org.gvsig.app.project.documents.layout.tools.behavior.LayoutBehavior;
71
import org.gvsig.app.project.documents.layout.tools.behavior.LayoutEditBehavior;
72
import org.gvsig.app.project.documents.layout.tools.behavior.LayoutMoveBehavior;
73
import org.gvsig.app.project.documents.layout.tools.behavior.LayoutPointBehavior;
74
import org.gvsig.app.project.documents.layout.tools.behavior.LayoutRectangleBehavior;
75
import org.gvsig.app.project.documents.layout.tools.behavior.LayoutSelectBehavior;
76
import org.gvsig.app.project.documents.layout.tools.behavior.LayoutViewMoveBehavior;
77
import org.gvsig.app.project.documents.layout.tools.behavior.LayoutViewZoomBehavior;
78
import org.gvsig.app.project.documents.layout.tools.behavior.LayoutZoomBehavior;
79
import org.gvsig.app.project.documents.layout.tools.listener.ILayoutGraphicListener;
80
import org.gvsig.fmap.dal.exception.ReadException;
81
import org.gvsig.tools.observer.Observable;
82
import org.slf4j.Logger;
83
import org.slf4j.LoggerFactory;
84

  
85
/**
86
 * Control of Layout.
87
 * 
88
 * @author Vicente Caballero Navarro
89
 */
90
public class DefaultLayoutControl extends JComponent implements LayoutControl {
91
    private static final int DESACTUALIZADO = 4;
92
    private static final int ACTUALIZADO = 5;
93
    
94
    private static final long serialVersionUID = -8290006366669291510L;
95

  
96
    public static final String PERSISTENCE_DEFINITION_NAME = "LayoutControl";
97

  
98
    private int status = DESACTUALIZADO;
99
    private Rectangle2D rectVisible;
100
    private BufferedImage img = null;
101
    private BufferedImage imgRuler = null;
102
    private LayoutContext layoutContext;
103
    private Point origin = new Point(50, 50);
104
    private Point rectOrigin = new Point(origin);
105
    /**
106
     * Size and position of the layout sheet within visible area of
107
     * the layout component, measured in screen coordinates (pixels).
108
     */
109
    private Rectangle2D.Double rect = new Rectangle2D.Double(rectOrigin.x,
110
        rectOrigin.y, 400, 300);
111
    /**
112
     * Visible area of the layout document, measured on paper coordinates.
113
     */
114
    private Rectangle2D.Double viewPort = new Rectangle2D.Double();
115
    private FLayoutDraw layoutDraw = null;
116
    private FLayoutFunctions layoutFunctions = null;
117
    private LayoutBehavior currentLayoutTool = null;
118
    private Image imageCursor = null;
119
    private HashMap namesLayoutTools = new HashMap();
120
    private Point m_FirstPoint = new Point(0, 0);
121
    private Point m_PointAnt = new Point(0, 0);
122
    private Point m_LastPoint = new Point(0, 0);
123
    private LayoutEvents layoutEvents;
124
    private Point position;
125
    private GeometryAdapter geometryAdapter = new PolyLineAdapter();
126

  
127
    private String currentTool;
128
    private boolean m_bCancelDrawing = false;
129
    private Rectangle reSel = null;
130
    private boolean isReSel = true;
131
    private FLayoutZooms layoutZooms;
132
	private LayoutPanel layoutPanel;
133

  
134
    private static Cursor transparentCursor = Toolkit.getDefaultToolkit()
135
        .createCustomCursor(
136
            Toolkit.getDefaultToolkit().createImage(
137
                new MemoryImageSource(16, 16, new int[16 * 16], 0, 16)),
138
            new Point(0, 0), "invisiblecursor");
139

  
140
    /**
141
     * Create a new object of LayoutControl.
142
     * 
143
     * @param layout
144
     */
145
    public DefaultLayoutControl() {  
146
               
147
    }
148
    
149
    public void initialize(LayoutPanel layoutPanel){
150
    	setFocusable(true);
151
    	this.layoutPanel = layoutPanel;
152
        layoutDraw = new FLayoutDraw(layoutPanel);
153
        layoutEvents = new LayoutEvents(layoutPanel);
154
        layoutZooms = new FLayoutZooms(layoutPanel);
155
        layoutFunctions = new FLayoutFunctions(layoutPanel);
156
        addComponentListener(layoutEvents);
157
        addMouseMotionListener(layoutEvents);
158
        addMouseListener(layoutEvents);
159

  
160
        LayoutPanListenerImpl lpl = new LayoutPanListenerImpl(layoutPanel);
161
        addLayoutTool("layoutpan", new LayoutMoveBehavior(lpl));
162

  
163
        LayoutZoomInListenerImpl lzil = new LayoutZoomInListenerImpl(layoutPanel);
164
        addLayoutTool("layoutzoomin", new LayoutZoomBehavior(lzil));
165

  
166
        LayoutZoomOutListenerImpl lzol = new LayoutZoomOutListenerImpl(layoutPanel);
167
        addLayoutTool("layoutzoomout", new LayoutZoomBehavior(lzol));
168

  
169
        LayoutAddViewListenerImpl lavl = new LayoutAddViewListenerImpl(layoutPanel);
170
        addLayoutTool("layoutaddview", new LayoutRectangleBehavior(lavl));
171

  
172
        LayoutAddOverViewListenerImpl laovl =
173
            new LayoutAddOverViewListenerImpl(layoutPanel);
174
        addLayoutTool("layoutaddoverview", new LayoutRectangleBehavior(laovl));
175

  
176
        LayoutAddPictureListenerImpl lapl =
177
            new LayoutAddPictureListenerImpl(layoutPanel);
178
        addLayoutTool("layoutaddpicture", new LayoutRectangleBehavior(lapl));
179

  
180
        LayoutAddNorthListenerImpl lanorthl =
181
            new LayoutAddNorthListenerImpl(layoutPanel);
182
        addLayoutTool("layoutaddnorth", new LayoutRectangleBehavior(lanorthl));
183

  
184
        LayoutAddScaleListenerImpl lasl =
185
            new LayoutAddScaleListenerImpl(layoutPanel);
186
        addLayoutTool("layoutaddscale", new LayoutRectangleBehavior(lasl));
187

  
188
        LayoutAddLegendListenerImpl lall =
189
            new LayoutAddLegendListenerImpl(layoutPanel);
190
        addLayoutTool("layoutaddlegend", new LayoutRectangleBehavior(lall));
191

  
192
        LayoutAddTextListenerImpl latl = new LayoutAddTextListenerImpl(layoutPanel);
193
        addLayoutTool("layoutaddtext", new LayoutRectangleBehavior(latl));
194

  
195
        LayoutAddBoxListenerImpl labl = new LayoutAddBoxListenerImpl(layoutPanel);
196
        addLayoutTool("layoutaddbox", new LayoutRectangleBehavior(labl));
197

  
198
        LayoutAddPointListenerImpl lapointl =
199
            new LayoutAddPointListenerImpl(layoutPanel);
200
        addLayoutTool("layoutaddpoint", new LayoutPointBehavior(lapointl));
201

  
202
        LayoutAddLineListenerImpl lalinel =
203
            new LayoutAddLineListenerImpl(layoutPanel);
204
        addLayoutTool("layoutaddline", new LayoutPointBehavior(lalinel));
205

  
206
        LayoutAddPolygonListenerImpl lapolygonl =
207
            new LayoutAddPolygonListenerImpl(layoutPanel);
208
        addLayoutTool("layoutaddpolygon", new LayoutPointBehavior(lapolygonl));
209

  
210
        LayoutAddPolylineListenerImpl lapolylinel =
211
            new LayoutAddPolylineListenerImpl(layoutPanel);
212
        addLayoutTool("layoutaddpolyline", new LayoutPointBehavior(lapolylinel));
213

  
214
        LayoutAddCircleListenerImpl lacirclel =
215
            new LayoutAddCircleListenerImpl(layoutPanel);
216
        addLayoutTool("layoutaddcircle", new LayoutPointBehavior(lacirclel));
217

  
218
        LayoutAddRectangleListenerImpl larectanglel =
219
            new LayoutAddRectangleListenerImpl(layoutPanel);
220
        addLayoutTool("layoutaddrectangle", new LayoutPointBehavior(
221
            larectanglel));
222

  
223
        LayoutViewPanListenerImpl lvpl = new LayoutViewPanListenerImpl(layoutPanel);
224
        addLayoutTool("layoutviewpan", new LayoutViewMoveBehavior(lvpl));
225

  
226
        LayoutViewZoomInListenerImpl lvzil =
227
            new LayoutViewZoomInListenerImpl(layoutPanel);
228
        addLayoutTool("layoutviewzoomin", new LayoutViewZoomBehavior(lvzil));
229

  
230
        LayoutViewZoomOutListenerImpl lvzol =
231
            new LayoutViewZoomOutListenerImpl(layoutPanel);
232
        addLayoutTool("layoutviewzoomout", new LayoutViewZoomBehavior(lvzol));
233

  
234
        LayoutSelectListenerImpl lselectl =
235
            new LayoutSelectListenerImpl(layoutPanel);
236
        addLayoutTool("layoutselect", new LayoutSelectBehavior(lselectl));
237

  
238
        LayoutEditGraphicsListenerImpl leditl =
239
            new LayoutEditGraphicsListenerImpl(layoutPanel);
240
        addLayoutTool("layoutedit", new LayoutEditBehavior(leditl));
241
    }
242

  
243
    public String getCurrentTool() {
244
        return currentTool;
245
    }
246

  
247
    public void addLayoutTool(String name, LayoutBehavior tool) {
248
        namesLayoutTools.put(name, tool);
249
        tool.setLayoutControl(this);
250
    }
251

  
252
    public void setLayoutContext(LayoutContext lc) {
253
        layoutContext = lc;
254
        layoutContext.addObserver(this);
255
        fullRect();
256
    }
257

  
258
    /**
259
     * paintComponent of Layout.
260
     * 
261
     * @param g
262
     *            Graphics of Layout.
263
     */
264
    protected void paintComponent(Graphics g) {
265
        clipVisibleRect((Graphics2D) g);
266

  
267
        Rectangle rClip = g.getClipBounds();
268

  
269
        if (rClip == null) {
270
            System.err.println("clip = null");
271
        }
272

  
273
        switch (status) {
274
        case DESACTUALIZADO:
275
            if (getWidth() == 0) {
276
                return;
277
            }
278

  
279
            img =
280
                new BufferedImage(getWidth(), getHeight(),
281
                    BufferedImage.TYPE_INT_ARGB);
282
            imgRuler =
283
                new BufferedImage(getWidth(), getHeight(),
284
                    BufferedImage.TYPE_INT_ARGB);
285

  
286
            Graphics gimag = img.getGraphics();
287
            Graphics gimgRuler = imgRuler.getGraphics();
288
            clipVisibleRect((Graphics2D) gimag);
289

  
290
            try {
291
                layoutDraw.drawLayout((Graphics2D) gimag, img);
292
            } catch (ReadException e) {
293
                e.printStackTrace();
294
            }
295

  
296
            g.setClip(rClip);
297
            layoutDraw.drawRectangle((Graphics2D) g);
298

  
299
            g.drawImage(img, 0, 0, this);
300
            g.setClip(rClip);
301

  
302
            layoutDraw.drawGrid((Graphics2D) gimgRuler);
303
            layoutDraw.drawRuler((Graphics2D) gimgRuler, Color.black);
304
            setStatus(ACTUALIZADO);
305
            repaint();
306

  
307
            break;
308

  
309
        case ACTUALIZADO:
310
            layoutDraw.drawRectangle((Graphics2D) g);
311

  
312
            if (currentLayoutTool != null) {
313
                currentLayoutTool.paintComponent(g);
314
            } else {
315
                g.drawImage(img, 0, 0, this);
316
                layoutDraw.drawHandlers((Graphics2D) g, Color.black);
317
            }
318

  
319
            g.setClip(rClip);
320
            drawCursor(g);
321
        }
322
    }
323

  
324
    private void setStatus(int s) {
325
        status = s;
326
    }
327

  
328
    /**
329
     * Clip on visible rectangle.
330
     * 
331
     * @param g2d
332
     *            Graphics.
333
     */
334
    private void clipVisibleRect(Graphics2D g2d) {
335
        rectVisible = this.getVisibleRect();
336
        g2d.clipRect((int) rectVisible.getMinX(), (int) rectVisible.getMinY(),
337
            (int) rectVisible.getWidth(), (int) rectVisible.getHeight());
338
    }
339

  
340
    public BufferedImage getImgRuler() {
341
        return imgRuler;
342
    }
343

  
344
    public void fullRect() {
345
        Rectangle2D r = new Rectangle2D.Double(origin.x, origin.y, getWidth(),
346
            getHeight());
347

  
348
        if (layoutContext.getAttributes().isLandscape()) {
349
            r =
350
                layoutContext.getAttributes().getRectangleLandscape(r,
351
                    getWidth(), getHeight());
352
        } else {
353
            r =
354
                layoutContext.getAttributes().getRectanglePortrait(r,
355
                    getWidth(), getHeight());
356
        }
357
        setRect(r);
358
        refresh();
359
    }
360

  
361
    public Rectangle2D.Double getRect() {
362
    	return (Rectangle2D.Double) rect.clone();
363
    }
364

  
365
    public void setRect(Rectangle2D r) {
366
        rect.setRect(r);
367
        Rectangle2D bounds = getBounds();
368
        if (rect.getWidth()>0 && bounds.getWidth()>0) { // only when the component has been laid out and rect properly initialized
369
        	// ensure the AT is properly initialized
370
        	layoutDraw.initializeAffineTransform();
371
        	AffineTransform at = layoutContext.getAT();
372
        	if (at!=null) {
373
        		Rectangle2D.Double newVp = new Rectangle2D.Double(0d, 0d, bounds.getWidth(), bounds.getHeight());
374
        		viewPort.setRect(FLayoutUtilities.toSheetRect(newVp, at));
375
        	}
376
        }
377
    }
378

  
379
    public BufferedImage getImage() {
380
        return img;
381
    }
382

  
383
    /**
384
     * Draw the cursor on the Graphics.
385
     * 
386
     * @param g
387
     *            Graphics.
388
     */
389
    private void drawCursor(Graphics g) {
390
        if ((imageCursor != null) && (position != null)) {
391
            Point pAdjusted = position;
392
            g.drawImage(imageCursor, (int) pAdjusted.getX() - 16,
393
                (int) pAdjusted.getY() - 16, this);
394
        }
395
    }
396

  
397
    public void setMapCursor(Image image) {
398
        imageCursor = image;
399
    }
400

  
401
    public void setTool(String toolName) {
402
        LayoutBehavior layoutTool =
403
            (LayoutBehavior) namesLayoutTools.get(toolName);
404
        currentLayoutTool = layoutTool;
405
        currentLayoutTool.setLayoutControl(this);
406
        currentTool = toolName;
407
        this.setMapCursor(layoutTool.getImageCursor());
408

  
409
        if (getCurrentLayoutTool().getListener() instanceof ILayoutGraphicListener) {
410
            geometryAdapter =
411
                ((ILayoutGraphicListener) getCurrentLayoutTool().getListener())
412
                    .createGeometryAdapter();
413
        }
414

  
415
        if (getCurrentTool().equals("layoutedit")) {
416
            startEdit();
417
        } else {
418
            stopEdit();
419
        }
420
    }
421

  
422
	public void setDefaultTool() {
423
        PluginsLocator.getMainFrame().setSelectedTool("selection-select-by-rectangle-layout");
424
        setTool("layoutselect");
425
	}
426

  
427
    public void startEdit() {
428
        IFFrame[] fframes = layoutContext.getFFrames();
429

  
430
        for (int i = 0; i < fframes.length; i++) {
431
            IFFrame frame = fframes[i];
432

  
433
            if (frame instanceof IFFrameEditableVertex) {
434
                if (frame.getSelected() != IFFrame.NOSELECT) {
435
                    ((IFFrameEditableVertex) frame).startEditing();
436
                } else {
437
                    ((IFFrameEditableVertex) frame).stopEditing();
438
                }
439
            }
440
        }
441

  
442
        refresh();
443
    }
444

  
445
    public void stopEdit() {
446
        boolean refresh = false;
447
        IFFrame[] fframes = layoutContext.getFFrames();
448

  
449
        for (int i = 0; i < fframes.length; i++) {
450
            IFFrame frame = fframes[i];
451

  
452
            if (frame instanceof IFFrameEditableVertex) {
453
                if (((IFFrameEditableVertex) frame).isEditing()) {
454
                    ((IFFrameEditableVertex) fframes[i]).stopEditing();
455
                    refresh = true;
456
                }
457
            }
458
        }
459

  
460
        if (refresh) {
461
            refresh();
462
        }
463
    }
464

  
465
    public Point getRectOrigin() {
466
        return rectOrigin;
467
    }
468

  
469
    public FLayoutDraw getLayoutDraw() {
470
        return layoutDraw;
471
    }
472

  
473
    public LayoutBehavior getCurrentLayoutTool() {
474
        return currentLayoutTool;
475
    }
476

  
477
    public Point getFirstPoint() {
478
        return m_FirstPoint;
479
    }
480

  
481
    public Point getPointAnt() {
482
        return m_PointAnt;
483
    }
484

  
485
    public Point getLastPoint() {
486
        return m_LastPoint;
487
    }
488

  
489
    public void setFirstPoint() {
490
        m_FirstPoint = position;
491
    }
492

  
493
    public void setPointAnt() {
494
        m_PointAnt = position;
495
    }
496

  
497
    public void setLastPoint() {
498
        m_LastPoint = position;
499
    }
500

  
501
    public void setPosition(Point point2) {
502
        if (layoutContext.isAdjustingToGrid()
503
            && getCurrentLayoutTool().isAdjustable()) {
504
            position =
505
                FLayoutUtilities.getPointGrid(point2, layoutContext
506
                    .getAttributes().getHGridGapCm(), layoutContext
507
                    .getAttributes().getVGridGapCm(), layoutContext.getAT());
508
        } else {
509
            position = point2;
510
        }
511
    }
512

  
513
    public Point getPosition() {
514
        return position;
515
    }
516

  
517
    public AffineTransform getAT() {
518
        return layoutContext.getAT();
519
    }
520

  
521
    public GeometryAdapter getGeometryAdapter() {
522
        return geometryAdapter;
523
    }
524

  
525
    public void delLastPoint() {
526
        getGeometryAdapter().delLastPoint();
527
    }
528

  
529
    public int addGeometryAdapterPoint() {
530
        return getGeometryAdapter().addPoint(
531
            FLayoutUtilities.toSheetPoint(getPosition(), getAT()));
532
    }
533

  
534
    public void setGeometryAdapterPoinPosition() {
535
        getGeometryAdapter().pointPosition(
536
            FLayoutUtilities.toSheetPoint(getPosition(), getAT()));
537
    }
538

  
539
    public void clearMouseImage() {
540
        setCursor(transparentCursor);
541
    }
542

  
543
    public void refresh() {
544
    	AffineTransform at = calculateTransformFromViewport();
545
    	if (at!=null) {
546
        	// update rect according to the viewport rectangle
547
    		Size s = getLayoutContext().getAttributes().getPaperSize();
548
    		Rectangle2D paperRect = new Rectangle2D.Double(0, 0, s.getWidth(), s.getHeight());
549
    		Rectangle2D newRect = FLayoutUtilities.fromSheetRect(paperRect, at);
550
    		setRect(newRect);
551
    	}
552
    	// repaint
553
        setStatus(DESACTUALIZADO);
554
        invalidate();
555
        repaint();
556
    }
557
    
558
    /**
559
     * Calculates the affine transform using the viewport and the control size,
560
     * instead of calculating it from {@link #rect}. as usual. This is required when
561
     * the component size changes, as {@link #rect}. has to be recalculated using
562
     * the viewport, and thus we can't calculate the affine transform using
563
     * {@link #rect}.
564
     * 
565
     * @return An matrix to transform from paper coordinates to screen coordinates
566
     */
567
    protected AffineTransform calculateTransformFromViewport() {
568
    	Rectangle2D bounds = getBounds();
569
    	if (bounds.getWidth()>0 && viewPort.getHeight()>0) {
570
    		AffineTransform at = new AffineTransform();
571
    		// paper (paper units) to screen (pixels) scale
572
        	double scale, scale1, scale2;
573
        	scale1 = bounds.getHeight() / viewPort.getHeight() * 1;
574
        	scale2 = bounds.getWidth() / viewPort.getWidth() * 1;
575
        	scale = (scale1+scale2)/2d; // average scale
576
    		AffineTransform scaleAt = new AffineTransform();
577
    		AffineTransform translationAt = new AffineTransform();
578
    		translationAt.setToTranslation(-viewPort.getMinX(), -viewPort.getMinY());
579
    		scaleAt.setToScale(scale, scale);
580
    		at.concatenate(scaleAt);
581
    		at.concatenate(translationAt);
582
    		return at;
583
    	}
584
    	return null;
585
    }
586

  
587
    public synchronized boolean isDrawingCancelled() {
588
        return m_bCancelDrawing;
589
    }
590

  
591
    public synchronized void setCancelDrawing(boolean b) {
592
        m_bCancelDrawing = b;
593

  
594
        for (int i = 0; i < layoutContext.getFFrames().length; i++) {
595
            IFFrame fframe = layoutContext.getFFrame(i);
596

  
597
            if (fframe instanceof IFFrameUseFMap
598
                && (((IFFrameUseFMap) fframe).getMapContext() != null)) {
599
                // //TODO((FFrameView)
600
                // getFFrames().get(i)).getFMap().setCancelDrawing(b);
601
            }
602
        }
603
    }
604

  
605
    public Rectangle getReSel() {
606
        return reSel;
607
    }
608

  
609
    public boolean isReSel() {
610
        return isReSel;
611
    }
612

  
613
    public void setIsReSel(boolean b) {
614
        isReSel = b;
615
    }
616

  
617
    public void viewFull() throws ReadException {
618
        IFFrame[] fframes = layoutContext.getSelectedFFrames();
619

  
620
        for (int i = 0; i < fframes.length; i++) {
621
            if (fframes[i] instanceof IFFrameUseFMap) {
622
                IFFrameUseFMap fframe = (IFFrameUseFMap) fframes[i];
623

  
624
                if (fframe.getMapContext() != null) {
625
                    fframe.fullExtent();
626
                }
627

  
628
                fframe.refresh();
629
            }
630
        }
631

  
632
        refresh();
633
    }
634

  
635
    public FLayoutZooms getLayoutZooms() {
636
        return layoutZooms;
637
    }
638

  
639
    public FLayoutFunctions getLayoutFunctions() {
640
        return layoutFunctions;
641
    }
642

  
643
    public LayoutContext getLayoutContext() {
644
        return layoutContext;
645
    }
646

  
647
    public void setGeometryAdapter(GeometryAdapter adapter) {
648
        geometryAdapter = adapter;
649
    }
650

  
651
    public JComponent getComponent() {
652
        return this;
653
    }
654

  
655
    public void update(Observable observable, Object notification) {
656
       if ((notification != null) && (notification instanceof LayoutNotification)){
657
    	   LayoutNotification layoutNotification = (LayoutNotification)notification;
658
           if (LayoutNotification.LAYOUT_VALIDATED.equals(layoutNotification.getType())){
659
               status = ACTUALIZADO;
660
           }else if (LayoutNotification.LAYOUT_INVALIDATED.equals(layoutNotification.getType())){
661
               status = DESACTUALIZADO;
662
           }else if (LayoutNotification.LAYOUT_REFRESH.equals(layoutNotification.getType())){
663
               refresh();
664
           }
665
       }
666
    }
667
}
tags/org.gvsig.app.document.layout2.app-2.0.74/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/LayoutNotification.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.project.documents.layout;
23

  
24

  
25

  
26
/**
27
 * @author gvSIG Team
28
 * @version $Id$
29
 *
30
 */
31
public interface LayoutNotification {
32
	/** Fired when the layout has to be invalidated */
33
    public static final String LAYOUT_INVALIDATED = "layout_invalidated";
34

  
35
    /** Fired when the layout doesn't have to be repainted */
36
    public static final String LAYOUT_VALIDATED = "layout_validated";
37
    
38

  
39
    /** Fired when the layout has to be invalidated and immediately repainted */
40
    public static final String LAYOUT_REFRESH = "layout_refresh";
41
	
42
    /**
43
     * Returns the type of this notification, represented by one of the constants defined in this interface.
44
     * @return a String containing this notification's type
45
     */
46
    public String getType();
47
}
tags/org.gvsig.app.document.layout2.app-2.0.74/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/Attributes.java
1
/**
2
 * gvSIG. Desktop Geographic Information System.
3
 *
4
 * Copyright (C) 2007-2015 gvSIG Association.
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
 * For any additional information, do not hesitate to contact us
22
 * at info AT gvsig.com, or visit our website www.gvsig.com.
23
 */
24
package org.gvsig.app.project.documents.layout;
25

  
26
import java.awt.geom.Point2D;
27
import java.awt.geom.Rectangle2D;
28
import java.awt.print.PageFormat;
29
import java.awt.print.Paper;
30
import java.text.NumberFormat;
31
import java.util.ArrayList;
32

  
33
import javax.print.attribute.DocAttributeSet;
34
import javax.print.attribute.HashDocAttributeSet;
35
import javax.print.attribute.HashPrintRequestAttributeSet;
36
import javax.print.attribute.PrintRequestAttributeSet;
37
import javax.print.attribute.standard.Copies;
38
import javax.print.attribute.standard.Fidelity;
39
import javax.print.attribute.standard.Media;
40
import javax.print.attribute.standard.MediaPrintableArea;
41
import javax.print.attribute.standard.MediaSizeName;
42
import javax.print.attribute.standard.OrientationRequested;
43
import javax.print.attribute.standard.PrintQuality;
44
import javax.print.attribute.standard.Sides;
45

  
46
import org.gvsig.andami.PluginServices;
47
import org.gvsig.andami.PluginsLocator;
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff