mirror of
https://github.com/OMGeeky/ATCS.git
synced 2026-02-23 15:38:23 +01:00
add interface ListenerCollectionModel and use it in the OrderedListenerListModel
This commit is contained in:
@@ -0,0 +1,24 @@
|
|||||||
|
package com.gpl.rpg.atcontentstudio.ui;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
|
||||||
|
public interface ListenerCollectionModel<E> extends ListenerListModel<E> {
|
||||||
|
public Collection<E> getElements();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
default int getSize() {
|
||||||
|
Collection<E> elements = getElements();
|
||||||
|
if (elements == null) return 0;
|
||||||
|
return elements.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
default E getElementAt(int index) {
|
||||||
|
for (E obj : getElements()) {
|
||||||
|
if (index == 0) return obj;
|
||||||
|
index --;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -24,4 +24,8 @@ public interface ListenerListModel<E> extends ListModel<E> {
|
|||||||
default void removeListDataListener(ListDataListener l) {
|
default void removeListDataListener(ListDataListener l) {
|
||||||
getListeners().remove(l);
|
getListeners().remove(l);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
default void fireListChanged() {
|
||||||
|
notifyListeners(ListDataEvent.CONTENTS_CHANGED, 0, getSize() -1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,10 +3,11 @@ package com.gpl.rpg.atcontentstudio.ui;
|
|||||||
import javax.swing.event.ListDataEvent;
|
import javax.swing.event.ListDataEvent;
|
||||||
import javax.swing.event.ListDataListener;
|
import javax.swing.event.ListDataListener;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.CopyOnWriteArrayList;
|
import java.util.concurrent.CopyOnWriteArrayList;
|
||||||
|
|
||||||
public abstract class OrderedListenerListModel<S, E> implements ListenerListModel<E> {
|
public abstract class OrderedListenerListModel<S, E> implements ListenerCollectionModel<E> {
|
||||||
protected S source;
|
protected S source;
|
||||||
|
|
||||||
protected abstract List<E> getItems();
|
protected abstract List<E> getItems();
|
||||||
@@ -16,15 +17,9 @@ public abstract class OrderedListenerListModel<S, E> implements ListenerListMode
|
|||||||
this.source = source;
|
this.source = source;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<ListDataListener> getListeners() {
|
|
||||||
return listeners;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getSize() {
|
public Collection<E> getElements(){
|
||||||
if (getItems() == null) return 0;
|
return getItems();
|
||||||
return getItems().size();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -33,6 +28,11 @@ public abstract class OrderedListenerListModel<S, E> implements ListenerListMode
|
|||||||
return getItems().get(index);
|
return getItems().get(index);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public E setElementAt(int index, E value) {
|
||||||
|
if (getItems() == null) return null;
|
||||||
|
return getItems().set(index, value);
|
||||||
|
}
|
||||||
|
|
||||||
public void addObject(E item) {addItem(item);}
|
public void addObject(E item) {addItem(item);}
|
||||||
public void addItem(E item) {
|
public void addItem(E item) {
|
||||||
if (getItems() == null) {
|
if (getItems() == null) {
|
||||||
@@ -40,14 +40,14 @@ public abstract class OrderedListenerListModel<S, E> implements ListenerListMode
|
|||||||
}
|
}
|
||||||
getItems().add(item);
|
getItems().add(item);
|
||||||
int index = getItems().indexOf(item);
|
int index = getItems().indexOf(item);
|
||||||
notifyListeners( ListDataEvent.INTERVAL_ADDED, index, index);
|
notifyListeners(ListDataEvent.INTERVAL_ADDED, index, index);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void removeObject(E item) {removeItem(item);}
|
public void removeObject(E item) {removeItem(item);}
|
||||||
public void removeItem(E item) {
|
public void removeItem(E item) {
|
||||||
int index = getItems().indexOf(item);
|
int index = getItems().indexOf(item);
|
||||||
getItems().remove(item);
|
getItems().remove(item);
|
||||||
if (getItems().isEmpty()) {
|
if (getSize() == 0) {
|
||||||
setItems(null);
|
setItems(null);
|
||||||
}
|
}
|
||||||
notifyListeners(ListDataEvent.INTERVAL_REMOVED, index, index);
|
notifyListeners(ListDataEvent.INTERVAL_REMOVED, index, index);
|
||||||
@@ -64,9 +64,9 @@ public abstract class OrderedListenerListModel<S, E> implements ListenerListMode
|
|||||||
|
|
||||||
private void moveUpOrDown(E item, int direction) {
|
private void moveUpOrDown(E item, int direction) {
|
||||||
int index = getItems().indexOf(item);
|
int index = getItems().indexOf(item);
|
||||||
E exchanged = getItems().get(index + direction);
|
E exchanged = getElementAt(index + direction);
|
||||||
getItems().set(index, exchanged);
|
setElementAt(index, exchanged);
|
||||||
getItems().set(index + direction, item);
|
setElementAt(index + direction, item);
|
||||||
notifyListeners(ListDataEvent.CONTENTS_CHANGED, index + direction, index);
|
notifyListeners(ListDataEvent.CONTENTS_CHANGED, index + direction, index);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -77,4 +77,7 @@ public abstract class OrderedListenerListModel<S, E> implements ListenerListMode
|
|||||||
}
|
}
|
||||||
|
|
||||||
private List<ListDataListener> listeners = new CopyOnWriteArrayList<ListDataListener>();
|
private List<ListDataListener> listeners = new CopyOnWriteArrayList<ListDataListener>();
|
||||||
|
public List<ListDataListener> getListeners() {
|
||||||
|
return listeners;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user