You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by st...@apache.org on 2014/05/26 15:38:24 UTC
svn commit: r1597582 - in
/sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui:
actions/ nav/model/
Author: stefanegli
Date: Mon May 26 13:38:24 2014
New Revision: 1597582
URL: http://svn.apache.org/r1597582
Log:
SLING-3238 : support all variants of nodes' deletion and remaming
Modified:
sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/actions/JcrNodeDeleteAction.java
sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/actions/JcrNodeRenameAction.java
sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/DirNode.java
sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/GenericJcrRootFile.java
sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/JcrNode.java
sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/SyncDir.java
Modified: sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/actions/JcrNodeDeleteAction.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/actions/JcrNodeDeleteAction.java?rev=1597582&r1=1597581&r2=1597582&view=diff
==============================================================================
--- sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/actions/JcrNodeDeleteAction.java (original)
+++ sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/actions/JcrNodeDeleteAction.java Mon May 26 13:38:24 2014
@@ -52,7 +52,7 @@ public class JcrNodeDeleteAction impleme
if (this.node==null) {
return;
}
- if (!MessageDialog.openConfirm(shell, "Delete JCR node", "Do you really want to delete '"+node.getName()+"'?")) {
+ if (!MessageDialog.openConfirm(shell, "Delete JCR node", "Do you really want to delete '"+node.getLabel()+"'?")) {
return;
}
node.delete();
@@ -71,7 +71,7 @@ public class JcrNodeDeleteAction impleme
Object element = iss.getFirstElement();
if (element instanceof JcrNode) {
final JcrNode n = (JcrNode)element;
- if (n.canBeRenamed()) {
+ if (n.canBeDeleted()) {
action.setEnabled(true);
this.node = n;
return;
Modified: sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/actions/JcrNodeRenameAction.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/actions/JcrNodeRenameAction.java?rev=1597582&r1=1597581&r2=1597582&view=diff
==============================================================================
--- sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/actions/JcrNodeRenameAction.java (original)
+++ sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/actions/JcrNodeRenameAction.java Mon May 26 13:38:24 2014
@@ -52,7 +52,7 @@ public class JcrNodeRenameAction impleme
return;
}
InputDialog id = new InputDialog(shell, "Change JCR node name",
- "Enter new name for JCR node '"+node.getDescription()+"':", node.getName(), new IInputValidator() {
+ "Enter new name for JCR node '"+node.getDescription()+"':", node.getLabel(), new IInputValidator() {
@Override
public String isValid(String newText) {
Modified: sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/DirNode.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/DirNode.java?rev=1597582&r1=1597581&r2=1597582&view=diff
==============================================================================
--- sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/DirNode.java (original)
+++ sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/DirNode.java Mon May 26 13:38:24 2014
@@ -132,4 +132,9 @@ public class DirNode extends JcrNode {
return false;
}
+ @Override
+ public boolean canBeDeleted() {
+ return false;
+ }
+
}
Modified: sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/GenericJcrRootFile.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/GenericJcrRootFile.java?rev=1597582&r1=1597581&r2=1597582&view=diff
==============================================================================
--- sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/GenericJcrRootFile.java (original)
+++ sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/GenericJcrRootFile.java Mon May 26 13:38:24 2014
@@ -25,6 +25,7 @@ import java.util.List;
import javax.xml.parsers.ParserConfigurationException;
import org.apache.commons.io.IOUtils;
+import org.apache.sling.ide.eclipse.core.internal.Activator;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
@@ -93,6 +94,7 @@ public class GenericJcrRootFile extends
DirNode dirNodeParent = (DirNode)parent;
JcrNode dirNodeParentParent = dirNodeParent.getParent();
JcrNode effectiveSibling = dirNodeParent.getEffectiveSibling();
+ effectiveSibling.dirSibling = dirNodeParent;
handleProperties(element, effectiveSibling.properties);
effectiveParent = parent;
dirNodeParentParent.hide(parent);
@@ -209,4 +211,32 @@ public class GenericJcrRootFile extends
SyncDirManager.syncDirChanged(getSyncDir());
}
+ @Override
+ public boolean canBeRenamed() {
+ return true;
+ }
+
+ @Override
+ public boolean canBeDeleted() {
+ return true;
+ }
+
+ @Override
+ public void rename(String string) {
+ try {
+ file.move(file.getParent().getFullPath().append(string+".xml"), true, new NullProgressMonitor());
+ } catch (CoreException e) {
+ Activator.getDefault().getPluginLogger().error("Error renaming resource ("+file+"): "+e, e);
+ }
+ }
+
+ @Override
+ public void delete() {
+ try {
+ file.delete(true, new NullProgressMonitor());
+ } catch (CoreException e) {
+ Activator.getDefault().getPluginLogger().error("Error deleting resource ("+file+"): "+e, e);
+ }
+ }
+
}
Modified: sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/JcrNode.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/JcrNode.java?rev=1597582&r1=1597581&r2=1597582&view=diff
==============================================================================
--- sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/JcrNode.java (original)
+++ sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/JcrNode.java Mon May 26 13:38:24 2014
@@ -59,11 +59,14 @@ import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IWorkspaceRunnable;
+import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.resources.mapping.ResourceMapping;
import org.eclipse.core.resources.mapping.ResourceMappingContext;
import org.eclipse.core.resources.mapping.ResourceTraversal;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.jface.dialogs.MessageDialog;
@@ -122,6 +125,8 @@ public class JcrNode implements IAdaptab
final GenericJcrRootFile underlying;
JcrNode parent;
+
+ DirNode dirSibling;
final List<JcrNode> children = new LinkedList<JcrNode>();
@@ -699,21 +704,41 @@ public class JcrNode implements IAdaptab
return null;
}
- public void rename(String string) {
+ public void rename(final String string) {
if (domElement!=null && underlying!=null) {
domElement.setName(string);
underlying.save();
}
+ if (resource!=null) {
+ IWorkspaceRunnable r = new IWorkspaceRunnable() {
+
+ @Override
+ public void run(IProgressMonitor monitor) throws CoreException {
+ final IPath fileRenamePath = resource.getParent().getFullPath().append(string);
+ resource.move(fileRenamePath, true, monitor);
+ if (dirSibling!=null) {
+ final IPath dirRenamePath = dirSibling.getResource().getParent().getFullPath().append(string+".dir");
+ dirSibling.getResource().move(dirRenamePath, true, monitor);
+ }
+ }
+ };
+ try {
+ ResourcesPlugin.getWorkspace().run(r, null);
+ } catch (CoreException e) {
+ Activator.getDefault().getPluginLogger().error("Error renaming resource ("+resource+"): "+e, e);
+ }
+ }
}
public boolean canBeRenamed() {
- if (resource!=null) {
- return false;
- }
+ if (parent==null) {
+ return false;
+ }
+ if (resource!=null) {
+ // can be a file or a folder (project is virtually impossible)
+ return true;
+ }
if (domElement!=null && underlying!=null) {
- if (getDomName().equals("jcr:content")) {
- return false;
- }
return true;
}
return false;
@@ -875,12 +900,43 @@ public class JcrNode implements IAdaptab
effectiveUnderlying.save();
}
+ public boolean canBeDeleted() {
+ if (parent==null) {
+ return false;
+ }
+ if (resource!=null) {
+ // can be a file or a folder (project is virtually impossible)
+ return true;
+ }
+ if (domElement!=null && underlying!=null) {
+ return true;
+ }
+ return false;
+ }
+
public void delete() {
if (parent==null) {
// then I dont know how to delete
return;
}
parent.children.remove(this);
+ if (resource!=null) {
+ IWorkspaceRunnable r = new IWorkspaceRunnable() {
+
+ @Override
+ public void run(IProgressMonitor monitor) throws CoreException {
+ resource.delete(true, monitor);
+ if (dirSibling!=null) {
+ dirSibling.getResource().delete(true, monitor);
+ }
+ }
+ };
+ try {
+ ResourcesPlugin.getWorkspace().run(r, null);
+ } catch (CoreException e) {
+ Activator.getDefault().getPluginLogger().error("Error renaming resource ("+resource+"): "+e, e);
+ }
+ }
if (domElement!=null) {
Element parentNode = domElement.getParentElement();
domElement.remove();
@@ -906,7 +962,9 @@ public class JcrNode implements IAdaptab
}
}
}
- underlying.save();
+ if (underlying!=null) {
+ underlying.save();
+ }
}
public IProject getProject() {
Modified: sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/SyncDir.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/SyncDir.java?rev=1597582&r1=1597581&r2=1597582&view=diff
==============================================================================
--- sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/SyncDir.java (original)
+++ sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/SyncDir.java Mon May 26 13:38:24 2014
@@ -99,4 +99,14 @@ public class SyncDir extends JcrNode {
return node;
}
+ @Override
+ public boolean canBeRenamed() {
+ return false;
+ }
+
+ @Override
+ public boolean canBeDeleted() {
+ return false;
+ }
+
}