forked from leif81/openmap
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGELOG
4391 lines (3435 loc) · 191 KB
/
CHANGELOG
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
2013-08-19 dietrick <[email protected]>
* Added the GoogleMapTileFactory as an example of how to extend
the MapTileFactory to contact different services. Added the
ability for MapTileLayer to display map data attribution.
2013-07-27 dietrick <[email protected]>
* Moved default LINETYPE for shape files from GREAT_CIRLCE to
STRAIGHT. That should speed things up a bit.
* Added com.bbn.openmap.layer.learn.SimpleAnimationLayer, a little
tutorial example of doing animation on OpenMap. Borrows a lot for
the AnimationTester, which was also refreshed.
* Added OMGraphicHandler to the interfaces that
OMGraphicHandlerLayer implements. It used to implement that
interface, and should have been, obviously.
* Fixed off-by-one errors in the AreaHandler.
2013-07-03 dietrick <[email protected]>
* Fixed some JavaDoc errors, added update to Gnomonic Projection.
2013-07-03 dietrick <[email protected]>
* Released OpenMap 5.0.1
2013-06-19 dietrick <[email protected]>
* Added NPE checks to BufferedImageRenderPolicy and OMScalingRaster.
* Added width acessors to OMText. Added Executor methods to
TaskService to allow customization and control for Layer
threading.
2013-05-20 dietrick <[email protected]>
* Updates to OMScalingRaster to gracefully handle memory
exceptions if the scaled image is too big. Updated javadocs and
java comments in these classes, added Logger for ScaleFilterLayer.
* Refactored the LayerHandler so it uses a List<Layer> internally
to manage Layers. Created the LayerConfigurationListener interface
and LayerConfigurationListenerSupport object, both of which are
used by the LayerHandler to pre-notify components when the active
layers for the application are about to change. The
LayerConfigurationListener has the opportunity to make
modifications to the layer configuration, or change visibility of
other layers, etc. Added the BasicLayerConfigurationListener, an
example component that changes the projection of the MapBean to
CADRG if an RpfLayer is active.
2013-04-13 dietrick <[email protected]>
* Cleaned up debugging. Updated LOS code API for better control.
Updated WMSPlugIn setProperties so the current values aren't
zeroed out of they aren't set.
2013-04-23 dietrick <[email protected]>
* Moved the smarts for zoom levels out of the MapTileMaker class
and put them in the MapTileCoordinateTransform classes. Added
AbstractMapTileCoordinateTransform class to merge similar methods
and functionality for existing mtct classes. Updated other
classes to call mtc functions instead of MapTileMaker static
functions.
2013-04-16 dietrick <[email protected]>
* Added RelayMapTileSet for MapTileServlet, which fetches tiles
from a remote server and caches them locally. Updated
TerrainLayer to eliminate some verbose error messages.
* Added Kevin's (kpfarr) fix to RpfTocHandler for merging entry
coverages properly.
2013-03-02 dietrick <[email protected]>
* Added the ClckOrDrgUndefinedState to the omGraphics.editable
package, which is now the super class of LineUndefinedState,
RectUndefinedState and CircleUndefined state. Lines, Rects and
Circles can now be defined with a click and mouse move to next
point, or with a press and drag to the next point, just like
polys.
2013-03-01 dietrick <[email protected]>
* Fixed the ImageTile outline behavior on projection changes.
Fixed bug in GeoTIFF code introduced via a FindBugs modification,
and tweaked the ImageTileLayer GUI to handle list selection
better.
2013-02-28 dietrick <[email protected]>
* Added some data/vpf vmaplv0 configuration files with more
instructions on how to use the VPFFeatureLayer.
* Fixed the VPF attribute fetching with proper indexes. The VPF
package api changed in a deep section, to allow the proper feature
id to be passed to the place where it's needed to fetch
attributes.
* Added intersets method to DataBounds. Can be tested with new
BoundsTestLayer in layer.test package.
* Updated SwingWorker and PooledSwingWorker to use FutureTask
objects, reducing the number of threads that are created. Updated
OMGraphicHandlerLayer.workerComplete to take a ISwingWorker in its
signature.
* Modified DemoLayer to have separate OMGraphicList for storage,
loading aux OMGraphicList for painting.
2013-02-27 dietrick <[email protected]>
* Made a bunch of adjustments as recommended by FindBug, regarding
null pointer checks, equality checks, stuff like that.
* Added AzimuthPanner abstract class with Standard and Shapefile
subclasses. This class is used by the PanMouseMode and
OMMouseMode for panning when the projection is Azimuthal. The
modes used to translate the map image, the new class renders
things instead. The AzimuthPanner.Standard is used if a shapefile
for the mousemode is not defined.
* Modified how the DrawingToolLayer tool buttons react to
toggling. Toggling the tool button will deactivate the drawing
tool, returning mouse control to the application.
* Updated the mapTile package, allowing the frames to be defined
by a regex that fits how to ask for tiles from a server or
directory location. Locations can include {x}{y}{z} where x,y,z
are x and y tile coordinates at z zoom level. This regex can be
defined as the rootDir of a MapTileLayer.
* Fixed the BeanBox example, since it was moved. Updated the
manifest.txt to remove outdated beans.
2012-01-27 dietrick <[email protected]>
* Added the maptileservlet package. This servlet package provide
map tiles and can be used with the MapTileLayer using the
ServerMapTileFactory, and can also be easily be used with Leaflet.
* Misc updates to remove extra semi-colons and fixed some
compiling warnings.
* Modified OMArc to take a Point2D object instead of a
LatLonPoint. This allows it to be used with the Cartesian
projection.
* Modified WholeWorldTileHandler to have more control over how it
creates jar files holding map tiles. Can now create specific
subjars, control whether the master jar gets created, etc.
* Added TileMillMapTileFactory to
com.bbn.openmap.dataAccess.mapTile package, and also added the
sqlite jar to the ext directory. This MapTileFactory can read the
output tile database files created using the TileMill application.
* Tweaked the API, got rid of new Grey*TileFactory classes in the
com.bbn.openmap.dataAccess.mapTile package, created new
TileImagePreparer and added Grey and standard versions of that
instead. Now the StandardMapTileFactory and ServerMapTileFactory
can have different classes handing images, and those classes can
be swapped at runtime.
* Fixed build problems when ext directory was missing.
2011-12-23 Knox Rogers <[email protected]>
* OpenMap 5.0 released
2011-12-06 dietrick <[email protected]>
This entry is a summary of the changes made to OpenMap between the
4.6.5 release and the 5.0 release. The API has changed
significantly for the Projection classes, and that's the main
reason for the major version change.
The Projection classes used to translate decimal degree lat/lon
point objects to java.awt.Point x/y pixel coordinates. The new
Projection classes make translations using Point2D objects.
LatLonPoint has been moved inside the com.bbn.openmap.proj.coords
package, and now extends Point2D. The pixel locations returned
from the Projection are also Point2D objects. If you've written
any code that calls Projection methods, you may have to modify
that code to work with the changes.
Throughout the code, there have been changes to incorporate
Generic types, utilizing StringBuilder methods, moving from the
com.bbn.openmap.util.Debug class to the Java logging mechanism,
implementing equals() and hashcode() methods.
OM5 requires the Java 5 runtime.
* com.bbn.openmap
Updated BufferedMapBean to handle panning better, shifting current
map image appropriately until the layers react to the projection
change.
The Layer class has been updated to have a GeoCoordTransformation
member variable, for data that isn't stored in decimal degree
lat/lon coordinates.
MapBean updated to have a handle on its ProjectionFactory.
Update the MapHandler class with generified methods.
Added the notion of isolation to the MapHandlerChild, so it will
ignore BeanContext events it receives from other BeanContext
objects that it doesn't know about.
Updated PropertyHandler so it's not tied to the openmap.properties file name.
* com.bbn.openmap.app
Added a couple of new application-type classes. The Main
application represents the new OpenMap app look, and it utilizes
the new OverlayMapPanel.
The TimeFrameApp uses the HotwashPanel and some of the new time
management components.
* com.bbn.openmap.app.example
Moved SimpleMap and SimpleMap2 here.
* com.bbn.openmap.dataAccess.cgm
Added components that all more sections of the CGM files to be
read, like constants, colormodel, colortable, marker
representation and marker size.
* com.bbn.openmap.dataAccess.mapTile
This new package deals with map image tiles, the kind that are
used in OpenStreetMap/Google/GDAL tiles, etc.
The MapTileFactory classes read tile sets for the MapTileLayer and
creates images for display on the map.
The StandardMapTileFactory reads tiles stored locally.
The ServerMapTileFactory can fetch tiles from a URL (where tiles
are stored under a root location plus z/x/y.png type location).
The ServerMapTileFactory will store the images it fetches locally
to reduce the load on the server. The
GreyStandard/ServerMapTileFactory classes convert the images to
greyscale.
The EmptyTileHandler classes tell the factory classes how to
handle missing tiles, whether to do nothing, create new tiles or
use a default tile to fill the area in.
The OpenStreetMap tiles are stored a little differently than tiles
that meet the TileMappingService configuration (like the tiles
GDAL creates). You can use the OSMMapTileCoordinateTransform for
OpenMap/OpenStreetMap tile sets, and the
TMSMapTileCoordinateTransform for GDAL image tile sets.
The MapTileMaker can create map tile sets from OpenMap layers.
The MapTileMakerComponent can be added to the OpenMap application
to visualy define and launch MapTileMaker tile creation.
* com.bbn.openmap.dataAccess.shape
Added a DbfTableModelFactory class that helps create DbfTableModel
for an EsriGraphicList when the data is read in.
Added ShapeGeoIndex, an ExtentIndex implementation created from a
shape file. This ExtentIndex can be used with the uses the
com.bbn.openmap.geo package components to discover intersections
with other extents (points, paths, regions, etc).
* com.bbn.openmap.event
Added two new sets of event objects. Added OMEvent class, which
is a object representing something that happens at a certain time.
The OMEvent class is accompanied by the OMEventComparator and
OMEventHandler, and some other components to aid in selection and
filtering of OMEvents. These component tie into the new
com.bbn.openmap.time components and TemporalOMGraphics.
Added Undo classes (UndoEvent, UndoStack, UndoStackSupport and
UndoStackTrigger). These components are currently used by the
drawing tool undo/redo capability, but can be used by any
component that wants to save and restore state.
Added the OMMouseMode, which is a combination of the PanMouseMode
and SelectionMouseMode. The behavior is similar to
standard/expected web map mouse behavior.
* com.bbn.openmap.examples
Removed this package. The beanbox example is now under
com.bbn.openmap.layer.beanbox. hello and crew packages were
obsolete, and the simple applications have been moved up to app.
* com.bbn.openmap.gui
Added the OverlayMapPanel, an extension of BasicMapPanel that
knows how to layer other components with the map so they appear as
if they are floating on it. The EmbeddedNavPanel and
EmbeddedScaleDisplayPanel are two components the OverlayMapPanel
uses. The DistQuickTool is used by the panel to quickly measure
distances on the map.
The HotwashPanel is a new BasicMapPanel that has sliders built
into it. It was created to house the new time controls and event
lists on the bottom and to the left.
The event subpackage contains components that manage and display
OMTime events.
* com.bbn.openmap.image.wms incorporated many changes from Tore
Haslet that added compatibility with WMS 1.3, including
capabilities queries and projection translations.
* com.bbn.openmap.layer.event
Added the EventLayer and supporting components. The EventLayer
handles TemporalOMGraphics and uses the new com.bbn.openmap.time
management components.
* com.bbn.openmap.layer.imageTile
Added the MapTileLayer. The layer uses the new
com.bbn.openmap.dataAccess.mapTile components to render
OpenStreetMap/GDAL/Google map tiles.
* com.bbn.openmap.layer
Updated OMGraphicHandlerLayer to utilize the new ISwingWorker classes.
* com.bbn.openmap.layer.policy
Added NullProjectionChangePolicy that does nothing when the
projection changes, and added the PanningImageRenderPolicy, to be
used by layers that want to redraw what they have when the
projection changes. A buffered image is reprojected and reused
until the layer can update for the new projection.
* com.bbn.openmap.layer.util
Added DataPathWanderer class, extending Wanderer, that finds valid
data paths for a data user. Base class for creating a data auto-finder.
* com.bbn.openmap.layer.vpf
Added VPFFeatureLayer and supporting classes. This layer uses
priorty files and GeoSym information/cgm files to order and render
features from VPF. New files added to share/data/vpf directory to
support DNC.
Added VPFFeatureInfoHandler that lets you get attribute
information for features. Configurable via properties. Can be
extended to display attribute in different ways. The
TTFeatureInfoHandler displays attributes in a tooltip.
* com.bbn.openmap.omGraphics
The OMGraphics have been updated to double precision.
OMGraphic is now an interface, with OMGraphicAdapter being the base class.
DrawingAttributes have new transfer methods that make it easier to
clone and copy settings. Added Builder class to make it easier to
make it more convenient to create and make settings on a new
instance.
Added GraphicUndefinedEditState to the editable subpackage, for
OMGraphics in the process of being defined by the drawing tool.
It's a state that defines when an OMGraphic is only partially
defined.
OMGraphicList and OMGeometryList extend OMList, which itself
implements the List interface. They are now iterable, and use
Generic Types to define what is held in them.
Added OMWarpingImage, which is a raster OMGraphicClass that warps
its image to the current OpenMap projection (during generate).
Added the time subpackage, which defines interfaces for OMGraphics
that change over time. TemporalOMPoint and TemporalOMScalingIcon
are two implementations of that interface.
Added ImageWarp class to the util subpackage, which does the
heaving lifting work of the OMWarpingImage.
Added RibbonMaker class to the util subpackage, which creates a
buffer area around a vector shape.
* com.bbn.openmap.proj
The proj package classes have undergone a significant API change,
as described in the summary above. For the top-level Proj class
and Projection interface, the Point references for projected
locations have been replaced with Point2D objects. The
LatLonPoint references have been replaced with Point2D references.
The old projection classes now extend the GeoProj class, and the
Point2D objects meant to indicate latitude/longitude points are
LatLonPoints.
There is a Cartesian projection for standard X/Y drawing. You can
use the OMShape object for drawing things in a Cartiesian
projection. Other OMGraphics will work too, but the lat/lon
coordinates are interpreted as x/y coordinates.
Deleted the ProjectionFactoryLoader and the View classes. The
ProjectionFactory is no longer a singleton, there's a different
ProjectionFactory for each MapBean, and each MapBean can have a
different set of Projections it can handle.
* com.bbn.openmap.proj.coords
All of the coordinate point classes and methods have been moved
here, including LatLonPoint and VHTransform. Updates to GCT
classes.
LatLonPoint was rewritten to inherit from Point2D, and is modeled
after that class with Float and Double implementations. Note that
overridden Point2D methods have (x,y) signatures, while
LatLonPoint.setLocation(lat, lon) methods have (y, x) signatures.
* com.bbn.openmap.time
Created new time package, moved older time components here just to
make them more application-friendly. Added components that
understand the notion of time bounds and managing the notion of a
point in time.
* com.bbn.openmap.tools.drawing
Updated OMDrawingTool to use UndoStack and triggers to handle edit
undos and redos.
* com.bbn.openmap.tools.symbology.milStd2525
Added SVGSourceFileReorganizer, a class that takes the
distribution package from DISA and flattens the files out into a
target directory, renaming them as needed for the
SymbolReferenceLibrary.
* com.bbn.openmap.util package
Added AbstractXMLParser class, a base class for XML parsing, wraps
the DefaultHandler java class.
Added Attributable interface, describing classes that can handle
an attribute map.
Added ClasspathHacker, which adds jars to classpath at runtime.
Added MGRSCoordInfoFormatter, which formats coordinates into MGRS format.
DataBounds updated to use Point2D objects, add method added.
Added DeepCopyUtil, which handles cloning propery. OMGraphics updated to use it.
FileUtils updated to have new zip writing algorithm, methods.
Added HashCodeUtil to assist in creating proper hash code values.
Added ISwingWorker interface and updated OMGraphicHandlerLayer to
use it, so other implementions could be used in the layer. Added
PooledSwingWorker, implementing a reuseable SwingWorker. Added
TaskService to manage SwingWorkers.
PropUtils added methods to create objects from property
list (standard openmap.properties paradigm). parseColor method
returns a Paint object instead of a Color object.
Updated Wanderer class to be able to handle exhaustive and
non-exhaustive searches.
Moved former com.bbn.openmap.layer.util.http/html/stateMachine
packages to this util package.
2009-03-26 Don Dietrick <[email protected]>
* Refined the DTED packages, removing duplicate classes in
com.bbn.openmap.layer.dted and having those classes refer to the
com.bbn.openmap.dataAccess.dted package contents. The
com.bbn.openmap.layer.dted.DTEDFrame has been changed to
DTEDSubframedFrame, and now extends the DTEDFrame class in
dataAccess.dted. The DTEDLayer is the main class in
com.bbn.openmap.layer.dted, and those classes use the
DTEDSubframedFrame. The
com.bbn.openmap.layer.dted.DTEDFrameCacheLayer uses the classes in
the com.bbn.openmap.dataAccess.dted package. The choice between
the two is memory usage (when DTED is used by other components it
can also be used by DTEDFrameCacheLayer) vs
speed (the DTEDLayer is faster).
2009-03-24 Don Dietrick <[email protected]>
* Added com.bbn.openmap.omGraphics.util.ImageWarp, which takes an
image file and warps it to fit a given projection. Can be created
with a image path or BufferedImage, takes a DataBounds or
WorldFile object to specify where the image is, and also takes a
GeoCoordsTransformation to handle preprojected images. Also added
the com.bbn.openmap.omGraphic.OMWarpingImage that wraps around an
ImageWarp object to display the image on the map as an OMGraphic.
* Modified the DataBounds object to provide height and width
calculations (deltas between max and mix), and can also have an
internal DataBounds object that serves as hard limits for added
values. The hard limits override any point values that may be
added.
* Simplified the OMApplet.html file, with simple APPLET tags.
* Removed com.bbn.openmap.LatLonPoint. The
com.bbn.openmap.proj.coords.LatLonPoint is the class to use now.
* Fixed problem where the ProjectionSupport thread continued to
run, preventing garbage collection of the MapPanel and all its
contents. That thread gets interrupted when the MapBean is
disposed. Added dispose() methods on MapPanel, MapBean,
ProjectionSupport, OpenMapFrame that release objects. Dispose
should be called on the MapHandler, and when OMComponents detect
they have been removed from the MapHandler in their findAndUndo
method, they should call dispose() on themselves if they have that
method.
* The ProjectionFactory is no longer a singleton. A
ProjectionFactory is expected to be placed in a MapHandler, where
it will attach itself to the MapBean and can be accessed through
the MapBean. If a ProjectionFactory is not set and requested from
the MapBean, the MapBean will create a ProjectionFactory with the
default set of ProjectionLoaders. The ProjectionFactoryLoader
class has been removed, and that functionality (creating
ProjectionLoaders from Properties) has been incorporated into the
ProjectionFactory. The ProjectionFactory should be created like
any other component added to the MapHandler, via the properties or
programmatically added to the MapHandler.
2009-03-14 Don Dietrick <[email protected]>
* OpenMap 5.0 released as beta via SVN repository. All further
changes will apply to version 5.0. OpenMap 5.0 requires Java 5
(jre 1.5.x).
* The com.bbn.openmap.proj.coords.LatLonPoint has been created
and it extends java.awt.Point2D. You can instantiate
LatLonPoint.Double and LatLonPoint.Float classes, just like
Point2D. Note that the Point2D methods follow the x, y ordering
of arguments, but that the setLocation() methods of LatLonPoint
follow the lat, lon ordering. The old LatLonPoint currently
extends the new LatLonPoint.Float object.
* The Proj/Projection class and interface are now based on
java.awt.Point2D objects. The GeoProj class extends Projection,
and Point2D objects in coordinate space are now LatLonPoints as
allowed with Generics. The Cartesian projection handles projected
data.
* The OMShape object is added to handle cartesian shapes, taking
java.awt.Shape objects and managed as an OMGraphic.
2009-03-05 Don Dietrick <[email protected]>
* OpenMap 4.6.5 released.
2009-02-27 Don Dietrick <[email protected]>
* The CSVTokenizer was updated to properly handle empty fields in
front and end of lines.
* The projection package was updated with the DatumShiftProjection
which wraps projections to provide datum shifting. The
CoordinateReferenceSystem has been updated to use new
GeoCoordTransformation objects for different projection types.
* For OMGraphics, the EditableOMPoly, OMGraphicList and OMText all
had minor bug fixes. Polygons are now re-editable after colors
are modified, OMGraphicLists had selection problems patched, and
OMText FontSizer setter was fixed.
* MapHandler was modified with an overriding remove method that
also checks to see if an object being removed was a
BeanContextMembershipListener. The parent class was adding such
objects to a special list when they were added, but not removing
them from that list when they were removed from the context. This
was causing a memory leak of sorts.
* Added MapBean.dispose() method, which cleans up the projection
support thread and releases lingering handles on layer objects.
ProjectionSupport also has dispose() method that is called to
clean up.
* Layer.setProperties() functionality was broken out to a
setLayerProperties() method so subclasses could override
setProperties() and still get to to the superclass functionality
if desired.
* Updated the ShapeLayer and package. The SpatialIndex no longer
needs to be defined, it will be found or made next to the shape
file. The dbf file will automatically be used if found, and the
DbfFile rule handling was improved. All of the various Shape
layers in the com.bbn.openmap.layer.shape package were update to
work using the same EsriGraphicFactory mechanisms.
* BinaryFile modified with improved name handling for
FileInputReader, separating absolute path and file name queries.
ByteArrayInputReader added to allow BinaryFile to contain entire
file in memory.
* WMS package updated to have capabilies query handling, improved
layer control and new SRS handling. The WMSPlugIn was updated to
WMS version 1.1.1 and has better query handling.
* Added method to ConvexHull to allow for tolerances when trying
to determine equal points to reduce the number of unnecessary
points in the resulting polygon.
* Added the CoordInfoFormatter and CoordInfoFormatHandler to make
it easier to define how coordinates were displayed in the
InformationDelegator from CoordMouseModes.
* Updated dbf attribute type handing and handling of null cells.
Padding with spaces instead of null characters.
2008-02-29 Don Dietrick <[email protected]>
* OpenMap 4.6.4 released.
2008-02-27 Don Dietrick <[email protected]>
* Updated the PropertyHandler to have its own property prefix. This
property prefix is used by the PropertyHandler when it looks for a
properties file, and when it looks inside the properties file for
application level properties, like the components list, include
files, and the configuration directory. Where the PropertyHandler
used to only be able to look for an openmap.properties file that
contained an openmap.components property, you can now define a
different prefix for the file and property.
* The com.bbn.openmap.util.propertyEditor.Inspector was updated to
provide a simple GUI that can be inserted on behalf of a
PropertyConsumer, without providing window controls, etc. It can
be used just to provide the widgets for the PropertyConsumer
adjustments.
The DrawingAttributesPropertyEditor was created as an example of
creating a property editor widget that can control multiple
properties in a single GUI widget.
* The com.bbn.openmap.util.cacheHandler package was added,
allowing for a more generic caching mechanism than was provided by
the com.bbn.openmap.layer.util.cacheHandler package.
* The GeoCoordTransformation interface was added, providing a
mechanism that allows transformations from pre-projected
coordinates into lat/lon space. The
com.bbn.openmap.dataAccess.shape classes can use the
GeoCoordTransformation objects in order to display pre-projected
shape data. Several GCTs have been implemented, including
LatLonGCT, MercatorGCT, UTMGCT. A CoordinateReferenceSystem
object also uses the GCTs, and assists the WMS server code in
handling requests.
The MGRSPoint was updated to handle zone letters correctly,
instead of defaulting to UTM values.
* UTMProjection added.
* OMGraphic improvements:
- OMEllipses with XY and OFFSET rendertypes were added.
- OMGraphicHash was added.
- OMTextLabeler was updated to handle different anchor locations.
- OMPoint.Image class was added, an OMPoint that uses an Image to
mark the location. The image does not change size with respect to
map scale, as the OMScalingIcon does.
- OMGraphicList findAll() method fixed when inner vague lists were
used.
- The EditableOMGraphic GUIs for Text and Range Rings were updated
to have better persistence across different OMGraphics.
- The DrawingAttributes GUI, including the color settings, was
moved into the pop-up menu, replacing all of the buttons. Just
the stroke button remains, and the colors on that button adjust
according to the DrawingAttributes settings.
* The DrawingToolLauncher GUI was updated to handle the
DrawingAttributes GUI changes.
* The VPFConfig class was modified to maintain knowledge of
current features set on a VPFLayer that it is modifying.
* The RPF Layer code was improved. The RPFCacheHandler was
modified to reduce the number of bytes utilized in the cache
tracking mechanism, which greatly decreases memory usage for large
datasets. The RPFFrameEntry was modified to use fewer bytes for
file name storage, also saving memory for large datasets.
The RPFLayer was modified to use the OMGraphicHandlerLayer's
transparency mechanism, replacing the colortable mechanism that
was in place.
* The Link Protocol has been updated to version 0.5, with a
greatly reduced transmission footprint by making all of the field
headers one or two characters long. A cache mechanism was added
to the protocol and on the client Java code that allows values
sent previously to be reused for later graphics.
* Added com.bbn.openmap.layer.learn package, to hold layers that
serve as examples for specific capabilities. BasicLayer and
InteractionLayer added.
* OMGraphicHandlerLayer has improved SwingWorker threading
support, including the interruption mechanism and thread locking.
Transparency can now be set on any OMGraphicHandlerLayer, and
there is a GUI widget available that can be added to any palette.
* The DrawingToolLayer has improved file support, including
reading from multiple shape files to reproduce previous savings.
* The DeclutterMatrix has improved access to a java.awt.Graphics
object that prevents locking during multi-threaded access.
* The com.bbn.openmap.io.FileInputReader handles reopening files
that have been closed. The BinaryFile and BinaryBufferedFile can
now read unsigned shorts upon request.
* The com.bbn.openmap.image.wms package adds much better WMS
support, including handling GetCapabilities requests.
* The com.bbn.openmap.image.ImageScaler class was added, providing
better image scaling performance in the AbstractImageFormatter and
OMScalingRasters.
ImageFormatters now provide their content type for web delivery.
The ColorReducer class provides support for color reduction in
images, and the PNG32ImageFormatter and PNG8ImageFormatter was
added.
The WMS servlet was updated to handle the new web mapping server
support code.
* WindowSupport windows no longer shrink when it they are
repeatedly brought up. This fix affects the OverviewMapHandler,
LayersPanel, CoordPanel, Layer palettes, etc.
* The CoordPanel was updated to use WindowSupport, replacing the
CoordDialog and CoordInternalFrame.
* The new GeoArray object was created to improve memory management
and performance for the com.bbn.openmap.geo package components.
The ConvexHull and RadialRegion classes were also added to the
package.
* The ProjectionSupport threading model was improved, adding a
more robust threading lock mechanism during projection change
notifications.
* The PanMouseMode image management and projection handling was
improved.
* The AbstractMouseMode (affecting all mouse modes) has better
support for defining custom cursors and icons. Support for
specifying the zoom direction to mouse wheel relationship was
added.
* The com.bbn.openmap.dataAccess.shape package was updated to add
support for all Shape types. The EsriGraphicFactory class now
creates EsriGraphics from files and streams, and both the
com.bbn.openmap.plugin.esri and com.bbn.openmap.layer.shape
componets use this com.bbn.openmap.dataAccess.shape package. The
DbfFile class was created to allow better handling of dbf files,
providing a way to limit what fields are read out of a file and
kept in memory. The DbfHandler class was created to manage
EsriGraphics and their rendering attributes/labels/tooltips/info
based on the dbf file contents. The DbfHandler class lets you set
rules for dbf file contents so you can draw map objects different
based on attribute values. The ShapeLayer was updated to use this
class.
* iso8211 package had some bug fixes related to the DDFSubfields
and definitions.
* MapBean was updated to support ProjectionChangeVetoExceptions,
so that layers or other components can now limit what a projection
can change to.
* LayerHandler can now have it's own prefix to be used to define
layers in the properties file. Previously, the LayerHandler
looked for an 'openmap.layers' property for its layer list. While
'openmap.layers' still works, it now looks for a
'<markername>.layers' property first, where <markername> is the
keyword used to define the LayerHandler object instance in the
'openmap.components' property, or whatever Property prefix the
LayerHandler is given in the setProperties(...) method.
The LayerHandler was also updated to handle background layers
better, so that background layers show up at the bottom of layer
lists.
* Layer has hasGUI() can let component know if a GUI is available.
The LayerPanels use this to disable their palette icons if a GUI
is not available for a particular layer.
* LatLonPoint has been updated to contain many more functions to
assist with determining relationships with other
LatLonPoints (distance, etc).
* Added I18 supports for many more GUI components. This effort is
continuing.
* Added support for GeoTIFF and geocoded images via the
com.bbn.openmap.dataAccess.image package. This support is for
images that are in a equal-arc WGS84 decimal degree projection.
Relies on the JAI package being available on the host system. The
ImageTile class is a subclass of OMScalingRaster that handles the
display of these files. GeoTIFFs with embedded projection
information are handled, as well as other image formats with world
files. The com.bbn.openmap.layer.imageTile.ImageTileLayer is a
layer that handles the display of ImageTiles, and serves as an
example of how to use the new com.bbbn.openmap.dataAccess.image
package.
2006-02-14 Don Dietrick <[email protected]>
* Updated LayerHandler to manage layers in the MapHandler better.
Layers will only be added to the MapHandler if they don't know
about it already. Also, calling LayerHandler.init(Layer[]) has
been updated to check to see if Layers are removable, and honors
that setting. Non-removable layers will be added to the bottom of
the layer stack as the new layers are added. These layers will
also be added to the MapHandler as needed, where they previously
weren't. This fixes the bug where layers added to the application
as a result of loading a new properties file weren't being added
to the MapHandler.
* Updated BeanContextPlugIn to remove itself from the
BeanContext/MapHandler when it sees its own PlugIn layer being
removed. Made EsriPlugIn extend BeanContextPlugIn instead of
AbstractPlugIn. Cleaned up how DataBoundsProviders were handled
as they were removed from the MapHandler. PlugIns weren't being
removed properly.
* Added an attribute Hashtable to Layer.
* Updated the MapRequestHandler and ImageServer classes to handle
background Paints better. Map requests coming through the
MapRequestHandler no longer set the default background color, and
the ImageServer API has createImage(...) methods added to allow
the passing in of background Paint objects to be used for an
image. The background color can be set in the properties.
* Updated WindowSupport to have WSDisplay inner classes that
handle the differences between showing components in JFrames,
JDialogs and JInternalFrames. Components can specify which kind
of WSDisplay they wish to use when the create their WindowSupport
object, or they can let the WindowSupport object create the
default version for them. If the Environment.useInternalFrames
flag is set, then JDialogs will be used for components that don't
specify which WSDisplays to use. If the Environment flag is not
set, then the WindowSupport.defaultWindowSupportDisplayType static
member variable dictates what kind of window will be created.
Although the JFrame class is the default, there are accessors to
change that setting (WindowSupport.Frm.class,
WindowSupport.Dlg.class or WindowSupport.IntrnlFrm.class)
to suit your application.
2006-02-01 Bill Mackiewicz <[email protected]>
* OpenMap 4.6.3 released.
2006-01-24 Don Dietrick <[email protected]>
* Updated the ElevationBandGenerator in the
com.bbn.openmap.omGraphics.grid package, adding the loader and
ColorGeneratorLoader for it.
* Updated the CSVTiledImagePlugIn to use
FileCacheImageInputStreams to create BufferedImages, instead of
ImageIcons. This is in an effort to reduce memory usage for tiled
images.
* Updated the com.bbn.openmap.util.FileUtils object for better
options presented to the user, as well as methods that copy files
and zip/unzip files.
* Updated the Directory and File property editors to provide
better control over the options offered to the user.
* Added com.bbn.openmap.omGraphics.OMAbstractLine, which is now
the superclass of OMLine and OMPoly. Arrowheads were moved up to
this class, so polylines can now have arrowheads attached.
There's an editable version as well.
* EditableOMRangeRings were updated to estimate how may rings they
should have when changing units in the GUI. It used to maintain
the number it had, which could result in it being overwhelmed with
the new settings. Now it behaves as expected.
* Added bold and italic buttons to EditableOMText GUI.
* OMArrowHead was updated to allow more parameters to be chosen by
subclasses, making it easier to customize.
* Updated the OMGraphic serialization methods to handle strokes
better.
* OMGraphicList.findAll(...) method lets you give an x,y pixel point on
the map, and retrieve all of the OMGraphics under that point
within the provided pixel range.
* Added a Text Matte Color and Stroke, which, if set, will outline
the text characters with a matting rendered with that stroke.
* Updated the com.bbn.openmap.layer.vpf.VMAP2Shape class to use
the com.bbn.openmap.dataAccess.shape components to create shape
files.
* Set LayerUtils to be deprecated, you should use PropUtils
instead. The OpenMap components have been so updated. PropUtils
was updated to have all the same methods as LayerUtils did, with
some new ones including one that will set the proper
internationalized strings (setI18NPropertyInfo(...)) for the
getPropertyInfo() call of a PropertyConsumer.
* Added the RpfUtil class, which allows you to modify
(copy/delete/move) RPF data from RPF directories with filters that
let you specify scale, chart type, or location.
* Added Composites to the RenderPolicy API in
com.bbn.openmap.layer.policy. This allows the addition of
Composites to be added to a render policy to modify the rendering
process for that layer. You can add an AlphaComposite to a layer
this way in order to get it rendered with transparency.
* Updated AbstractLocationHandler to hold DrawingAttributes object
for names and location markers, instead of just holding a Color
for each. The Property GUI hasn't been updated yet, so the old
Color GUI still works. Added LocationHandler.NamePropertyPrefix
and LocationHandler.LocationPropertyPrefix to allow scoping for
properties.
"Fixed" the CSVLinkHandler, meaning that it works, but still needs
more work to be fully functional with property settings and
different rendering effects for lines and endpoints.
Updated CSVLocationHandler to have methods that can be overridden
when dealing with tokens and newly read info from the CSV file.
* Updated the DTEDLayer minScale property code to set the new
Layer maxScale member variable, keeping with the meaning of the
Layer's version. Removed the DTEDLayer's minScale property and
supporting methods.
* Added OMGraphicHandlerLayer.createLayerWorker() method to make
it easier to override and set customized LayerWorkers (threading
mechanism for layer work).
* Removed restriction from BinaryFile that caused it to check for
an "http://" lead on URLs.
* Added the MagicPlanetImageComponent to the com.bbn.openmap.image
package. The MagicPlanet is a spherical display system (get more
information at http://www.globalimagination.com). By adding this
component to an OpenMap application, images suitable for display
on the MagicPlanet can be created, at varing intervals and
resolution settings. The MagicPlanet's StoryTeller software can
then be told where the images are stored, and can then manage the
images.
* Updated the AbstractImageFormatter to reset an existing
projection back on a layer after the formatter has used it to
create a image. This should help for situations where an active
map window wasn't behaving properly after being saved to a file.
Removed the AcmeJPEG* code, it didn't work and the Sun version
should be used instead.
* Updated the ScenarioGraphicLoader so that the mode settings are
more obvious, instead of being changing depending on the clock
setting.
* Updated the com.bbn.openmap.geo package, which now has the
capability to do spatial intersection and proximity analysis in
lat/lon space. The ExtentIndex (and ExtentIndexImpl) contain
collections of GeoExtents which may be queried for intersection by
other GeoExtents. The Ribbon object is an attempt at rendering
spatial areas around GeoExtents.
The com.bbn.openmap.layer.test.GeoIntersectionLayer is an example
of how to use the ExtentIndex. That layer loads shape files into
the ExtentIndex, and then lets you draw on the map to test how the
drawn objects intersect with the shape file objects.
2006-01-23 Don Dietrick <[email protected]>
* Updated the com.bbn.openmap.dataAccess.shape package so its
components use the attributes of OMGraphics instead of using the