/*
* 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.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
import ilog.views.IlvManager;
import ilog.views.IlvManagerView;
import ilog.views.IlvRect;
import ilog.views.interactor.IlvManagerMagViewInteractor;
import ilog.views.maps.IlvLinearUnit;
import ilog.views.maps.IlvScaleVisibilityFilter;
import ilog.views.maps.beans.IlvScaleBar;
import ilog.views.swing.IlvJManagerViewControlBar;
import ilog.views.tiling.IlvTiledLayer;
import ilog.views.util.IlvProductUtil;
/**
* This class implements a simple application that show how
* IlvScaleVisibilityFileter can be used to filter LOD layers.
*/
public class ScaleLodViewer {
// Variables to manage layers
IlvManager manager;
IlvManagerView managerView;
IlvTiledLayer lowResolutionLodLayer;
IlvTiledLayer highResolutionLodLayer;
/**
* Creates a new ScaleLodViewer
*/
public ScaleLodViewer() {
// Create main window
JFrame mainFrame = new JFrame("LOD demonstration");
mainFrame.addWindowListener(new WindowAdapter() {
Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
mainFrame.getContentPane().setLayout(new BorderLayout());
// Add a control bar
IlvJManagerViewControlBar controlBar = new IlvJManagerViewControlBar();
mainFrame.getContentPane().add("North", controlBar);
controlBar.add(new IlvScaleBar());
// Create manager and layer
manager = new IlvManager();
// Create layers
highResolutionLodLayer = new IlvTiledLayer(new IlvRect(0, 0, 100, 100));
highResolutionLodLayer.setTileLoader(new ScaleLodLoader("H", 1));
highResolutionLodLayer
.addVisibilityFilter(new IlvScaleVisibilityFilter(1.0F / 10000.0F, 1.0F, IlvLinearUnit.METER));
lowResolutionLodLayer = new IlvTiledLayer(new IlvRect(0, 0, 500, 500));
lowResolutionLodLayer.setTileLoader(new ScaleLodLoader("L", 5));
lowResolutionLodLayer.addVisibilityFilter(new IlvScaleVisibilityFilter(0.0F, 1.0F / 10000.0F, IlvLinearUnit.METER));
manager.addLayer(highResolutionLodLayer, 0);
manager.addLayer(lowResolutionLodLayer, 1);
// Create manager view
managerView = new IlvManagerView(manager);
managerView.setKeepingAspectRatio(true);
managerView.setBackground(Color.white);
mainFrame.getContentPane().add("Center", managerView);
controlBar.setView(managerView);
// Center on tile (0,0) when window opens
mainFrame.addWindowListener(new WindowAdapter() {
Override
public void windowOpened(WindowEvent e) {
highResolutionLodLayer.fitTransformerToTile(managerView, 0, 0);
}
});
// Show a debug view for hi- res tiles
Frame hiResDebugFrame = new Frame("Hi-Res debug view");
IlvManagerView hiResDebugView = new IlvManagerView(manager);
hiResDebugView.setKeepingAspectRatio(true);
hiResDebugView.setBackground(Color.white);
highResolutionLodLayer.setDebugView(hiResDebugView);
hiResDebugFrame.setLayout(new BorderLayout());
hiResDebugFrame.add("Center", hiResDebugView);
hiResDebugView.setVisible(1, false);
IlvManagerMagViewInteractor interactor = new IlvManagerMagViewInteractor(managerView, true);
interactor.setAutoTranslating(true);
interactor.setAutoZooming(true);
interactor.setBoundedByView(true);
hiResDebugView.setInteractor(interactor);
hiResDebugFrame.setBounds(500, 0, 300, 300);
hiResDebugFrame.setVisible(true);
// Show a debug view for low res tiles
JFrame lowResDebugFrame = new JFrame("Low-Res debug view");
IlvManagerView lowResDebugView = new IlvManagerView(manager);
lowResDebugView.setKeepingAspectRatio(true);
lowResDebugView.setBackground(Color.white);
lowResolutionLodLayer.setDebugView(lowResDebugView);
lowResDebugFrame.getContentPane().setLayout(new BorderLayout());
lowResDebugFrame.getContentPane().add("Center", lowResDebugView);
lowResDebugView.setVisible(0, false);
interactor = new IlvManagerMagViewInteractor(managerView, true);
interactor.setAutoTranslating(true);
interactor.setAutoZooming(true);
interactor.setBoundedByView(true);
lowResDebugView.setInteractor(interactor);
lowResDebugFrame.setBounds(500, 300, 300, 300);
lowResDebugFrame.setVisible(true);
// Show the main frame
mainFrame.setSize(500, 500);
mainFrame.setVisible(true);
}
/**
* Creates a new instance of a ScaleLodViewer and launch it
*/
public static void main(String args[]) {
// 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);
// Sun recommends that to put the entire GUI initialization into the
// AWT thread
javax.swing.SwingUtilities.invokeLater(new Runnable() {
Override
public void run() {
new ScaleLodViewer();
}
});
}
}