Revision 31681 branches/v2_0_0_prep/libraries/libFMap_mapcontext/src/org/gvsig/fmap/mapcontext/ViewPort.java

View differences:

ViewPort.java
65 65
import org.gvsig.fmap.mapcontext.events.listeners.ViewPortListener;
66 66
import org.gvsig.tools.ToolsLocator;
67 67
import org.gvsig.tools.dynobject.DynClass;
68
import org.gvsig.tools.dynobject.DynField;
68 69
import org.gvsig.tools.dynobject.DynObjectManager;
69 70
import org.gvsig.tools.persistence.PersistenceException;
70 71
import org.gvsig.tools.persistence.Persistent;
......
1648 1649

  
1649 1650
		// XMLEntity xml = new XMLEntity();
1650 1651
		// xml.putProperty("className", this.getClass().getName());
1651

  
1652
		if (adjustedExtent != null) {
1653
			state.set("adjustedExtentX", adjustedExtent.getX());
1654
			state.set("adjustedExtentY", adjustedExtent.getY());
1655
			state.set("adjustedExtentW", adjustedExtent.getWidth());
1656
			state.set("adjustedExtentH", adjustedExtent.getHeight());
1657
		} else {
1658
			throw new PersistenceException("Adjusted extent is null");
1659
		}
1660

  
1652
		state.set("adjustedExtent", adjustedExtent);
1653
		
1661 1654
		if (backColor != null) {
1662 1655
			state.set("backColor", color2String(backColor));
1663 1656
		} else {
......
1665 1658
		}
1666 1659

  
1667 1660
		if (cliprect != null) {
1668
			state.set("clipX", cliprect.getX());
1669
			state.set("clipY", cliprect.getY());
1670
			state.set("clipW", cliprect.getWidth());
1671
			state.set("clipH", cliprect.getHeight());
1672
		} else {
1673
			throw new PersistenceException("Clip area is null");
1661
			state.set("clip", cliprect);
1674 1662
		}
1675

  
1663
		
1676 1664
		state.set("dist1pixel", dist1pixel);
1677 1665
		state.set("dist3pixel", dist3pixel);
1678 1666
		state.set("distanceUnits", distanceUnits);
1679

  
1680
		if (extent != null) {
1681
			state.set("extentX", extent.getX());
1682
			state.set("extentY", extent.getY());
1683
			state.set("extentW", extent.getWidth());
1684
			state.set("extentH", extent.getHeight());
1685
		} else {
1686
			throw new PersistenceException("Extent is null");
1667
		if (distanceArea != distanceUnits) {
1668
			state.set("distanceArea", distanceArea);
1687 1669
		}
1688

  
1670
		
1671
		state.set("extent", extent);
1689 1672
		state.set("extents", extents);
1690 1673
		
1691 1674
		state.set("mapUnits", mapUnits);
1692 1675
		state.set("offsetX", offset.getX());
1693 1676
		state.set("offsetY", offset.getY());
1694 1677

  
1695
		if (proj != null) {
1696
			state.set("proj", proj);
1697
		}
1678
		state.set("proj", proj);
1698 1679

  
1699 1680
		state.set("scale", scale);
1700 1681
	}
......
1708 1689
		"ViewPort_Persistent",
1709 1690
		"ViewPort Persistent definition");
1710 1691

  
1711
		dynClass.addDynFieldSingle("adjustedExtentX", DataTypes.DOUBLE, null, true, true);
1712
		dynClass.addDynFieldSingle("adjustedExtentY", DataTypes.DOUBLE, null, true, true);
1713
		dynClass.addDynFieldSingle("adjustedExtentW", DataTypes.DOUBLE, null, true, true);
1714
		dynClass.addDynFieldSingle("adjustedExtentH", DataTypes.DOUBLE, null, true, true);
1692
		DynField field;
1715 1693
		
1716
		dynClass.addDynFieldSingle("backColor", DataTypes.STRING, null, true, true);
1717
		
1718
		dynClass.addDynFieldSingle("clipX", DataTypes.DOUBLE, null, true, true);
1719
		dynClass.addDynFieldSingle("clipY", DataTypes.DOUBLE, null, true, true);
1720
		dynClass.addDynFieldSingle("clipW", DataTypes.DOUBLE, null, true, true);
1721
		dynClass.addDynFieldSingle("clipH", DataTypes.DOUBLE, null, true, true);
1722
		
1723
		dynClass.addDynFieldSingle("dist1pixel", DataTypes.DOUBLE, null, true, true);
1724
		dynClass.addDynFieldSingle("dist3pixel", DataTypes.DOUBLE, null, true, true);
1725
		dynClass.addDynFieldSingle("distanceUnits", DataTypes.INT, null, true, true);
1726
		
1727
		dynClass.addDynFieldSingle("extentX", DataTypes.DOUBLE, null, true, true);
1728
		dynClass.addDynFieldSingle("extentY", DataTypes.DOUBLE, null, true, true);
1729
		dynClass.addDynFieldSingle("extentW", DataTypes.DOUBLE, null, true, true);
1730
		dynClass.addDynFieldSingle("extentH", DataTypes.DOUBLE, null, true, true);
1731
		dynClass.addDynFieldSingle("extents", DataTypes.PERSISTENT, null, true, true);
1732
		
1733
		dynClass.addDynFieldSingle("mapUnits", DataTypes.INT, null, true, true);
1734
		dynClass.addDynFieldSingle("offsetX", DataTypes.DOUBLE, null, true, true);
1735
		dynClass.addDynFieldSingle("offsetY", DataTypes.DOUBLE, null, true, true);
1736
		
1737
		dynClass.addDynFieldSingle("proj", DataTypes.OBJECT, null, true, true);
1738
		dynClass.addDynFieldSingle("scale", DataTypes.DOUBLE, null, true, true);
1694
        field = dynClass.addDynField("adjustedExtent");
1695
        field.setType(DataTypes.OBJECT);
1696
        field.setMandatory(true);
1697
        
1698
        field = dynClass.addDynField("backColor");
1699
        field.setType(DataTypes.STRING);
1700
        field.setMandatory(true);
1701
        
1702
        field = dynClass.addDynField("clip");
1703
        field.setType(DataTypes.OBJECT);
1704
        field.setMandatory(false);
1705
        
1706
        field = dynClass.addDynField("dist1pixel");
1707
        field.setType(DataTypes.DOUBLE);
1708
        field.setMandatory(true);
1709

  
1710
        field = dynClass.addDynField("dist3pixel");
1711
        field.setType(DataTypes.DOUBLE);
1712
        field.setMandatory(true);
1713

  
1714
        field = dynClass.addDynField("distanceUnits");
1715
        field.setType(DataTypes.INT);
1716
        field.setMandatory(true);
1717
        
1718
        field = dynClass.addDynField("distanceArea");
1719
        field.setType(DataTypes.INT);
1720
        field.setMandatory(false);
1721
        
1722
        field = dynClass.addDynField("extent");
1723
        field.setType(DataTypes.OBJECT);
1724
        field.setMandatory(true);
1725
        
1726
        field = dynClass.addDynField("extents");
1727
        field.setType(DataTypes.LIST);
1728
        field.setMandatory(true);
1729
        
1730
        field = dynClass.addDynField("mapUnits");
1731
        field.setType(DataTypes.INT);
1732
        field.setMandatory(true);
1733
        
1734
        field = dynClass.addDynField("offsetX");
1735
        field.setType(DataTypes.DOUBLE);
1736
        field.setMandatory(true);
1737

  
1738
        field = dynClass.addDynField("offsetY");
1739
        field.setType(DataTypes.DOUBLE);
1740
        field.setMandatory(true);
1741
        
1742
        field = dynClass.addDynField("proj");
1743
        field.setType(DataTypes.OBJECT);
1744
        field.setMandatory(true);
1745
        
1746
        field = dynClass.addDynField("scale");
1747
        field.setType(DataTypes.DOUBLE);
1748
        field.setMandatory(true);
1749
        
1739 1750
		dynMan.add(dynClass);
1740 1751

  
1741 1752
		ToolsLocator.getPersistenceManager().registerClass(ViewPort.class, dynClass);		
......
1745 1756
		
1746 1757
		// ViewPort vp = new ViewPort(null);
1747 1758

  
1748
		double x = 0, y = 0, w = 0, h = 0;
1759
		adjustedExtent = (Rectangle2D) state.get("adjustedExtent");
1760
		
1761
		String str = state.getString("backColor");
1762
		setBackColor(string2Color(str));
1749 1763

  
1750
		boolean exist = false;
1751 1764
		try {
1752
			x = state.getDouble("adjustedExtentX");
1753
			exist = true;
1754
		} catch (PersistenceValueNotFoundException pvnf) { }
1755

  
1756
		if (exist) {
1757
			adjustedExtent = new Rectangle2D.Double(
1758
					x,
1759
					state.getDouble("adjustedExtentY"),
1760
					state.getDouble("adjustedExtentW"),
1761
					state.getDouble("adjustedExtentH"));
1765
			cliprect = (Rectangle2D) state.get("clip");
1766
		} catch (PersistenceException pex) {
1767
			// not mandatory
1768
			cliprect = null;
1762 1769
		}
1763
			
1764
		String str;
1765 1770

  
1766
		try {
1767
			str = state.getString("backColor");
1768
			setBackColor(string2Color(str));			
1769

  
1770
		} catch (PersistenceValueNotFoundException pvnf) {
1771
			setBackColor(Color.white);
1772
		}
1773
		
1774
		exist = false;
1775
		try {
1776
			x = state.getDouble("clipX");
1777
			exist = true;
1778
		} catch (PersistenceValueNotFoundException pvnf) { }		
1779

  
1780
		if (exist) {
1781
			cliprect = new Rectangle2D.Double(
1782
					x,
1783
					state.getDouble("clipY"),
1784
					state.getDouble("clipW"),
1785
					state.getDouble("clipH"));
1786
		}
1787

  
1788 1771
		setDist1pixel(state.getDouble("dist1pixel"));
1789 1772
		setDist3pixel(state.getDouble("dist3pixel"));
1790 1773
		setDistanceUnits(state.getInt("distanceUnits"));
1791
		
1792
		exist = false;
1793
		int d = 0;
1774

  
1794 1775
		try {
1795
			d = state.getInt("distanceArea");
1796
			exist = true;
1797
		} catch (PersistenceValueNotFoundException pvnf) { }	
1776
			setDistanceArea(state.getInt("distanceArea"));
1777
		} catch (Exception pvnf) {
1778
			// not mandatory , use dist units
1779
			setDistanceArea(getDistanceUnits());
1780
		}	
1798 1781
		
1799
		if (exist) {
1800
			setDistanceArea(d);
1801
		} else {
1802
			setDistanceArea(state.getInt("distanceUnits"));
1803
		}
1804
		
1805 1782
		extents = (ExtentHistory) state.get("extents");
1806 1783

  
1807
		exist = false;
1808
		
1809
		try {
1810
			x = state.getDouble("extentX");
1811
			exist = true;
1812
		} catch (PersistenceValueNotFoundException exc) { }
1813
		
1814
		if (exist) {
1815
			y = state.getDouble("extentY");
1816
			w = state.getDouble("extentW");
1817
			h = state.getDouble("extentH");
1818
			try {
1819
				setEnvelope(geomManager.createEnvelope(x, y, x+w, y+h, SUBTYPES.GEOM2D));
1820
			} catch (CreateEnvelopeException e) {
1821
				e.printStackTrace();
1822
				logger.error("Error setting the extent", e);
1823
			}
1824
		}
1784
		extent = (Rectangle2D) state.get("extent");
1825 1785

  
1826 1786
		setMapUnits(state.getInt("mapUnits"));
1827
		x = state.getDouble("offsetX");
1828
		y = state.getDouble("offsetY");
1787

  
1788
		double x = state.getDouble("offsetX");
1789
		double y = state.getDouble("offsetY");
1829 1790
		setOffset(new Point2D.Double(x, y));
1830 1791

  
1831 1792
		proj = (IProjection) state.get("proj");

Also available in: Unified diff