# This patch file was generated by NetBeans IDE # Following Index: paths are relative to: /home/schkovich/NetBeansProjects/MainSilver/main-silver # This patch can be applied using context Tools: Patch action on respective folder. # It uses platform neutral UTF-8 encoding and \n newlines. # Above lines and this line are ignored by the patching process. Index: welcome/src/org/netbeans/modules/welcome/content/LinkButton.java --- welcome/src/org/netbeans/modules/welcome/content/LinkButton.java Base (BASE) +++ welcome/src/org/netbeans/modules/welcome/content/LinkButton.java Locally Modified (Based On LOCAL) @@ -46,13 +46,19 @@ import java.awt.Color; import java.awt.Cursor; +import java.awt.Component; +import java.awt.BasicStroke; import java.awt.Dimension; import java.awt.Font; import java.awt.FontMetrics; +import java.awt.Point; +import java.awt.geom.*; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Insets; import java.awt.Rectangle; +import java.awt.RenderingHints; +import java.awt.Shape; import java.awt.event.ActionListener; import java.awt.event.FocusEvent; import java.awt.event.FocusListener; @@ -62,10 +68,14 @@ import java.util.logging.LogRecord; import javax.swing.BorderFactory; import javax.swing.JButton; +import javax.swing.JFrame; import javax.swing.JLabel; +import javax.swing.JToolTip; import javax.swing.border.Border; import javax.swing.border.EmptyBorder; +import javax.swing.JComponent; import org.openide.util.NbBundle; +import org.openide.windows.WindowManager; /** * @@ -76,7 +86,6 @@ private boolean underline = false; private final boolean showBorder; - private final Color defaultForeground; private final static Border regularBorder = ButtonBorder.createRegular(); @@ -84,6 +93,8 @@ private String usageTrackingId; + private JToolTip tooltip; + public LinkButton( String label, String usageTrackingId ) { this( label, false, usageTrackingId ); } @@ -100,6 +111,12 @@ super( label ); this.defaultForeground = foreground; this.showBorder = showBorder; + + tooltip = new WelcomeToolTip(); + tooltip.setComponent(this); + + setToolTipText(label); + setForeground( defaultForeground ); setFont( BUTTON_FONT ); this.usageTrackingId = usageTrackingId; @@ -127,6 +144,30 @@ } @Override + public JToolTip createToolTip() { + return tooltip; + } + + @Override + public Point getToolTipLocation(MouseEvent event) { + JFrame frame = (JFrame) WindowManager.getDefault().getMainWindow(); + + int mainWindowX = frame.getLocationOnScreen().x; + Dimension mainWindowSize = frame.getSize(); + + Rectangle tooltopVisible = getVisibleRect(); + Point tooltipLocation = getLocationOnScreen(); + System.err.println("Original Tooltip location x " + tooltipLocation.x); + int ttX = 10; + if ((mainWindowX + mainWindowSize.width) + < (tooltipLocation.x + tooltopVisible.width)) { + ttX = - ((tooltipLocation.x + tooltopVisible.width) - + (mainWindowX + mainWindowSize.width)); + } + return new Point(ttX, 20); + } + + @Override public void mouseClicked(MouseEvent e) { } @@ -234,3 +275,66 @@ System.err.println("usage: " + id); } } + +class WelcomeToolTip extends JToolTip { + + public WelcomeToolTip() { + super(); + this.setOpaque(false); + } + + @Override + public Dimension getPreferredSize() { + Dimension dim = super.getPreferredSize(); + return new Dimension((int)dim.getWidth() + 50,(int)dim.getHeight()+10); + } + @Override + public void paintComponent(Graphics g) { + // set the parent opaque + Component parent = this.getParent(); + if(parent != null) { + if(parent instanceof JComponent) { + JComponent jparent = (JComponent)parent; + if(jparent.isOpaque()) { + jparent.setOpaque(false); + } + } + } + // create a round rectangle + Shape round = new RoundRectangle2D.Float(4f,4f, + this.getWidth() -1f - 8f, + this.getHeight() -1f -8f, + 15f,15f); + + // draw background + Graphics2D g2 = Utils.prepareGraphics( g ); + g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, + RenderingHints.VALUE_ANTIALIAS_ON); + // set GhostWhite background color + g2.setColor(Color.getHSBColor(0.333f, 0.027f, 1f)); + g2.fill(round); + + // draw the LightSteelBlue border + g2.setColor(Color.getHSBColor(0.406f, 0.207f, 0.871f)); + g2.setStroke(new BasicStroke(1)); + g2.draw(round); + g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, + RenderingHints.VALUE_ANTIALIAS_DEFAULT); + + // draw the text + String text = this.getComponent().getToolTipText(); + if(text != null) { + FontMetrics fm = g2.getFontMetrics(); + int h = fm.getAscent(); + Font font = fm.getFont(); + g2.setFont(new Font(font.getFontName(), Font.BOLD, font.getSize())); + g2.setColor(Color.DARK_GRAY); + g2.drawString(text,10,(this.getHeight()+h)/2); + } + } + + @Override + public void setToolTipText(String str) { + super.setToolTipText(str); + } +}