KT-1328 removing single class from file, should remove file too. Also changed file icon to one of containing classes icon.

This commit is contained in:
Alexander.Podkhalyuzin
2012-02-21 17:40:15 +04:00
parent fb8fa8bf9e
commit e012f1e34b
4 changed files with 46 additions and 1 deletions
@@ -19,6 +19,7 @@ package org.jetbrains.jet.lang.psi;
import com.intellij.lang.ASTNode;
import com.intellij.psi.StubBasedPsiElement;
import com.intellij.psi.stubs.IStubElementType;
import com.intellij.util.IncorrectOperationException;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.JetNodeTypes;
@@ -153,4 +154,9 @@ public class JetClass extends JetTypeParameterListOwner
// TODO (stubs)
return null;
}
@Override
public void delete() throws IncorrectOperationException {
JetPsiUtil.deleteClass(this);
}
}
@@ -117,5 +117,10 @@ public class JetObjectDeclaration extends JetNamedDeclaration implements JetClas
@NotNull
public PsiElement getObjectKeyword() {
return findChildByType(JetTokens.OBJECT_KEYWORD);
}
}
@Override
public void delete() throws IncorrectOperationException {
JetPsiUtil.deleteClass(this);
}
}
@@ -17,6 +17,9 @@
package org.jetbrains.jet.lang.psi;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import com.intellij.psi.impl.CheckUtil;
import com.intellij.psi.impl.source.codeStyle.CodeEditUtil;
import com.intellij.psi.util.PsiTreeUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -234,4 +237,16 @@ public class JetPsiUtil {
return false;
}
public static void deleteClass(@NotNull JetClassOrObject clazz) {
CheckUtil.checkWritable(clazz);
JetFile file = (JetFile) clazz.getContainingFile();
List<JetDeclaration> declarations = file.getDeclarations();
if (declarations.size() == 1) {
file.delete();
} else {
PsiElement parent = clazz.getParent();
CodeEditUtil.removeChild(parent.getNode(), clazz.getNode());
}
}
}