/*
* 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.
*/
package demo.framework;
import ilog.views.IlvGraphic;
import ilog.views.IlvGraphicEnumeration;
import ilog.views.IlvManager;
import ilog.views.IlvManagerView;
import ilog.views.IlvPoint;
import ilog.views.IlvRect;
import ilog.views.IlvTransformer;
import ilog.views.faces.dhtml.component.IlvFacesDHTMLView;
import ilog.views.faces.dhtml.event.FacesViewActionEvent;
import ilog.views.faces.dhtml.interactor.IlvFacesObjectSelectedFinder;
import ilog.views.faces.dhtml.interactor.IlvFacesObjectSelectedRectFinder;
import ilog.views.faces.internalutil.IlvResourceUtil;
import ilog.views.io.IlvReadFileException;
import ilog.views.servlet.IlvImageMapAreaGenerator;
import ilog.views.util.servlet.IlvMenuFactory;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.faces.event.ValueChangeEvent;
import javax.faces.model.SelectItem;
/**
* The bean that provides the logic of the JViews Framework Faces sample.
*/
public class FrameworkBean {
private IlvManagerView managerView;
private String currentURL;
private List<SelectItem> ivlSelectItems;
private IlvFacesDHTMLView facesView = new IlvFacesDHTMLView();
private Object comboValue;
private IlvImageMapAreaGenerator imapGenerator = new IlvImageMapAreaGenerator() {
Override
public int getShape(IlvManagerView view, IlvGraphic obj, IlvTransformer t) {
String msg=ilog.views.util.IlvResourceUtil.getServerLocaleString(FrameworkBean.class,"CustomImapGeneratorOn");
Logger.getLogger("demo.framework").log(Level.FINEST, MessageFormat.format(msg,obj));
return super.getShape(view, obj, t);
}
Override
public String generateONMOUSEOVER(IlvManagerView view, IlvGraphic obj) {
String msg=ilog.views.util.IlvResourceUtil.getCurrentLocaleString(FrameworkBean.class,"onImageMap");
return "alert('"+msg+"')";
}
};
private IlvFacesObjectSelectedFinder finder = new IlvFacesObjectSelectedFinder() {
Override
public Object computeObjectSelected(IlvManagerView managerView, IlvPoint pointClicked,
IlvTransformer transformer) {
String msg=ilog.views.util.IlvResourceUtil.getServerLocaleString(FrameworkBean.class,"CustomObjectSelectedFinderCalled");
Logger.getLogger("demo.framework").log(Level.FINEST, msg);
return super.computeObjectSelected(managerView, pointClicked, transformer);
}
};
private IlvFacesObjectSelectedRectFinder finderRect = new IlvFacesObjectSelectedRectFinder() {
Override
public ArrayList<?> computeObjectSelected(IlvManagerView managerView, IlvRect rect,
IlvTransformer transformer) {
String msg=ilog.views.util.IlvResourceUtil.getServerLocaleString(FrameworkBean.class,"CustomObjectSelectedRectFinderCalled");
Logger.getLogger("demo.framework").log(Level.FINEST,msg);
return super.computeObjectSelected(managerView, rect, transformer);
}
};
private IlvMenuFactory factory = new FrameworkMenuFactory();
public FrameworkBean() {
initIvlSelectItems();
initManagerView();
}
/**
* Initializes the select items list, and sets the current ivl file.
*/
protected void initIvlSelectItems() {
String[] names = { "jviews", "namap", "classgraph", "demo2d" };
String[] files = { "jviews", "namap", "classgraph", "demo2d" };
ivlSelectItems = new ArrayList<SelectItem>();
for (int i = 0; i < names.length; i++) {
ivlSelectItems.add(new SelectItem("/data/" + files[i] + ".ivl", names[i]));
}
currentURL = (String) ivlSelectItems.get(0).getValue();
}
/**
* Initializes the manager view with the current ivl file.
*/
protected void initManagerView() {
if (managerView == null)
managerView = new IlvManagerView();
URL ivlURL;
try {
ivlURL = new URL(IlvResourceUtil.getAbsoluteURL(currentURL));
IlvManager manager = managerView.getManager();
manager.setFileName(ivlURL);
managerView.fitTransformerToContent();
managerView.setKeepingAspectRatio(true);
IlvGraphicEnumeration objs = managerView.getManager().getObjects();
int id = 0;
while(objs.hasMoreElements()){
IlvGraphic g = objs.nextElement();
id++;
g.setToolTipText("obj "+id);
}
//Reset the state of the view.
facesView.setStateURL(null);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (IlvReadFileException e) {
e.printStackTrace();
}
}
/**
* Changes the current ivl displayed in the view.
* @param event The value change event.
*/
public void changeIvlFile(ValueChangeEvent event) {
String newFile = (String) event.getNewValue();
if (newFile != null && !currentURL.equals(newFile)) {
currentURL = newFile;
initManagerView();
}
}
/**
* The action of selecting a graphic object.
* @param event The value change event.
*/
public void selectObject(ValueChangeEvent event) {
Object value = event.getNewValue();
if (value != null && value instanceof IlvGraphic)
selectObject(managerView.getManager(), (IlvGraphic) value);
}
/**
* The action of selecting a set of graphic objects.
* @param event The value change event.
*/
public void selectRectObject(ValueChangeEvent event) {
Object value = event.getNewValue();
if (value != null && value instanceof List) {
managerView.getManager().deSelectAll(false);
List<?> list = (List) value;
for (int i = 0; i < list.size(); i++) {
Object obj = list.get(i);
if (obj instanceof IlvGraphic) {
IlvGraphic g = (IlvGraphic) obj;
managerView.getManager().setSelected(g, true, false);
}
}
}
}
public void selectObject(IlvManager manager, IlvGraphic g) {
manager.deSelectAll(false);
manager.setSelected(g, true, false);
}
public void action(FacesViewActionEvent event) {
IlvManagerView view = (IlvManagerView) event.getGraphicComponent();
Object value = event.getObject();
if (value != null && value instanceof IlvGraphic)
selectObject(view.getManager(), (IlvGraphic) value);
}
//Getters/Setters -----------------------------------------
public IlvManagerView getManagerView() {
return managerView;
}
public void setManagerView(IlvManagerView managerView) {
this.managerView = managerView;
}
public List<SelectItem> getIvlSelectItems() {
return ivlSelectItems;
}
public void setIvlSelectItems(List<SelectItem> ivlSelectItems) {
this.ivlSelectItems = ivlSelectItems;
}
public IlvFacesDHTMLView getFacesView() {
return facesView;
}
public void setFacesView(IlvFacesDHTMLView facesView) {
this.facesView = facesView;
}
public Object getComboValue() {
return comboValue;
}
public void setComboValue(Object comboValue) {
this.comboValue = comboValue;
}
public IlvImageMapAreaGenerator getImapGenerator() {
return imapGenerator;
}
public void setImapGenerator(IlvImageMapAreaGenerator imapGenerator) {
this.imapGenerator = imapGenerator;
}
public IlvFacesObjectSelectedFinder getFinder() {
return finder;
}
public void setFinder(IlvFacesObjectSelectedFinder finder) {
this.finder = finder;
}
public IlvFacesObjectSelectedRectFinder getFinderRect() {
return finderRect;
}
public void setFinderRect(IlvFacesObjectSelectedRectFinder finderRect) {
this.finderRect = finderRect;
}
public IlvMenuFactory getFactory() {
return factory;
}
public void setFactory(IlvMenuFactory factory) {
this.factory = factory;
}
}