~yrke/tapaal/slimImageIcons-2

« back to all changes in this revision

Viewing changes to src/net/tapaal/swinghelpers/ExtendedJTabbedPane.java

  • Committer: Jiri Srba
  • Date: 2020-04-28 19:15:28 UTC
  • mfrom: (998.2.376 testbranch)
  • Revision ID: srba@cs.aau.dk-20200428191528-3xxjqa1r4jcob5ur
merged in lp:~yrke/tapaal/testbranch doing majour refactoring of the GUI

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
package net.tapaal.swinghelpers;
 
2
 
 
3
import dk.aau.cs.gui.TabComponent;
 
4
import dk.aau.cs.gui.TabContent;
 
5
 
 
6
import javax.swing.*;
 
7
import java.awt.*;
 
8
import java.util.Iterator;
 
9
 
 
10
/**
 
11
 * Helper JTabbedPaned with extra function
 
12
 *
 
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?!??!?
 
17
 *
 
18
 */
 
19
public abstract class ExtendedJTabbedPane<T> extends JTabbedPane implements Iterable<T>{
 
20
 
 
21
    public ExtendedJTabbedPane() {
 
22
    }
 
23
 
 
24
    public abstract Component generator();
 
25
 
 
26
 
 
27
    private void setTabComponent(Component component) {
 
28
        int index = indexOfComponent(component);
 
29
        if (index >= 0) {
 
30
            setTabComponentAt(index, generator());
 
31
        }
 
32
    }
 
33
 
 
34
    @Override
 
35
    public Component add(Component component) {
 
36
        Component toReturn = super.add(component);
 
37
        setTabComponent(toReturn);
 
38
        return toReturn;
 
39
    }
 
40
 
 
41
    @Override
 
42
    public Component add(Component component, int index) {
 
43
        Component toReturn = super.add(component, index);
 
44
        setTabComponent(toReturn);
 
45
        return toReturn;
 
46
    }
 
47
 
 
48
    @Override
 
49
    public Component add(String title, Component component) {
 
50
        Component toReturn = super.add(title, component);
 
51
        setTabComponent(toReturn);
 
52
        return toReturn;
 
53
    }
 
54
 
 
55
    @Override
 
56
    public void add(Component component, Object constraints) {
 
57
        super.add(component, constraints);
 
58
        setTabComponent(component);
 
59
    }
 
60
 
 
61
    @Override
 
62
    public void add(Component component, Object constraints, int index) {
 
63
        super.add(component, constraints, index);
 
64
        setTabComponent(component);
 
65
    }
 
66
 
 
67
    @Override
 
68
    public void addTab(String title, Component component) {
 
69
        super.addTab(title, component);
 
70
        setTabComponent(component);
 
71
    }
 
72
 
 
73
    @Override
 
74
    public void addTab(String title, Icon icon, Component component) {
 
75
        super.addTab(title, icon, component);
 
76
        setTabComponent(component);
 
77
    }
 
78
 
 
79
    @Override
 
80
    public void addTab(String title, Icon icon, Component component, String tip) {
 
81
        super.addTab(title, icon, component, tip);
 
82
        setTabComponent(component);
 
83
    }
 
84
 
 
85
    @Override
 
86
    public Iterator<T> iterator() {
 
87
        return new TabIterator();
 
88
    }
 
89
 
 
90
    private class TabIterator implements Iterator<T> {
 
91
 
 
92
        private int position = 0;
 
93
 
 
94
        @Override
 
95
        public boolean hasNext() {
 
96
            return position < getTabCount();
 
97
        }
 
98
 
 
99
        @Override
 
100
        public T next() {
 
101
            T toReturn = (T) getTabComponentAt(position);
 
102
            position += 1;
 
103
            return toReturn;
 
104
        }
 
105
    }
 
106
}