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

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

package ingenias.editor.rendererxml;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;

import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.font.TextAttribute;
import java.net.URL;
import java.util.Map;

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

import ingenias.editor.FieldPositionHelper;
import ingenias.editor.FontConfiguration;
import ingenias.editor.ModelJGraph;

public class LinkLabel extends JLabel {

	public LinkLabel() {
		//    DashedBorder db=new DashedBorder(Color.black);
		//    this.setBorder(db);
		
		this.setFont(FontConfiguration.getConfiguration().getStandardFont());
		Font font = this.getFont();
		Map attributes = font.getAttributes();
		attributes.put(TextAttribute.UNDERLINE, TextAttribute.UNDERLINE_ON);
		this.setFont(font.deriveFont(attributes));
		this.setForeground(Color.blue);
		
	}

	public LinkLabel(String text) {
		//    DashedBorder db=new DashedBorder(Color.black);
		//    this.setBorder(db);
		
		this.setFont(FontConfiguration.getConfiguration().getStandardFont());		
		Font font = this.getFont();
		Map attributes = font.getAttributes();
		attributes.put(TextAttribute.UNDERLINE, TextAttribute.UNDERLINE_ON);		
		this.setFont(font.deriveFont(attributes));
		this.setForeground(Color.blue);
		setText(text);		
	}
	

	



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

	public URL getLink(){
		return this.url;
	}

	public void setText(String t){
			if (t.length()==0)
				super.setText("");
			else
				super.setText(t); //HTML labels consume too much cpu
			this.setFont(FontConfiguration.getConfiguration().getStandardFont());		
			Font font = this.getFont();
			Map attributes = font.getAttributes();
			attributes.put(TextAttribute.UNDERLINE, TextAttribute.UNDERLINE_ON);		
			this.setFont(font.deriveFont(attributes));
			this.setForeground(Color.blue);
	}


	@Override
	public Dimension getPreferredSize() {
		if (getText().length()==0 && getIcon()==null)
			return new Dimension(0,0);
		else
			return super.getPreferredSize();
	}



	@Override
	public Dimension getMaximumSize() {
		if (getText().length()==0 && getIcon()==null)
			return new Dimension(0,0);
		else
			return super.getMaximumSize();
	}
	


	@Override
	public Dimension getMinimumSize() {
		if (getText().length()==0 && getIcon()==null)
			return new Dimension(0,0);
		else
			return super.getMinimumSize();
	}

	public static void main(String args[]){

		JFrame jf=new JFrame();
		jf.getContentPane().add(new LinkLabel("hola"));
		jf.pack();
		jf.setVisible(true);
	}


	public void paint(Graphics g){
		super.paint(g);   
		this.enableEvents(MouseEvent.MOUSE_CLICKED|MouseEvent.MOUSE_ENTERED|MouseEvent.MOUSE_EXITED);
		this.setEnabled(true);
		Dimension size=this.getSize();
		/*Color color = g.getColor();
		g.setPaintMode();
		g.setColor(Color.blue);		
		g.drawRect(0,0,size.width-1,size.height-1);
		g.setColor(color);*/
		 Container parent = this;
		 Rectangle nbound=this.getBounds();
		while  (parent.getParent()!=null && !(parent.getParent() instanceof ModelJGraph)){
			parent=parent.getParent();
			nbound.setLocation((int)(nbound.getX()+parent.getBounds().getX()),(int)(nbound.getY()+parent.getBounds().getY()));
		}
		if (parent!=null && this.getLink()!=null){			
		 FieldPositionHelper.put(this.getLink().toString(), "", nbound);

		}
		
	
	}


}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy