1 21 22 package com.sshtools.ui.swing; 23 24 import java.awt.BorderLayout ; 25 import java.awt.Component ; 26 27 import javax.swing.BorderFactory ; 28 import javax.swing.JPanel ; 29 import javax.swing.event.ChangeEvent ; 30 import javax.swing.event.ChangeListener ; 31 32 38 39 public class TabbedTabber 40 41 extends ClosableTabbedPane implements Tabber { 42 43 46 47 public TabbedTabber() { 48 this(TOP); 49 50 } 51 52 57 58 public TabbedTabber(int tabPlacement) { 59 super(tabPlacement); 60 addChangeListener(new ChangeListener () { 61 62 public void stateChanged(ChangeEvent e) { 63 if (getSelectedIndex() != -1) { 64 getTabAt(getSelectedIndex()).tabSelected(); 65 } 66 67 } 68 69 }); 70 71 } 72 73 80 81 public Tab getTabAt(int i) { 82 return ((TabPanel) getComponentAt(i)).getTab(); 83 84 } 85 86 91 92 public boolean validateTabs() { 93 for (int i = 0; i < getTabCount(); i++) { 94 Tab tab = ((TabPanel) getComponentAt(i)).getTab(); 95 if (!tab.validateTab()) { 96 setSelectedIndex(i); 97 return false; 98 } 99 } 100 return true; 101 102 } 103 104 107 108 public void applyTabs() { 109 for (int i = 0; i < getTabCount(); i++) { 110 Tab tab = ((TabPanel) getComponentAt(i)).getTab(); 111 tab.applyTab(); 112 } 113 114 } 115 116 public synchronized Tab getSelectedTab() { 117 int idx = getSelectedIndex(); 118 return idx == -1 ? null : getTabAt(idx); 119 } 120 121 126 public Component getComponent() { 127 return this; 128 } 129 130 135 public void removeAllTabs() { 136 removeAll(); 137 } 138 139 144 145 public void addTab(Tab tab) { 146 addTab(tab.getTabTitle(), tab.getTabIcon(), new TabPanel(tab), tab.getTabToolTipText()); 147 148 } 149 150 class TabPanel 151 152 extends JPanel { 153 154 private Tab tab; 155 156 TabPanel(Tab tab) { 157 super(new BorderLayout ()); 158 this.tab = tab; 159 setOpaque(false); 160 add(tab.getTabComponent(), BorderLayout.CENTER); 161 162 } 163 164 public Tab getTab() { 165 return tab; 166 167 } 168 169 } 170 171 } 172 | Popular Tags |