Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.plugin / org.gvsig.app.document.table.app / org.gvsig.app.document.table.app.mainplugin / src / main / java / org / gvsig / app / project / documents / table / gui / TableProperties.java @ 41704

History | View | Annotate | Download (13 KB)

1
/**
2
 * gvSIG. Desktop Geographic Information System.
3
 *
4
 * Copyright (C) 2007-2013 gvSIG Association.
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 3
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 * For any additional information, do not hesitate to contact us
22
 * at info AT gvsig.com, or visit our website www.gvsig.com.
23
 */
24
package org.gvsig.app.project.documents.table.gui;
25

    
26
import java.awt.GridLayout;
27
import java.util.Locale;
28
import java.util.Set;
29

    
30
import javax.swing.JPanel;
31

    
32
import org.gvsig.andami.LocaleManager;
33
import org.gvsig.andami.PluginServices;
34
import org.gvsig.andami.PluginsLocator;
35
import org.gvsig.andami.ui.mdiManager.SingletonWindow;
36
import org.gvsig.andami.ui.mdiManager.WindowInfo;
37
import org.gvsig.app.project.documents.table.TableDocument;
38
import org.gvsig.fmap.mapcontrol.dal.feature.swing.table.FeatureTableConfigurationPanel;
39
import org.gvsig.gui.beans.AcceptCancelPanel;
40

    
41
/**
42
 * Table properties dialog.
43
 *
44
 * @author 2004-2005 Fernando Gonz?lez Cort?s
45
 * @author 2005- Vicente Caballero
46
 * @author 2009- <a href="cordinyana@gvsig.org">C?sar Ordi?ana</a> - gvSIG team
47
 */
48
public class TableProperties extends JPanel implements SingletonWindow {
49

    
50
    /**
51
         *
52
         */
53
    private static final long serialVersionUID = -3280622997496976100L;
54

    
55
    private javax.swing.JLabel nameJLabel = null;
56
    private javax.swing.JTextField txtName = null;
57
    private javax.swing.JLabel creationDateJLabel = null;
58
    private javax.swing.JTextField txtDate = null;
59
    private javax.swing.JTextField txtOwner = null;
60
    private javax.swing.JLabel ownerJLabel = null;
61
    private javax.swing.JComboBox comboLocale = null;
62
    private javax.swing.JLabel labelLocale = null;
63
    private javax.swing.JLabel commentJLabel = null;
64
    private javax.swing.JScrollPane jScrollPane = null;
65
    private javax.swing.JTextArea txtComments = null;
66
    private TableDocument tableDocument;
67
    private AcceptCancelPanel okCancelPanel = null;
68
    private javax.swing.JPanel labelsJPanel = null;
69
    private javax.swing.JPanel controlsJPanel = null;
70
    private LocaleManager localeManager = null;
71

    
72
    private FeatureTableConfigurationPanel configPanel;
73

    
74
    /**
75
     * This is the default constructor
76
     *
77
     * @param f
78
     *            Frame padre del di?logo
79
     * @param t
80
     *            Tabla que se representa en el di?logo
81
     */
82
    public TableProperties(TableDocument t) {
83
        tableDocument = t;
84
        initialize();
85
    }
86

    
87
    /**
88
     * This method initializes this
89
     */
90
    private void initialize() {
91

    
92
            localeManager = PluginsLocator.getLocaleManager();
93
        java.awt.FlowLayout layFlowLayout7 = new java.awt.FlowLayout();
94
        layFlowLayout7.setHgap(0);
95
        setLayout(layFlowLayout7);
96
        add(getLabelsJPanel(), null);
97
        add(getControlsJPanel(), null);
98
        add(getCommentJLabel(), null);
99
        add(getJScrollPane(), null);
100
        add(getTableConfigurationPanel(), null);
101
        add(getOkCancelPanel(), null);
102

    
103
        txtName.setText(tableDocument.getName());
104
        txtDate.setText(tableDocument.getCreationDate());
105
        txtOwner.setText(tableDocument.getOwner());
106
        Locale localeOfData = tableDocument.getFeatureStoreModel().getCurrentFeatureTableModel().getLocaleOfData();
107
        if (localeOfData!=null){
108
                comboLocale.setSelectedItem(new LocaleComboBoxItem(localeOfData));
109
        }
110
        txtComments.setText(tableDocument.getComment());
111

    
112
        // TODO: provisional hasta que revisemos lo del mapeado de campos.
113
        // tabla.setVisible(true);
114
        // tabla.getTableHeader().setVisible(true);
115
    }
116

    
117
    /**
118
     * This method initializes nameJLabel
119
     *
120
     * @return javax.swing.JLabel
121
     */
122
    private javax.swing.JLabel getNameJLabel() {
123
        if (nameJLabel == null) {
124
            nameJLabel = new javax.swing.JLabel();
125
            nameJLabel.setText(PluginServices.getText(this, "nombre") + ":");
126
        }
127

    
128
        return nameJLabel;
129
    }
130

    
131
    /**
132
     * This method initializes txtName
133
     *
134
     * @return javax.swing.JTextField
135
     */
136
    private javax.swing.JTextField getTxtName() {
137
        if (txtName == null) {
138
            txtName = new javax.swing.JTextField();
139
            txtName.setPreferredSize(new java.awt.Dimension(261, 20));
140
        }
141

    
142
        return txtName;
143
    }
144

    
145
    /**
146
     * This method initializes jLabel1
147
     *
148
     * @return javax.swing.JLabel
149
     */
150
    private javax.swing.JLabel getCreationDateJLabel() {
151
        if (creationDateJLabel == null) {
152
            creationDateJLabel = new javax.swing.JLabel();
153
            creationDateJLabel
154
                .setText(PluginServices.getText(this, "creation_date") + ":");
155
        }
156

    
157
        return creationDateJLabel;
158
    }
159

    
160
    /**
161
     * This method initializes txtDate
162
     *
163
     * @return javax.swing.JTextField
164
     */
165
    private javax.swing.JTextField getTxtDate() {
166
        if (txtDate == null) {
167
            txtDate = new javax.swing.JTextField();
168
            txtDate.setPreferredSize(new java.awt.Dimension(261, 20));
169
            txtDate.setEditable(false);
170
            txtDate.setBackground(java.awt.Color.white);
171
        }
172

    
173
        return txtDate;
174
    }
175

    
176
    /**
177
     * This method initializes txtOwner
178
     *
179
     * @return javax.swing.JTextField
180
     */
181
    private javax.swing.JTextField getTxtOwner() {
182
        if (txtOwner == null) {
183
            txtOwner = new javax.swing.JTextField();
184
            txtOwner.setPreferredSize(new java.awt.Dimension(261, 20));
185
        }
186

    
187
        return txtOwner;
188
    }
189

    
190
    /**
191
     * This method initializes ownerJLabel
192
     *
193
     * @return javax.swing.JLabel
194
     */
195
    private javax.swing.JLabel getOwnerJLabel() {
196
        if (ownerJLabel == null) {
197
            ownerJLabel = new javax.swing.JLabel();
198
            ownerJLabel.setText(PluginServices.getText(this, "owner") + ":");
199
        }
200

    
201
        return ownerJLabel;
202
    }
203

    
204

    
205
    /**
206
     * This method initializes comboLocale
207
     *
208
     * @return javax.swing.JTextField
209
     */
210
    private javax.swing.JComboBox getComboLocale() {
211
        if (comboLocale == null) {
212
                Set<Locale> items = localeManager.getInstalledLocales();
213
                LocaleComboBoxItem locales[]=new LocaleComboBoxItem[items.size()];
214
                int i=0;
215
                for (Locale item : items) {
216
                                locales[i++]=new LocaleComboBoxItem(item);
217
                        }
218
                comboLocale = new javax.swing.JComboBox(locales);
219
                comboLocale.setPreferredSize(new java.awt.Dimension(261, 20));
220
        }
221
        return comboLocale;
222
    }
223

    
224
    private static class LocaleComboBoxItem {
225

    
226
            private Locale locale;
227

    
228
                public LocaleComboBoxItem(Locale locale) {
229
                    this.locale = locale;
230
                }
231

    
232
                public String toString(){
233
                        return  this.locale.getDisplayName();
234
                }
235

    
236
                public Locale getLocale(){
237
                        return this.locale;
238
                }
239

    
240
                public boolean equals(Object o) {
241
                          if (o == null){
242
                           return false;
243
                          }
244
                          if (o == this){
245
                           return true;
246
                          }
247
                          if (!(o instanceof LocaleComboBoxItem)){
248
                           return false;
249
                          }
250
                          LocaleComboBoxItem item = (LocaleComboBoxItem) o;
251
                          if (!locale.equals(item.getLocale())){
252
                           return false;
253
                          }
254
                         return true;
255
                         }
256
    }
257
    /**
258
     * This method initializes jLabel2
259
     *
260
     * @return javax.swing.JLabel
261
     */
262
    private javax.swing.JLabel getJLabelLocale() {
263
        if (labelLocale == null) {
264
                labelLocale = new javax.swing.JLabel();
265
                labelLocale.setText(PluginServices.getText(this, "locale") + ":");
266
        }
267

    
268
        return labelLocale;
269
    }
270

    
271

    
272
    /**
273
     * This method initializes jLabel3
274
     *
275
     * @return javax.swing.JLabel
276
     */
277
    private javax.swing.JLabel getCommentJLabel() {
278
        if (commentJLabel == null) {
279
            commentJLabel = new javax.swing.JLabel();
280
            commentJLabel.setText(PluginServices.getText(this, "comentarios") + ":");
281
            commentJLabel.setPreferredSize(new java.awt.Dimension(391, 16));
282
        }
283

    
284
        return commentJLabel;
285
    }
286

    
287
    /**
288
     * This method initializes jScrollPane
289
     *
290
     * @return javax.swing.JScrollPane
291
     */
292
    private javax.swing.JScrollPane getJScrollPane() {
293
        if (jScrollPane == null) {
294
            jScrollPane = new javax.swing.JScrollPane();
295
            jScrollPane.setViewportView(getTxtComments());
296
            jScrollPane.setPreferredSize(new java.awt.Dimension(391, 70));
297
        }
298

    
299
        return jScrollPane;
300
    }
301

    
302
    /**
303
     * This method initializes txtComments
304
     *
305
     * @return javax.swing.JTextArea
306
     */
307
    private javax.swing.JTextArea getTxtComments() {
308
        if (txtComments == null) {
309
            txtComments = new javax.swing.JTextArea();
310
        }
311

    
312
        return txtComments;
313
    }
314

    
315
    private FeatureTableConfigurationPanel getTableConfigurationPanel() {
316
        if (configPanel == null) {
317
            configPanel =
318
                new FeatureTableConfigurationPanel(tableDocument
319
                    .getFeatureStoreModel().getCurrentFeatureTableModel());
320
        }
321
        return configPanel;
322
    }
323

    
324
    private Locale getSelectedLocaleOfData(){
325
            LocaleComboBoxItem item = (LocaleComboBoxItem) getComboLocale().getSelectedItem();
326
            if (item==null){
327
                    return null;
328
            }
329
            return item.getLocale();
330
    }
331

    
332
    private AcceptCancelPanel getOkCancelPanel() {
333
        if (okCancelPanel == null) {
334
            okCancelPanel =
335
                new AcceptCancelPanel(new java.awt.event.ActionListener() {
336

    
337
                    public void actionPerformed(java.awt.event.ActionEvent e) {
338
                        tableDocument.setName(txtName.getText());
339
                        tableDocument.setCreationDate(txtDate.getText());
340
                        tableDocument.setOwner(txtOwner.getText());
341
                        tableDocument.setComment(txtComments.getText());
342
                        tableDocument.getFeatureStoreModel().getCurrentFeatureTableModel().setLocaleOfData(getSelectedLocaleOfData());
343

    
344
                        getTableConfigurationPanel().accept();
345

    
346
                        PluginServices.getMDIManager().closeWindow(
347
                            TableProperties.this);
348
                    }
349
                }, new java.awt.event.ActionListener() {
350

    
351
                    public void actionPerformed(java.awt.event.ActionEvent e) {
352

    
353
                        getTableConfigurationPanel().cancel();
354

    
355
                        PluginServices.getMDIManager().closeWindow(
356
                            TableProperties.this);
357
                    }
358
                });
359
            okCancelPanel.setPreferredSize(new java.awt.Dimension(410, 30));
360
        }
361
        return okCancelPanel;
362
    }
363

    
364
    /**
365
     * This method initializes jPanel
366
     *
367
     * @return javax.swing.JPanel
368
     */
369
    private javax.swing.JPanel getLabelsJPanel() {
370
        if (labelsJPanel == null) {
371
            labelsJPanel = new javax.swing.JPanel();
372

    
373
            GridLayout layout = new GridLayout(4, 1);
374
            layout.setVgap(5);
375
            labelsJPanel.setLayout(layout);
376

    
377
            labelsJPanel.add(getNameJLabel(), null);
378
            labelsJPanel.add(getCreationDateJLabel(), null);
379
            labelsJPanel.add(getOwnerJLabel(), null);
380
            labelsJPanel.add(getJLabelLocale(), null);
381
            labelsJPanel.setPreferredSize(new java.awt.Dimension(130, 100));
382
        }
383

    
384
        return labelsJPanel;
385
    }
386

    
387
    /**
388
     * This method initializes controlsJPanel
389
     *
390
     * @return javax.swing.JPanel
391
     */
392
    private javax.swing.JPanel getControlsJPanel() {
393
        if (controlsJPanel == null) {
394
            controlsJPanel = new javax.swing.JPanel();
395

    
396
            java.awt.FlowLayout layFlowLayout8 = new java.awt.FlowLayout();
397
            layFlowLayout8.setAlignment(java.awt.FlowLayout.LEFT);
398
            controlsJPanel.setLayout(layFlowLayout8);
399
            controlsJPanel.add(getTxtName(), null);
400
            controlsJPanel.add(getTxtDate(), null);
401
            controlsJPanel.add(getTxtOwner(), null);
402
            controlsJPanel.add(getComboLocale(), null);
403
            controlsJPanel.setPreferredSize(new java.awt.Dimension(271, 100));
404
        }
405

    
406
        return controlsJPanel;
407
    }
408

    
409
    /**
410
     * @see com.iver.mdiApp.ui.MDIManager.IWindow#getWindowInfo()
411
     */
412
    public WindowInfo getWindowInfo() {
413
        WindowInfo m_viewinfo = new WindowInfo();
414
        m_viewinfo.setTitle(PluginServices.getText(this, "propiedades_tabla"));
415
        m_viewinfo.setWidth(420);
416
        m_viewinfo.setHeight(400);
417

    
418
        return m_viewinfo;
419
    }
420

    
421
    /**
422
     * @see org.gvsig.andami.ui.mdiManager.SingletonWindow#getWindowModel()
423
     */
424
    public Object getWindowModel() {
425
        return tableDocument;
426
    }
427

    
428
    public Object getWindowProfile() {
429
        return WindowInfo.PROPERTIES_PROFILE;
430
    }
431
}