1
package net.tapaal.swinghelpers;
3
import dk.aau.cs.gui.TabComponent;
4
import dk.aau.cs.gui.TabContent;
8
import java.util.Iterator;
11
* Helper JTabbedPaned with extra function
13
* Adding new tabs automatically add TabComponents
14
* TODO: Accepts and returns T types elements
15
* Can iterate the tabs
16
* TODO: check that input type is T?!??!?
19
public abstract class ExtendedJTabbedPane<T> extends JTabbedPane implements Iterable<T>{
21
public ExtendedJTabbedPane() {
24
public abstract Component generator();
27
private void setTabComponent(Component component) {
28
int index = indexOfComponent(component);
30
setTabComponentAt(index, generator());
35
public Component add(Component component) {
36
Component toReturn = super.add(component);
37
setTabComponent(toReturn);
42
public Component add(Component component, int index) {
43
Component toReturn = super.add(component, index);
44
setTabComponent(toReturn);
49
public Component add(String title, Component component) {
50
Component toReturn = super.add(title, component);
51
setTabComponent(toReturn);
56
public void add(Component component, Object constraints) {
57
super.add(component, constraints);
58
setTabComponent(component);
62
public void add(Component component, Object constraints, int index) {
63
super.add(component, constraints, index);
64
setTabComponent(component);
68
public void addTab(String title, Component component) {
69
super.addTab(title, component);
70
setTabComponent(component);
74
public void addTab(String title, Icon icon, Component component) {
75
super.addTab(title, icon, component);
76
setTabComponent(component);
80
public void addTab(String title, Icon icon, Component component, String tip) {
81
super.addTab(title, icon, component, tip);
82
setTabComponent(component);
86
public Iterator<T> iterator() {
87
return new TabIterator();
90
private class TabIterator implements Iterator<T> {
92
private int position = 0;
95
public boolean hasNext() {
96
return position < getTabCount();
101
T toReturn = (T) getTabComponentAt(position);