~josejuan-sanchez/+junk/original-jhv-experimental-version

« back to all changes in this revision

Viewing changes to src/jhv/src/org/helioviewer/jhv/gui/components/ControlPanelContainer.java

  • Committer: José Juan Sánchez Hernández
  • Date: 2013-02-05 13:32:08 UTC
  • Revision ID: josejuan.sanchez@gmail.com-20130205133208-dfz1sh1uge5pjkny
Initial import

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
package org.helioviewer.jhv.gui.components;
 
2
 
 
3
import java.awt.CardLayout;
 
4
import java.awt.Component;
 
5
import java.util.HashMap;
 
6
 
 
7
import javax.swing.JPanel;
 
8
import javax.swing.SwingUtilities;
 
9
 
 
10
import org.helioviewer.jhv.layers.LayersListener;
 
11
import org.helioviewer.jhv.layers.LayersModel;
 
12
import org.helioviewer.viewmodel.view.ImageInfoView;
 
13
import org.helioviewer.viewmodel.view.View;
 
14
 
 
15
public class ControlPanelContainer extends JPanel implements LayersListener {
 
16
 
 
17
    private static final long serialVersionUID = 5760418851530682634L;
 
18
    HashMap<ImageInfoView, Component> controlMap = new HashMap<ImageInfoView, Component>();
 
19
 
 
20
    public ControlPanelContainer() {
 
21
        this.setLayout(new CardLayout());
 
22
        LayersModel.getSingletonInstance().addLayersListener(this);
 
23
    }
 
24
 
 
25
    public void addLayer(ImageInfoView view, Component controlPanel) {
 
26
        controlMap.put(view, controlPanel);
 
27
        this.add(controlPanel, view.toString());
 
28
    }
 
29
 
 
30
    public void removeLayer(ImageInfoView view) {
 
31
        Component toRemove = controlMap.get(view);
 
32
        this.getLayout().removeLayoutComponent(toRemove);
 
33
    }
 
34
 
 
35
    public Component getViewComponent(ImageInfoView view) {
 
36
        return controlMap.get(view);
 
37
    }
 
38
 
 
39
    public void updateActiveView() {
 
40
        final View activeView = LayersModel.getSingletonInstance().getActiveView();
 
41
        final ImageInfoView view = activeView != null ? activeView.getAdapter(ImageInfoView.class) : null;
 
42
        final CardLayout cl = (CardLayout) (this.getLayout());
 
43
        final ControlPanelContainer thisComp = this;
 
44
        SwingUtilities.invokeLater(new Runnable() {
 
45
            public void run() {
 
46
                cl.show(thisComp, view == null ? "null" : view.toString());
 
47
                thisComp.ensureSize();
 
48
            }
 
49
        });
 
50
    }
 
51
 
 
52
    private void ensureSize() {
 
53
        for (Component comp : this.getComponents()) {
 
54
            if (comp.isVisible()) {
 
55
                this.setPreferredSize(comp.getPreferredSize());
 
56
            }
 
57
        }
 
58
        revalidate();
 
59
    }
 
60
 
 
61
    public void setDefaultPanel(Component comp) {
 
62
        this.add(comp, "null");
 
63
        this.controlMap.put(null, comp);
 
64
    }
 
65
 
 
66
    /**
 
67
     * {@inheritDoc}
 
68
     */
 
69
    public void activeLayerChanged(int index) {
 
70
        this.updateActiveView();
 
71
    }
 
72
 
 
73
    /**
 
74
     * {@inheritDoc}
 
75
     */
 
76
    public void layerAdded(int newIndex) {
 
77
        this.updateActiveView();
 
78
    }
 
79
 
 
80
    /**
 
81
     * {@inheritDoc}
 
82
     */
 
83
    public void layerChanged(int index) {
 
84
 
 
85
        // this is called very often. refine the events to layer visibility
 
86
        // changed?
 
87
        boolean visible = LayersModel.getSingletonInstance().isVisible(index);
 
88
        View view = LayersModel.getSingletonInstance().getLayer(index);
 
89
        ImageInfoView imageInfoView = view != null ? view.getAdapter(ImageInfoView.class) : null;
 
90
 
 
91
        Component c = this.getViewComponent(imageInfoView);
 
92
 
 
93
        if (c != null) {
 
94
            c.setEnabled(visible);
 
95
        }
 
96
    }
 
97
 
 
98
    /**
 
99
     * {@inheritDoc}
 
100
     */
 
101
    public void layerRemoved(View oldView, int oldIndex) {
 
102
    }
 
103
 
 
104
    /**
 
105
     * {@inheritDoc}
 
106
     */
 
107
    public void viewportGeometryChanged() {
 
108
    }
 
109
 
 
110
    /**
 
111
     * {@inheritDoc}
 
112
     */
 
113
    public void subImageDataChanged() {
 
114
    }
 
115
 
 
116
    /**
 
117
     * {@inheritDoc}
 
118
     */
 
119
    public void timestampChanged(int idx) {
 
120
    }
 
121
 
 
122
    /**
 
123
     * {@inheritDoc}
 
124
     */
 
125
    public void layerDownloaded(int idx) {
 
126
    }
 
127
 
 
128
}