/*
* 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.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import ilog.views.IlvGraphic;
import ilog.views.IlvGraphicEnumeration;
import ilog.views.IlvManager;
import ilog.views.IlvManagerView;
import ilog.views.IlvManagerViewInteractor;
import ilog.views.IlvRect;
import ilog.views.event.InteractorChangedEvent;
import ilog.views.event.InteractorListener;
//import ilog.views.util.IlvProductUtil;
import ilog.views.graphic.IlvIcon;
import ilog.views.interactor.IlvSelectInteractor;
import ilog.views.interactor.IlvUnZoomViewInteractor;
import ilog.views.interactor.IlvZoomViewInteractor;
import ilog.views.swing.IlvJScrollManagerView;
/**
* A small JViews example.
*/
public class Sample4 extends JFrame
implements InteractorListener
{
IlvManager manager;
IlvManagerView mgrview;
IlvSelectInteractor selectInteractor;
IlvManagerViewInteractor zoomInteractor, unZoomInteractor;
JButton selectButton, zoomButton, unZoomButton;
public Sample4()
{
// Creates the manager object and reads an IVL file.
manager = new IlvManager();
try {
manager.read("data/lou.ivl");
} catch (Exception e) {}
// Creates a view associated to the manager
mgrview = new IlvManagerView(manager);
mgrview.setAntialiasing(true);
mgrview.setBackground(Color.white);
// Creates the necessary swing components
getContentPane().setLayout(new BorderLayout(0,0));
getContentPane().add(new IlvJScrollManagerView(mgrview),
BorderLayout.CENTER);
// Creates additional buttons
createButtons();
// Listens to modification of interactors
mgrview.addInteractorListener(this);
// Adds some graphic objects
addObjects();
}
/**
* Creates some swing buttons.
*/
void createButtons()
{
JPanel buttons = new JPanel();
// A button to install a select interactor
selectButton = new JButton("Select");
selectButton.setBackground(Color.gray);
selectButton.addActionListener(new ActionListener() {
Override
public void actionPerformed(ActionEvent evt) {
if (selectInteractor == null)
selectInteractor = new IlvSelectInteractor();
if (mgrview.getInteractor() != selectInteractor)
mgrview.setInteractor(selectInteractor);
}
});
buttons.add(selectButton);
// A button to install the unzoom interactor
unZoomButton = new JButton("-");
unZoomButton.setBackground(Color.gray);
unZoomButton.addActionListener(new ActionListener() {
Override
public void actionPerformed(ActionEvent evt) {
if (unZoomInteractor == null)
unZoomInteractor = new IlvUnZoomViewInteractor();
if (mgrview.getInteractor() != unZoomInteractor)
mgrview.setInteractor(unZoomInteractor);
}
});
// a button to install the zoom interactor
buttons.add(unZoomButton);
zoomButton = new JButton("+");
zoomButton.setBackground(Color.gray);
zoomButton.addActionListener(new ActionListener() {
Override
public void actionPerformed(ActionEvent evt) {
if (zoomInteractor == null)
zoomInteractor = new IlvZoomViewInteractor();
if (mgrview.getInteractor() != zoomInteractor)
mgrview.setInteractor(zoomInteractor);
}
});
buttons.add(zoomButton);
// a button to move graphic objects in a randomly
JButton moveButton = new JButton("move");
moveButton.setBackground(Color.gray);
moveButton.addActionListener(new ActionListener() {
Override
public void actionPerformed(ActionEvent event) {
moveObjects();
}
});
buttons.add(moveButton);
getContentPane().add(buttons, BorderLayout.SOUTH);
}
/**
* A method that gets called when the interactor of the
* view (IlvManagerView) changes.
* The method changes the color of the corresponding
* interactor to red.
*/
Override
public void interactorChanged(InteractorChangedEvent event)
{
IlvManagerViewInteractor oldI = event.getOldValue();
IlvManagerViewInteractor newI = event.getNewValue();
if (oldI == selectInteractor)
selectButton.setBackground(Color.gray);
else if (oldI == zoomInteractor)
zoomButton.setBackground(Color.gray);
else if (oldI == unZoomInteractor)
unZoomButton.setBackground(Color.gray);
// there is no new interactor
if (newI == null)
return;
if (newI == selectInteractor)
selectButton.setBackground(Color.red);
else if (newI == zoomInteractor)
zoomButton.setBackground(Color.red);
else if (newI == unZoomInteractor)
unZoomButton.setBackground(Color.red);
}
/**
* Adds some graphic objects to the manager.
*/
public void addObjects()
{
manager.setSelectable(0, false);
for (int i = 0 ; i < 10 ; i++) {
IlvGraphic obj = new IlvIcon("data/image.gif", new IlvRect(0,0,37,38));
manager.addObject(obj, 1, false);
}
}
/**
* Moves graphic objects randomly.
*/
public void moveObjects()
{
IlvGraphic state, obj;
IlvGraphicEnumeration objects, states;
// traverse objects in layer number 1
for (objects = manager.getObjects(1); objects.hasMoreElements();) {
obj = objects.nextElement();
// get an random state in layer 0
states = manager.getObjects(0);
int index = (int)(manager.getCardinal(0)*Math.random());
state = states.nextElement();
for (int i = 1 ; i < index; i++)
state = states.nextElement();
// place the graphic object in the middle of the state
if (obj != null && state != null) {
IlvRect bbox = state.boundingBox();
manager.moveObject(obj, bbox.x+bbox.width/2,
bbox.y+bbox.height/2, true);
}
}
}
public static void main(String[] args)
{
// This sample uses JViews Diagrammer features. When deploying an
// application that includes this code, you need to be in possession
// of a Rogue Wave JViews Diagrammer Deployment license.
// IlvProductUtil.DeploymentLicenseRequired(
// IlvProductUtil.JViews_Diagrammer_Deployment);
// Sun recommends that to put the entire GUI initialization into the
// AWT thread
SwingUtilities.invokeLater(
new Runnable() {
Override
public void run() {
JFrame frame = new Sample4();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(450,350);
frame.setVisible(true);
}
});
}
}