/*
 * Licensed Materials - Property of Rogue Wave Software, Inc. 
 * © Copyright Rogue Wave Software, Inc. 2014, 2015 
 * © 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;

import ilog.views.diagrammer.IlvDiagrammer;
import ilog.views.diagrammer.faces.dhtml.component.IlvFacesDiagrammerPropertyAccessor;
import ilog.views.sdm.IlvSDMModel;
import java.util.ArrayList;

/**
 * Server side bean used to provide the list of properties and values for the selected item.
 */
public class SelectionProviderBean {
  
  /** Computes and returns the list of properties for the node (select interactor use).
   * @param diagrammer Diagrammer instance
   * @param node node to retrieve properties for.
   * @return the list of properties for the node.
   */
  public ArrayList getAdditionnalProperties(IlvDiagrammer diagrammer, Object node) {
    if (diagrammer.getView().getManager().getSelectedObjectsCount() == 1) {
      ArrayList props = new ArrayList();
      IlvSDMModel model = diagrammer.getEngine().getModel();
      String names[] = model.getObjectPropertyNames(node);
      for (int i = 0; i < names.length; i++) {
        ArrayList l = new ArrayList();
        l.add(names[i]);
        l.add(model.getObjectProperty(node, names[i]));
        props.add(l);
      }
      return props;
    } 
    // no selected object or more that one
    return null;
  }
 
  private IlvFacesDiagrammerPropertyAccessor accessor = new IlvFacesDiagrammerPropertyAccessor();
  /**
   * Returns a {@link IlvFacesDiagrammerPropertyAccessor} to access the properties objects.
   * @return the default accessor to retrieve properties.
   */
  public IlvFacesDiagrammerPropertyAccessor getPropertyAccessor() {
    return accessor;
  }

}