blob: 5e8471a3e368d16dde1ddaf73513e7ac61919f76 [file] [log] [blame]
/******************************************************************************
* Copyright (c) 2002, 2006 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
****************************************************************************/
package org.eclipse.gmf.runtime.diagram.ui.requests;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.gef.Request;
import org.eclipse.gmf.runtime.common.ui.dialogs.ExpansionType;
/**
* @author schafe
*
* Request for showing related elements.
*/
public class ShowRelatedElementsRequest extends Request {
private List selectedShapes;
private List relatedShapes;
private List relationshipsToShow;
private boolean isExpandIndefinite;
private int expandLevel;
/**
* The expansion type, which could be incoming, outgoing, both, or all connected
*/
protected ExpansionType expansionType;
/**
* The Stopping List
*/
protected List stoppingList;
/**
* List of Models. Do not use IModels because it does not have a
* contains method.
*/
protected List models;
/**
* Use the IRelationshipFilter when true, don't use it when false
*/
protected boolean useFilter;
/**
* Constructor for ShowRelatedElementsRequest.
* @param shapes List of IShapeView objects that were selected
* @param relationshipTypesToShow List of relationship type hints
* to show.
* @param isExpandIndefinite true to expand indefinitely, false not to.
* @param expandLevel specify an int level here for the number of
* levels to expand if you set isExpandIndefinite to false.
* @param expansionType the ExpansionType for deciding which
* direction to expand in.
* @param useFilter use the IRelationshipFilter when true,
* don't use it when false
* @param models List of IModel objects, if null, the default will
* be used.
* @param stoppingList List of the stopping conditions
* for related elements if this is true
*/
public ShowRelatedElementsRequest(
List shapes,
List relationshipTypesToShow,
boolean isExpandIndefinite,
int expandLevel,
ExpansionType expansionType,
boolean useFilter,
List models,
List stoppingList) {
super(RequestConstants.REQ_SHOW_RELATED_ELEMENTS);
this.selectedShapes = new ArrayList(shapes);
this.relatedShapes = new ArrayList();
this.relationshipsToShow = relationshipTypesToShow;
this.isExpandIndefinite = isExpandIndefinite;
this.expandLevel = expandLevel;
this.expansionType = expansionType;
this.useFilter = useFilter;
this.models = models;
this.stoppingList = stoppingList;
}
/**
* Constructor for ShowRelatedElementsRequest.
* Filter is set to the default of true and the default list of models
* will be used.
*
* @param shapes List of IShapeView objects that were selected
* @param relationshipTypesToShow List of relationship type hints
* to show. Use CoreUMLTypeInfo.
* @param isExpandIndefinite true to expand indefinitely, false not to.
* @param expandLevel specify an int level here for the number of
* levels to expand if you set isExpandIndefinite to false.
* @param expansionType should include incoming or outgoing relationships when searching
* for related elements if this is true
*/
public ShowRelatedElementsRequest(
List shapes,
List relationshipTypesToShow,
boolean isExpandIndefinite,
int expandLevel,
ExpansionType expansionType) {
this(
shapes,
relationshipTypesToShow,
isExpandIndefinite,
expandLevel,
expansionType,
true,
null,
new ArrayList());
}
/**
* Method getShapes.
* @return List the list of <code>IAdaptable</code> shapes
*/
public List getSelectedShapes() {
return this.selectedShapes;
}
/**
* Method getRelatedShapes.
* @return List the list of <code>IAdaptable</code> shapes
*/
public List getRelatedShapes() {
return this.relatedShapes;
}
/**
* Method setRelatedShapes.
* @param relatedShapes List the list of <code>IAdaptable</code> shapes
*/
public void setRelatedShapes(List relatedShapes) {
this.relatedShapes = relatedShapes;
}
/**
* Method getRelationshipsToShow.
* @return List
*/
public List getRelationshipsToShow() {
return this.relationshipsToShow;
}
/**
* Method isExpandIndefinite.
* @return boolean
*/
public boolean isExpandIndefinite() {
return this.isExpandIndefinite;
}
/**
* Method getExpandLevel.
* @return int
*/
public int getExpandLevel() {
return this.expandLevel;
}
/**
* Method getUseIncoming.
* This will be deprecated when all SRE implementors implement the all
* connected option. Use getExpansionType() instead.
*
* @return boolean
*/
public boolean getUseIncoming() {
return expansionType.equals(ExpansionType.INCOMING) ||
expansionType.equals(ExpansionType.BOTH);
}
/**
* Method getUseOutgoing.
* This will be deprecated when all SRE implementors implement the all
* connected option. Use getExpansionType() instead.
*
* @return boolean
*/
public boolean getUseOutgoing() {
return expansionType.equals(ExpansionType.OUTGOING) ||
expansionType.equals(ExpansionType.BOTH);
}
/**
* Return the expansion type that was passed into the constructor.
*
* @return ExpansionType
*/
public ExpansionType getExpansionType() {
return expansionType;
}
/**
* Returns if the filter should be used or not
* Use the IRelationshipFilter when true, don't use it when false
* @return true if the IRelationshipFilter should be used, false if it
* shouldn't
*/
public boolean getUseFilter() {
return this.useFilter;
}
/**
* Return a List of IModel objects
*
* @return List of IModel objects
*/
public List getModels() {
return models;
}
/**
* Method getStoppingList
* @return stoppingList
*/
public List getStoppingList() {
return stoppingList;
}
}