/*
* 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.Point;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
import java.io.IOException;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.filechooser.FileFilter;
import ilog.views.IlvManager;
import ilog.views.IlvManagerLayer;
import ilog.views.IlvManagerView;
import ilog.views.maps.format.IlvMapLoader;
import ilog.views.swing.IlvJManagerViewControlBar;
import ilog.views.swing.IlvJManagerViewPanel;
import ilog.views.util.IlvProductUtil;
public class UseMapLoader {
IlvManager manager = new IlvManager();
IlvManagerView view = null;
JFileChooser loadFileDialog = null;
JFileChooser saveFileDialog = null;
IlvMapLoader mapLoader = null;
JFrame frame = null;
public UseMapLoader() {
frame = new JFrame("Loading a Map File");
frame.getContentPane().setLayout(new BorderLayout());
// initializing the map loader
mapLoader = new IlvMapLoader(manager);
// creating a view of the manager and adding it in the frame
view = new IlvManagerView(manager);
view.setKeepingAspectRatio(true);
view.setBackground(Color.lightGray);
frame.getContentPane().add("Center", new IlvJManagerViewPanel(view));
// adding a control bar
IlvJManagerViewControlBar controlBar = new IlvJManagerViewControlBar();
controlBar.setView(view);
frame.getContentPane().add("North", controlBar);
// adding a menu bar
JMenuBar menuBar = new JMenuBar();
frame.setJMenuBar(menuBar);
JMenu fileMenu = new JMenu("File");
menuBar.add(fileMenu);
JMenuItem loadItem = new JMenuItem("Load");
loadItem.addActionListener(new ActionListener() {
Override
public void actionPerformed(ActionEvent e) {
loadMapFile();
}
});
fileMenu.add(loadItem);
JMenuItem saveItem = new JMenuItem("Export as ivl");
saveItem.addActionListener(new ActionListener() {
Override
public void actionPerformed(ActionEvent e) {
save();
}
});
fileMenu.add(saveItem);
JMenuItem quitItem = new JMenuItem("Quit");
quitItem.addActionListener(new ActionListener() {
Override
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
fileMenu.add(quitItem);
frame.addWindowListener(new WindowAdapter() {
Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
// create the file dialogs
loadFileDialog = new JFileChooser();
loadFileDialog.setDialogTitle("Select a Map file");
loadFileDialog.setFileFilter(new FileFilter() {
Override
public boolean accept(File f) {
// do not try to read ivl files.
return !(f.getName().endsWith(".ivl"));
}
Override
public String getDescription() {
return "Map files";
}
});
saveFileDialog = new JFileChooser();
saveFileDialog.setDialogTitle("Export");
// setting the frame size
frame.setSize(300, 300);
frame.setLocation(new Point(30, 30));
frame.setVisible(true);
}
/**
* This function pops a file selector and loads the requested JViews file
*/
public void loadMapFile() {
loadFileDialog.setCurrentDirectory(new File("./data"));
if (loadFileDialog.showOpenDialog(frame) != JFileChooser.APPROVE_OPTION)
return;
File file = loadFileDialog.getSelectedFile();
String fileName = file.getPath();
// adding a layer at the end of the manager
manager.addLayer(-1);
int last = manager.getLayersCount();
IlvManagerLayer layer = manager.getManagerLayer(last - 1);
// specifying to the map loader the layer in which the
// graphic objects will be added
mapLoader.setInsertionLayer(layer);
try {
// loading the Map File
mapLoader.load(fileName);
} catch (IOException e) {
Toolkit.getDefaultToolkit().beep();
new ilog.views.maps.beans.IlvExceptionMessage(e, "Could not load data");
manager.removeLayer(layer.getIndex(), true);
}
view.fitTransformerToContent();
view.repaint();
}
/**
* Saves the content of the manager in the ivl format
*/
public void save() {
if (saveFileDialog.showSaveDialog(frame) != JFileChooser.APPROVE_OPTION)
return;
File file = saveFileDialog.getSelectedFile();
String fileName = file.getPath();
try {
manager.write(fileName);
} catch (IOException e) {
Toolkit.getDefaultToolkit().beep();
new ilog.views.maps.beans.IlvExceptionMessage(e, "Could not export data");
}
}
static public 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 UseMapLoader();
}
});
}
}