package org.jcae.viewer3d; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Iterator; import java.util.Map; import javax.media.j3d.Bounds; import javax.media.j3d.Node; import javax.media.j3d.PickInfo; public abstract class ViewableAdaptor implements Viewable { private Collection<SelectionListener> listeners=Collections.synchronizedCollection(new ArrayList<SelectionListener>()); /**Method called by the integrator * This fires the views that the viewable has changed * */ public void domainsChanged(int[] domainId) { View.stopRenderer(this); domainsChangedPerform(domainId); View.viewableChanged(this); View.startRenderer(this); } /** * @param domainId The ids (Integer) of domains that changed or null to * specify that even ids may have change */ public abstract void domainsChangedPerform(int[] domainId); public abstract DomainProvider getDomainProvider(); public abstract void setDomainVisible(Map<Integer, Boolean> map); public abstract Node getJ3DNode(); public void pick(PickViewable result) { } public void pick(PickViewable result, View view) { } public abstract void unselectAll(); /* (non-Javadoc) * @see org.jcae.viewer3d.Viewable#addSelectionListener(org.jcae.viewer3d.SelectionListener) */ public void addSelectionListener(SelectionListener listener) { listeners.add(listener); } /* (non-Javadoc) * @see org.jcae.viewer3d.Viewable#removeSelectionListener(org.jcae.viewer3d.SelectionListener) */ public void removeSelectionListener(SelectionListener listener) { listeners.add(listener); } protected void fireSelectionChanged() { for(SelectionListener s : listeners) s.selectionChanged(); } /** Default implementation which does nothing */ public void pickArea(PickInfo[] result, Bounds bound) { } public void pickArea(PickInfo[] result, Bounds bound, View view) { } }