Revision 1819

View differences:

org.gvsig.legend.heatmap/tags/org.gvsig.legend.heatmap-1.0.2/org.gvsig.legend.heatmap.lib/org.gvsig.legend.heatmap.lib.api/src/main/java/org/gvsig/legend/heatmap/lib/api/HeatmapLegend.java
1
package org.gvsig.legend.heatmap.lib.api;
2

  
3
import java.awt.Color;
4
import org.gvsig.fmap.mapcontext.rendering.legend.IVectorLegend;
5

  
6
public interface HeatmapLegend extends IVectorLegend {
7

  
8
    public int getDistance();
9

  
10
    public void setDistance(int distance);
11

  
12
    public void setColorTable(Color[] colorTable);
13

  
14
    public void setColorTable(int numColor, Color first, Color last);
15

  
16
    public Color[] getColorTable();
17

  
18
    public boolean useRamp();
19
    
20
    public String getFieldName();
21
    
22
    public void setFieldName(String fieldName);
23
    
24
    public int getColorTableHotColorAlpha();
25

  
26
    public void setColorTableHotColorAlpha(int colorTableHotColorAlpha);
27

  
28
    public int getColorTableColdColorAlpha();
29

  
30
    public void setColorTableColdColorAlpha(int colorTableColdColorAlpha);
31

  
32
    public boolean useAlphaInColorTable();
33

  
34
    public boolean setUseAlphaInColorTable(boolean use);
35
}
org.gvsig.legend.heatmap/tags/org.gvsig.legend.heatmap-1.0.2/org.gvsig.legend.heatmap.lib/org.gvsig.legend.heatmap.lib.api/src/main/java/org/gvsig/legend/heatmap/lib/api/HeatmapLegendLocator.java
1
/* gvSIG. Desktop Geographic Information System.
2
 *
3
 * Copyright ? 2007-2015 gvSIG Association
4
 *
5
 * This program is free software; you can redistribute it and/or
6
 * modify it under the terms of the GNU General Public License
7
 * as published by the Free Software Foundation; either version 2
8
 * of the License, or (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
18
 * MA  02110-1301, USA.
19
 *
20
 * For any additional information, do not hesitate to contact us
21
 * at info AT gvsig.com, or visit our website www.gvsig.com.
22
 */
23
package org.gvsig.legend.heatmap.lib.api;
24

  
25
import org.gvsig.tools.locator.AbstractLocator;
26
import org.gvsig.tools.locator.Locator;
27
import org.gvsig.tools.locator.LocatorException;
28

  
29

  
30
public class HeatmapLegendLocator extends AbstractLocator {
31

  
32
    /**
33
     * HeatmapLegend locator name
34
     */
35
    private static final String LOCATOR_NAME = "HeatmapLegendLocator";
36

  
37
    /**
38
     * HeatmapLegend manager name
39
     */
40
    public static final String MANAGER_NAME = "HeatmapLegendManager";
41

  
42
    /**
43
     * HeatmapLegend manager description
44
     */
45
    private static final String MANAGER_DESCRIPTION =
46
        "HeatmapLegend Manager of gvSIG";
47

  
48

  
49
    /**
50
     * Unique instance
51
     */
52
    private static final HeatmapLegendLocator instance = new HeatmapLegendLocator();
53

  
54
    @Override
55
    public String getLocatorName() {
56
        return LOCATOR_NAME;
57
    }
58

  
59
    /**
60
     * Registers the Class implementing the HeatmapLegendManager interface.
61
     *
62
     * @param clazz
63
     *            implementing the HeatmapLegendManager interface
64
     */
65
    public static void registerHeatmapLegendManager(Class clazz){
66
        getInstance().register(MANAGER_NAME, MANAGER_DESCRIPTION, clazz);
67
    }
68

  
69
    /**
70
     * Registers the default Class implementing the HeatmapLegendManager interface
71
     *
72
     * @param clazz
73
     *            implementing the HeatmapLegendManager interface
74
     */
75
    public static void registerDefaultHeatmapLegendManager(Class clazz){
76
        getInstance().registerDefault(MANAGER_NAME, MANAGER_DESCRIPTION, clazz);
77
    }
78

  
79
    /**
80
     * Return a reference to HeatmapLegendManager.
81
     *
82
     * @return a reference to HeatmapLegendManager
83
     * @throws LocatorException
84
     *             if there is no access to the class or the class
85
     *             cannot be instantiated
86
     * @see Locator#get(String)
87
     */
88
    public static HeatmapLegendManager getHeatmapLegendManager() throws LocatorException {
89
        return (HeatmapLegendManager) getInstance().get(MANAGER_NAME);
90
    }
91

  
92
    /**
93
     * @return
94
     */
95
    public static Locator getInstance() {
96
        return instance;
97
    }
98

  
99
}
org.gvsig.legend.heatmap/tags/org.gvsig.legend.heatmap-1.0.2/org.gvsig.legend.heatmap.lib/org.gvsig.legend.heatmap.lib.api/src/main/java/org/gvsig/legend/heatmap/lib/api/HeatmapLegendLibrary.java
1
/* gvSIG. Desktop Geographic Information System.
2
 *
3
 * Copyright ? 2007-2015 gvSIG Association
4
 *
5
 * This program is free software; you can redistribute it and/or
6
 * modify it under the terms of the GNU General Public License
7
 * as published by the Free Software Foundation; either version 2
8
 * of the License, or (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
18
 * MA  02110-1301, USA.
19
 *
20
 * For any additional information, do not hesitate to contact us
21
 * at info AT gvsig.com, or visit our website www.gvsig.com.
22
 */
23
package org.gvsig.legend.heatmap.lib.api;
24

  
25
import org.gvsig.tools.library.AbstractLibrary;
26
import org.gvsig.tools.library.LibraryException;
27
import org.gvsig.tools.locator.ReferenceNotRegisteredException;
28

  
29

  
30
public class HeatmapLegendLibrary extends AbstractLibrary {
31

  
32
    @Override
33
    protected void doInitialize() throws LibraryException {
34
        registerAsAPI(HeatmapLegendLibrary.class);
35
    }
36

  
37
    @Override
38
    protected void doPostInitialize() throws LibraryException {
39
        // Validate there is any implementation registered.
40
        HeatmapLegendManager manager = HeatmapLegendLocator.getHeatmapLegendManager();
41
        if (manager == null) {
42
            throw new ReferenceNotRegisteredException(
43
                HeatmapLegendLocator.MANAGER_NAME, HeatmapLegendLocator.getInstance());
44
        }
45
    }
46

  
47
}
org.gvsig.legend.heatmap/tags/org.gvsig.legend.heatmap-1.0.2/org.gvsig.legend.heatmap.lib/org.gvsig.legend.heatmap.lib.api/src/main/java/org/gvsig/legend/heatmap/lib/api/HeatmapLegendManager.java
1
/* gvSIG. Desktop Geographic Information System.
2
 *
3
 * Copyright ? 2007-2015 gvSIG Association
4
 *
5
 * This program is free software; you can redistribute it and/or
6
 * modify it under the terms of the GNU General Public License
7
 * as published by the Free Software Foundation; either version 3
8
 * of the License, or (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
18
 * MA  02110-1301, USA.
19
 *
20
 * For any additional information, do not hesitate to contact us
21
 * at info AT gvsig.com, or visit our website www.gvsig.com.
22
 */
23
package org.gvsig.legend.heatmap.lib.api;
24

  
25

  
26
public interface HeatmapLegendManager {
27

  
28
    /**
29
     * Creates an aggregate legend
30
     *
31
     * @return the aggregate legend
32
     */
33
    public HeatmapLegend create();
34

  
35
    public Class<? extends HeatmapLegend> getLegendClass();
36
}
org.gvsig.legend.heatmap/tags/org.gvsig.legend.heatmap-1.0.2/org.gvsig.legend.heatmap.lib/org.gvsig.legend.heatmap.lib.api/src/main/resources/META-INF/services/org.gvsig.tools.library.Library
1
org.gvsig.legend.heatmap.lib.api.HeatmapLegendLibrary
org.gvsig.legend.heatmap/tags/org.gvsig.legend.heatmap-1.0.2/org.gvsig.legend.heatmap.lib/org.gvsig.legend.heatmap.lib.api/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/xsd/maven-4.0.0.xsd">
2
  <modelVersion>4.0.0</modelVersion>
3
  <groupId>org.gvsig</groupId>
4
  <artifactId>org.gvsig.legend.heatmap.lib.api</artifactId>
5
  <name>org.gvsig.legend.heatmap.lib.api</name>
6
  <parent>
7
    <groupId>org.gvsig</groupId>
8
    <artifactId>org.gvsig.legend.heatmap.lib</artifactId>
9
    <version>1.0.2</version>
10
  </parent>
11

  
12
  <build>
13
    <plugins>
14
      <plugin>
15
        <groupId>org.apache.maven.plugins</groupId>
16
        <artifactId>maven-jar-plugin</artifactId>
17
        <configuration>
18
        </configuration>
19
        <executions>
20
          <!-- Generates a jar file only with the test classes -->
21
          <execution>
22
            <goals>
23
              <goal>test-jar</goal>
24
            </goals>
25
          </execution>
26
        </executions>
27
      </plugin>
28
    </plugins>
29
  </build>
30

  
31
  <dependencies>
32
    <dependency>
33
      <groupId>org.gvsig</groupId>
34
      <artifactId>org.gvsig.tools.lib</artifactId>
35
      <scope>compile</scope>
36
    </dependency>
37
    <dependency>
38
      <groupId>org.gvsig</groupId>
39
      <artifactId>org.gvsig.fmap.mapcontext.api</artifactId>
40
      <scope>compile</scope>
41
    </dependency>
42
  </dependencies>
43
</project>
0 44

  
org.gvsig.legend.heatmap/tags/org.gvsig.legend.heatmap-1.0.2/org.gvsig.legend.heatmap.lib/org.gvsig.legend.heatmap.lib.impl/src/main/java/org/gvsig/legend/heatmap/lib/impl/DefaultHeatmapLegendManager.java
1
/* gvSIG. Desktop Geographic Information System.
2
 *
3
 * Copyright ? 2007-2015 gvSIG Association
4
 *
5
 * This program is free software; you can redistribute it and/or
6
 * modify it under the terms of the GNU General Public License
7
 * as published by the Free Software Foundation; either version 2
8
 * of the License, or (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
18
 * MA  02110-1301, USA.
19
 *
20
 * For any additional information, do not hesitate to contact us
21
 * at info AT gvsig.com, or visit our website www.gvsig.com.
22
 */
23
package org.gvsig.legend.heatmap.lib.impl;
24

  
25
import org.gvsig.legend.heatmap.lib.api.HeatmapLegend;
26
import org.gvsig.legend.heatmap.lib.api.HeatmapLegendManager;
27

  
28

  
29
public class DefaultHeatmapLegendManager implements HeatmapLegendManager {
30

  
31
    @Override
32
    public HeatmapLegend create() {
33
        return new DefaultHeatmapLegend();
34
    }
35

  
36
    @Override
37
    public Class<? extends HeatmapLegend> getLegendClass() {
38
        return DefaultHeatmapLegend.class;
39
    }
40

  
41
}
org.gvsig.legend.heatmap/tags/org.gvsig.legend.heatmap-1.0.2/org.gvsig.legend.heatmap.lib/org.gvsig.legend.heatmap.lib.impl/src/main/java/org/gvsig/legend/heatmap/lib/impl/DefaultHeatmapLegend.java
1
package org.gvsig.legend.heatmap.lib.impl;
2

  
3
import java.awt.Color;
4
import java.awt.Graphics2D;
5
import java.awt.Image;
6
import java.awt.image.BufferedImage;
7
import java.util.Map;
8
import org.apache.commons.lang3.StringUtils;
9
import org.cresques.cts.ICoordTrans;
10
import org.gvsig.fmap.dal.exception.DataException;
11
import org.gvsig.fmap.dal.feature.Feature;
12
import org.gvsig.fmap.dal.feature.FeatureQuery;
13
import org.gvsig.fmap.dal.feature.FeatureSelection;
14
import org.gvsig.fmap.dal.feature.FeatureSet;
15
import org.gvsig.fmap.dal.feature.FeatureStore;
16
import org.gvsig.fmap.dal.feature.FeatureType;
17
import org.gvsig.fmap.geom.Geometry;
18
import org.gvsig.fmap.geom.primitive.Point;
19
import org.gvsig.fmap.mapcontext.MapContextException;
20
import org.gvsig.fmap.mapcontext.ViewPort;
21
import org.gvsig.fmap.mapcontext.layers.operations.IHasImageLegend;
22
import org.gvsig.fmap.mapcontext.rendering.legend.LegendException;
23
import org.gvsig.fmap.mapcontext.rendering.legend.events.SymbolLegendEvent;
24
import org.gvsig.fmap.mapcontext.rendering.symbols.ISymbol;
25
import org.gvsig.gui.ColorTablePainter;
26
import org.gvsig.gui.DefaultColorTablePainter;
27
import org.gvsig.legend.heatmap.lib.api.HeatmapLegend;
28
import org.gvsig.symbology.fmap.mapcontext.rendering.legend.impl.AbstractVectorialLegend;
29
import org.gvsig.symbology.fmap.mapcontext.rendering.legend.impl.DefaultFeatureDrawnNotification;
30
import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.text.impl.SimpleTextSymbol;
31
import org.gvsig.tools.exception.BaseException;
32
import org.gvsig.tools.task.Cancellable;
33
import org.gvsig.tools.visitor.VisitCanceledException;
34
import org.gvsig.tools.visitor.Visitor;
35

  
36
public class DefaultHeatmapLegend extends AbstractVectorialLegend implements HeatmapLegend, IHasImageLegend {
37

  
38
    private class DensityAlgorithm {
39

  
40
        private double[][] grid;
41
        private double[][] kernel;
42
        private int distance;
43
        private int height;
44
        private int with;
45
        private double maxValue;
46
        private double minValue;
47

  
48
        public DensityAlgorithm(int distance) {
49
            this.setDistance(distance);
50
        }
51

  
52
        public void setDistance(int distance) {
53
            this.distance = distance;
54
            this.kernel = new double[2 * this.distance + 1][2 * this.distance + 1];
55
            for( int y = -this.distance; y < this.distance + 1; y++ ) {
56
                for( int x = -this.distance; x < this.distance + 1; x++ ) {
57
                    final double dDist = Math.sqrt(x * x + y * y);
58
                    if( dDist < this.distance ) {
59
                        this.kernel[x + this.distance][y + this.distance] = Math.pow(1 - (dDist * dDist) / (this.distance * this.distance), 2);
60
                    } else {
61
                        this.kernel[x + this.distance][y + this.distance] = 0;
62
                    }
63
                }
64
            }
65
        }
66

  
67
        public int getDistance() {
68
            return this.distance;
69
        }
70

  
71
        public void init(int with, int height) {
72
            this.with = with;
73
            this.height = height;
74
            this.grid = new double[with][height];
75
            this.maxValue = 0;
76
            this.minValue = 0;
77
        }
78

  
79
        public void add(int px, int py) {
80
            add(px, py, 1);
81
        }
82

  
83
        public void add(int px, int py, double value) {
84
            for( int y = -this.distance; y < this.distance + 1; y++ ) {
85
                for( int x = -this.distance; x < this.distance + 1; x++ ) {
86
                    if( this.kernel[x + this.distance][y + this.distance] != 0 ) {
87
                        addValue(px + x, py + y, value * this.kernel[x + this.distance][y + this.distance]);
88
                    }
89
                }
90
            }
91
        }
92

  
93
        private void addValue(int px, int py, double value) {
94
            if( px < 0 || py < 0 || px >= with || py >= height ) {
95
                return;
96
            }
97
            value += this.grid[px][py];
98
            this.grid[px][py] = value;
99
            if( value > this.maxValue ) {
100
                this.maxValue = value;
101
            }
102
            if( value < this.minValue ) {
103
                this.minValue = value;
104
            }
105
        }
106

  
107
        public void draw(BufferedImage img, Graphics2D g, Color[] colorTable, int alphaHot, int alphaCold, Cancellable cancel) {
108
            try {
109
                Color c;
110
                int maxColors = colorTable.length;
111
                double deltaAlpha = (alphaHot - alphaCold) / maxColors;
112
                for( int x = 0; x < with; x++ ) {
113
                    for( int y = 0; y < height; y++ ) {
114
                        if( cancel.isCanceled() ) {
115
                            return;
116
                        }
117
                        double value = this.grid[x][y];
118
                        if( value > 0 ) {
119
                            int icolor = (int) (value * maxColors / maxValue);
120
                            icolor = icolor < 0 ? 0 : icolor >= maxColors ? maxColors - 1 : icolor;
121
                            if( alphaHot > 0 ) {
122
                                c = colorTable[icolor];
123
                                c = new Color(c.getRed(), c.getGreen(), c.getBlue(), (int) (icolor * deltaAlpha) & 0xff);
124
                            } else {
125
                                c = colorTable[icolor];
126
                            }
127
                            c = blend(new Color(img.getRGB(x, y)),c);
128
                            img.setRGB(x, y, c.getRGB());
129
                        }
130
                    }
131
                }
132
            } catch (Exception ex) {
133
                LOG.warn("Problems drawing heatmap", ex);
134
            }
135
        }
136

  
137
        private Color blend(Color dst, Color src) {
138
            //
139
            // https://en.wikipedia.org/wiki/Alpha_compositing#Alpha_blending
140
            //
141
            // when the destination background is opaque
142
            //
143
            // double outa = 1;
144
            double srca = src.getAlpha() / 255.0;
145
            double srca_1 = (1 - srca);
146
            
147
            Color color = new Color(
148
                (int)(src.getRed()  * srca + dst.getRed()  * srca_1) & 0xff,
149
                (int)(src.getGreen()* srca + dst.getGreen()* srca_1) & 0xff,
150
                (int)(src.getBlue() * srca + dst.getBlue() * srca_1) & 0xff
151
            );
152
            return color;
153
        }
154

  
155
    }
156

  
157
    private final ISymbol defaultSymbol;
158
    private final DensityAlgorithm algorithm;
159
    private boolean isRamp;
160
    private Color[] colorTable;
161
    private int colorTableHotColorAlpha;
162
    private int colorTableColdColorAlpha;
163
    private String fieldName;
164
    private boolean useAlphaInColorTable;
165
    private Image imageLegend;
166
    
167
    public DefaultHeatmapLegend() {
168
        this.defaultSymbol = new SimpleTextSymbol();
169
        this.algorithm = new DensityAlgorithm(30);
170
        this.colorTableHotColorAlpha = 255;
171
        this.colorTableColdColorAlpha = 0;
172
        this.useAlphaInColorTable = false;
173
        this.setColorTable(100, new Color(0, 0, 255, 1), new Color(255, 0, 0, 255));
174
        this.imageLegend = null;
175
    }
176

  
177
    @Override
178
    protected String[] getRequiredFeatureAttributeNames(FeatureStore featureStore) throws DataException {
179
        FeatureType ftype = featureStore.getDefaultFeatureType();
180
        if( StringUtils.isEmpty(this.fieldName) ) {
181
            return new String[]{
182
                ftype.getDefaultGeometryAttributeName()
183
            };
184
        }
185
        return new String[]{
186
            ftype.getDefaultGeometryAttributeName(),
187
            this.fieldName
188
        };
189
    }
190

  
191
    @Override
192
    public ISymbol getDefaultSymbol() {
193
        return this.defaultSymbol;
194
    }
195

  
196
    @Override
197
    public void setDefaultSymbol(ISymbol is) {
198
    }
199

  
200
    @Override
201
    public ISymbol getSymbolByFeature(Feature ftr) throws MapContextException {
202
        return this.defaultSymbol;
203
    }
204

  
205
    @Override
206
    public int getShapeType() {
207
        return Geometry.TYPES.GEOMETRY;
208
    }
209

  
210
    @Override
211
    public void setShapeType(int i) {
212
    }
213

  
214
    @Override
215
    public boolean isUseDefaultSymbol() {
216
        return true;
217
    }
218

  
219
    @Override
220
    public void useDefaultSymbol(boolean bln) {
221
    }
222

  
223
    @Override
224
    public boolean isSuitableForShapeType(int shapeType) {
225
        return true;
226
    }
227

  
228
    @Override
229
    protected void draw(BufferedImage image, Graphics2D g, ViewPort viewPort, Cancellable cancel, double scale, Map queryParameters, ICoordTrans coordTrans, FeatureStore featureStore, FeatureQuery featureQuery, double dpi) throws LegendException {
230
        this.algorithm.init(image.getWidth(), image.getHeight());
231
        super.draw(image, g, viewPort, cancel, scale, queryParameters, coordTrans, featureStore, featureQuery, dpi);
232
        if( !cancel.isCanceled() ) {
233
            if( this.useRamp() || !useAlphaInColorTable ) {
234
                this.algorithm.draw(image, g, this.getColorTable(), -1, -1, cancel);
235
            } else {
236
                this.algorithm.draw(image, g, this.getColorTable(), colorTableHotColorAlpha, colorTableColdColorAlpha, cancel);
237
            }
238
        }
239
    }
240

  
241
    @Override
242
    protected void drawFeatures(
243
        BufferedImage image,
244
        Graphics2D g,
245
        final ViewPort viewPort,
246
        final Cancellable cancel,
247
        final ICoordTrans coordTrans,
248
        double dpi,
249
        DefaultFeatureDrawnNotification drawnNotification,
250
        FeatureSet featureSet,
251
        FeatureSelection selection
252
    ) throws BaseException {
253
        int x = -1;
254
        if( !StringUtils.isEmpty(this.fieldName) ) {
255
            x = featureSet.getDefaultFeatureType().getIndex(this.fieldName);
256
        }
257
        final int n = x;
258
        featureSet.accept(new Visitor() {
259
            @Override
260
            public void visit(Object o) throws VisitCanceledException, BaseException {
261
                if( cancel.isCanceled() ) {
262
                    throw new VisitCanceledException();
263
                }
264
                Feature feature = (Feature) o;
265
                Geometry geom = feature.getDefaultGeometry();
266
                if( geom != null ) {
267
                    Point pointGeo = geom.centroid();
268
                    if( coordTrans != null ) {
269
                        pointGeo.reProject(coordTrans);
270
                    }
271
                    Point pointPixels = (Point) pointGeo.cloneGeometry();
272
                    pointPixels.transform(viewPort.getAffineTransform());
273
                    if( n >= 0 ) {
274
                        double value = 0;
275
                        try {
276
                            value = feature.getDouble(n);
277
                        } catch(Exception ex) {   
278
                        }
279
                        if( value >0 ) {
280
                            algorithm.add((int) pointPixels.getX(), (int) pointPixels.getY(), value);
281
                        }
282
                    } else {
283
                        algorithm.add((int) pointPixels.getX(), (int) pointPixels.getY());
284
                    }
285
                }
286
            }
287
        });
288
    }
289

  
290
    /**
291
     * @return the distance
292
     */
293
    @Override
294
    public int getDistance() {
295
        return this.algorithm.getDistance();
296
    }
297

  
298
    /**
299
     * @param distance the distance to set
300
     */
301
    @Override
302
    public void setDistance(int distance) {
303
        this.algorithm.setDistance(distance);
304
    }
305

  
306
    @Override
307
    public void setColorTable(Color[] colorTable) {
308
        this.isRamp = false;
309
        this.colorTable = colorTable;
310
        this.imageLegend = null;
311
        this.fireDefaultSymbolChangedEvent(new SymbolLegendEvent(null,null));
312
    }
313

  
314
    @Override
315
    public void setColorTable(int numColor, Color first, Color last) {
316
        Color[] table = new Color[numColor];
317

  
318
        double deltaRed = (last.getRed() - first.getRed()) / numColor;
319
        double deltaGreen = (last.getGreen() - first.getGreen()) / numColor;
320
        double deltaBlue = (last.getBlue() - first.getBlue()) / numColor;
321
        double deltaAlpha = (last.getAlpha() - first.getAlpha()) / numColor;
322
        for( int i = 0; i < numColor; i++ ) {
323
            table[i] = new Color(
324
                (int) (first.getRed() + i * deltaRed),
325
                (int) (first.getGreen() + i * deltaGreen),
326
                (int) (first.getBlue() + i * deltaBlue),
327
                (int) (first.getAlpha() + i * deltaAlpha)
328
            );
329
        }
330
        this.isRamp = true;
331
        this.colorTable = table;
332
        this.imageLegend = null;
333
        this.fireDefaultSymbolChangedEvent(new SymbolLegendEvent(null,null));
334
    }
335

  
336
    @Override
337
    public Color[] getColorTable() {
338
        return this.colorTable;
339
    }
340

  
341
    @Override
342
    public boolean useRamp() {
343
        return this.isRamp;
344
    }
345

  
346
    @Override
347
    public String getFieldName() {
348
        return this.fieldName;
349
    }
350

  
351
    @Override
352
    public void setFieldName(String fieldName) {
353
        this.fieldName = fieldName;
354
    }
355

  
356
    @Override
357
    public int getColorTableHotColorAlpha() {
358
        return colorTableHotColorAlpha;
359
    }
360

  
361
    @Override
362
    public void setColorTableHotColorAlpha(int colorTableHotColorAlpha) {
363
        this.colorTableHotColorAlpha = colorTableHotColorAlpha;
364
    }
365

  
366
    @Override
367
    public int getColorTableColdColorAlpha() {
368
        return colorTableColdColorAlpha;
369
    }
370

  
371
    @Override
372
    public void setColorTableColdColorAlpha(int colorTableColdColorAlpha) {
373
        this.colorTableColdColorAlpha = colorTableColdColorAlpha;
374
    }
375

  
376
    @Override
377
    public boolean useAlphaInColorTable() {
378
        return this.useAlphaInColorTable;
379
    }
380

  
381
    @Override
382
    public boolean setUseAlphaInColorTable(boolean use) {
383
        boolean x = this.useAlphaInColorTable;
384
        this.useAlphaInColorTable = use;
385
        return x;
386
    }
387

  
388
    @Override
389
    public Image getImageLegend() {
390
        if( this.imageLegend==null ) {
391
            BufferedImage img = new BufferedImage(80, 20, BufferedImage.TYPE_INT_RGB);
392
            ColorTablePainter painter = new DefaultColorTablePainter(this.colorTable,"");
393
            Graphics2D g = img.createGraphics();
394
            g.setClip(0, 0, 150, 20);
395
            painter.paint(g, false);
396
            this.imageLegend = img;
397
        }
398
        return this.imageLegend;
399
    }
400

  
401
    @Override
402
    public String getPathImage() {
403
        return null;
404
    }
405

  
406
}
org.gvsig.legend.heatmap/tags/org.gvsig.legend.heatmap-1.0.2/org.gvsig.legend.heatmap.lib/org.gvsig.legend.heatmap.lib.impl/src/main/java/org/gvsig/legend/heatmap/lib/impl/HeatmapLegendLibraryImpl.java
1
/**
2
 * gvSIG. Desktop Geographic Information System.
3
 *
4
 * Copyright ? 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

  
25
package org.gvsig.legend.heatmap.lib.impl;
26

  
27
import org.gvsig.fmap.mapcontext.MapContextLibrary;
28
import org.gvsig.fmap.mapcontext.MapContextLocator;
29
import org.gvsig.fmap.mapcontext.MapContextManager;
30
import org.gvsig.legend.heatmap.lib.api.HeatmapLegendLibrary;
31
import org.gvsig.legend.heatmap.lib.api.HeatmapLegendLocator;
32
import org.gvsig.tools.library.AbstractLibrary;
33
import org.gvsig.tools.library.LibraryException;
34

  
35
public class HeatmapLegendLibraryImpl extends AbstractLibrary {
36

  
37
    @Override
38
    public void doRegistration() {
39
        registerAsImplementationOf(HeatmapLegendLibrary.class);
40
        this.require(MapContextLibrary.class);
41
    }
42

  
43
    @Override
44
    protected void doInitialize() throws LibraryException {
45
        HeatmapLegendLocator.registerHeatmapLegendManager(DefaultHeatmapLegendManager.class);
46
        MapContextManager mcmanager = MapContextLocator.getMapContextManager();
47
        mcmanager.registerLegend("HeatmapLegend", DefaultHeatmapLegend.class);
48
    }
49

  
50
    @Override
51
    protected void doPostInitialize() throws LibraryException {
52
    }
53

  
54
}
org.gvsig.legend.heatmap/tags/org.gvsig.legend.heatmap-1.0.2/org.gvsig.legend.heatmap.lib/org.gvsig.legend.heatmap.lib.impl/src/main/resources/META-INF/services/org.gvsig.tools.library.Library
1
org.gvsig.legend.heatmap.lib.impl.HeatmapLegendLibraryImpl
org.gvsig.legend.heatmap/tags/org.gvsig.legend.heatmap-1.0.2/org.gvsig.legend.heatmap.lib/org.gvsig.legend.heatmap.lib.impl/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/xsd/maven-4.0.0.xsd">
2
  <modelVersion>4.0.0</modelVersion>
3
  <artifactId>org.gvsig.legend.heatmap.lib.impl</artifactId>
4
  <name>org.gvsig.legend.heatmap.lib.impl</name>
5
  <parent>
6
    <groupId>org.gvsig</groupId>
7
    <artifactId>org.gvsig.legend.heatmap.lib</artifactId>
8
    <version>1.0.2</version>
9
  </parent>
10
  <groupId>org.gvsig</groupId>
11
  <dependencies>
12
    <dependency>
13
      <groupId>org.gvsig</groupId>
14
      <artifactId>org.gvsig.legend.heatmap.lib.api</artifactId>
15
      <scope>compile</scope>
16
    </dependency>
17
    <dependency>
18
      <groupId>org.gvsig</groupId>
19
      <artifactId>org.gvsig.fmap.dal.api</artifactId>
20
      <scope>compile</scope>
21
    </dependency>
22
    <dependency>
23
      <groupId>org.gvsig</groupId>
24
      <artifactId>org.gvsig.symbology.lib.impl</artifactId>
25
      <scope>compile</scope>
26
    </dependency>
27
    <dependency>
28
      <groupId>org.gvsig</groupId>
29
      <artifactId>org.gvsig.ui</artifactId>
30
      <scope>compile</scope>
31
    </dependency>
32
  </dependencies>
33
</project>
0 34

  
org.gvsig.legend.heatmap/tags/org.gvsig.legend.heatmap-1.0.2/org.gvsig.legend.heatmap.lib/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/xsd/maven-4.0.0.xsd">
2
  <modelVersion>4.0.0</modelVersion>
3
  <parent>
4
    <groupId>org.gvsig</groupId>
5
    <artifactId>org.gvsig.legend.heatmap</artifactId>
6
    <version>1.0.2</version>
7
  </parent>
8
  <groupId>org.gvsig</groupId>
9
  <artifactId>org.gvsig.legend.heatmap.lib</artifactId>
10
  <packaging>pom</packaging>
11
  <modules>
12
    <module>org.gvsig.legend.heatmap.lib.api</module>
13
    <module>org.gvsig.legend.heatmap.lib.impl</module>
14
  </modules>
15
</project>
org.gvsig.legend.heatmap/tags/org.gvsig.legend.heatmap-1.0.2/org.gvsig.legend.heatmap.swing/org.gvsig.legend.heatmap.swing.impl/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/xsd/maven-4.0.0.xsd">
2
  <modelVersion>4.0.0</modelVersion>
3
  <parent>
4
    <groupId>org.gvsig</groupId>
5
    <artifactId>org.gvsig.legend.heatmap.swing</artifactId>
6
    <version>1.0.2</version>
7
  </parent>
8
  <groupId>org.gvsig</groupId>
9
  <artifactId>org.gvsig.legend.heatmap.swing.impl</artifactId>
10
  <dependencies>
11
    <dependency>
12
      <groupId>org.gvsig</groupId>
13
      <artifactId>org.gvsig.legend.heatmap.swing.api</artifactId>
14
      <scope>compile</scope>
15
    </dependency>
16
    <dependency>
17
      <groupId>org.gvsig</groupId>
18
      <artifactId>org.gvsig.tools.lib</artifactId>
19
      <scope>compile</scope>
20
    </dependency>
21
    <dependency>
22
      <groupId>org.gvsig</groupId>
23
      <artifactId>org.gvsig.legend.heatmap.lib.api</artifactId>
24
      <scope>compile</scope>
25
    </dependency>
26
    <dependency>
27
      <groupId>org.gvsig</groupId>
28
      <artifactId>org.gvsig.tools.swing.api</artifactId>
29
      <scope>compile</scope>
30
    </dependency>
31
    <dependency>
32
      <groupId>org.gvsig</groupId>
33
      <artifactId>org.gvsig.symbology.lib.api</artifactId>
34
      <scope>compile</scope>
35
    </dependency>
36

  
37
  </dependencies>
38
</project>
org.gvsig.legend.heatmap/tags/org.gvsig.legend.heatmap-1.0.2/org.gvsig.legend.heatmap.swing/org.gvsig.legend.heatmap.swing.impl/src/main/resources/META-INF/services/org.gvsig.tools.library.Library
1
org.gvsig.legend.heatmap.swing.impl.HeatmapLegendSwingLibrary
org.gvsig.legend.heatmap/tags/org.gvsig.legend.heatmap-1.0.2/org.gvsig.legend.heatmap.swing/org.gvsig.legend.heatmap.swing.impl/src/main/java/org/gvsig/legend/heatmap/swing/impl/DefaultHeatmapLegendEditorView.xml
1
<?xml version="1.0" encoding="UTF-8"?>
2

  
3
<object classname="com.jeta.forms.store.memento.FormPackage">
4
 <at name="fileversion">
5
  <object classname="com.jeta.forms.store.memento.FormsVersion2">
6
   <at name="major">2</at>
7
   <at name="minor">0</at>
8
   <at name="sub">0</at>
9
  </object>
10
 </at>
11
 <at name="form">
12
  <object classname="com.jeta.forms.store.memento.FormMemento">
13
   <super classname="com.jeta.forms.store.memento.ComponentMemento">
14
    <at name="cellconstraints">
15
     <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
16
      <at name="column">1</at>
17
      <at name="row">1</at>
18
      <at name="colspan">1</at>
19
      <at name="rowspan">1</at>
20
      <at name="halign">default</at>
21
      <at name="valign">default</at>
22
      <at name="insets" object="insets">0,0,0,0</at>
23
     </object>
24
    </at>
25
    <at name="componentclass">com.jeta.forms.gui.form.FormComponent</at>
26
   </super>
27
   <at name="id">/home/jjdelcerro/datos/devel/org.gvsig.legend.heatmap/org.gvsig.legend.heatmap.swing/org.gvsig.legend.heatmap.swing.impl/src/main/java/org/gvsig/legend/heatmap/swing/impl/DefaultHeatmapLegendEditorView.xml</at>
28
   <at name="rowspecs">CENTER:4DLU:NONE,CENTER:DEFAULT:NONE,CENTER:4DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:4DLU:NONE,CENTER:DEFAULT:NONE,CENTER:4DLU:NONE,CENTER:DEFAULT:NONE,CENTER:4DLU:NONE,CENTER:DEFAULT:NONE,CENTER:4DLU:NONE,CENTER:DEFAULT:NONE,CENTER:4DLU:NONE</at>
29
   <at name="colspecs">FILL:4DLU:NONE,FILL:DEFAULT:NONE,FILL:DEFAULT:NONE,FILL:DEFAULT:GROW(1.0),FILL:4DLU:NONE</at>
30
   <at name="components">
31
    <object classname="java.util.LinkedList">
32
     <item >
33
      <at name="value">
34
       <object classname="com.jeta.forms.store.memento.FormMemento">
35
        <super classname="com.jeta.forms.store.memento.ComponentMemento">
36
         <at name="cellconstraints">
37
          <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
38
           <at name="column">4</at>
39
           <at name="row">2</at>
40
           <at name="colspan">1</at>
41
           <at name="rowspan">1</at>
42
           <at name="halign">default</at>
43
           <at name="valign">default</at>
44
           <at name="insets" object="insets">0,0,0,0</at>
45
          </object>
46
         </at>
47
         <at name="componentclass">com.jeta.forms.gui.form.FormComponent</at>
48
        </super>
49
        <at name="id">embedded.1959187974</at>
50
        <at name="rowspecs">CENTER:DEFAULT:NONE</at>
51
        <at name="colspecs">FILL:DEFAULT:GROW(1.0),FILL:4DLU:NONE,FILL:DEFAULT:NONE</at>
52
        <at name="components">
53
         <object classname="java.util.LinkedList">
54
          <item >
55
           <at name="value">
56
            <object classname="com.jeta.forms.store.memento.BeanMemento">
57
             <super classname="com.jeta.forms.store.memento.ComponentMemento">
58
              <at name="cellconstraints">
59
               <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
60
                <at name="column">3</at>
61
                <at name="row">1</at>
62
                <at name="colspan">1</at>
63
                <at name="rowspan">1</at>
64
                <at name="halign">default</at>
65
                <at name="valign">default</at>
66
                <at name="insets" object="insets">0,0,0,0</at>
67
               </object>
68
              </at>
69
              <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
70
             </super>
71
             <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
72
             <at name="beanclass">com.jeta.forms.components.label.JETALabel</at>
73
             <at name="beanproperties">
74
              <object classname="com.jeta.forms.store.memento.PropertiesMemento">
75
               <at name="classname">com.jeta.forms.components.label.JETALabel</at>
76
               <at name="properties">
77
                <object classname="com.jeta.forms.store.support.PropertyMap">
78
                 <at name="border">
79
                  <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
80
                   <super classname="com.jeta.forms.store.properties.BorderProperty">
81
                    <at name="name">border</at>
82
                   </super>
83
                   <at name="borders">
84
                    <object classname="java.util.LinkedList">
85
                     <item >
86
                      <at name="value">
87
                       <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
88
                        <super classname="com.jeta.forms.store.properties.BorderProperty">
89
                         <at name="name">border</at>
90
                        </super>
91
                       </object>
92
                      </at>
93
                     </item>
94
                    </object>
95
                   </at>
96
                  </object>
97
                 </at>
98
                 <at name="name">lblPixels</at>
99
                 <at name="width">33</at>
100
                 <at name="text">pixels</at>
101
                 <at name="fill">
102
                  <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
103
                   <at name="name">fill</at>
104
                  </object>
105
                 </at>
106
                 <at name="height">14</at>
107
                </object>
108
               </at>
109
              </object>
110
             </at>
111
            </object>
112
           </at>
113
          </item>
114
          <item >
115
           <at name="value">
116
            <object classname="com.jeta.forms.store.memento.BeanMemento">
117
             <super classname="com.jeta.forms.store.memento.ComponentMemento">
118
              <at name="cellconstraints">
119
               <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
120
                <at name="column">1</at>
121
                <at name="row">1</at>
122
                <at name="colspan">1</at>
123
                <at name="rowspan">1</at>
124
                <at name="halign">default</at>
125
                <at name="valign">default</at>
126
                <at name="insets" object="insets">0,0,0,0</at>
127
               </object>
128
              </at>
129
              <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
130
             </super>
131
             <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
132
             <at name="beanclass">javax.swing.JSpinner</at>
133
             <at name="beanproperties">
134
              <object classname="com.jeta.forms.store.memento.PropertiesMemento">
135
               <at name="classname">javax.swing.JSpinner</at>
136
               <at name="properties">
137
                <object classname="com.jeta.forms.store.support.PropertyMap">
138
                 <at name="name">spnDistance</at>
139
                 <at name="width">340</at>
140
                 <at name="height">20</at>
141
                </object>
142
               </at>
143
              </object>
144
             </at>
145
            </object>
146
           </at>
147
          </item>
148
         </object>
149
        </at>
150
        <at name="properties">
151
         <object classname="com.jeta.forms.store.memento.PropertiesMemento">
152
          <at name="classname">com.jeta.forms.gui.form.GridView</at>
153
          <at name="properties">
154
           <object classname="com.jeta.forms.store.support.PropertyMap">
155
            <at name="border">
156
             <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
157
              <super classname="com.jeta.forms.store.properties.BorderProperty">
158
               <at name="name">border</at>
159
              </super>
160
              <at name="borders">
161
               <object classname="java.util.LinkedList"/>
162
              </at>
163
             </object>
164
            </at>
165
            <at name="name"/>
166
            <at name="fill">
167
             <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
168
              <at name="name">fill</at>
169
             </object>
170
            </at>
171
            <at name="scollBars">
172
             <object classname="com.jeta.forms.store.properties.ScrollBarsProperty">
173
              <at name="name">scollBars</at>
174
              <at name="verticalpolicy">21</at>
175
              <at name="horizontalpolicy">31</at>
176
              <at name="border">
177
               <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
178
                <super classname="com.jeta.forms.store.properties.BorderProperty">
179
                 <at name="name">border</at>
180
                </super>
181
                <at name="borders">
182
                 <object classname="java.util.LinkedList">
183
                  <item >
184
                   <at name="value">
185
                    <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
186
                     <super classname="com.jeta.forms.store.properties.BorderProperty">
187
                      <at name="name">border</at>
188
                     </super>
189
                    </object>
190
                   </at>
191
                  </item>
192
                 </object>
193
                </at>
194
               </object>
195
              </at>
196
             </object>
197
            </at>
198
           </object>
199
          </at>
200
         </object>
201
        </at>
202
        <at name="cellpainters">
203
         <object classname="com.jeta.forms.store.support.Matrix">
204
          <at name="rows">
205
           <object classname="[Ljava.lang.Object;" size="1">
206
            <at name="item" index="0">
207
             <object classname="[Ljava.lang.Object;" size="3"/>
208
            </at>
209
           </object>
210
          </at>
211
         </object>
212
        </at>
213
        <at name="rowgroups">
214
         <object classname="com.jeta.forms.store.memento.FormGroupSet">
215
          <at name="groups">
216
           <object classname="java.util.HashMap"/>
217
          </at>
218
         </object>
219
        </at>
220
        <at name="colgroups">
221
         <object classname="com.jeta.forms.store.memento.FormGroupSet">
222
          <at name="groups">
223
           <object classname="java.util.HashMap"/>
224
          </at>
225
         </object>
226
        </at>
227
       </object>
228
      </at>
229
     </item>
230
     <item >
231
      <at name="value">
232
       <object classname="com.jeta.forms.store.memento.BeanMemento">
233
        <super classname="com.jeta.forms.store.memento.ComponentMemento">
234
         <at name="cellconstraints">
235
          <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
236
           <at name="column">2</at>
237
           <at name="row">4</at>
238
           <at name="colspan">1</at>
239
           <at name="rowspan">1</at>
240
           <at name="halign">default</at>
241
           <at name="valign">default</at>
242
           <at name="insets" object="insets">0,0,0,0</at>
243
          </object>
244
         </at>
245
         <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
246
        </super>
247
        <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
248
        <at name="beanclass">javax.swing.JRadioButton</at>
249
        <at name="beanproperties">
250
         <object classname="com.jeta.forms.store.memento.PropertiesMemento">
251
          <at name="classname">javax.swing.JRadioButton</at>
252
          <at name="properties">
253
           <object classname="com.jeta.forms.store.support.PropertyMap">
254
            <at name="border">
255
             <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
256
              <super classname="com.jeta.forms.store.properties.BorderProperty">
257
               <at name="name">border</at>
258
              </super>
259
              <at name="borders">
260
               <object classname="java.util.LinkedList">
261
                <item >
262
                 <at name="value">
263
                  <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
264
                   <super classname="com.jeta.forms.store.properties.BorderProperty">
265
                    <at name="name">border</at>
266
                   </super>
267
                  </object>
268
                 </at>
269
                </item>
270
               </object>
271
              </at>
272
             </object>
273
            </at>
274
            <at name="actionCommand">Use color ramp</at>
275
            <at name="buttonGroup">
276
             <object classname="com.jeta.forms.store.properties.ButtonGroupProperty">
277
              <at name="name">buttonGroup</at>
278
              <at name="groupname">1</at>
279
             </object>
280
            </at>
281
            <at name="name">rdbUseColorRamp</at>
282
            <at name="width">107</at>
283
            <at name="text">Use color ramp</at>
284
            <at name="height">16</at>
285
           </object>
286
          </at>
287
         </object>
288
        </at>
289
       </object>
290
      </at>
291
     </item>
292
     <item >
293
      <at name="value">
294
       <object classname="com.jeta.forms.store.memento.BeanMemento">
295
        <super classname="com.jeta.forms.store.memento.ComponentMemento">
296
         <at name="cellconstraints">
297
          <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
298
           <at name="column">2</at>
299
           <at name="row">2</at>
300
           <at name="colspan">1</at>
301
           <at name="rowspan">1</at>
302
           <at name="halign">default</at>
303
           <at name="valign">default</at>
304
           <at name="insets" object="insets">0,0,0,0</at>
305
          </object>
306
         </at>
307
         <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
308
        </super>
309
        <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
310
        <at name="beanclass">com.jeta.forms.components.label.JETALabel</at>
311
        <at name="beanproperties">
312
         <object classname="com.jeta.forms.store.memento.PropertiesMemento">
313
          <at name="classname">com.jeta.forms.components.label.JETALabel</at>
314
          <at name="properties">
315
           <object classname="com.jeta.forms.store.support.PropertyMap">
316
            <at name="border">
317
             <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
318
              <super classname="com.jeta.forms.store.properties.BorderProperty">
319
               <at name="name">border</at>
320
              </super>
321
              <at name="borders">
322
               <object classname="java.util.LinkedList">
323
                <item >
324
                 <at name="value">
325
                  <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
326
                   <super classname="com.jeta.forms.store.properties.BorderProperty">
327
                    <at name="name">border</at>
328
                   </super>
329
                  </object>
330
                 </at>
331
                </item>
332
               </object>
333
              </at>
334
             </object>
335
            </at>
336
            <at name="name">lblDistance</at>
337
            <at name="width">107</at>
338
            <at name="text">Distance</at>
339
            <at name="fill">
340
             <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
341
              <at name="name">fill</at>
342
             </object>
343
            </at>
344
            <at name="height">14</at>
345
           </object>
346
          </at>
347
         </object>
348
        </at>
349
       </object>
350
      </at>
351
     </item>
352
     <item >
353
      <at name="value">
354
       <object classname="com.jeta.forms.store.memento.FormMemento">
355
        <super classname="com.jeta.forms.store.memento.ComponentMemento">
356
         <at name="cellconstraints">
357
          <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
358
           <at name="column">2</at>
359
           <at name="row">6</at>
360
           <at name="colspan">3</at>
361
           <at name="rowspan">1</at>
362
           <at name="halign">default</at>
363
           <at name="valign">default</at>
364
           <at name="insets" object="insets">0,0,0,0</at>
365
          </object>
366
         </at>
367
         <at name="componentclass">com.jeta.forms.gui.form.FormComponent</at>
368
        </super>
369
        <at name="id">embedded.571437969</at>
370
        <at name="rowspecs">CENTER:DEFAULT:NONE,CENTER:4DLU:NONE,CENTER:DEFAULT:NONE,CENTER:4DLU:NONE,CENTER:DEFAULT:NONE</at>
371
        <at name="colspecs">FILL:DEFAULT:NONE,FILL:DEFAULT:NONE,FILL:DEFAULT:NONE,FILL:DEFAULT:GROW(1.0)</at>
372
        <at name="components">
373
         <object classname="java.util.LinkedList">
374
          <item >
375
           <at name="value">
376
            <object classname="com.jeta.forms.store.memento.BeanMemento">
377
             <super classname="com.jeta.forms.store.memento.ComponentMemento">
378
              <at name="cellconstraints">
379
               <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
380
                <at name="column">2</at>
381
                <at name="row">3</at>
382
                <at name="colspan">1</at>
383
                <at name="rowspan">1</at>
384
                <at name="halign">default</at>
385
                <at name="valign">default</at>
386
                <at name="insets" object="insets">0,0,0,0</at>
387
               </object>
388
              </at>
389
              <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
390
             </super>
391
             <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
392
             <at name="beanclass">com.jeta.forms.components.label.JETALabel</at>
393
             <at name="beanproperties">
394
              <object classname="com.jeta.forms.store.memento.PropertiesMemento">
395
               <at name="classname">com.jeta.forms.components.label.JETALabel</at>
396
               <at name="properties">
397
                <object classname="com.jeta.forms.store.support.PropertyMap">
398
                 <at name="border">
399
                  <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
400
                   <super classname="com.jeta.forms.store.properties.BorderProperty">
401
                    <at name="name">border</at>
402
                   </super>
403
                   <at name="borders">
404
                    <object classname="java.util.LinkedList">
405
                     <item >
406
                      <at name="value">
407
                       <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
408
                        <super classname="com.jeta.forms.store.properties.BorderProperty">
409
                         <at name="name">border</at>
410
                        </super>
411
                       </object>
412
                      </at>
413
                     </item>
414
                    </object>
415
                   </at>
416
                  </object>
417
                 </at>
418
                 <at name="name">lblHotColor</at>
419
                 <at name="width">99</at>
420
                 <at name="text">Hot color</at>
421
                 <at name="fill">
422
                  <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
423
                   <at name="name">fill</at>
424
                  </object>
425
                 </at>
426
                 <at name="height">14</at>
427
                </object>
428
               </at>
429
              </object>
430
             </at>
431
            </object>
432
           </at>
433
          </item>
434
          <item >
435
           <at name="value">
436
            <object classname="com.jeta.forms.store.memento.BeanMemento">
437
             <super classname="com.jeta.forms.store.memento.ComponentMemento">
438
              <at name="cellconstraints">
439
               <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
440
                <at name="column">2</at>
441
                <at name="row">5</at>
442
                <at name="colspan">1</at>
443
                <at name="rowspan">1</at>
444
                <at name="halign">default</at>
445
                <at name="valign">default</at>
446
                <at name="insets" object="insets">0,0,0,0</at>
447
               </object>
448
              </at>
449
              <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
450
             </super>
451
             <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
452
             <at name="beanclass">com.jeta.forms.components.label.JETALabel</at>
453
             <at name="beanproperties">
454
              <object classname="com.jeta.forms.store.memento.PropertiesMemento">
455
               <at name="classname">com.jeta.forms.components.label.JETALabel</at>
456
               <at name="properties">
457
                <object classname="com.jeta.forms.store.support.PropertyMap">
458
                 <at name="border">
459
                  <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
460
                   <super classname="com.jeta.forms.store.properties.BorderProperty">
461
                    <at name="name">border</at>
462
                   </super>
463
                   <at name="borders">
464
                    <object classname="java.util.LinkedList">
465
                     <item >
466
                      <at name="value">
467
                       <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
468
                        <super classname="com.jeta.forms.store.properties.BorderProperty">
469
                         <at name="name">border</at>
470
                        </super>
471
                       </object>
472
                      </at>
473
                     </item>
474
                    </object>
475
                   </at>
476
                  </object>
477
                 </at>
478
                 <at name="name">lblColdColor</at>
479
                 <at name="width">99</at>
480
                 <at name="text">Cold color</at>
481
                 <at name="fill">
482
                  <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
483
                   <at name="name">fill</at>
484
                  </object>
485
                 </at>
486
                 <at name="height">14</at>
487
                </object>
488
               </at>
489
              </object>
490
             </at>
491
            </object>
492
           </at>
493
          </item>
494
          <item >
495
           <at name="value">
496
            <object classname="com.jeta.forms.store.memento.FormMemento">
497
             <super classname="com.jeta.forms.store.memento.ComponentMemento">
498
              <at name="cellconstraints">
499
               <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
500
                <at name="column">4</at>
501
                <at name="row">3</at>
502
                <at name="colspan">1</at>
503
                <at name="rowspan">1</at>
504
                <at name="halign">default</at>
505
                <at name="valign">default</at>
506
                <at name="insets" object="insets">0,0,0,0</at>
507
               </object>
508
              </at>
509
              <at name="componentclass">com.jeta.forms.gui.form.FormComponent</at>
510
             </super>
511
             <at name="id">embedded.619806757</at>
512
             <at name="rowspecs">CENTER:DEFAULT:NONE</at>
513
             <at name="colspecs">FILL:DEFAULT:GROW(1.0),FILL:4DLU:NONE,FILL:DEFAULT:NONE,FILL:4DLU:NONE,FILL:DEFAULT:NONE,FILL:4DLU:NONE,LEFT:DEFAULT:NONE</at>
514
             <at name="components">
515
              <object classname="java.util.LinkedList">
516
               <item >
517
                <at name="value">
518
                 <object classname="com.jeta.forms.store.memento.BeanMemento">
519
                  <super classname="com.jeta.forms.store.memento.ComponentMemento">
520
                   <at name="cellconstraints">
521
                    <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
522
                     <at name="column">1</at>
523
                     <at name="row">1</at>
524
                     <at name="colspan">1</at>
525
                     <at name="rowspan">1</at>
526
                     <at name="halign">default</at>
527
                     <at name="valign">default</at>
528
                     <at name="insets" object="insets">0,0,0,0</at>
529
                    </object>
530
                   </at>
531
                   <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
532
                  </super>
533
                  <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
534
                  <at name="beanclass">javax.swing.JTextField</at>
535
                  <at name="beanproperties">
536
                   <object classname="com.jeta.forms.store.memento.PropertiesMemento">
537
                    <at name="classname">javax.swing.JTextField</at>
538
                    <at name="properties">
539
                     <object classname="com.jeta.forms.store.support.PropertyMap">
540
                      <at name="border">
541
                       <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
542
                        <super classname="com.jeta.forms.store.properties.BorderProperty">
543
                         <at name="name">border</at>
544
                        </super>
545
                        <at name="borders">
546
                         <object classname="java.util.LinkedList">
547
                          <item >
548
                           <at name="value">
549
                            <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
550
                             <super classname="com.jeta.forms.store.properties.BorderProperty">
551
                              <at name="name">border</at>
552
                             </super>
553
                            </object>
554
                           </at>
555
                          </item>
556
                         </object>
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff