diff options
Diffstat (limited to 'plugins/properties/src/com/intellij/lang/properties/editor/ResourceBundleAsVirtualFile.java')
-rw-r--r-- | plugins/properties/src/com/intellij/lang/properties/editor/ResourceBundleAsVirtualFile.java | 183 |
1 files changed, 183 insertions, 0 deletions
diff --git a/plugins/properties/src/com/intellij/lang/properties/editor/ResourceBundleAsVirtualFile.java b/plugins/properties/src/com/intellij/lang/properties/editor/ResourceBundleAsVirtualFile.java new file mode 100644 index 000000000000..36915e7e6962 --- /dev/null +++ b/plugins/properties/src/com/intellij/lang/properties/editor/ResourceBundleAsVirtualFile.java @@ -0,0 +1,183 @@ +/* + * Copyright 2000-2014 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * @author Alexey + */ +package com.intellij.lang.properties.editor; + +import com.intellij.ide.presentation.Presentation; +import com.intellij.lang.properties.PropertiesImplUtil; +import com.intellij.lang.properties.PropertiesUtil; +import com.intellij.lang.properties.ResourceBundle; +import com.intellij.lang.properties.psi.PropertiesFile; +import com.intellij.openapi.project.Project; +import com.intellij.openapi.vfs.LocalFileSystem; +import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.openapi.vfs.VirtualFileSystem; +import com.intellij.psi.PsiManager; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; + +@Presentation(icon = "AllIcons.Nodes.ResourceBundle") +public class ResourceBundleAsVirtualFile extends VirtualFile { + private final VirtualFile myBasePropertiesFile; + + private ResourceBundleAsVirtualFile(@NotNull final VirtualFile basePropertiesFile) { + myBasePropertiesFile = basePropertiesFile; + } + + @NotNull + public static ResourceBundleAsVirtualFile fromResourceBundle(final @NotNull ResourceBundle resourceBundle) { + return new ResourceBundleAsVirtualFile(resourceBundle.getDefaultPropertiesFile().getVirtualFile()); + } + + @Nullable + public ResourceBundle getResourceBundle(final Project project) { + final PsiManager psiManager = PsiManager.getInstance(project); + final PropertiesFile file = PropertiesImplUtil.getPropertiesFile(psiManager.findFile(myBasePropertiesFile)); + if (file == null) { + return null; + } + return PropertiesImplUtil.getResourceBundle(file); + } + + @Override + @NotNull + public VirtualFileSystem getFileSystem() { + return LocalFileSystem.getInstance(); + } + + @Override + @NotNull + public String getPath() { + return getName(); + } + + @Override + @NotNull + public String getName() { + return PropertiesUtil.getBaseName(myBasePropertiesFile); + } + + public boolean equals(final Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + final ResourceBundleAsVirtualFile resourceBundleAsVirtualFile = (ResourceBundleAsVirtualFile)o; + + if (!myBasePropertiesFile.equals(resourceBundleAsVirtualFile.myBasePropertiesFile)) return false; + + return true; + } + + public int hashCode() { + return myBasePropertiesFile.hashCode(); + } + + @Override + public void rename(Object requestor, @NotNull String newName) throws IOException { + throw new UnsupportedOperationException(); + } + + @Override + public boolean isWritable() { + return true; + } + + @Override + public boolean isDirectory() { + return false; + } + + @Override + public boolean isValid() { + return true; + } + + @Override + public VirtualFile getParent() { + return myBasePropertiesFile.getParent(); + } + + @Override + public VirtualFile[] getChildren() { + return EMPTY_ARRAY; + } + + @NotNull + @Override + public VirtualFile createChildDirectory(Object requestor, @NotNull String name) throws IOException { + throw new UnsupportedOperationException(); + } + + @NotNull + @Override + public VirtualFile createChildData(Object requestor, @NotNull String name) throws IOException { + throw new UnsupportedOperationException(); + } + + @Override + public void delete(Object requestor) throws IOException { + //todo + } + + @Override + public void move(Object requestor, @NotNull VirtualFile newParent) throws IOException { + //todo + } + + @Override + public InputStream getInputStream() throws IOException { + throw new UnsupportedOperationException(); + } + + @Override + @NotNull + public OutputStream getOutputStream(Object requestor, long newModificationStamp, long newTimeStamp) throws IOException { + throw new UnsupportedOperationException(); + } + + @Override + @NotNull + public byte[] contentsToByteArray() throws IOException { + throw new UnsupportedOperationException(); + } + + @Override + public long getModificationStamp() { + return 0; + } + + @Override + public long getTimeStamp() { + return 0; + } + + @Override + public long getLength() { + return 0; + } + + @Override + public void refresh(boolean asynchronous, boolean recursive, Runnable postRunnable) { + + } +} |