Statistics
| Revision:

gvsig-tools / org.gvsig.tools / library / trunk / org.gvsig.tools / org.gvsig.tools.swing / org.gvsig.tools.swing.impl / src / main / java / org / gvsig / tools / swing / impl / windowmanager / DefaultDialog.java @ 1675

History | View | Annotate | Download (6.67 KB)

1
package org.gvsig.tools.swing.impl.windowmanager;
2

    
3
import java.awt.BorderLayout;
4
import java.awt.Image;
5
import java.awt.event.ActionEvent;
6
import java.awt.event.ActionListener;
7
import javax.swing.JButton;
8
import javax.swing.JComponent;
9
import org.gvsig.tools.ToolsLocator;
10
import org.gvsig.tools.i18n.I18nManager;
11
import org.gvsig.tools.swing.api.ToolsSwingLocator;
12
import org.gvsig.tools.swing.api.windowmanager.Dialog;
13
import org.gvsig.tools.swing.api.windowmanager.WindowManager;
14
import org.gvsig.tools.swing.api.windowmanager.WindowManager_v2;
15
import static org.gvsig.tools.swing.api.windowmanager.WindowManager_v2.BUTTON_APPLY;
16
import static org.gvsig.tools.swing.api.windowmanager.WindowManager_v2.BUTTON_CANCEL;
17
import static org.gvsig.tools.swing.api.windowmanager.WindowManager_v2.BUTTON_OK;
18
import org.gvsig.tools.swing.impl.DefaultActionListenerSupport;
19

    
20
public class DefaultDialog extends DefaultDialogView implements Dialog {
21

    
22
    private static final long serialVersionUID = -8823659108133528353L;
23

    
24
    protected JComponent contents;
25
    protected String header1;
26
    protected String header2;
27
    protected String title;
28

    
29
    protected int buttons;
30
    protected int action;
31
    protected DefaultActionListenerSupport listeners;
32
    protected Image icon = null;
33
    protected Image image = null;
34
    private WindowManager windowManager = null;
35

    
36
    public DefaultDialog(JComponent contents, String title, String header, int buttons) {
37
        this.contents = contents;
38
        this.title = title;
39
        this.buttons = buttons;
40
        this.action = BUTTON_CANCEL;
41
        this.listeners = new DefaultActionListenerSupport();
42
        this.initComponents();
43
        this.setButtons(buttons);
44
        this.setHeaderLabel(header);
45
    }
46

    
47
    public void setWindowManager(WindowManager windowManager) {
48
        this.windowManager = windowManager;
49
    }
50
    
51
    private void initComponents() {
52
        I18nManager i18nManager = ToolsLocator.getI18nManager();
53
        this.btnAccept.setText(i18nManager.getTranslation("Accept"));
54
        this.btnCancel.setText(i18nManager.getTranslation("Cancel"));
55
        this.btnApply.setText(i18nManager.getTranslation("Apply"));
56
        
57
        this.pnlContents.setLayout(new BorderLayout());
58
        this.pnlContents.add(this.contents, BorderLayout.CENTER);
59

    
60
        this.btnAccept.addActionListener(new ActionListener() {
61
            @Override
62
            public void actionPerformed(ActionEvent ae) {
63
                action = BUTTON_OK;
64
                setVisible(false);
65
                fireActionEvent(new ActionEvent(DefaultDialog.this, BUTTON_OK, "ok"));
66
            }
67
        });
68
        this.btnCancel.addActionListener(new ActionListener() {
69
            @Override
70
            public void actionPerformed(ActionEvent ae) {
71
                action = BUTTON_CANCEL;
72
                setVisible(false);
73
                fireActionEvent(new ActionEvent(DefaultDialog.this, BUTTON_CANCEL, "cancel"));
74
            }
75
        });
76
        this.btnApply.addActionListener(new ActionListener() {
77
            @Override
78
            public void actionPerformed(ActionEvent ae) {
79
                action = BUTTON_APPLY;
80
                fireActionEvent(new ActionEvent(DefaultDialog.this, BUTTON_APPLY, "apply"));
81
            }
82
        });
83
    }
84

    
85
    @Override
86
    public void setHeaderTitle(String header) {
87
        this.header1 = header;
88
        if (this.header1 == null) {
89
            this.lblHeader1.setText("");
90
            this.lblHeader1.setVisible(false);
91
        } else {
92
            this.lblHeader1.setText(this.header1);
93
            this.lblHeader1.setVisible(true);
94
        }
95
    }
96

    
97
    @Override
98
    public void setHeaderLabel(String header) {
99
        this.header2 = header;
100
        if (this.header2 == null) {
101
            this.lblHeader2.setText("");
102
            this.lblHeader2.setVisible(false);
103
        } else {
104
            this.lblHeader2.setText(this.header2);
105
            this.lblHeader2.setVisible(true);
106
        }
107
    }
108

    
109
    @Override
110
    public void setContents(JComponent contents) {
111
        this.contents = contents;
112
        this.pnlContents.removeAll();
113
        this.pnlContents.add(this.contents, BorderLayout.CENTER);
114
    }
115

    
116
    @Override
117
    public int getAction() {
118
        return this.action;
119
    }
120

    
121
    @Override
122
    public void addActionListener(ActionListener listener) {
123
        this.listeners.addActionListener(listener);
124
    }
125

    
126
    @Override
127
    public ActionListener[] getActionListeners() {
128
        return this.listeners.getActionListeners();
129
    }
130

    
131
    @Override
132
    public void removeActionListener(ActionListener listener) {
133
        this.listeners.removeActionListener(listener);
134
    }
135

    
136
    @Override
137
    public void removeAllActionListener() {
138
        this.listeners.removeAllActionListener();
139
    }
140

    
141
    private void fireActionEvent(ActionEvent event) {
142
        this.listeners.fireActionEvent(event);
143
    }
144

    
145
    protected WindowManager getWindowManager() {
146
        if( this.windowManager == null ) {
147
            this.windowManager = ToolsSwingLocator.getWindowManager();
148
        }
149
        return this.windowManager;
150
    }
151
    
152
    @Override
153
    public void show(WindowManager.MODE mode) {
154
        WindowManager winmgr = this.getWindowManager();
155
        if (icon != null && winmgr instanceof WindowManager_v2) {
156
            ((WindowManager_v2) winmgr).showWindow(this, title, mode, icon);
157
        } else {
158
            winmgr.showWindow(this, title, mode);
159
        }
160
    }
161

    
162
    @Override
163
    public void setIcon(Image icon) {
164
        this.icon = icon;
165
    }
166

    
167
    @Override
168
    public void setHeaderImage(Image image) {
169
        this.image = image;
170

    
171
    }
172

    
173
    @Override
174
    public void setButtons(int buttons) {
175
        this.buttons = buttons;
176
        this.btnAccept.setVisible((this.buttons & BUTTON_OK) == BUTTON_OK);
177
        this.btnCancel.setVisible((this.buttons & BUTTON_CANCEL) == BUTTON_CANCEL);
178
        this.btnApply.setVisible((this.buttons & BUTTON_APPLY) == BUTTON_APPLY);
179
    }
180

    
181
    public JButton getButton(int button) {
182
        switch (button) {
183
            case BUTTON_APPLY:
184
                return this.btnApply;
185
            case BUTTON_OK:
186
                return this.btnAccept;
187
            case BUTTON_CANCEL:
188
                return this.btnCancel;
189
        }
190
        throw new IllegalArgumentException("Button number not allowed (button="+button+").");
191
    }
192
    
193
    @Override
194
    public void setButtonLabel(int button, String label) {
195
        this.getButton(button).setText(label);
196
    }
197

    
198
    @Override
199
    public JComponent asJComponent() {
200
        return this;
201
    }
202

    
203
    @Override
204
    public void setButtonEnabled(int button, boolean enabled) {
205
        this.getButton(button).setEnabled(enabled);
206
    }
207

    
208
    @Override
209
    public boolean isButtonEnabled(int button) {
210
        return this.getButton(button).isEnabled();
211
    }
212
}