Revision: 6194 http://sourceforge.net/p/jump-pilot/code/6194 Author: michaudm Date: 2019-09-21 07:08:28 +0000 (Sat, 21 Sep 2019) Log Message: ----------- Improve SetAtribute extension : add ComboBox capability
Modified Paths: -------------- plug-ins/SetAttributesPlugin/trunk/src/org/openjump/ext/setattributes/SetAttributesButtonActionListener.java plug-ins/SetAttributesPlugin/trunk/src/org/openjump/ext/setattributes/SetAttributesExtension.java plug-ins/SetAttributesPlugin/trunk/src/org/openjump/ext/setattributes/SetAttributesToolbox.java plug-ins/SetAttributesPlugin/trunk/src/org/openjump/ext/setattributes/SetOfAttributes.java Added Paths: ----------- plug-ins/SetAttributesPlugin/trunk/doc/ plug-ins/SetAttributesPlugin/trunk/doc/OpenJUMP-JeuxAttributs.odt plug-ins/SetAttributesPlugin/trunk/doc/OpenJUMP-JeuxAttributs.pdf plug-ins/SetAttributesPlugin/trunk/src/org/openjump/ext/setattributes/ListOfSetOfAttributes.java plug-ins/SetAttributesPlugin/trunk/src/org/openjump/ext/setattributes/SetAttributesComboItemListener.java Added: plug-ins/SetAttributesPlugin/trunk/doc/OpenJUMP-JeuxAttributs.odt =================================================================== (Binary files differ) Index: plug-ins/SetAttributesPlugin/trunk/doc/OpenJUMP-JeuxAttributs.odt =================================================================== --- plug-ins/SetAttributesPlugin/trunk/doc/OpenJUMP-JeuxAttributs.odt 2019-08-10 10:09:24 UTC (rev 6193) +++ plug-ins/SetAttributesPlugin/trunk/doc/OpenJUMP-JeuxAttributs.odt 2019-09-21 07:08:28 UTC (rev 6194) Property changes on: plug-ins/SetAttributesPlugin/trunk/doc/OpenJUMP-JeuxAttributs.odt ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Added: plug-ins/SetAttributesPlugin/trunk/doc/OpenJUMP-JeuxAttributs.pdf =================================================================== (Binary files differ) Index: plug-ins/SetAttributesPlugin/trunk/doc/OpenJUMP-JeuxAttributs.pdf =================================================================== --- plug-ins/SetAttributesPlugin/trunk/doc/OpenJUMP-JeuxAttributs.pdf 2019-08-10 10:09:24 UTC (rev 6193) +++ plug-ins/SetAttributesPlugin/trunk/doc/OpenJUMP-JeuxAttributs.pdf 2019-09-21 07:08:28 UTC (rev 6194) Property changes on: plug-ins/SetAttributesPlugin/trunk/doc/OpenJUMP-JeuxAttributs.pdf ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Added: plug-ins/SetAttributesPlugin/trunk/src/org/openjump/ext/setattributes/ListOfSetOfAttributes.java =================================================================== --- plug-ins/SetAttributesPlugin/trunk/src/org/openjump/ext/setattributes/ListOfSetOfAttributes.java (rev 0) +++ plug-ins/SetAttributesPlugin/trunk/src/org/openjump/ext/setattributes/ListOfSetOfAttributes.java 2019-09-21 07:08:28 UTC (rev 6194) @@ -0,0 +1,63 @@ +package org.openjump.ext.setattributes; + +import javax.swing.*; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; +import java.awt.*; +import java.io.File; +import java.util.*; +import java.util.List; + +/** + * Contains a list of SetOfAttributes. + * Useful to build ComboBoxes containing sevral buttons + */ +@XmlRootElement(name="combo") +public class ListOfSetOfAttributes { + + @XmlAttribute + String text = ""; + + @XmlElement(name="button") + List<SetOfAttributes> listOfSets = new ArrayList<>(); + + public JComboBox<SetOfAttributes> createCombo(File dir) { + JComboBox<SetOfAttributes> comboBox = new JComboBox<>(); + Vector<SetOfAttributes> vector = new Vector<>(listOfSets); + comboBox.setModel(new DefaultComboBoxModel<>(vector)); + comboBox.setRenderer(new IconRenderer(dir)); + return comboBox; + } + + class IconRenderer extends DefaultListCellRenderer { + + private Map<String, ImageIcon> iconMap = new HashMap<>(); + private Color background = new Color(0, 100, 255, 15); + private Color defaultBackground = (Color) UIManager.get("List.background"); + + + public IconRenderer(File dir) { + for (SetOfAttributes setOfAttributes : listOfSets) { + ImageIcon icon = new ImageIcon(dir.getPath()+"/"+setOfAttributes.icon); + if (icon.getImageLoadStatus() == MediaTracker.COMPLETE) { + iconMap.put(setOfAttributes.text, icon); + } + } + } + + @Override + public Component getListCellRendererComponent(JList<?> list, Object value, int index, + boolean isSelected, boolean cellHasFocus) { + super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); + SetOfAttributes set = (SetOfAttributes) value; + this.setText(set.text); + this.setIcon(iconMap.get(set.text)); + if (!isSelected) { + this.setBackground(index % 2 == 0 ? background : defaultBackground); + } + return this; + } + } + +} Modified: plug-ins/SetAttributesPlugin/trunk/src/org/openjump/ext/setattributes/SetAttributesButtonActionListener.java =================================================================== --- plug-ins/SetAttributesPlugin/trunk/src/org/openjump/ext/setattributes/SetAttributesButtonActionListener.java 2019-08-10 10:09:24 UTC (rev 6193) +++ plug-ins/SetAttributesPlugin/trunk/src/org/openjump/ext/setattributes/SetAttributesButtonActionListener.java 2019-09-21 07:08:28 UTC (rev 6194) @@ -40,117 +40,6 @@ @Override public void actionPerformed(ActionEvent e) { - SelectionManager selectionManager = pluginContext.getLayerViewPanel().getSelectionManager(); - pluginContext.getLayerManager().getUndoableEditReceiver().startReceiving(); - try { - int editableLayers = 0; - int editableFeatures = 0; - Pattern layerPattern = null; - // If layer is not null - if (setOfAttributes.getLayer() != null) { - try { - // create a pattern to read this specific layer name - layerPattern = Pattern.compile(Pattern.quote(setOfAttributes.getLayer())); - // then try to interpret * as glob - if (setOfAttributes.getLayer().contains("*")) { - layerPattern = Pattern.compile(setOfAttributes.getLayer().replaceAll("\\*", ".*")); - } - // and finally, try to read layer name as a regex if it starts and ends with a / - if (setOfAttributes.getLayer().startsWith("/") && setOfAttributes.getLayer().endsWith("/")) { - layerPattern = Pattern.compile(setOfAttributes.getLayer().substring(1, setOfAttributes.getLayer().length() - 1)); - } - } catch (PatternSyntaxException pse) { - pse.printStackTrace(); - } - } - final Map<Layer, Map<Feature, Feature>> mapSource = new HashMap<Layer, Map<Feature, Feature>>(); - final Map<Layer, Map<Feature, Feature>> mapTarget = new HashMap<Layer, Map<Feature, Feature>>(); - for (Layer lyr : selectionManager.getLayersWithSelectedItems()) { - if (!lyr.isEditable()) continue; - if (layerPattern != null && !layerPattern.matcher(lyr.getName()).matches()) continue; - editableLayers++; - Map<Feature, Feature> srcLayerMap = new HashMap<Feature, Feature>(); - Map<Feature, Feature> tgtLayerMap = new HashMap<Feature, Feature>(); - Collection<Feature> features = selectionManager.getFeaturesWithSelectedItems(lyr); - editableFeatures += features.size(); - for (Feature feature : features) { - srcLayerMap.put(feature, feature.clone(false)); - } - tgtLayerMap.putAll(setOfAttributes.setAttributes(selectionManager.getFeaturesWithSelectedItems(lyr), lyr.getName())); - mapSource.put(lyr, srcLayerMap); - mapTarget.put(lyr, tgtLayerMap); - } - if (unselect) { - for (Layer lyr : selectionManager.getLayersWithSelectedItems()) { - selectionManager.unselectItems(lyr); - } - } - if (editableLayers == 0 && setOfAttributes.getLayer() == null) { - pluginContext.getWorkbenchFrame().warnUser(I18N_.getText("set_attributes", - "SetAttributesPlugIn.no-feature-found")); - } else if (editableLayers == 0) { - pluginContext.getWorkbenchFrame().warnUser(I18N_.getMessage("set_attributes", - "SetAttributesPlugIn.no-feature-found-in-layer", - new Object[]{setOfAttributes.getLayer()})); - } else if (editableFeatures == 0 && setOfAttributes.getLayer() == null) { - pluginContext.getWorkbenchFrame().warnUser(I18N_.getText("set_attributes", - "SetAttributesPlugIn.no-feature-found")); - } else if (editableFeatures == 0) { - pluginContext.getWorkbenchFrame().warnUser(I18N_.getMessage("set_attributes", - "SetAttributesPlugIn.no-feature-found-in-layer", - new Object[]{setOfAttributes.getLayer()})); - } else { - UndoableCommand command = - new UndoableCommand(I18N.get(SetAttributesPlugIn.class.getName())) { - public void execute() { - for (Layer lyr : mapTarget.keySet()) { - Map<Feature,Feature> mapTgt = mapTarget.get(lyr); - Map<Feature,Feature> mapSrc = mapSource.get(lyr); - for (Feature feature : mapTgt.keySet()) { - Feature newFeature = mapTgt.get(feature); - FeatureSchema schema = feature.getSchema(); - for (SetAttribute setAtt : setOfAttributes.attributes) { - String name = setAtt.getName(); - if (schema.hasAttribute(name)) { - feature.setAttribute(name, newFeature.getAttribute(name)); - } - } - } - pluginContext.getLayerManager().fireFeaturesAttChanged(mapTgt.keySet(), FeatureEventType.ATTRIBUTES_MODIFIED, lyr, mapSrc.values()); - //pluginContext.getLayerManager().fireFeaturesChanged(map.keySet(), FeatureEventType.ATTRIBUTES_MODIFIED, lyr); - } - pluginContext.getLayerViewPanel().repaint(); - } - - public void unexecute() { - for (Layer lyr : mapSource.keySet()) { - Map<Feature, Feature> mapSrc = mapSource.get(lyr); - Map<Feature, Feature> mapTgt = mapTarget.get(lyr); - for (Feature feature : mapSrc.keySet()) { - Feature newFeature = mapSrc.get(feature); - FeatureSchema schema = feature.getSchema(); - for (SetAttribute setAtt : setOfAttributes.attributes) { - String name = setAtt.getName(); - if (schema.hasAttribute(name)) { - feature.setAttribute(name, newFeature.getAttribute(name)); - } - } - pluginContext.getLayerManager().fireFeaturesAttChanged(mapSrc.keySet(), FeatureEventType.ATTRIBUTES_MODIFIED, lyr, mapTgt.values()); - //pluginContext.getLayerManager().fireFeaturesChanged(mapSrc.keySet(), FeatureEventType.ATTRIBUTES_MODIFIED, lyr); - } - } - pluginContext.getLayerViewPanel().repaint(); - } - }; - - command.execute(); - pluginContext.getLayerManager().getUndoableEditReceiver().receive(command.toUndoableEdit()); - } - } catch (Exception exc) { - LOG.warn(null, exc); - pluginContext.getWorkbenchFrame().warnUser(exc.getMessage()); - } finally { - pluginContext.getLayerManager().getUndoableEditReceiver().stopReceiving(); - } + setOfAttributes.setAttributes(pluginContext, unselect); } } Added: plug-ins/SetAttributesPlugin/trunk/src/org/openjump/ext/setattributes/SetAttributesComboItemListener.java =================================================================== --- plug-ins/SetAttributesPlugin/trunk/src/org/openjump/ext/setattributes/SetAttributesComboItemListener.java (rev 0) +++ plug-ins/SetAttributesPlugin/trunk/src/org/openjump/ext/setattributes/SetAttributesComboItemListener.java 2019-09-21 07:08:28 UTC (rev 6194) @@ -0,0 +1,29 @@ +package org.openjump.ext.setattributes; + +import com.vividsolutions.jump.workbench.plugin.PlugInContext; + +import javax.swing.*; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; + +public class SetAttributesComboItemListener implements ItemListener { + + final PlugInContext pluginContext; + final boolean unselect; + + SetAttributesComboItemListener(final PlugInContext pluginContext, + final boolean unselect) { + this.pluginContext = pluginContext; + this.unselect = unselect; + } + + public void itemStateChanged(ItemEvent itemEvent) { + int state = itemEvent.getStateChange(); + if (state == ItemEvent.SELECTED) { + SetOfAttributes setOfAttributes = (SetOfAttributes)itemEvent.getItem(); + setOfAttributes.setAttributes(pluginContext, unselect); + } + ((JComboBox)itemEvent.getSource()).setPopupVisible(false); + + } +} Modified: plug-ins/SetAttributesPlugin/trunk/src/org/openjump/ext/setattributes/SetAttributesExtension.java =================================================================== --- plug-ins/SetAttributesPlugin/trunk/src/org/openjump/ext/setattributes/SetAttributesExtension.java 2019-08-10 10:09:24 UTC (rev 6193) +++ plug-ins/SetAttributesPlugin/trunk/src/org/openjump/ext/setattributes/SetAttributesExtension.java 2019-09-21 07:08:28 UTC (rev 6194) @@ -8,6 +8,9 @@ * buttons to "fill" a set of consistent attribute values for selected * features */ +// 0.8.0 [2019-09-15] add combo boxes capabilities +// 0.7.1 [2015- - ] +// 0.7.0 [2015-06-13] public class SetAttributesExtension extends Extension { public String getName() { @@ -15,7 +18,7 @@ } public String getVersion() { - return "0.7.0 (2015-06-13)"; + return "0.8.0 (2019-09-16)"; } public void configure(PlugInContext context) throws Exception { Modified: plug-ins/SetAttributesPlugin/trunk/src/org/openjump/ext/setattributes/SetAttributesToolbox.java =================================================================== --- plug-ins/SetAttributesPlugin/trunk/src/org/openjump/ext/setattributes/SetAttributesToolbox.java 2019-08-10 10:09:24 UTC (rev 6193) +++ plug-ins/SetAttributesPlugin/trunk/src/org/openjump/ext/setattributes/SetAttributesToolbox.java 2019-09-21 07:08:28 UTC (rev 6194) @@ -50,6 +50,9 @@ @XmlAttribute (required=false) boolean unselect; + @XmlElement (name="combo") + List<ListOfSetOfAttributes> comboboxes; + @XmlElement (name="button") List<SetOfAttributes> buttons; @@ -64,34 +67,47 @@ constraints.gridy = 0; constraints.insets = new Insets(1,1,1,1); final PlugInContext pluginContext = context.createPlugInContext(); - for (final SetOfAttributes setOfAttributes : buttons) { - ImageIcon icon = new ImageIcon(dir.getPath()+"/"+setOfAttributes.icon); - final JButton button; - if (icon.getImageLoadStatus() == MediaTracker.COMPLETE) { - button = new JButton(icon); - } else { - button = new JButton(setOfAttributes.text); - if (setOfAttributes.getBackgroundColor()!=null) { - button.setBackground(setOfAttributes.getBackgroundColor()); - //button.setContentAreaFilled(false); - button.setOpaque(true); + if (comboboxes != null) { + for (final ListOfSetOfAttributes listOfSetOfAttributes : comboboxes) { + final JComboBox<SetOfAttributes> combo = listOfSetOfAttributes.createCombo(dir); + constraints.gridx = 0; + dialog.getContentPane().add(new JLabel(listOfSetOfAttributes.text), constraints); + constraints.gridx = 1; + combo.addItemListener(new SetAttributesComboItemListener(pluginContext, unselect)); + dialog.getContentPane().add(combo, constraints); + constraints.gridy += 1; + } + } + if (buttons != null) { + for (final SetOfAttributes setOfAttributes : buttons) { + ImageIcon icon = new ImageIcon(dir.getPath() + "/" + setOfAttributes.icon); + final JButton button; + if (icon.getImageLoadStatus() == MediaTracker.COMPLETE) { + button = new JButton(icon); + } else { + button = new JButton(setOfAttributes.text); + if (setOfAttributes.getBackgroundColor() != null) { + button.setBackground(setOfAttributes.getBackgroundColor()); + //button.setContentAreaFilled(false); + button.setOpaque(true); + } } - } - if (setOfAttributes.getAttributes() == null || setOfAttributes.getAttributes().size()==0) { - button.setEnabled(false); - } - button.setMargin(new Insets(0, 0, 0, 0)); - button.setPreferredSize(new Dimension(iconWidth, iconHeight)); - button.setToolTipText(setOfAttributes.getTooltip()); + if (setOfAttributes.getAttributes() == null || setOfAttributes.getAttributes().size() == 0) { + button.setEnabled(false); + } + button.setMargin(new Insets(0, 0, 0, 0)); + button.setPreferredSize(new Dimension(iconWidth, iconHeight)); + button.setToolTipText(setOfAttributes.getTooltip()); - button.addActionListener(new SetAttributesButtonActionListener(pluginContext, setOfAttributes, unselect)); + button.addActionListener(new SetAttributesButtonActionListener(pluginContext, setOfAttributes, unselect)); - button.addMouseListener(new SetAttributesButtonMouseListener(setOfAttributes, button)); - dialog.getContentPane().add(button, constraints); - constraints.gridx += 1; - if (constraints.gridx >= maxCol) { - constraints.gridx = 0; - constraints.gridy += 1; + button.addMouseListener(new SetAttributesButtonMouseListener(setOfAttributes, button)); + dialog.getContentPane().add(button, constraints); + constraints.gridx += 1; + if (constraints.gridx >= maxCol) { + constraints.gridx = 0; + constraints.gridy += 1; + } } } return dialog; Modified: plug-ins/SetAttributesPlugin/trunk/src/org/openjump/ext/setattributes/SetOfAttributes.java =================================================================== --- plug-ins/SetAttributesPlugin/trunk/src/org/openjump/ext/setattributes/SetOfAttributes.java 2019-08-10 10:09:24 UTC (rev 6193) +++ plug-ins/SetAttributesPlugin/trunk/src/org/openjump/ext/setattributes/SetOfAttributes.java 2019-09-21 07:08:28 UTC (rev 6194) @@ -5,6 +5,11 @@ import com.vividsolutions.jump.feature.Feature; import com.vividsolutions.jump.feature.FeatureSchema; import com.vividsolutions.jump.util.FlexibleDateParser; +import com.vividsolutions.jump.workbench.model.FeatureEventType; +import com.vividsolutions.jump.workbench.model.Layer; +import com.vividsolutions.jump.workbench.model.UndoableCommand; +import com.vividsolutions.jump.workbench.plugin.PlugInContext; +import com.vividsolutions.jump.workbench.ui.SelectionManager; import org.apache.log4j.Logger; import javax.swing.*; @@ -17,9 +22,11 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.regex.Pattern; +import java.util.regex.PatternSyntaxException; /** - * Contains information or an attribute set. + * Contains information of an attribute set. */ @XmlRootElement (name="button") public class SetOfAttributes { @@ -120,9 +127,11 @@ if (!checkDimension(feature)) { continue; } - //Feature newFeature = map.get(feature); AttributeType type = schema.getAttributeType(name); - if (type == AttributeType.STRING) { + if (value == null) { + newFeature.setAttribute(name, null); + } + else if (type == AttributeType.STRING) { newFeature.setAttribute(name, value); } else if (type == AttributeType.INTEGER) { @@ -154,6 +163,121 @@ return map; } + public void setAttributes(final PlugInContext pluginContext, final boolean unselect) { + SelectionManager selectionManager = pluginContext.getLayerViewPanel().getSelectionManager(); + pluginContext.getLayerManager().getUndoableEditReceiver().startReceiving(); + try { + int editableLayers = 0; + int editableFeatures = 0; + Pattern layerPattern = null; + // If layer is not null + if (getLayer() != null) { + try { + // create a pattern to read this specific layer name + layerPattern = Pattern.compile(Pattern.quote(getLayer())); + // then try to interpret * as glob + if (getLayer().contains("*")) { + layerPattern = Pattern.compile(getLayer().replaceAll("\\*", ".*")); + } + // and finally, try to read layer name as a regex if it starts and ends with a / + if (getLayer().startsWith("/") && getLayer().endsWith("/")) { + layerPattern = Pattern.compile(getLayer().substring(1, getLayer().length() - 1)); + } + } catch (PatternSyntaxException pse) { + pse.printStackTrace(); + } + } + final Map<Layer, Map<Feature, Feature>> mapSource = new HashMap<Layer, Map<Feature, Feature>>(); + final Map<Layer, Map<Feature, Feature>> mapTarget = new HashMap<Layer, Map<Feature, Feature>>(); + for (Layer lyr : selectionManager.getLayersWithSelectedItems()) { + if (!lyr.isEditable()) continue; + if (layerPattern != null && !layerPattern.matcher(lyr.getName()).matches()) continue; + editableLayers++; + Map<Feature, Feature> srcLayerMap = new HashMap<Feature, Feature>(); + Map<Feature, Feature> tgtLayerMap = new HashMap<Feature, Feature>(); + Collection<Feature> features = selectionManager.getFeaturesWithSelectedItems(lyr); + editableFeatures += features.size(); + for (Feature feature : features) { + srcLayerMap.put(feature, feature.clone(false)); + } + tgtLayerMap.putAll(setAttributes(selectionManager.getFeaturesWithSelectedItems(lyr), lyr.getName())); + mapSource.put(lyr, srcLayerMap); + mapTarget.put(lyr, tgtLayerMap); + } + if (unselect) { + for (Layer lyr : selectionManager.getLayersWithSelectedItems()) { + selectionManager.unselectItems(lyr); + } + } + if (editableLayers == 0 && getLayer() == null) { + pluginContext.getWorkbenchFrame().warnUser(I18N_.getText("set_attributes", + "SetAttributesPlugIn.no-feature-found")); + } else if (editableLayers == 0) { + pluginContext.getWorkbenchFrame().warnUser(I18N_.getMessage("set_attributes", + "SetAttributesPlugIn.no-feature-found-in-layer", + new Object[]{getLayer()})); + } else if (editableFeatures == 0 && getLayer() == null) { + pluginContext.getWorkbenchFrame().warnUser(I18N_.getText("set_attributes", + "SetAttributesPlugIn.no-feature-found")); + } else if (editableFeatures == 0) { + pluginContext.getWorkbenchFrame().warnUser(I18N_.getMessage("set_attributes", + "SetAttributesPlugIn.no-feature-found-in-layer", + new Object[]{getLayer()})); + } else { + UndoableCommand command = + new UndoableCommand(I18N.get(SetAttributesPlugIn.class.getName())) { + public void execute() { + for (Layer lyr : mapTarget.keySet()) { + Map<Feature,Feature> mapTgt = mapTarget.get(lyr); + Map<Feature,Feature> mapSrc = mapSource.get(lyr); + for (Feature feature : mapTgt.keySet()) { + Feature newFeature = mapTgt.get(feature); + FeatureSchema schema = feature.getSchema(); + for (SetAttribute setAtt : attributes) { + String name = setAtt.getName(); + if (schema.hasAttribute(name)) { + feature.setAttribute(name, newFeature.getAttribute(name)); + } + } + } + pluginContext.getLayerManager().fireFeaturesAttChanged(mapTgt.keySet(), FeatureEventType.ATTRIBUTES_MODIFIED, lyr, mapSrc.values()); + //pluginContext.getLayerManager().fireFeaturesChanged(map.keySet(), FeatureEventType.ATTRIBUTES_MODIFIED, lyr); + } + pluginContext.getLayerViewPanel().repaint(); + } + + public void unexecute() { + for (Layer lyr : mapSource.keySet()) { + Map<Feature, Feature> mapSrc = mapSource.get(lyr); + Map<Feature, Feature> mapTgt = mapTarget.get(lyr); + for (Feature feature : mapSrc.keySet()) { + Feature newFeature = mapSrc.get(feature); + FeatureSchema schema = feature.getSchema(); + for (SetAttribute setAtt : attributes) { + String name = setAtt.getName(); + if (schema.hasAttribute(name)) { + feature.setAttribute(name, newFeature.getAttribute(name)); + } + } + pluginContext.getLayerManager().fireFeaturesAttChanged(mapSrc.keySet(), FeatureEventType.ATTRIBUTES_MODIFIED, lyr, mapTgt.values()); + //pluginContext.getLayerManager().fireFeaturesChanged(mapSrc.keySet(), FeatureEventType.ATTRIBUTES_MODIFIED, lyr); + } + } + pluginContext.getLayerViewPanel().repaint(); + } + }; + + command.execute(); + pluginContext.getLayerManager().getUndoableEditReceiver().receive(command.toUndoableEdit()); + } + } catch (Exception exc) { + LOG.warn(null, exc); + pluginContext.getWorkbenchFrame().warnUser(exc.getMessage()); + } finally { + pluginContext.getLayerManager().getUndoableEditReceiver().stopReceiving(); + } + } + boolean checkDimension(Feature feature) { if (dimension > -1) { return feature.getGeometry().getDimension() == dimension; _______________________________________________ Jump-pilot-devel mailing list Jump-pilot-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel