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}