Revision 26053 branches/v2_0_0_prep/applications/appgvSIG/src/com/iver/cit/gvsig/TableEditChangeColumnsExtension.java
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