/* * Freeplane - mind map editor * Copyright (C) 2011 dimitry * * This file author is dimitry * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.freeplane.view.swing.ui; /** * @author Dimitry Polivaev * Oct 1, 2011 */ import java.awt.Cursor; import java.awt.event.MouseEvent; import java.net.URI; import org.freeplane.core.ui.AMouseListener; import org.freeplane.core.util.Compat; import org.freeplane.core.util.LogUtils; import org.freeplane.features.mode.Controller; import org.freeplane.features.url.UrlManager; import org.freeplane.view.swing.map.ZoomableLabel; public class LinkNavigatorMouseListener extends AMouseListener { public LinkNavigatorMouseListener() { super(); } public void mouseMoved(final MouseEvent e) { final ZoomableLabel node = ((ZoomableLabel) e.getComponent()); String link = node.getLink(e.getPoint()); boolean followLink = link != null; Controller currentController = Controller.getCurrentController(); final int requiredCursor; if(followLink){ currentController.getViewController().out(link); requiredCursor = Cursor.HAND_CURSOR; } else{ requiredCursor = Cursor.DEFAULT_CURSOR; } if (node.getCursor().getType() != requiredCursor) { node.setCursor(requiredCursor != Cursor.DEFAULT_CURSOR ? new Cursor(requiredCursor) : null); } } public void mouseClicked(final MouseEvent e) { final ZoomableLabel component = (ZoomableLabel) e.getComponent(); if(e.getClickCount() == 1 && e.getButton() == 1) if(Compat.isPlainEvent(e)){ final String link = component.getLink(e.getPoint()); if(link != null){ if (link != null) { try { UrlManager.getController().loadURL(new URI(link)); } catch (Exception ex) { LogUtils.warn(ex); } } return; } } } }