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); } } }