From 77b827ce6b1250b904dd4d250d16a676e1c3987a Mon Sep 17 00:00:00 2001 From: "nor..67" Date: Mon, 11 Jun 2012 17:27:57 +0000 Subject: [PATCH] SDK: ModelImportTool - uses FileObject list of assets instead of AssetKeys - uses more robust copying - supports binary ogre files (in theory) git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@9480 75d07b2b-3a1a-0410-a2c5-0572b91ccdca --- .../jme3/gde/modelimporter/ImportModel.java | 70 ++++++++++--------- .../ModelImporterVisualPanel3.java | 25 ++++--- 2 files changed, 53 insertions(+), 42 deletions(-) diff --git a/sdk/jme3-model-importer/src/com/jme3/gde/modelimporter/ImportModel.java b/sdk/jme3-model-importer/src/com/jme3/gde/modelimporter/ImportModel.java index 07f39c615..452eb4724 100644 --- a/sdk/jme3-model-importer/src/com/jme3/gde/modelimporter/ImportModel.java +++ b/sdk/jme3-model-importer/src/com/jme3/gde/modelimporter/ImportModel.java @@ -70,53 +70,59 @@ public final class ImportModel implements ActionListener { } private void copyModel(WizardDescriptor wiz) { +// List keyList = (List) wiz.getProperty("assetlist"); +// String path = (String) wiz.getProperty("path"); AssetKey key = (AssetKey) wiz.getProperty("mainkey"); boolean keepFiles = (Boolean) wiz.getProperty("keepfiles"); - List keyList = (List) wiz.getProperty("assetlist"); - String path = (String) wiz.getProperty("path"); + List assetList = (List) wiz.getProperty("assetfiles"); String importPath = (String) wiz.getProperty("destpath"); ProjectAssetManager manager = context.getLookup().lookup(ProjectAssetManager.class); if (manager == null) { throw new IllegalStateException("Cannot find project AssetManager!"); } List deleteList = new LinkedList(); - for (Iterator it = keyList.iterator(); it.hasNext();) { - AssetKey assetKey = it.next(); - File file = new File(path + "/" + assetKey.getFolder() + assetKey.getName()); - if (file.exists()) { - FileObject source = FileUtil.toFileObject(file); - File destFolder = new File(manager.getAssetFolderName() + "/" + importPath + "/" + assetKey.getFolder() + "/"); - destFolder.mkdirs(); - FileObject dest = FileUtil.toFileObject(destFolder); - try { - FileObject fileObj = dest.getFileObject(source.getName(), source.getExt()); - if (fileObj != null) { - NotifyDescriptor.Confirmation msg = new NotifyDescriptor.Confirmation( - "File "+source.getNameExt()+" exists, overwrite?", - NotifyDescriptor.YES_NO_OPTION, - NotifyDescriptor.WARNING_MESSAGE); - Object result = DialogDisplayer.getDefault().notify(msg); - if (NotifyDescriptor.YES_OPTION.equals(result)) { - fileObj.delete(); - fileObj = source.copy(dest, source.getName(), source.getExt()); - } else { - } - } else { + for (Iterator it = assetList.iterator(); it.hasNext();) { + FileObject source = it.next(); + try { + String folderName = importPath + "/" + manager.getRelativeAssetPath(source.getParent().getPath()); + FileObject dest = manager.getAssetFolder().getFileObject(folderName); + if (dest == null) { + dest = FileUtil.createFolder(manager.getAssetFolder(), folderName); + } + FileObject fileObj = dest.getFileObject(source.getName(), source.getExt()); + if (fileObj != null) { + NotifyDescriptor.Confirmation msg = new NotifyDescriptor.Confirmation( + "File " + source.getNameExt() + " exists, overwrite?", + NotifyDescriptor.YES_NO_OPTION, + NotifyDescriptor.WARNING_MESSAGE); + Object result = DialogDisplayer.getDefault().notify(msg); + if (NotifyDescriptor.YES_OPTION.equals(result)) { + fileObj.delete(); fileObj = source.copy(dest, source.getName(), source.getExt()); + } else { } - if (!(assetKey instanceof TextureKey) && fileObj != null) { - deleteList.add(fileObj); + } else { + fileObj = source.copy(dest, source.getName(), source.getExt()); + } + if (fileObj != null) { + DataObject obj = DataObject.find(fileObj); + AssetData data = obj.getLookup().lookup(AssetData.class); + if (data != null) { + AssetKey assetKey = data.getAssetKey(); + if (!(assetKey instanceof TextureKey) && fileObj != null) { + deleteList.add(fileObj); + } } - } catch (Exception ex) { - Exceptions.printStackTrace(ex); } + } catch (Exception ex) { + Exceptions.printStackTrace(ex); } } - File file = new File(manager.getAssetFolderName() + "/" + importPath + "/" + key.getName()); -// File outFile = new File(manager.getAssetFolderName() + "/" + importPath + "/" + key.getName().replaceAll(key.getExtension(), "j3o")); + + FileObject file = manager.getAssetFolder().getFileObject(importPath + "/" + key.getName()); DataObject targetModel; try { - targetModel = DataObject.find(FileUtil.toFileObject(file)); + targetModel = DataObject.find(file); if (targetModel instanceof SpatialAssetDataObject) { //TODO: wtf? why do i have to add the assetmanager? ((SpatialAssetDataObject) targetModel).getLookupContents().add(manager); @@ -128,8 +134,6 @@ public final class ImportModel implements ActionListener { } data.saveAsset(); -// BinaryExporter exp = BinaryExporter.getInstance(); -// exp.save(spat, outFile); } } catch (Exception ex) { Exceptions.printStackTrace(ex); diff --git a/sdk/jme3-model-importer/src/com/jme3/gde/modelimporter/ModelImporterVisualPanel3.java b/sdk/jme3-model-importer/src/com/jme3/gde/modelimporter/ModelImporterVisualPanel3.java index d3cdd6bb1..e14f279c8 100644 --- a/sdk/jme3-model-importer/src/com/jme3/gde/modelimporter/ModelImporterVisualPanel3.java +++ b/sdk/jme3-model-importer/src/com/jme3/gde/modelimporter/ModelImporterVisualPanel3.java @@ -15,6 +15,7 @@ import javax.swing.JPanel; import org.openide.DialogDisplayer; import org.openide.NotifyDescriptor; import org.openide.WizardDescriptor; +import org.openide.filesystems.FileObject; import org.openide.util.Exceptions; @SuppressWarnings({"unchecked", "serial"}) @@ -26,8 +27,9 @@ public final class ModelImporterVisualPanel3 extends JPanel { private AssetData data; private AssetKey mainKey; private Spatial currentModel; - private List assets; - private List failed; + private List assets; + private List assetKeys; + private List failedKeys; /** * Creates new form ModelImporterVisualPanel1 @@ -51,6 +53,9 @@ public final class ModelImporterVisualPanel3 extends JPanel { manager = (ProjectAssetManager) wiz.getProperty("manager"); mainKey = (AssetKey) wiz.getProperty("mainkey"); data = (AssetData) wiz.getProperty("assetdata"); + assets = null; + assetKeys = null; + failedKeys = null; loadModel(mainKey); if (currentModel != null) { offPanel.attach(currentModel); @@ -60,8 +65,9 @@ public final class ModelImporterVisualPanel3 extends JPanel { } public void applySettings(WizardDescriptor wiz) { - wiz.putProperty("assetlist", assets); - wiz.putProperty("failedlist", failed); + wiz.putProperty("assetfiles", assets); + wiz.putProperty("assetlist", assetKeys); + wiz.putProperty("failedlist", failedKeys); wiz.putProperty("model", currentModel); if (currentModel != null) { offPanel.detach(currentModel); @@ -83,11 +89,12 @@ public final class ModelImporterVisualPanel3 extends JPanel { try { currentModel = (Spatial) data.loadAsset(); if (currentModel != null) { - assets = data.getAssetKeyList(); - failed = data.getFailedList(); - jList1.setListData(assets.toArray()); - jList2.setListData(failed.toArray()); - if (failed.size() > 0) { + assetKeys = data.getAssetKeyList(); + failedKeys = data.getFailedList(); + assets = data.getAssetList(); + jList1.setListData(assetKeys.toArray()); + jList2.setListData(failedKeys.toArray()); + if (failedKeys.size() > 0) { statusLabel.setText(org.openide.util.NbBundle.getMessage(ModelImporterVisualPanel3.class, "ModelImporterVisualPanel3.statusLabel.text_missing")); infoTextArea.setText(org.openide.util.NbBundle.getMessage(ModelImporterVisualPanel3.class, "ModelImporterVisualPanel3.infoTextArea.text_missing")); } else {