All Downloads are FREE. Search and download functionalities are using the official Maven repository.

ingenias.editor.rendererxml.LinkPanel Maven / Gradle / Ivy


/** 
 * Copyright (C) 2010  Jorge J. Gomez-Sanz 
 * 
 * This file is part of the INGENME tool. INGENME is an open source meta-editor
 * which produces customized editors for user-defined modeling languages
 *
 * 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 version 3 of the License
 *
 * 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 
 **/
package ingenias.editor.rendererxml;

import javax.swing.JPanel;
import javax.swing.SwingUtilities;

import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.net.URL;

import javax.swing.border.*;
import javax.swing.event.DocumentEvent.EventType;
import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkListener;

public class LinkPanel extends JPanel {

	public LinkPanel() {
		//    DashedBorder db=new DashedBorder(Color.black);
		//    this.setBorder(db);
		this.setLayout(new FlowLayout(FlowLayout.CENTER,0,2));
		addLinkEventTrigger();
	}

	public LinkPanel(LayoutManager p0, boolean p1) {
		super(p0, p1);
		addLinkEventTrigger();
	}

	public LinkPanel(LayoutManager p0) {
		super(p0);
		addLinkEventTrigger();
	}

	public LinkPanel(boolean p0) {
		super(p0);    
		addLinkEventTrigger();
	}

	private void addLinkEventTrigger() {
		final Component source=this;
		this.addMouseListener(new MouseListener(){
			Cursor oldCursor=Cursor.getDefaultCursor();

			public void mouseDragged(MouseEvent e) {

			}


			@Override
			public void mouseClicked(MouseEvent e) {
				// goes upward in the hierarchy to deal with this event
				Container parent = getParent();
				while (parent!=null && ! (parent instanceof HyperlinkListener)){
					parent=getParent();
				}
				final Container fparent=parent;
				if (fparent!=null && fparent instanceof HyperlinkListener){
					SwingUtilities.invokeLater(new Runnable(){
						public void run(){
							((HyperlinkListener)fparent).hyperlinkUpdate(new HyperlinkEvent(source, null, url));		
						}
					});
				}
			}


			@Override
			public void mousePressed(MouseEvent e) {

			}


			@Override
			public void mouseReleased(MouseEvent e) {

			}


			@Override
			public void mouseEntered(MouseEvent e) {
				oldCursor=getCursor();
				setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));						
			}


			@Override
			public void mouseExited(MouseEvent e) {
				setCursor(oldCursor);			
			}
		});
	}



	private URL url=null;
	public void setLink(URL url){
		this.url=url;
	}

	public void getLink(URL url){
		this.url=url;
	}


	public void paint(Graphics g){
		super.paint(g);       
		Dimension size=this.getSize();
		Color color = g.getColor();
		//    g.setPaintMode();
		g.setColor(Color.blue);
		g.drawLine(0,size.height,size.width,size.height);
		g.setColor(color);
	}

	public static void main(String[] args) {
		LinkPanel dashedBorderPanel1 = new LinkPanel();
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy