import java.util.TreeSet;
import java.util.concurrent.CopyOnWriteArrayList;
+import org.simantics.utils.strings.AlphanumComparator;
+
/**
* @author Antti Villberg
*/
private static final Comparator<ILayer> LAYER_COMPARATOR = new Comparator<ILayer>() {
@Override
public int compare(ILayer o1, ILayer o2) {
- return o1.getName().compareTo(o2.getName());
+ return AlphanumComparator.COMPARATOR.compare(o1.getName(), o2.getName());
}
};
private Set<ILayer> visible = new TreeSet<ILayer>(LAYER_COMPARATOR);
private volatile Set<ILayer> visibleSnapshot;
- private CopyOnWriteArrayList<ILayersEditorListener> listeners = new CopyOnWriteArrayList<ILayersEditorListener>();
+ private CopyOnWriteArrayList<ILayersEditorListener> layerEditorListeners = new CopyOnWriteArrayList<ILayersEditorListener>();
+ private CopyOnWriteArrayList<ILayersListener> layersListeners = new CopyOnWriteArrayList<ILayersListener>();
private boolean ignoreFocusSettings = false;
all.add(layer);
visible.add(layer);
}
- allSnapshot = null;
- visibleSnapshot = null;
+ }
+
+ @Override
+ public void update(Set<ILayer> allLayers, Set<ILayer> visibleLayers) {
+ synchronized (this) {
+ all.clear();
+ all.addAll(allLayers);
+ visible.clear();
+ visible.addAll(visibleLayers);
+ allSnapshot = null;
+ visibleSnapshot = null;
+ }
+ for (ILayersListener listener : layersListeners) {
+ listener.changed();
+ }
}
@Override
synchronized (this) {
visibleSnapshot = null;
}
- for (ILayersEditorListener listener : listeners) {
+ for (ILayersListener listener : layersListeners) {
+ listener.changed();
+ }
+ for (ILayersEditorListener listener : layerEditorListeners) {
listener.layerDeactivated(layer);
}
}
synchronized (this) {
visibleSnapshot = null;
}
- for (ILayersEditorListener listener : listeners) {
+ for (ILayersListener listener : layersListeners) {
+ listener.changed();
+ }
+ for (ILayersEditorListener listener : layerEditorListeners) {
listener.layerActivated(layer);
}
}
synchronized (this) {
allSnapshot = null;
}
- for (ILayersEditorListener listener : listeners) {
+ for (ILayersListener listener : layersListeners) {
+ listener.changed();
+ }
+ for (ILayersEditorListener listener : layerEditorListeners) {
listener.layerAdded(layer);
}
}
allSnapshot = null;
visibleSnapshot = null;
}
- for (ILayersEditorListener listener : listeners) {
+ for (ILayersListener listener : layersListeners) {
+ listener.changed();
+ }
+ for (ILayersEditorListener listener : layerEditorListeners) {
listener.layerRemoved(layer);
}
}
}
@Override
- public void addListener(ILayersEditorListener listener) {
- listeners.add(listener);
+ public void addLayerEditorListener(ILayersEditorListener listener) {
+ layerEditorListeners.add(listener);
}
@Override
- public void removeListener(ILayersEditorListener listener) {
- listeners.remove(listener);
+ public void removeLayerEditorListener(ILayersEditorListener listener) {
+ layerEditorListeners.remove(listener);
+ }
+
+ @Override
+ public void addLayersListener(ILayersListener listener) {
+ layersListeners.add(listener);
+ }
+
+ @Override
+ public void removeLayersListener(ILayersListener listener) {
+ layersListeners.remove(listener);
}
@Override
boolean changed = ignoreFocusSettings != value;
ignoreFocusSettings = value;
if (changed) {
- for (ILayersEditorListener listener : listeners) {
+ for (ILayersListener listener : layersListeners) {
+ listener.changed();
+ }
+ for (ILayersEditorListener listener : layerEditorListeners) {
listener.ignoreFocusChanged(value);
}
}
boolean changed = ignoreVisibilitySettings != value;
ignoreVisibilitySettings = value;
if (changed) {
- for (ILayersEditorListener listener : listeners) {
+ for (ILayersListener listener : layersListeners) {
+ listener.changed();
+ }
+ for (ILayersEditorListener listener : layerEditorListeners) {
listener.ignoreVisibilityChanged(value);
}
}