/** * SlingBeans - NetBeans Sling plugin * https://github.com/jkan997/SlingBeans * Licensed under Apache 2.0 license * http://www.apache.org/licenses/LICENSE-2.0 */ package org.jkan997.slingbeans.nbactions.property; import java.awt.event.ActionEvent; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; import org.jkan997.slingbeans.dialogs.RemovePropertyDialog; import org.jkan997.slingbeans.helper.LogHelper; import org.jkan997.slingbeans.helper.SwingHelper; import org.jkan997.slingbeans.nbactions.AbstractAction; import org.jkan997.slingbeans.nbtree.SlingNode; import org.jkan997.slingbeans.slingfs.FileObject; import org.jkan997.slingbeans.slingfs.FileObjectAttribute; public class RemovePropertyAction extends AbstractAction { private SlingNode node; public RemovePropertyAction(SlingNode node) { setActionName("Remove property..."); this.node = node; } private String[] getFileObjectProperties(){ List<String> res = new ArrayList<String>(); FileObject fo = node.getFileObject(); Map<String, FileObjectAttribute> attrsMap = fo.getAttributesMap(); for (Map.Entry<String,FileObjectAttribute> me : attrsMap.entrySet()){ String name = me.getKey(); FileObjectAttribute foa = me.getValue(); if (!foa.isHidden()){ res.add(name); } } Collections.sort(res); return res.toArray(new String[]{}); } @Override public void actionPerformed(ActionEvent e) { RemovePropertyDialog rpd = new RemovePropertyDialog(null,true); rpd.setProperties(getFileObjectProperties()); SwingHelper.showDialog(rpd); if (rpd.isRemoveProperty()){ String propName = rpd.getProperty(); LogHelper.logInfo(this, "REMOVE "+propName); FileObject fo = node.getFileObject(); FileObjectAttribute foa = fo.getAttribute(propName); LogHelper.logInfo(this, "FOA "+foa); foa.setRemoved(true); fo.saveAttributes(); } } }