diff options
Diffstat (limited to 'NET/worlds/scape/sendURL.java')
| -rw-r--r-- | NET/worlds/scape/sendURL.java | 156 |
1 files changed, 156 insertions, 0 deletions
diff --git a/NET/worlds/scape/sendURL.java b/NET/worlds/scape/sendURL.java new file mode 100644 index 0000000..4f512e5 --- /dev/null +++ b/NET/worlds/scape/sendURL.java @@ -0,0 +1,156 @@ +package NET.worlds.scape; + +import NET.worlds.console.Console; +import NET.worlds.network.URL; +import java.io.IOException; +import java.text.MessageFormat; + +public class sendURL extends TriggeredSwitchableBehavior implements MouseDownHandler, BumpHandler, FrameHandler { + protected String browser; + protected String destination; + protected boolean silentURL; + protected boolean initialized = false; + + public sendURL() { + this.trigger = new String("none"); + this.externalTriggerTag = new String(""); + this.silentURL = false; + this.browser = new String("NETSCAPE"); + this.destination = new String("http://www.worlds.net"); + } + + public static native int init(String var0); + + public static native int get(String var0); + + public static native int silent_get(String var0); + + @Override + public void ExternalTrigger(Trigger source, int seqno, int eventno) { + this.sendURLStart(); + } + + public void sendURLStart() { + if (this.silentURL) { + silent_get(this.destination); + } else { + get(this.destination); + } + } + + @Override + public boolean handle(FrameEvent e) { + if (!this.initialized) { + init(this.browser); + this.initialized = true; + } + + return true; + } + + @Override + public boolean handle(MouseDownEvent e) { + if (this.enabled && this.trigger.equals("click")) { + this.sendURLStart(); + } + + return true; + } + + @Override + public boolean handle(BumpEventTemp e) { + if (this.enabled && this.trigger.equals("bump")) { + this.sendURLStart(); + } + + return true; + } + + @Override + public Object properties(int index, int offset, int mode, Object value) throws NoSuchPropertyException { + Object ret = null; + switch (index - offset) { + case 0: + if (mode == 0) { + ret = StringPropertyEditor.make(new Property(this, index, "Trigger")); + } else if (mode == 1) { + ret = new String(this.trigger); + } else if (mode == 2) { + this.trigger = ((String)value).toString().trim(); + if (this.trigger.equals("external")) { + Trigger.TriggeredSwitchableBehaviorList[Trigger.TriggeredSwitchableBehaviorListCount] = this; + Trigger.TriggeredSwitchableBehaviorListCount++; + } + } + break; + case 1: + if (mode == 0) { + ret = StringPropertyEditor.make(new Property(this, index, "External Trigger Tag")); + } else if (mode == 1) { + ret = new String(this.externalTriggerTag); + } else if (mode == 2) { + this.externalTriggerTag = ((String)value).toString().trim(); + } + break; + case 2: + if (mode == 0) { + ret = BooleanPropertyEditor.make(new Property(this, index, "Silent URL"), "No", "Yes"); + } else if (mode == 1) { + ret = new Boolean(this.silentURL); + } else if (mode == 2) { + this.silentURL = (Boolean)value; + } + break; + case 3: + if (mode == 0) { + ret = StringPropertyEditor.make(new Property(this, index, "Destination")); + } else if (mode == 1) { + ret = new String(this.destination); + } else if (mode == 2) { + this.destination = ((String)value).toString().trim(); + } + break; + default: + ret = super.properties(index, offset + 4, mode, value); + } + + return ret; + } + + @Override + public String toString() { + return super.toString() + "[enabled " + this.enabled + ", trigger " + this.trigger + ", externalTriggerTag " + this.externalTriggerTag + "]"; + } + + @Override + public void saveState(Saver s) throws IOException { + Object[] arguments = new Object[]{new String(this.getName())}; + Console.println(MessageFormat.format(Console.message("sendURL-obs"), arguments)); + s.saveString(this.trigger); + s.saveString(this.externalTriggerTag); + s.saveBoolean(this.silentURL); + s.saveString(this.destination); + } + + @Override + public void restoreState(Restorer r) throws IOException { + this.trigger = r.restoreString(); + this.externalTriggerTag = r.restoreString(); + this.silentURL = r.restoreBoolean(); + this.destination = r.restoreString(); + if (this.trigger.equals("external")) { + Object[] arguments = new Object[]{new String(this.getName())}; + Console.println(MessageFormat.format(Console.message("sendURL-obs"), arguments)); + Trigger.TriggeredSwitchableBehaviorList[Trigger.TriggeredSwitchableBehaviorListCount] = this; + Trigger.TriggeredSwitchableBehaviorListCount++; + } else { + SendURLAction sua = new SendURLAction(); + if (this.destination != null) { + sua.setDestination(URL.make(this.destination)); + } + + sua.setTrigger(this.trigger); + r.replace(this, sua); + } + } +} |