1 21 22 package org.armedbear.j; 23 24 import java.awt.Component ; 25 import java.awt.Dimension ; 26 import java.awt.Graphics ; 27 import java.awt.event.MouseEvent ; 28 import java.awt.event.MouseListener ; 29 import javax.swing.BorderFactory ; 30 import javax.swing.BoxLayout ; 31 import javax.swing.JComponent ; 32 import javax.swing.JLabel ; 33 import javax.swing.JPanel ; 34 import javax.swing.JScrollPane ; 35 36 public final class SidebarPanel extends JPanel implements MouseListener 37 { 38 private final Sidebar sidebar; 39 private JLabel label; 40 private JScrollPane scrollPane; 41 42 public SidebarPanel(Sidebar sidebar) 43 { 44 super(); 45 this.sidebar = sidebar; 46 setLayout(new BoxLayout (this, BoxLayout.Y_AXIS)); 47 } 48 49 public void removeAll() 50 { 51 label = null; 52 scrollPane = null; 53 super.removeAll(); 54 } 55 56 public void setLabelText(String s) 57 { 58 if (s == null || s.length() == 0) { 59 if (label != null) { 61 remove(label); 62 label = null; 63 } 64 } else { 65 if (label == null) { 66 if (scrollPane != null) { 68 remove(scrollPane); 69 add(label = new Label()); 70 add(scrollPane); 71 validate(); 72 } 73 } 74 if (label != null && !s.equals(label.getText())) { 75 label.setText(s); 76 Dimension dim = label.getPreferredSize(); 78 dim.width = 0; 79 label.setMinimumSize(dim); 80 } 81 } 82 } 83 84 public void addScrollPane(JScrollPane scrollPane) 85 { 86 if (label == null) 87 add(label = new Label()); 88 if (scrollPane.getVerticalScrollBar() != null) 89 scrollPane.getVerticalScrollBar().addMouseListener(this); 90 this.scrollPane = scrollPane; 91 add(scrollPane); 92 } 93 94 public void mouseClicked(MouseEvent e) {} 95 96 public void mouseEntered(MouseEvent e) {} 97 98 public void mouseExited(MouseEvent e) {} 99 100 public void mousePressed(MouseEvent e) 101 { 102 if (scrollPane != null) { 103 if (scrollPane.getViewport() != null) { 104 Component c = scrollPane.getViewport().getView(); 105 if (c instanceof JComponent ) 106 sidebar.getEditor().setFocus((JComponent )c); 107 } 108 } 109 } 110 111 public void mouseReleased(MouseEvent e) {} 112 113 private static class Label extends JLabel 114 { 115 private Label() 116 { 117 super(); 118 setBorder(BorderFactory.createEmptyBorder(3, 3, 3, 3)); 119 } 120 121 public void paintComponent(Graphics g) 122 { 123 Display.setRenderingHints(g); 124 super.paintComponent(g); 125 } 126 } 127 } 128 | Popular Tags |