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 @ 2158

History | View | Annotate | Download (7.18 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
    private boolean autoclose;
36

    
37
    @SuppressWarnings("OverridableMethodCallInConstructor")
38
    public DefaultDialog(JComponent contents, String title, String header, int buttons) {
39
        this.contents = contents;
40
        this.title = title;
41
        this.buttons = buttons;
42
        this.action = BUTTON_CANCEL;
43
        this.listeners = new DefaultActionListenerSupport();
44
        this.autoclose = true;
45
        this.initComponents();
46
        this.setButtons(buttons);
47
        this.setHeaderLabel(header);
48
    }
49

    
50
    public void setWindowManager(WindowManager windowManager) {
51
        this.windowManager = windowManager;
52
    }
53
    
54
    @Override
55
    public JComponent getContents() {
56
        return this.contents;
57
    } 
58
    
59
    private void initComponents() {
60
        I18nManager i18nManager = ToolsLocator.getI18nManager();
61
        this.btnAccept.setText(i18nManager.getTranslation("Accept"));
62
        this.btnCancel.setText(i18nManager.getTranslation("Cancel"));
63
        this.btnApply.setText(i18nManager.getTranslation("Apply"));
64
        
65
        this.pnlContents.setLayout(new BorderLayout());
66
        this.pnlContents.add(this.contents, BorderLayout.CENTER);
67

    
68
        this.btnAccept.addActionListener(new ActionListener() {
69
            @Override
70
            public void actionPerformed(ActionEvent ae) {
71
                action = BUTTON_OK;
72
                if (autoclose) {
73
                    setVisible(false);
74
                }
75
                fireActionEvent(new ActionEvent(DefaultDialog.this, BUTTON_OK, "ok"));
76
            }
77
        });
78
        this.btnCancel.addActionListener(new ActionListener() {
79
            @Override
80
            public void actionPerformed(ActionEvent ae) {
81
                action = BUTTON_CANCEL;
82
                if (autoclose) {
83
                    setVisible(false);
84
                }
85
                fireActionEvent(new ActionEvent(DefaultDialog.this, BUTTON_CANCEL, "cancel"));
86
            }
87
        });
88
        this.btnApply.addActionListener(new ActionListener() {
89
            @Override
90
            public void actionPerformed(ActionEvent ae) {
91
                action = BUTTON_APPLY;
92
                fireActionEvent(new ActionEvent(DefaultDialog.this, BUTTON_APPLY, "apply"));
93
            }
94
        });
95
    }
96

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

    
109
    @Override
110
    public void setHeaderLabel(String header) {
111
        this.header2 = header;
112
        if (this.header2 == null) {
113
            this.lblHeader2.setText("");
114
            this.lblHeader2.setVisible(false);
115
        } else {
116
            this.lblHeader2.setText(this.header2);
117
            this.lblHeader2.setVisible(true);
118
        }
119
    }
120

    
121
    @Override
122
    public void setContents(JComponent contents) {
123
        this.contents = contents;
124
        this.pnlContents.removeAll();
125
        this.pnlContents.add(this.contents, BorderLayout.CENTER);
126
    }
127

    
128
    @Override
129
    public int getAction() {
130
        return this.action;
131
    }
132

    
133
    @Override
134
    public void addActionListener(ActionListener listener) {
135
        this.listeners.addActionListener(listener);
136
    }
137

    
138
    @Override
139
    public ActionListener[] getActionListeners() {
140
        return this.listeners.getActionListeners();
141
    }
142

    
143
    @Override
144
    public void removeActionListener(ActionListener listener) {
145
        this.listeners.removeActionListener(listener);
146
    }
147

    
148
    @Override
149
    public void removeAllActionListener() {
150
        this.listeners.removeAllActionListener();
151
    }
152

    
153
    private void fireActionEvent(ActionEvent event) {
154
        this.listeners.fireActionEvent(event);
155
    }
156

    
157
    protected WindowManager getWindowManager() {
158
        if( this.windowManager == null ) {
159
            this.windowManager = ToolsSwingLocator.getWindowManager();
160
        }
161
        return this.windowManager;
162
    }
163
    
164
    @Override
165
    public void show(WindowManager.MODE mode) {
166
        WindowManager winmgr = this.getWindowManager();
167
        if (icon != null && winmgr instanceof WindowManager_v2) {
168
            ((WindowManager_v2) winmgr).showWindow(this, title, mode, icon);
169
        } else {
170
            winmgr.showWindow(this, title, mode);
171
        }
172
    }
173

    
174
    @Override
175
    public void setIcon(Image icon) {
176
        this.icon = icon;
177
    }
178

    
179
    @Override
180
    public void setHeaderImage(Image image) {
181
        this.image = image;
182

    
183
    }
184

    
185
    @Override
186
    public void setButtons(int buttons) {
187
        this.buttons = buttons;
188
        this.btnAccept.setVisible((this.buttons & BUTTON_OK) == BUTTON_OK);
189
        this.btnCancel.setVisible((this.buttons & BUTTON_CANCEL) == BUTTON_CANCEL);
190
        this.btnApply.setVisible((this.buttons & BUTTON_APPLY) == BUTTON_APPLY);
191
    }
192

    
193
    public JButton getButton(int button) {
194
        switch (button) {
195
            case BUTTON_APPLY:
196
                return this.btnApply;
197
            case BUTTON_OK:
198
                return this.btnAccept;
199
            case BUTTON_CANCEL:
200
                return this.btnCancel;
201
        }
202
        throw new IllegalArgumentException("Button number not allowed (button="+button+").");
203
    }
204
    
205
    @Override
206
    public void setButtonLabel(int button, String label) {
207
        this.getButton(button).setText(label);
208
    }
209

    
210
    @Override
211
    public JComponent asJComponent() {
212
        return this;
213
    }
214

    
215
    @Override
216
    public void setButtonEnabled(int button, boolean enabled) {
217
        this.getButton(button).setEnabled(enabled);
218
    }
219

    
220
    @Override
221
    public boolean isButtonEnabled(int button) {
222
        return this.getButton(button).isEnabled();
223
    }
224

    
225
    @Override
226
    public void setAutoclose(boolean autoclose) {
227
        this.autoclose = autoclose;
228
    }
229

    
230
    @Override
231
    public boolean isAutoclose() {
232
        return this.autoclose;
233
    }
234
}