Support loading orc component files from the filesystem located in the "user application directory"/Components
This commit is contained in:
parent
9d2c51a0b1
commit
f74d784f89
@ -224,6 +224,22 @@ public class SwingPreferences extends net.sf.openrocket.startup.Preferences {
|
||||
storeVersion();
|
||||
}
|
||||
|
||||
public File getDefaultUserComponentDirectory() {
|
||||
|
||||
File compdir = new File(SystemInfo.getUserApplicationDirectory(), "Components");
|
||||
|
||||
if (!compdir.isDirectory()) {
|
||||
compdir.mkdirs();
|
||||
}
|
||||
|
||||
if( !compdir.isDirectory() ) {
|
||||
return null;
|
||||
}
|
||||
if( !compdir.canRead() ) {
|
||||
return null;
|
||||
}
|
||||
return compdir;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return a list of files/directories to be loaded as custom thrust curves.
|
||||
|
@ -1,5 +1,6 @@
|
||||
package net.sf.openrocket.startup;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.Collection;
|
||||
import java.util.concurrent.CountDownLatch;
|
||||
@ -12,6 +13,7 @@ import net.sf.openrocket.database.ComponentPresetDatabase;
|
||||
import net.sf.openrocket.file.iterator.DirectoryIterator;
|
||||
import net.sf.openrocket.file.iterator.FileIterator;
|
||||
import net.sf.openrocket.gui.util.SimpleFileFilter;
|
||||
import net.sf.openrocket.gui.util.SwingPreferences;
|
||||
import net.sf.openrocket.logging.LogHelper;
|
||||
import net.sf.openrocket.preset.ComponentPreset;
|
||||
import net.sf.openrocket.preset.xml.OpenRocketComponentLoader;
|
||||
@ -88,8 +90,8 @@ public class ConcurrentComponentPresetDatabaseLoader {
|
||||
// Start loading
|
||||
log.info("Loading component presets from " + SYSTEM_PRESET_DIR);
|
||||
|
||||
iterator = DirectoryIterator.findDirectory(SYSTEM_PRESET_DIR,
|
||||
new SimpleFileFilter("", false, "orc"));
|
||||
SimpleFileFilter orcFilter = new SimpleFileFilter("", false, "orc");
|
||||
iterator = DirectoryIterator.findDirectory(SYSTEM_PRESET_DIR, orcFilter);
|
||||
|
||||
if (iterator != null) {
|
||||
while( iterator.hasNext() ) {
|
||||
@ -99,6 +101,23 @@ public class ConcurrentComponentPresetDatabaseLoader {
|
||||
fileCount ++;
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
iterator = new DirectoryIterator(
|
||||
((SwingPreferences) Application.getPreferences()).getDefaultUserComponentDirectory(),
|
||||
orcFilter,
|
||||
true);
|
||||
if (iterator != null) {
|
||||
while( iterator.hasNext() ) {
|
||||
Pair<String,InputStream> f = iterator.next();
|
||||
FileLoader loader = new FileLoader( f.getV(), f.getU() );
|
||||
loaderPool.execute(loader);
|
||||
fileCount ++;
|
||||
}
|
||||
}
|
||||
} catch (IOException ioex ) {
|
||||
log.debug("Error opening UserComponentDirectory", ioex);
|
||||
}
|
||||
latch.countDown();
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user