summaryrefslogtreecommitdiff
path: root/NET/worlds/scape/PropAdder.java
diff options
context:
space:
mode:
Diffstat (limited to 'NET/worlds/scape/PropAdder.java')
-rw-r--r--NET/worlds/scape/PropAdder.java48
1 files changed, 48 insertions, 0 deletions
diff --git a/NET/worlds/scape/PropAdder.java b/NET/worlds/scape/PropAdder.java
new file mode 100644
index 0000000..2ead54d
--- /dev/null
+++ b/NET/worlds/scape/PropAdder.java
@@ -0,0 +1,48 @@
+package NET.worlds.scape;
+
+import NET.worlds.console.PolledDialog;
+
+public class PropAdder implements LibraryDrop {
+ protected VectorProperty property;
+
+ protected PropAdder(VectorProperty property) {
+ this.property = property;
+ }
+
+ public static VectorProperty make(VectorProperty property) {
+ return property.setAdder(new PropAdder(property));
+ }
+
+ public PolledDialog add(EditTile parent, String title) {
+ assert false;
+
+ return null;
+ }
+
+ public boolean hasAddDialog() {
+ return false;
+ }
+
+ protected boolean checkObject(Object obj) {
+ return this.property.addTest(obj);
+ }
+
+ @Override
+ public boolean libraryDrop(EditTile target, Object obj, boolean isPaste, boolean doDrop) {
+ if (this.checkObject(obj)) {
+ if (doDrop) {
+ if (isPaste) {
+ target.addUndoablePaste(this.property, obj);
+ } else {
+ target.addUndoableAdd(this.property, obj, true);
+ }
+
+ return !(obj instanceof SuperRoot) || ((SuperRoot)obj).getOwner() != null;
+ } else {
+ return true;
+ }
+ } else {
+ return false;
+ }
+ }
+}