Revision 26053 branches/v2_0_0_prep/applications/appgvSIG/src/com/iver/cit/gvsig/TableEditChangeColumnsExtension.java

View differences:

TableEditChangeColumnsExtension.java
40 40
 */
41 41
package com.iver.cit.gvsig;
42 42

  
43
import java.awt.Component;
44
import java.text.ParseException;
45

  
46
import javax.swing.JOptionPane;
47

  
48
import org.gvsig.fmap.dal.DataTypes;
49 43
import org.gvsig.fmap.dal.exception.DataException;
50
import org.gvsig.fmap.dal.feature.EditableFeatureAttributeDescriptor;
51
import org.gvsig.fmap.dal.feature.EditableFeatureType;
52
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
53
import org.gvsig.project.document.table.gui.CreateNewAttributePanel;
54
import org.gvsig.project.document.table.gui.FeatureTableDocumentPanel;
55 44

  
56 45
import com.iver.andami.PluginServices;
57 46
import com.iver.andami.messages.NotificationManager;
58
import com.iver.andami.plugins.Extension;
59
import com.iver.andami.ui.mdiManager.IWindow;
60 47

  
61 48

  
62 49
/**
......
64 51
 *
65 52
 * @author Vicente Caballero Navarro
66 53
 */
67
public class TableEditChangeColumnsExtension extends Extension {
68
	private FeatureTableDocumentPanel table=null;
69
	public static int MAX_FIELD_LENGTH = 254;
70
	/**
71
     * @see com.iver.andami.plugins.IExtension#initialize()
72
     */
73
    public void initialize() {
74
    }
54
public class TableEditChangeColumnsExtension extends AbstractTableEditExtension {
75 55

  
76 56
    /**
77 57
     * @see com.iver.andami.plugins.IExtension#execute(java.lang.String)
78 58
     */
79 59
    public void execute(String actionCommand) {
80 60
    	try {
61
    		featureTableOperations.setStore(table.getModel().getStore());
81 62
    		if ("REMOVECOLUMN".equals(actionCommand)) {
82
    			EditableFeatureType eft = table.getModel().getStore().getDefaultFeatureType().getEditable();
83
    			FeatureAttributeDescriptor[] selecteds =table.getTablePanel().getTable().getSelectedColumnsAttributeDescriptor();
84
    			for (int i = 0; i < selecteds.length; i++) {
85
    				eft.remove(selecteds[i].getName());
86
    			}
87
    			table.getModel().getStore().update(eft);
63
    			featureTableOperations.deleteAttributes(table.getTablePanel().getTable());
64
    		}else if ("ADDCOLUMN".equals(actionCommand)) {
65
    			featureTableOperations.insertAttributes(table.getTablePanel().getTable());
66
    		}else if ("RENAMECOLUMN".equals(actionCommand)) {
67
    			featureTableOperations.renameAttributes(table.getTablePanel().getTable());
88 68
    		}
89
    		if ("ADDCOLUMN".equals(actionCommand)) {
90
    			EditableFeatureType eft = table.getModel().getStore().getDefaultFeatureType().getEditable();
91

  
92
    			try {
93
    				CreateNewAttributePanel panelNewField = new CreateNewAttributePanel();
94

  
95
    				EditableFeatureAttributeDescriptor ead = panelNewField
96
    				.loadFieldDescription(eft);
97
    				if (ead == null)
98
    					return;
99
    				if (ead.getDataType() == DataTypes.STRING
100
    						&& ead.getSize() > MAX_FIELD_LENGTH) {
101
    					NotificationManager.showMessageInfo( PluginServices.getText(this,
102
    					"max_length_is")
103
    					+ ":" + MAX_FIELD_LENGTH, null);
104
    					ead.setSize(MAX_FIELD_LENGTH);
105
    				}
106
    				PluginServices.getMDIManager().closeWindow(
107
    						panelNewField);
108
    			} catch (ParseException e2) {
109
    				NotificationManager.addError(e2);
110
    			}
111
    			table.getModel().getStore().update(eft);
112
    		}
113
    		if ("RENAMECOLUMN".equals(actionCommand)) {
114
    			EditableFeatureType eft = table.getModel().getStore().getDefaultFeatureType().getEditable();
115
    			FeatureAttributeDescriptor[] selecteds =table.getTablePanel().getTable().getSelectedColumnsAttributeDescriptor();
116

  
117
    			for (int i = selecteds.length - 1; i >= 0; i--) {
118
    				String newName = JOptionPane
119
    				.showInputDialog(
120
    						(Component) PluginServices
121
    						.getMDIManager()
122
    						.getActiveWindow(),
123
    						PluginServices
124
    						.getText(this,
125
    								"please_insert_new_field_name"),
126
    								selecteds[i].getName());
127
    				if (newName == null)
128
    					return;
129
    				if (eft.getIndex(newName) != -1) {
130
    					NotificationManager.showMessageInfo(
131
    							PluginServices.getText(this,
132
    							"field_already_exists"),
133
    							null);
134
    					return;
135
    				}
136
    				FeatureAttributeDescriptor ad = (FeatureAttributeDescriptor) eft
137
    				.get(selecteds[i].getName());
138
    				eft.remove(ad.getName());
139
    				EditableFeatureAttributeDescriptor ead = eft
140
    				.add(newName, ad.getDataType(), ad
141
    						.getSize());
142
    				ead.setPrecision(ad.getPrecision());
143
    			}
144

  
145
    			table.getModel().getStore().update(eft);
146

  
147
    		}
148 69
    	} catch (DataException e) {
149 70
    		NotificationManager.showMessageError(PluginServices.getText(this, "update_featuretype_error"), null);
150 71
    	}
......
156 77
     */
157 78
    public boolean isEnabled() {
158 79
        try {
159
			if (table.getTablePanel().getTable().getSelectedColumnsAttributeDescriptor().length>0){
80
			if (table.getTablePanel().getTable().getSelectedColumnCount()>0){
160 81
				return true;
161 82
			}
162 83
		} catch (DataException e) {
......
164 85
		}
165 86
		return false;
166 87
	}
167

  
168
    /**
169
     * @see com.iver.andami.plugins.IExtension#isVisible()
170
     */
171
    public boolean isVisible() {
172
        IWindow v = PluginServices.getMDIManager().getActiveWindow();
173
        if (v!=null && v instanceof FeatureTableDocumentPanel && ((FeatureTableDocumentPanel) v).getModel().getStore().isEditing()) {
174
            table=(FeatureTableDocumentPanel)v;
175
        	return true;
176
        }
177
        return false;
178
    }
179 88
}

Also available in: Unified diff