Package org.mt4j.components.clusters

Source Code of org.mt4j.components.clusters.ClusterManager

/***********************************************************************
* mt4j Copyright (c) 2008 - 2009, C.Ruff, Fraunhofer-Gesellschaft All rights reserved.
*   This program is free software: you can redistribute it and/or modify
*   it under the terms of the GNU General Public License as published by
*   the Free Software Foundation, either version 3 of the License, or
*   (at your option) any later version.
*
*   This program is distributed in the hope that it will be useful,
*   but WITHOUT ANY WARRANTY; without even the implied warranty of
*   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*   GNU General Public License for more details.
*
*   You should have received a copy of the GNU General Public License
*   along with this program.  If not, see <http://www.gnu.org/licenses/>.
*
***********************************************************************/
package org.mt4j.components.clusters;


import java.util.ArrayList;

import org.mt4j.components.MTCanvas;
import org.mt4j.components.MTComponent;
import org.mt4j.components.interfaces.IMTComponent3D;
import org.mt4j.components.visibleComponents.shapes.MTPolygon;
import org.mt4j.input.inputProcessors.componentProcessors.lassoProcessor.IdragClusterable;

import processing.core.PApplet;

/**
* The Class ClusterManager.
* @author Christopher Ruff
*/
public class ClusterManager {
 
  /** The child objects. */
  private ArrayList<Cluster> childObjects;
 
  /** The pa. */
  private PApplet pa;
 
  /** The canvas. */
  private MTCanvas canvas;

  /**
   * Instantiates a new cluster manager.
   *
   * @param pa the pa
   * @param canvas the canvas
   */
  public ClusterManager(PApplet pa, MTCanvas canvas) {
    this.pa = pa;
    this.canvas = canvas;
    childObjects = new ArrayList<Cluster>();
  }
 
  /**
   * Gets the cluster count.
   *
   * @return the cluster count
   */
  public int getClusterCount(){
    return childObjects.size();
  }

  /**
   * Adds the cluster.
   *
   * @param selection the selection
   */
  public void addCluster(Cluster selection){
    childObjects.add(selection);
  }
 
  /**
   * Adds the all clusters.
   *
   * @param selections the selections
   */
  public void addAllClusters(Cluster[] selections){
    for (int i = 0; i < selections.length; i++) {
      Cluster object = selections[i];
      childObjects.add(object);
    }
  }
 
  /**
   * removes the Cluster from the Cluster manager and
   * also tries to delete its visible polygon from the current scenes'
   * main canvas,
   * also calls setSelected(false) on the Selections children.
   *
   * @param selection the selection
   */
  public void removeCluster(Cluster selection){
    //Remove the Selection Polygon of the now empty former selection from the canvas
    this.removeClusterPolyFromCanvas(selection.getClusterPolygon());
   
    //mark the remaining components from the deleted slection as not selected
    for (int i = 0; i < selection.getChildCount(); i++) {
      MTComponent comp = selection.getChildByIndex(i);
      if (comp instanceof IdragClusterable)
        ((IdragClusterable)comp).setSelected(false);
    }
   
    if (this.containsCluster(selection))
      childObjects.remove(selection);
  }
 
  /**
   * removes the visible selection polygon from the canvas.
   *
   * @param selectionPoly the selection poly
   */
  public void removeClusterPolyFromCanvas(MTPolygon selectionPoly){
    if (selectionPoly != null && canvas.containsChild(selectionPoly)){
      selectionPoly.getParent().removeChild(selectionPoly);
    }
  }
 
  /**
   * Removes the cluster.
   *
   * @param i the i
   */
  public void removeCluster(int i){
    childObjects.remove(i);
  }
 
  /**
   * Removes the all clusters.
   */
  public void removeAllClusters(){
    childObjects.clear();
  }
 
 
  /**
   * Gets the clusters.
   *
   * @return the clusters
   */
  public Cluster[] getClusters(){
    Cluster[] objects =  new Cluster[childObjects.size()];
    for (int i = 0; i < childObjects.size(); i++) {
      objects[i] = (Cluster)childObjects.get(i);
    }
    return objects;
  }
 
 
  /**
   * Contains cluster.
   *
   * @param selection the selection
   *
   * @return true, if successful
   */
  public boolean containsCluster(Cluster selection){
    return (childObjects.contains(selection));
  }
 
  //only returns the first selection that contains that component
  //only works with mtcomponents right now
  /**
   * Gets the cluster.
   *
   * @param component the component
   *
   * @return the cluster
   */
  public Cluster getCluster(IMTComponent3D component){
    for (int i = 0; i < childObjects.size(); i++) {
      Cluster selection = childObjects.get(i);
     
      if (component instanceof MTComponent && selection.containsDirectChild((MTComponent)component)){
        return selection;
      }
    }
    return null;
  }


}
TOP

Related Classes of org.mt4j.components.clusters.ClusterManager

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.