Revision 44478

View differences:

trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.api/src/main/java/org/gvsig/fmap/dal/swing/featuretype/FeatureTypePanel.java
2 2

  
3 3
import org.gvsig.fmap.dal.feature.EditableFeatureType;
4 4
import org.gvsig.fmap.dal.feature.FeatureType;
5
import org.gvsig.tools.swing.api.ChangeListenerSupport;
5 6
import org.gvsig.tools.swing.api.Component;
6 7

  
7 8
/**
8 9
 *
9 10
 * @author jjdelcerro
10 11
 */
11
public interface FeatureTypePanel extends Component {
12
public interface FeatureTypePanel extends Component, ChangeListenerSupport {
12 13
    
13 14
    public EditableFeatureType fetch(EditableFeatureType type);
14 15
    
......
16 17
    
17 18
    public void setEditable(boolean editable);
18 19

  
20
    public boolean isModifyingAField();
19 21
}
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.impl/src/main/java/org/gvsig/fmap/dal/swing/impl/featuretype/DefaultFeatureTypePanel.java
9 9
import java.util.Objects;
10 10
import javax.swing.JComponent;
11 11
import javax.swing.JOptionPane;
12
import javax.swing.event.ChangeListener;
12 13
import javax.swing.event.ListSelectionEvent;
13 14
import javax.swing.event.ListSelectionListener;
14 15
import javax.swing.event.TableModelEvent;
......
23 24
import org.gvsig.tools.dataTypes.DataTypes;
24 25
import org.gvsig.tools.dynobject.DynStruct_v2;
25 26
import org.gvsig.tools.i18n.I18nManager;
27
import org.gvsig.tools.swing.api.ChangeListenerHelper;
26 28
import org.gvsig.tools.swing.api.ToolsSwingLocator;
27 29
import org.gvsig.tools.swing.api.ToolsSwingManager;
28 30
import org.slf4j.Logger;
......
38 40
    {
39 41

  
40 42
    private static final Logger LOGGER = LoggerFactory.getLogger(DefaultFeatureTypePanel.class);
41
    
43

  
42 44
    private class FeatureTypeTableModel extends AbstractTableModel {
43 45

  
44 46
        private final FeatureType featureType;
......
145 147
    private int currentRow;
146 148
    private boolean fieldSelectionAllowed;
147 149
    private TagsController tagsController;
150
    private ChangeListenerHelper changeListenerHelper;
148 151
        
149 152
    public DefaultFeatureTypePanel() {
150 153
        this.editable = true;
......
157 160
    private void initComponents() {
158 161
        ToolsSwingManager swingManager = ToolsSwingLocator.getToolsSwingManager();
159 162

  
163
        this.changeListenerHelper = swingManager.createChangeListenerHelper();
164
        
160 165
        swingManager.translate(this.btnDelete);
161 166
        swingManager.translate(this.btnFormFieldAccept);
162 167
        swingManager.translate(this.btnFormFieldDiscard);
......
225 230
        );
226 231

  
227 232
        
228
        this.setPreferredSize(new Dimension(700, 400));
233
        this.setPreferredSize(new Dimension(700, 500));
229 234
        if( this.tblFields.getRowCount()>0 ) {
230 235
            this.tblFields.getSelectionModel().setSelectionInterval(0, 0);
231 236
            doFormFieldPut();
......
292 297
            this.descriptorPanel.setEditable(false);
293 298
        }
294 299
        this.fieldSelectionAllowed = false;
300
        this.changeListenerHelper.fireEvent();
295 301
    }
296 302
    
303
    @Override
304
    public boolean isModifyingAField() {
305
        return btnFormFieldAccept.isEnabled();
306
    }
307
    
297 308
    private void doFormFieldAccept() {
298 309
        int row = this.tblFields.getSelectedRow();
299 310
        if( row<0 ) {
......
305 316
            this.tblFields.scrollRectToVisible(this.tblFields.getCellRect(row, 0, true));
306 317
            this.fieldSelectionAllowed = true;
307 318
        }
319
        this.changeListenerHelper.fireEvent();
308 320
    }
309 321
    
310 322
    private void doFormFieldDiscard() {
311 323
        doFormFieldPut();
312 324
        this.updateButtonState();
313 325
        this.fieldSelectionAllowed = true;
326
        this.changeListenerHelper.fireEvent();
314 327
    }
315 328

  
316 329
    private void doChangeFieldSelection() {
......
403 416
        this.tblFields.getSelectionModel().addSelectionInterval(row,row);
404 417
        this.tblFields.scrollRectToVisible(this.tblFields.getCellRect(row, 0, true));
405 418
        updateButtonState();
406
        doFormFieldModify();       
419
        doFormFieldModify();    
420
        this.changeListenerHelper.fireEvent();
407 421
    }
408 422
    
409 423
    private void doDeleteField() {
......
420 434
        this.tblFields.getSelectionModel().addSelectionInterval(row,row);
421 435
        updateButtonState();
422 436
        doFormFieldPut();       
437
        this.changeListenerHelper.fireEvent();
423 438
    }
424 439
            
425 440
    public static String getNewFieldName(FeatureType featureType) {
......
436 451
        return fieldName;
437 452
    }
438 453

  
454
    @Override
455
    public void addChangeListener(ChangeListener listener) {
456
        this.changeListenerHelper.addChangeListener(listener);
457
    }
458

  
459
    @Override
460
    public ChangeListener[] getChangeListeners() {
461
        return this.changeListenerHelper.getChangeListeners();
462
    }
463

  
464
    @Override
465
    public void removeChangeListener(ChangeListener listener) {
466
        this.changeListenerHelper.removeChangeListener(listener);
467
    }
468

  
469
    @Override
470
    public void removeAllChangeListener() {
471
        this.changeListenerHelper.removeAllChangeListener();
472
    }
473

  
474
    @Override
475
    public boolean hasChangeListeners() {
476
        return this.changeListenerHelper.hasChangeListeners();
477
    }
478
    
439 479
}
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/extension/TableEditAttributes.java
25 25

  
26 26
import java.awt.event.ActionEvent;
27 27
import java.awt.event.ActionListener;
28
import org.apache.commons.lang3.StringUtils;
28
import javax.swing.event.ChangeEvent;
29
import javax.swing.event.ChangeListener;
29 30
import org.gvsig.andami.IconThemeHelper;
30 31
import org.gvsig.andami.plugins.Extension;
31 32
import org.gvsig.app.ApplicationLocator;
32 33
import org.gvsig.app.ApplicationManager;
33 34
import org.gvsig.app.project.Project;
34 35
import org.gvsig.app.project.ProjectManager;
35
import org.gvsig.app.project.documents.Document;
36 36
import org.gvsig.app.project.documents.table.TableDocument;
37 37
import org.gvsig.app.project.documents.table.TableManager;
38 38
import org.gvsig.app.project.documents.table.gui.FeatureTableDocumentPanel;
39
import org.gvsig.fmap.dal.DALLocator;
40
import org.gvsig.fmap.dal.DataManager;
41
import org.gvsig.fmap.dal.DataStore;
42 39
import org.gvsig.fmap.dal.DataTypes;
43
import org.gvsig.fmap.dal.StoresRepository;
44 40
import org.gvsig.fmap.dal.feature.EditableFeatureAttributeDescriptor;
45 41
import org.gvsig.fmap.dal.feature.EditableFeatureType;
46 42
import org.gvsig.fmap.dal.feature.FeatureStore;
......
64 60
@SuppressWarnings("UseSpecificCatch")
65 61
public class TableEditAttributes extends Extension {
66 62

  
63
    @Override
67 64
    public void initialize() {
68 65
        IconThemeHelper.registerIcon("action", "table-column-manager", this);
69 66
        IconThemeHelper.registerIcon("action", "table-add-column", this);
......
74 71
        return true;
75 72
    }
76 73

  
74
    @Override
77 75
    public void execute(String s) {
78 76
        final I18nManager i18n = ToolsLocator.getI18nManager();
79 77
        final WindowManager_v2 winManager = (WindowManager_v2) ToolsSwingLocator.getWindowManager();
......
108 106
                            WindowManager_v2.BUTTON_APPLY, 
109 107
                            i18n.getTranslation("_Show_as_table")
110 108
                    );
109
                    panel.addChangeListener(new ChangeListener() {
110
                        @Override
111
                        public void stateChanged(ChangeEvent e) {
112
                            if( panel.isModifyingAField() ) {
113
                                dialog.setButtonEnabled(WindowManager_v2.BUTTON_OK, false);
114
                                dialog.setButtonEnabled(WindowManager_v2.BUTTON_APPLY, false);
115
                            } else {
116
                                dialog.setButtonEnabled(WindowManager_v2.BUTTON_OK, true);
117
                                dialog.setButtonEnabled(WindowManager_v2.BUTTON_APPLY, true);
118
                            }
119
                        }
120
                    });
111 121
                } else {
112 122
                    dialog.setButtonLabel(
113 123
                            WindowManager_v2.BUTTON_CANCEL, 
......
208 218
    }
209 219
    
210 220

  
221
    @Override
211 222
    public boolean isEnabled() {
212 223
        ApplicationManager application = ApplicationLocator.getManager();
213 224

  
......
218 229
        return tabledoc.getStore().isEditing();
219 230
    }
220 231

  
232
    @Override
221 233
    public boolean isVisible() {
222 234
        ApplicationManager application = ApplicationLocator.getManager();
223 235

  

Also available in: Unified diff