/*
* Licensed Materials - Property of Rogue Wave Software, Inc.
* © Copyright Rogue Wave Software, Inc. 2014, 2017
* © Copyright IBM Corp. 2009, 2014
* © Copyright ILOG 1996, 2009
* All Rights Reserved.
*
* Note to U.S. Government Users Restricted Rights:
* The Software and Documentation were developed at private expense and
* are "Commercial Items" as that term is defined at 48 CFR 2.101,
* consisting of "Commercial Computer Software" and
* "Commercial Computer Software Documentation", as such terms are
* used in 48 CFR 12.212 or 48 CFR 227.7202-1 through 227.7202-4,
* as applicable.
*/
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.net.URL;
import javax.swing.JFrame;
import javax.swing.JRootPane;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import ilog.views.IlvManager;
import ilog.views.IlvManagerView;
import ilog.views.maps.IlvCoordinateSystemProperty;
import ilog.views.maps.IlvMapLayerTreeProperty;
import ilog.views.maps.IlvMapScaleLimiter;
import ilog.views.maps.beans.IlvExceptionMessage;
import ilog.views.maps.beans.IlvJMapsManagerViewControlBar;
import ilog.views.maps.beans.IlvLayerTreePanel;
import ilog.views.maps.beans.IlvMapLayer;
import ilog.views.maps.beans.IlvMapLayerTreeModel;
import ilog.views.maps.datasource.IlvMIDMIFDataSource;
import ilog.views.maps.graphic.IlvMapSelectionFactory;
import ilog.views.maps.graphic.style.IlvMapStyle;
import ilog.views.maps.graphic.style.IlvPointStyle;
import ilog.views.maps.graphic.style.IlvPolylineStyle;
import ilog.views.maps.srs.coordsys.IlvGeographicCoordinateSystem;
import ilog.views.util.IlvProductUtil;
/**
* The MID/MIF demo. This demo show how to load a MD/MIF file using the API. The
* API to load MID/MIF files mailnly consist on simply instanciating a
* IlvMIDMIFDataSource class.
*/
SuppressWarnings("serial")
public class MidMifDemo extends JRootPane {
{
// This sample uses JViews Maps features. When deploying an
// application that includes this code, you need to be in possession
// of a Rogue Wave JViews Maps Deployment license.
IlvProductUtil.DeploymentLicenseRequired(IlvProductUtil.JViews_Maps_Deployment);
}
IlvManagerView view;
IlvManager manager;
/**
* Construct a new MidMifDemo.
*
* @throws Exception
*/
public MidMifDemo() throws Exception {
// Make sure the swing construction is called in Swing event thread.
ilog.views.util.swing.IlvSwingUtil.invokeAndWait(new Runnable() {
Override
public void run() {
setupUI();
try {
loadData();
} catch (Exception e) {
new IlvExceptionMessage(e, null);
}
}
});
}
/**
* Load data using an <code>IlvMIDMIFDataSource</code>.
*
* @throws Exception
*/
void loadData() throws Exception {
// find the URL of the data in the jar.
URL url = getClass().getResource("EgeanSea.mif"); //$NON-NLS-1$
// instanciate a IlvMIDMIFDataSource.
IlvMIDMIFDataSource source = new IlvMIDMIFDataSource(url);
source.setManager(manager);
// rename top layer.
IlvMapLayer layer = source.getInsertionLayer();
layer.setName("Egean Sea");//$NON-NLS-1$
// add it in the map layer tree
IlvMapLayerTreeModel ltm = IlvMapLayerTreeProperty.GetMapLayerTreeModel(manager);
ltm.addChild(null, layer);
// start the data source: file is read and layers are created.
source.start();
// configure resulting layers (example).
IlvMapLayer[] layers = ltm.getChildren(layer);
for (int i = 0; i < layers.length; i++) {
IlvMapLayer l = layers[i];
IlvMapStyle s = l.getStyle();
if (s instanceof IlvPointStyle) {
IlvPointStyle ps = (IlvPointStyle) s;
ps.setSize(2);
ps.setForeground(Color.red);
} else if (s instanceof IlvPolylineStyle) {
((IlvPolylineStyle) s).setDecoration(null);
}
}
// fit the map.
view.fitTransformerToContent();
}
/**
* Construct the user interface.
*/
void setupUI() {
view = new IlvManagerView();
view.setKeepingAspectRatio(true);
view.setSize(600, 300);
manager = view.getManager();
manager.setSelectionFactory(new IlvMapSelectionFactory());
// JV-2819: geo reference the view
view.getManager().setNamedProperty(new IlvCoordinateSystemProperty(IlvGeographicCoordinateSystem.WGS84));
// limit the zoom to correct scales.
IlvMapScaleLimiter limiter = new IlvMapScaleLimiter((float) (1 / 1E4), (float) (1 / 1E9));
limiter.setView(view);
IlvLayerTreePanel layerPanel = new IlvLayerTreePanel();
layerPanel.setView(view);
Component left = layerPanel;
Component right = new JScrollPane(view);
JSplitPane pane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, left, right);
pane.setDividerLocation(200);
getContentPane().add(pane, BorderLayout.CENTER);
IlvJMapsManagerViewControlBar bar = new IlvJMapsManagerViewControlBar();
bar.setView(view);
getContentPane().add(bar, BorderLayout.NORTH);
}
/**
* @param args
* : not used
*/
public static void main(String[] args) {
// Sun recommends that to put the entire GUI initialization into the
// AWT thread
javax.swing.SwingUtilities.invokeLater(new Runnable() {
Override
public void run() {
JFrame frame = new JFrame("New MidMif sample");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
MidMifDemo demo;
try {
demo = new MidMifDemo();
} catch (Exception e) {
e.printStackTrace();
return;
}
frame.getContentPane().add(demo);
frame.pack();
frame.setVisible(true);
}
});
}
}