001package com.ganteater.ae.desktop.ui; 002 003import java.awt.Window; 004 005import javax.swing.event.HyperlinkEvent; 006import javax.swing.event.HyperlinkListener; 007 008import org.apache.commons.lang.StringUtils; 009 010import com.ganteater.ae.AEManager; 011import com.ganteater.ae.CommandException; 012import com.ganteater.ae.desktop.util.UIUtils; 013 014public class HyperlinkAdapter implements HyperlinkListener { 015 016 public static final String TASK_PROTOCOL = "recipe:"; 017 018 private AEManager manager; 019 020 private Window window; 021 022 public HyperlinkAdapter(AEManager manager) { 023 this.manager = manager; 024 } 025 026 @Override 027 public void hyperlinkUpdate(HyperlinkEvent event) { 028 if (event.getEventType() == HyperlinkEvent.EventType.ACTIVATED) { 029 String eventDescription = event.getDescription(); 030 if (StringUtils.startsWith(eventDescription, TASK_PROTOCOL)) { 031 String name = StringUtils.substringAfter(eventDescription, TASK_PROTOCOL); 032 try { 033 manager.runTask(name, true); 034 } catch (CommandException e) { 035 throw new IllegalArgumentException(e); 036 } 037 } else { 038 UIUtils.open(event); 039 } 040 if (window != null) { 041 window.setVisible(false); 042 } 043 } 044 } 045 046 public void setWindow(Window frame) { 047 this.window = frame; 048 } 049 050}