Revision: 6376 http://sourceforge.net/p/jump-pilot/code/6376 Author: ma15569 Date: 2020-08-17 05:19:44 +0000 (Mon, 17 Aug 2020) Log Message: ----------- Try to solve error found by Ede: [JPP-Devel] bsh sextante NPE in latest checkout. 2020-08-04. Tecnically SextanteGUI.initialize() will be enough to load GUI. Pratically some aspects of GUI are substituted, like "Raster Calculator" buttons and input areas, with the standard interface.
Modified Paths: -------------- plug-ins/SextantePlugIn/src/es/unex/sextante/openjump/extensions/SextanteToolboxPlugin.java Modified: plug-ins/SextantePlugIn/src/es/unex/sextante/openjump/extensions/SextanteToolboxPlugin.java =================================================================== --- plug-ins/SextantePlugIn/src/es/unex/sextante/openjump/extensions/SextanteToolboxPlugin.java 2020-08-16 16:48:26 UTC (rev 6375) +++ plug-ins/SextantePlugIn/src/es/unex/sextante/openjump/extensions/SextanteToolboxPlugin.java 2020-08-17 05:19:44 UTC (rev 6376) @@ -28,167 +28,176 @@ import es.unex.sextante.openjump.language.I18NPlug; public class SextanteToolboxPlugin implements PlugIn { - // static WorkbenchFrame wFrame = JUMPWorkbench.getInstance().getFrame(); + // static WorkbenchFrame wFrame = JUMPWorkbench.getInstance().getFrame(); - @Override - public boolean execute(final PlugInContext context) throws Exception { - // [Giuseppe Aruta 2018-04-08] open as OJ internal frame - // Deactivated to further tests as algorithms are not correctly selected - // in the JInternalFrame + @Override + public boolean execute(final PlugInContext context) throws Exception { + // [Giuseppe Aruta 2018-04-08] open as OJ internal frame + // Deactivated to further tests as algorithms are not correctly selected + // in the JInternalFrame - // JFrame frame = context.getWorkbenchFrame(); - // for (JInternalFrame iFrame : wFrame.getInternalFrames()) { - // if (iFrame instanceof ToolboxFrame) { - // - // iFrame.toFront(); - // return false; - // - // } - // } - // ToolboxFrame tframe = new ToolboxFrame(frame); - // wFrame.addInternalFrame(tframe, true, true); - // SextanteGUI.getInputFactory().clearDataObjects(); + // JFrame frame = context.getWorkbenchFrame(); + // for (JInternalFrame iFrame : wFrame.getInternalFrames()) { + // if (iFrame instanceof ToolboxFrame) { + // + // iFrame.toFront(); + // return false; + // + // } + // } + // ToolboxFrame tframe = new ToolboxFrame(frame); + // wFrame.addInternalFrame(tframe, true, true); + // SextanteGUI.getInputFactory().clearDataObjects(); - SextanteGUI.getGUIFactory().showToolBoxDialog(); + SextanteGUI.getGUIFactory().showToolBoxDialog(); - return true; + return true; - } + } - @Override - public String getName() { + @Override + public String getName() { - return I18NPlug - .getI18N("es.unex.sextante.kosmo.extensions.SextanteToolboxPlugin.Sextante-toolbox"); + return I18NPlug + .getI18N("es.unex.sextante.kosmo.extensions.SextanteToolboxPlugin.Sextante-toolbox"); - } + } - public void initialize_old(final PlugInContext context) throws Exception { + public void initialize_old(final PlugInContext context) throws Exception { - context.getFeatureInstaller().addMainMenuPlugin(this, - new String[] { "Sextante" }, getName(), false, getIcon(), null); + context.getFeatureInstaller().addMainMenuPlugin(this, + new String[] { "Sextante" }, getName(), false, getIcon(), null); - } + } - @Override - public void initialize(PlugInContext context) throws Exception { - final String sextantePath = getJarsFolder(); - Sextante.initialize(sextantePath); - SextanteGUI.setSextantePath(sextantePath); + @Override + public void initialize(PlugInContext context) throws Exception { + final String sextantePath = getJarsFolder(); + Sextante.initialize(sextantePath); + SextanteGUI.setSextantePath(sextantePath); - final List<IAlgorithmProvider> algorithmProviders = getAlgorithmProvidersFromFolder(sextantePath); - for (final IAlgorithmProvider provider : algorithmProviders) { - if (!containsProvider(provider)) { - SextanteGUI.addAlgorithmProvider(provider); - } - } - SextanteGUI.initialize(sextantePath); - SextanteGUI.setMainFrame(context.getWorkbenchFrame()); - SextanteGUI.setOutputFactory(new OpenJUMPOutputFactory(context - .getWorkbenchContext())); - SextanteGUI.setGUIFactory(new OpenJUMPGUIFactory()); - SextanteGUI.setInputFactory(new OpenJUMPInputFactory(context - .getWorkbenchContext())); - SextanteGUI - .setPostProcessTaskFactory(new OpenJUMPPostProcessTaskFactory()); - Logger.info("Sextante help file in folder: " - + getJarsFolder().concat(File.separator).concat("help")); + final List<IAlgorithmProvider> algorithmProviders = getAlgorithmProvidersFromFolder(sextantePath); + for (final IAlgorithmProvider provider : algorithmProviders) { + if (!containsProvider(provider)) { + SextanteGUI.addAlgorithmProvider(provider); + } + } + // [Giuseppe Aruta 2020-08-18] Try to solve error found by Ede + // [JPP-Devel] bsh sextante NPE in latest checkout. 2020-08-04 + // Tecnically SextanteGUI.initialize() will be enough to load GUI + // Pratically some aspects of GUI are substitued, like "Raster Calculator" + // buttons and input areas, with standard interface. - context.getFeatureInstaller().addMainMenuPlugin(this, - new String[] { "Sextante" }, getName(), false, getIcon(), null); + SextanteGUI.initialize(); + SextanteGUI.initialize(sextantePath); + SextanteGUI.setMainFrame(context.getWorkbenchFrame()); + SextanteGUI.setOutputFactory(new OpenJUMPOutputFactory(context + .getWorkbenchContext())); + SextanteGUI.setGUIFactory(new OpenJUMPGUIFactory()); + SextanteGUI.setInputFactory(new OpenJUMPInputFactory(context + .getWorkbenchContext())); + SextanteGUI + .setPostProcessTaskFactory(new OpenJUMPPostProcessTaskFactory()); - } - private String getJarsFolder() { - final String path = JUMPWorkbench.getInstance().getPlugInManager() - .getPlugInDirectory().getAbsolutePath(); - final String sPath = path.concat(File.separator).concat("sextante"); - // LOGGER.info("Sextante jar folder: " + sPath); - return sPath; - } + Logger.info("Sextante help file in folder: " + + getJarsFolder().concat(File.separator).concat("help")); - // [Giuseppe Aruta 2018-04-08] Activated connection to external providers (Grass, Saga, R...) - private boolean containsProvider(IAlgorithmProvider provider) { - final List<IAlgorithmProvider> algorithmProviders = SextanteGUI - .getAlgorithmProviders(); - for (final IAlgorithmProvider iAlgorithmProvider : algorithmProviders) { - if (iAlgorithmProvider.getClass().isAssignableFrom( - provider.getClass())) { - return true; - } - } - return false; - } + context.getFeatureInstaller().addMainMenuPlugin(this, + new String[] { "Sextante" }, getName(), false, getIcon(), null); - public ImageIcon getIcon() { - return new ImageIcon(SextanteGUI.class.getClassLoader().getResource( - "images/module2.png")); + } - } + private String getJarsFolder() { + final String path = JUMPWorkbench.getInstance().getPlugInManager() + .getPlugInDirectory().getAbsolutePath(); + final String sPath = path.concat(File.separator).concat("sextante"); + // LOGGER.info("Sextante jar folder: " + sPath); + return sPath; + } - private List<IAlgorithmProvider> getAlgorithmProvidersFromFolder( - String sFolder) { - final Set<String> algorithmProviderNames = new TreeSet<String>(); - final List<IAlgorithmProvider> providers = new ArrayList<IAlgorithmProvider>(); + // [Giuseppe Aruta 2018-04-08] Activated connection to external providers (Grass, Saga, R...) + private boolean containsProvider(IAlgorithmProvider provider) { + final List<IAlgorithmProvider> algorithmProviders = SextanteGUI + .getAlgorithmProviders(); + for (final IAlgorithmProvider iAlgorithmProvider : algorithmProviders) { + if (iAlgorithmProvider.getClass().isAssignableFrom( + provider.getClass())) { + return true; + } + } + return false; + } - final File folder = new File(sFolder); - final File[] directoryFiles = folder.listFiles(); - for (int i = 0; i < directoryFiles.length; i++) { - if (!directoryFiles[i].isDirectory()) { - final String sFilename = directoryFiles[i].getName(); - if (sFilename.endsWith(".jar")) { - algorithmProviderNames - .addAll(addAlgorithmProvidersFromFolder(directoryFiles[i] - .getAbsolutePath())); - } - } - } - for (final String algProviderName : algorithmProviderNames) { - try { - final Class<?> clazz = Class.forName(algProviderName); - if (!clazz.isInterface()) { - final Object obj = clazz.newInstance(); - if ((obj instanceof IAlgorithmProvider)) { - providers.add((IAlgorithmProvider) obj); - } - } - } catch (final Exception ex) { - Logger.error("Error on loading Sextante algorithm provider: ", ex); - } - } - return providers; - } + public ImageIcon getIcon() { + return new ImageIcon(SextanteGUI.class.getClassLoader().getResource( + "images/module2.png")); - private List<String> addAlgorithmProvidersFromFolder(String sFilename) { - final ArrayList<String> algorithmProviders = new ArrayList<String>(); - ZipFile zip = null; - try { - zip = new ZipFile(sFilename); - final Enumeration<? extends ZipEntry> entries = zip.entries(); - while (entries.hasMoreElements()) { - final ZipEntry entry = entries.nextElement(); - final String sName = entry.getName(); - if ((!entry.isDirectory()) - && (sName.toLowerCase() - .endsWith("algorithmprovider.class"))) { - final String sClassName = sName.substring(0, - sName.lastIndexOf('.')).replace('/', '.'); + } - algorithmProviders.add(sClassName); - } - } - return algorithmProviders; - } catch (final Exception e) { - Logger.error("Error on adding Sextante algorithm provider: ", e); - } finally { - if (zip != null) { - try { - zip.close(); - } catch (final IOException e) { - } - } - } - return algorithmProviders; - } + private List<IAlgorithmProvider> getAlgorithmProvidersFromFolder( + String sFolder) { + final Set<String> algorithmProviderNames = new TreeSet<String>(); + final List<IAlgorithmProvider> providers = new ArrayList<IAlgorithmProvider>(); + final File folder = new File(sFolder); + final File[] directoryFiles = folder.listFiles(); + for (int i = 0; i < directoryFiles.length; i++) { + if (!directoryFiles[i].isDirectory()) { + final String sFilename = directoryFiles[i].getName(); + if (sFilename.endsWith(".jar")) { + algorithmProviderNames + .addAll(addAlgorithmProvidersFromFolder(directoryFiles[i] + .getAbsolutePath())); + } + } + } + for (final String algProviderName : algorithmProviderNames) { + try { + final Class<?> clazz = Class.forName(algProviderName); + if (!clazz.isInterface()) { + final Object obj = clazz.newInstance(); + if ((obj instanceof IAlgorithmProvider)) { + providers.add((IAlgorithmProvider) obj); + } + } + } catch (final Exception ex) { + Logger.error("Error on loading Sextante algorithm provider: ", ex); + } + } + return providers; + } + + private List<String> addAlgorithmProvidersFromFolder(String sFilename) { + final ArrayList<String> algorithmProviders = new ArrayList<String>(); + ZipFile zip = null; + try { + zip = new ZipFile(sFilename); + final Enumeration<? extends ZipEntry> entries = zip.entries(); + while (entries.hasMoreElements()) { + final ZipEntry entry = entries.nextElement(); + final String sName = entry.getName(); + if ((!entry.isDirectory()) + && (sName.toLowerCase() + .endsWith("algorithmprovider.class"))) { + final String sClassName = sName.substring(0, + sName.lastIndexOf('.')).replace('/', '.'); + + algorithmProviders.add(sClassName); + } + } + return algorithmProviders; + } catch (final Exception e) { + Logger.error("Error on adding Sextante algorithm provider: ", e); + } finally { + if (zip != null) { + try { + zip.close(); + } catch (final IOException e) { + } + } + } + return algorithmProviders; + } + } _______________________________________________ Jump-pilot-devel mailing list Jump-pilot-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel