diff --git a/java.j2seplatform/src/org/netbeans/modules/java/j2seplatform/resources/layer.xml b/java.j2seplatform/src/org/netbeans/modules/java/j2seplatform/resources/layer.xml
--- a/java.j2seplatform/src/org/netbeans/modules/java/j2seplatform/resources/layer.xml
+++ b/java.j2seplatform/src/org/netbeans/modules/java/j2seplatform/resources/layer.xml
@@ -43,7 +43,7 @@
Version 2 license, then the option applies only if the new code is
made subject to such option by the copyright holder.
-->
-
+
@@ -72,54 +72,113 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
@@ -130,7 +189,7 @@
-
+
@@ -159,7 +218,7 @@
-
+
diff --git a/java.j2seplatform/src/org/netbeans/modules/java/jarloader/Bundle.properties b/java.j2seplatform/src/org/netbeans/modules/java/jarloader/Bundle.properties
--- a/java.j2seplatform/src/org/netbeans/modules/java/jarloader/Bundle.properties
+++ b/java.j2seplatform/src/org/netbeans/modules/java/jarloader/Bundle.properties
@@ -42,3 +42,8 @@
LBL_loaderName=JAR Files
JarResolver=Java Archive File
+JarLoader=JAR File Loader
+
+LBL_ZipLoaderName=ZIP Files
+ZIPResolver=ZIP File
+ZIPLoader=ZIP File Loader
\ No newline at end of file
diff --git a/java.j2seplatform/src/org/netbeans/modules/java/jarloader/JarDataLoader.java b/java.j2seplatform/src/org/netbeans/modules/java/jarloader/JarDataLoader.java
--- a/java.j2seplatform/src/org/netbeans/modules/java/jarloader/JarDataLoader.java
+++ b/java.j2seplatform/src/org/netbeans/modules/java/jarloader/JarDataLoader.java
@@ -44,26 +44,19 @@
package org.netbeans.modules.java.jarloader;
import java.io.IOException;
-import org.openide.actions.CopyAction;
-import org.openide.actions.CutAction;
-import org.openide.actions.DeleteAction;
-import org.openide.actions.FileSystemAction;
-import org.openide.actions.PasteAction;
-import org.openide.actions.PropertiesAction;
-import org.openide.actions.RenameAction;
-import org.openide.actions.ToolsAction;
import org.openide.filesystems.FileObject;
+import org.openide.loaders.DataObject;
import org.openide.loaders.DataObjectExistsException;
import org.openide.loaders.ExtensionList;
import org.openide.loaders.MultiDataObject;
import org.openide.loaders.UniFileLoader;
import org.openide.util.NbBundle;
-import org.openide.util.actions.SystemAction;
/**
* Recognizes JAR files and shows their contents.
* @author Jesse Glick
*/
+@DataObject.Registration(displayName = "org.netbeans.modules.java.jarloader.Bundle#JarLoader", mimeType = "application/x-java-archive")
public final class JarDataLoader extends UniFileLoader {
static final String JAR_MIME_TYPE = "application/x-java-archive"; //NOI18N
@@ -74,10 +67,12 @@
super("org.netbeans.modules.java.jarloader.JarDataObject"); // NOI18N
}
+ @Override
protected String defaultDisplayName() {
return NbBundle.getMessage(JarDataLoader.class, "LBL_loaderName");
}
+ @Override
protected void initialize() {
super.initialize();
ExtensionList extensions = new ExtensionList();
diff --git a/java.j2seplatform/src/org/netbeans/modules/java/jarloader/JarDataLoaderBeanInfo.java b/java.j2seplatform/src/org/netbeans/modules/java/jarloader/JarDataLoaderBeanInfo.java
--- a/java.j2seplatform/src/org/netbeans/modules/java/jarloader/JarDataLoaderBeanInfo.java
+++ b/java.j2seplatform/src/org/netbeans/modules/java/jarloader/JarDataLoaderBeanInfo.java
@@ -49,10 +49,8 @@
import java.beans.IntrospectionException;
import java.beans.Introspector;
import java.beans.SimpleBeanInfo;
-import org.openide.ErrorManager;
import org.openide.loaders.UniFileLoader;
import org.openide.util.ImageUtilities;
-import org.openide.util.Utilities;
/**
* Description of {@link JarDataLoader}.
@@ -60,6 +58,7 @@
*/
public final class JarDataLoaderBeanInfo extends SimpleBeanInfo {
+ @Override
public BeanInfo[] getAdditionalBeanInfo() {
try {
return new BeanInfo[] {Introspector.getBeanInfo(UniFileLoader.class)};
@@ -68,6 +67,7 @@
}
}
+ @Override
public Image getIcon(int type) {
return ImageUtilities.loadImage("org/netbeans/modules/java/jarloader/jar.gif", true);
}
diff --git a/java.j2seplatform/src/org/netbeans/modules/java/jarloader/JarDataNode.java b/java.j2seplatform/src/org/netbeans/modules/java/jarloader/JarDataNode.java
--- a/java.j2seplatform/src/org/netbeans/modules/java/jarloader/JarDataNode.java
+++ b/java.j2seplatform/src/org/netbeans/modules/java/jarloader/JarDataNode.java
@@ -78,7 +78,7 @@
public Action getPreferredAction() {
return null;
}
-
+
private static Children childrenFor(FileObject jar) {
if (!FileUtil.isArchiveFile(jar)) {
// Maybe corrupt, etc.
diff --git a/java.j2seplatform/src/org/netbeans/modules/java/jarloader/JarDataObject.java b/java.j2seplatform/src/org/netbeans/modules/java/jarloader/JarDataObject.java
--- a/java.j2seplatform/src/org/netbeans/modules/java/jarloader/JarDataObject.java
+++ b/java.j2seplatform/src/org/netbeans/modules/java/jarloader/JarDataObject.java
@@ -56,17 +56,19 @@
* Represents a JAR file.
* @author Jesse Glick
*/
-@MIMEResolver.Registration(resource="../j2seplatform/resources/platforms-mime-resolver.xml", displayName="#JarResolver", position=480)
+@MIMEResolver.Registration(resource="mime-resolver-jar.xml", displayName="#JarResolver", position=480)
public final class JarDataObject extends MultiDataObject {
public JarDataObject(FileObject pf, JarDataLoader loader) throws DataObjectExistsException {
super(pf, loader);
}
+ @Override
public HelpCtx getHelpCtx() {
return HelpCtx.DEFAULT_HELP;
}
+ @Override
protected Node createNodeDelegate() {
return new JarDataNode(this);
}
diff --git a/java.j2seplatform/src/org/netbeans/modules/java/jarloader/JarDataLoader.java b/java.j2seplatform/src/org/netbeans/modules/java/jarloader/ZipDataLoader.java
copy from java.j2seplatform/src/org/netbeans/modules/java/jarloader/JarDataLoader.java
copy to java.j2seplatform/src/org/netbeans/modules/java/jarloader/ZipDataLoader.java
--- a/java.j2seplatform/src/org/netbeans/modules/java/jarloader/JarDataLoader.java
+++ b/java.j2seplatform/src/org/netbeans/modules/java/jarloader/ZipDataLoader.java
@@ -44,54 +44,49 @@
package org.netbeans.modules.java.jarloader;
import java.io.IOException;
-import org.openide.actions.CopyAction;
-import org.openide.actions.CutAction;
-import org.openide.actions.DeleteAction;
-import org.openide.actions.FileSystemAction;
-import org.openide.actions.PasteAction;
-import org.openide.actions.PropertiesAction;
-import org.openide.actions.RenameAction;
-import org.openide.actions.ToolsAction;
import org.openide.filesystems.FileObject;
+import org.openide.loaders.DataObject;
import org.openide.loaders.DataObjectExistsException;
import org.openide.loaders.ExtensionList;
import org.openide.loaders.MultiDataObject;
import org.openide.loaders.UniFileLoader;
import org.openide.util.NbBundle;
-import org.openide.util.actions.SystemAction;
/**
- * Recognizes JAR files and shows their contents.
- * @author Jesse Glick
+ * Recognizes ZIP files and shows their contents.
*/
-public final class JarDataLoader extends UniFileLoader {
+@DataObject.Registration(displayName = "org.netbeans.modules.java.jarloader.Bundle#ZIPLoader", mimeType = "application/zip")
+public final class ZipDataLoader extends UniFileLoader {
- static final String JAR_MIME_TYPE = "application/x-java-archive"; //NOI18N
+ static final String ZIP_MIME_TYPE = "application/zip"; //NOI18N
private static final long serialVersionUID = 1L;
- public JarDataLoader() {
- super("org.netbeans.modules.java.jarloader.JarDataObject"); // NOI18N
+ public ZipDataLoader() {
+ super("org.netbeans.modules.java.jarloader.ZipDataObject"); // NOI18N
}
+ @Override
protected String defaultDisplayName() {
- return NbBundle.getMessage(JarDataLoader.class, "LBL_loaderName");
+ return NbBundle.getMessage(ZipDataLoader.class, "LBL_ZipLoaderName");
}
+ @Override
protected void initialize() {
super.initialize();
ExtensionList extensions = new ExtensionList();
- extensions.addMimeType(JAR_MIME_TYPE);
+ extensions.addMimeType(ZIP_MIME_TYPE);
setExtensions(extensions);
}
@Override
protected String actionsContext() {
- return "Loaders/application/x-java-archive/Actions/"; // NOI18N
+ return "Loaders/application/zip/Actions/"; // NOI18N
}
+ @Override
protected MultiDataObject createMultiObject(FileObject primaryFile) throws DataObjectExistsException, IOException {
- return new JarDataObject(primaryFile, this);
+ return new ZipDataObject(primaryFile, this);
}
}
diff --git a/java.j2seplatform/src/org/netbeans/modules/java/jarloader/JarDataNode.java b/java.j2seplatform/src/org/netbeans/modules/java/jarloader/ZipDataNode.java
copy from java.j2seplatform/src/org/netbeans/modules/java/jarloader/JarDataNode.java
copy to java.j2seplatform/src/org/netbeans/modules/java/jarloader/ZipDataNode.java
--- a/java.j2seplatform/src/org/netbeans/modules/java/jarloader/JarDataNode.java
+++ b/java.j2seplatform/src/org/netbeans/modules/java/jarloader/ZipDataNode.java
@@ -41,98 +41,52 @@
* Version 2 license, then the option applies only if the new code is
* made subject to such option by the copyright holder.
*/
-
package org.netbeans.modules.java.jarloader;
-import java.beans.PropertyChangeListener;
-import javax.swing.Action;
-import javax.swing.Icon;
-import org.netbeans.api.project.SourceGroup;
-import org.netbeans.spi.java.project.support.ui.PackageView;
+import java.awt.Image;
+import java.awt.datatransfer.Transferable;
import org.openide.filesystems.FileObject;
-import org.openide.filesystems.FileUtil;
-import org.openide.loaders.DataNode;
-import org.openide.nodes.Children;
import org.openide.nodes.FilterNode;
import org.openide.nodes.Node;
-import org.openide.util.RequestProcessor;
-
+import org.openide.util.ImageUtilities;
+import org.openide.util.datatransfer.PasteType;
/**
* A node to represent a JAR file.
- * @author Jesse Glick
*/
-final class JarDataNode extends DataNode {
- private static final RequestProcessor RP = new RequestProcessor(JarDataNode.class.getName(), 1, false, false);
+final class ZipDataNode extends FilterNode {
+ private final Image icon = ImageUtilities.loadImage("org/netbeans/modules/java/jarloader/jar.gif", true);
+
+ private final FileObject realFile;
+ private final Node folderNode;
+
+ public ZipDataNode(FileObject realFile, Node original, Node folderNode) {
+ super(original);
+ this.realFile = realFile;
+ this.folderNode = folderNode;
+ }
- public JarDataNode(JarDataObject obj) {
- this(obj, new DummyChildren());
+ @Override
+ public String getDisplayName() {
+ return realFile.getNameExt();
}
-
- private JarDataNode(JarDataObject obj, DummyChildren c) {
- super(obj, c);
- c.attachJarNode(this);
- setIconBaseWithExtension("org/netbeans/modules/java/jarloader/jar.gif"); // NOI18N
+
+ @Override
+ public Image getIcon(int type) {
+ return icon;
}
-
- public Action getPreferredAction() {
- return null;
+
+ @Override
+ public Image getOpenedIcon(int type) {
+ return icon;
}
-
- private static Children childrenFor(FileObject jar) {
- if (!FileUtil.isArchiveFile(jar)) {
- // Maybe corrupt, etc.
- return Children.LEAF;
- }
- final FileObject root = FileUtil.getArchiveRoot(jar);
- if (root != null) {
- return new FilterNode.Children(PackageView.createPackageView(new SourceGroup() {
- @Override public FileObject getRootFolder() {return root;}
- @Override public String getName() {return null;}
- @Override public String getDisplayName() {return null;}
- @Override public Icon getIcon(boolean opened) {return null;}
- @Override public boolean contains(FileObject file) {return true;}
- @Override public void addPropertyChangeListener(PropertyChangeListener listener) {}
- @Override public void removePropertyChangeListener(PropertyChangeListener listener) {}
- }));
+
+ @Override
+ public PasteType[] getPasteTypes(Transferable t) {
+ if(folderNode != null) {
+ return folderNode.getPasteTypes(t);
} else {
- return Children.LEAF;
+ return null;
}
}
-
- /**
- * There is no nice way to lazy create delegating node's children.
- * So, in order to fix #83595, here is a little hack that schedules
- * replacement of this dummy children on addNotify call.
- */
- final static class DummyChildren extends Children implements Runnable {
-
- private JarDataNode node;
-
- protected void addNotify() {
- super.addNotify();
- assert node != null;
- RP.post(this);
- }
-
- private void attachJarNode(JarDataNode jarDataNode) {
- this.node = jarDataNode;
- }
-
- public void run() {
- node.setChildren(childrenFor(node.getDataObject().getPrimaryFile()));
- }
-
- public boolean add(final Node[] nodes) {
- // no-op
- return false;
- }
-
- public boolean remove(final Node[] nodes) {
- // no-op
- return false;
- }
-
- }
-
-}
+}
\ No newline at end of file
diff --git a/java.j2seplatform/src/org/netbeans/modules/java/jarloader/JarDataObject.java b/java.j2seplatform/src/org/netbeans/modules/java/jarloader/ZipDataObject.java
copy from java.j2seplatform/src/org/netbeans/modules/java/jarloader/JarDataObject.java
copy to java.j2seplatform/src/org/netbeans/modules/java/jarloader/ZipDataObject.java
--- a/java.j2seplatform/src/org/netbeans/modules/java/jarloader/JarDataObject.java
+++ b/java.j2seplatform/src/org/netbeans/modules/java/jarloader/ZipDataObject.java
@@ -41,34 +41,53 @@
* Version 2 license, then the option applies only if the new code is
* made subject to such option by the copyright holder.
*/
-
package org.netbeans.modules.java.jarloader;
import org.openide.filesystems.FileObject;
+import org.openide.filesystems.FileUtil;
import org.openide.filesystems.MIMEResolver;
+import org.openide.loaders.DataFilter;
+import org.openide.loaders.DataFolder;
+import org.openide.loaders.DataNode;
import org.openide.loaders.DataObjectExistsException;
import org.openide.loaders.MultiDataObject;
+import org.openide.nodes.Children;
import org.openide.nodes.Node;
import org.openide.util.HelpCtx;
import org.openide.util.Lookup;
/**
- * Represents a JAR file.
- * @author Jesse Glick
+ * Recognizes ZIP files and shows their contents.
*/
-@MIMEResolver.Registration(resource="../j2seplatform/resources/platforms-mime-resolver.xml", displayName="#JarResolver", position=480)
-public final class JarDataObject extends MultiDataObject {
+@MIMEResolver.Registration(resource="mime-resolver-zip.xml", displayName="#ZIPResolver", position=481)
+public final class ZipDataObject extends MultiDataObject {
- public JarDataObject(FileObject pf, JarDataLoader loader) throws DataObjectExistsException {
+ public ZipDataObject(FileObject pf, ZipDataLoader loader) throws DataObjectExistsException {
super(pf, loader);
}
+ @Override
public HelpCtx getHelpCtx() {
return HelpCtx.DEFAULT_HELP;
}
+ @Override
protected Node createNodeDelegate() {
- return new JarDataNode(this);
+ Node fileNode = null;
+ Node folderNode = null;
+
+ final FileObject folderObject = FileUtil.getArchiveRoot(getPrimaryFile());
+ if (folderObject != null) {
+ DataFolder dataFolder = DataFolder.findFolder(folderObject);
+ fileNode = new DataNode(this, dataFolder.createNodeChildren(DataFilter.ALL));
+ folderNode = dataFolder.getNodeDelegate();
+ }
+
+ if (fileNode == null) {
+ fileNode = new DataNode(this, Children.LEAF);
+ }
+
+ return new ZipDataNode(getPrimaryFile(), fileNode, folderNode);
}
@Override
@@ -76,4 +95,4 @@
return getCookieSet().getLookup();
}
-}
+}
\ No newline at end of file
diff --git a/java.j2seplatform/src/org/netbeans/modules/java/j2seplatform/resources/platforms-mime-resolver.xml b/java.j2seplatform/src/org/netbeans/modules/java/jarloader/mime-resolver-jar.xml
rename from java.j2seplatform/src/org/netbeans/modules/java/j2seplatform/resources/platforms-mime-resolver.xml
rename to java.j2seplatform/src/org/netbeans/modules/java/jarloader/mime-resolver-jar.xml
--- a/java.j2seplatform/src/org/netbeans/modules/java/j2seplatform/resources/platforms-mime-resolver.xml
+++ b/java.j2seplatform/src/org/netbeans/modules/java/jarloader/mime-resolver-jar.xml
@@ -45,28 +45,21 @@
-->
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
diff --git a/java.j2seplatform/src/org/netbeans/modules/java/j2seplatform/resources/platforms-mime-resolver.xml b/java.j2seplatform/src/org/netbeans/modules/java/jarloader/mime-resolver-zip.xml
copy from java.j2seplatform/src/org/netbeans/modules/java/j2seplatform/resources/platforms-mime-resolver.xml
copy to java.j2seplatform/src/org/netbeans/modules/java/jarloader/mime-resolver-zip.xml
--- a/java.j2seplatform/src/org/netbeans/modules/java/j2seplatform/resources/platforms-mime-resolver.xml
+++ b/java.j2seplatform/src/org/netbeans/modules/java/jarloader/mime-resolver-zip.xml
@@ -45,28 +45,19 @@
-->
-
-
-
-
-
-
-
-
+
-
-
+
+
-
-
+
+