blob: 2de89f06dfcac847f44e67e0f52c25459371b127 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2009 SpringSource, a divison of VMware, Inc.
* 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:
* SpringSource, a division of VMware, Inc. - initial API and implementation
*******************************************************************************/
package org.eclipse.libra.framework.editor.ui.internal.dependencies;
import java.util.Comparator;
import java.util.List;
import org.eclipse.zest.layouts.Filter;
import org.eclipse.zest.layouts.InvalidLayoutConfiguration;
import org.eclipse.zest.layouts.LayoutAlgorithm;
import org.eclipse.zest.layouts.LayoutEntity;
import org.eclipse.zest.layouts.LayoutRelationship;
import org.eclipse.zest.layouts.algorithms.CompositeLayoutAlgorithm;
import org.eclipse.zest.layouts.progress.ProgressListener;
/**
* @author Christian Dupuis
*/
public class FocusedBundleDependencyLayoutAlgorithm implements LayoutAlgorithm {
private final BundleDependencyLayoutAlgorithm focusedLayoutAlgorithm;
private final CompositeLayoutAlgorithm layoutAlgorithm;
private final BundleDependencyContentProvider contentProvider;
/**
* @param styles unused
*/
public FocusedBundleDependencyLayoutAlgorithm(int styles, CompositeLayoutAlgorithm layoutAlgorithm,
BundleDependencyContentProvider contentProvider) {
this.contentProvider = contentProvider;
this.layoutAlgorithm = layoutAlgorithm;
this.focusedLayoutAlgorithm = new BundleDependencyLayoutAlgorithm(contentProvider);
}
public void addEntity(LayoutEntity entity) {
layoutAlgorithm.addEntity(entity);
focusedLayoutAlgorithm.addEntity(entity);
}
public void addProgressListener(ProgressListener listener) {
layoutAlgorithm.addProgressListener(listener);
focusedLayoutAlgorithm.addProgressListener(listener);
}
public void addRelationship(LayoutRelationship relationship) {
layoutAlgorithm.addRelationship(relationship);
focusedLayoutAlgorithm.addRelationship(relationship);
}
public void applyLayout(LayoutEntity[] entitiesToLayout, LayoutRelationship[] relationshipsToConsider, double x,
double y, double width, double height, boolean asynchronous, boolean continuous)
throws InvalidLayoutConfiguration {
if (contentProvider.getContentResult() != null) {
focusedLayoutAlgorithm.applyLayout(entitiesToLayout, relationshipsToConsider, x, y, width, height,
asynchronous, continuous);
}
else {
layoutAlgorithm.applyLayout(entitiesToLayout, relationshipsToConsider, x, y, width, height, asynchronous,
continuous);
}
}
public double getEntityAspectRatio() {
return layoutAlgorithm.getEntityAspectRatio();
}
public int getStyle() {
return layoutAlgorithm.getStyle();
}
public boolean isRunning() {
return layoutAlgorithm.isRunning();
}
public void removeEntity(LayoutEntity entity) {
layoutAlgorithm.removeEntity(entity);
focusedLayoutAlgorithm.removeEntity(entity);
}
public void removeProgressListener(ProgressListener listener) {
layoutAlgorithm.removeProgressListener(listener);
focusedLayoutAlgorithm.removeProgressListener(listener);
}
public void removeRelationship(LayoutRelationship relationship) {
layoutAlgorithm.removeRelationship(relationship);
focusedLayoutAlgorithm.removeRelationship(relationship);
}
public void removeRelationships(List relationships) {
layoutAlgorithm.removeRelationships(relationships);
focusedLayoutAlgorithm.removeRelationships(relationships);
}
public void setComparator(Comparator comparator) {
layoutAlgorithm.setComparator(comparator);
focusedLayoutAlgorithm.setComparator(comparator);
}
public void setEntityAspectRatio(double ratio) {
layoutAlgorithm.setEntityAspectRatio(ratio);
focusedLayoutAlgorithm.setEntityAspectRatio(ratio);
}
public void setFilter(Filter filter) {
layoutAlgorithm.setFilter(filter);
focusedLayoutAlgorithm.setFilter(filter);
}
public void setStyle(int style) {
layoutAlgorithm.setStyle(style);
focusedLayoutAlgorithm.setStyle(style);
}
public void stop() {
layoutAlgorithm.stop();
focusedLayoutAlgorithm.stop();
}
}