blob: 2d26ad4cbdcfebaf22571547b7a3bc86cb337a99 [file] [log] [blame]
package com.intellij.lang.properties.xml;
import com.intellij.lang.properties.IProperty;
import com.intellij.lang.properties.psi.PropertiesFile;
import com.intellij.pom.PomRenameableTarget;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiInvalidElementAccessException;
import com.intellij.psi.PsiTarget;
import com.intellij.psi.xml.XmlTag;
import com.intellij.util.IncorrectOperationException;
import com.intellij.util.PlatformIcons;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import javax.swing.*;
/**
* @author Dmitry Avdeev
* Date: 7/26/11
*/
public class XmlProperty implements IProperty, PomRenameableTarget, PsiTarget {
@NotNull
private final XmlTag myTag;
private final XmlPropertiesFileImpl myPropertiesFile;
public XmlProperty(@NotNull XmlTag tag, XmlPropertiesFileImpl xmlPropertiesFile) {
myTag = tag;
myPropertiesFile = xmlPropertiesFile;
}
@Override
public String getName() {
return myTag.getAttributeValue("key");
}
@Override
public boolean isWritable() {
return myTag.isWritable();
}
@Override
public PsiElement setName(@NotNull String name) {
return myTag.setAttribute("key", name);
}
@Override
public String getKey() {
return getName();
}
@Override
public String getValue() {
return myTag.getValue().getText();
}
@Override
public String getUnescapedValue() {
return getValue();
}
@Override
public String getUnescapedKey() {
return getKey();
}
@Override
public void setValue(@NonNls @NotNull String value) throws IncorrectOperationException {
myTag.getValue().setText(value);
}
@Override
public PropertiesFile getPropertiesFile() throws PsiInvalidElementAccessException {
return myPropertiesFile;
}
@Override
public String getDocCommentText() {
return null;
}
@NotNull
@Override
public PsiElement getPsiElement() {
return myTag;
}
@Override
public void navigate(boolean requestFocus) {
}
@Override
public boolean canNavigate() {
return true;
}
@Override
public boolean canNavigateToSource() {
return true;
}
@Override
public Icon getIcon(int flags) {
return PlatformIcons.PROPERTY_ICON;
}
@Override
public boolean isValid() {
return myTag.isValid();
}
@NotNull
@Override
public PsiElement getNavigationElement() {
return getPsiElement();
}
}