Revision: 5755 http://sourceforge.net/p/jump-pilot/code/5755 Author: ma15569 Date: 2018-04-08 16:53:22 +0000 (Sun, 08 Apr 2018) Log Message: ----------- Reactivated previous frames: the changes have to be defined at Sextante-GUI.class level
Modified Paths: -------------- plug-ins/SextantePlugIn/src/es/unex/sextante/openjump/extensions/SextanteHelpPlugIn.java plug-ins/SextantePlugIn/src/es/unex/sextante/openjump/extensions/SextanteToolboxPlugin.java plug-ins/SextantePlugIn/src/es/unex/sextante/openjump/help/SextanteHelpFrame.java plug-ins/SextantePlugIn/src/es/unex/sextante/openjump/toolbox/ToolboxFrame.java Added Paths: ----------- plug-ins/SextantePlugIn/dist/ojsextante_binding_apr2018a.jar Added: plug-ins/SextantePlugIn/dist/ojsextante_binding_apr2018a.jar =================================================================== (Binary files differ) Index: plug-ins/SextantePlugIn/dist/ojsextante_binding_apr2018a.jar =================================================================== --- plug-ins/SextantePlugIn/dist/ojsextante_binding_apr2018a.jar 2018-04-08 13:39:52 UTC (rev 5754) +++ plug-ins/SextantePlugIn/dist/ojsextante_binding_apr2018a.jar 2018-04-08 16:53:22 UTC (rev 5755) Property changes on: plug-ins/SextantePlugIn/dist/ojsextante_binding_apr2018a.jar ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Modified: plug-ins/SextantePlugIn/src/es/unex/sextante/openjump/extensions/SextanteHelpPlugIn.java =================================================================== --- plug-ins/SextantePlugIn/src/es/unex/sextante/openjump/extensions/SextanteHelpPlugIn.java 2018-04-08 13:39:52 UTC (rev 5754) +++ plug-ins/SextantePlugIn/src/es/unex/sextante/openjump/extensions/SextanteHelpPlugIn.java 2018-04-08 16:53:22 UTC (rev 5755) @@ -1,8 +1,6 @@ package es.unex.sextante.openjump.extensions; import javax.swing.ImageIcon; -import javax.swing.JFrame; -import javax.swing.JInternalFrame; import com.vividsolutions.jump.task.TaskMonitor; import com.vividsolutions.jump.workbench.JUMPWorkbench; @@ -12,24 +10,28 @@ import com.vividsolutions.jump.workbench.ui.images.IconLoader; import es.unex.sextante.gui.core.SextanteGUI; -//import es.unex.sextante.openjump.help.SextanteHelpFrame; import es.unex.sextante.gui.help.SextanteHelpWindow; -import es.unex.sextante.gui.toolbox.ToolboxFrame; +//import es.unex.sextante.gui.toolbox.ToolboxFrame; import es.unex.sextante.openjump.language.I18NPlug; +//import es.unex.sextante.openjump.help.SextanteHelpFrame; + public class SextanteHelpPlugIn implements ThreadedPlugIn { public static final ImageIcon ICON = IconLoader .icon("information_16x16.png"); + @Override public void run(TaskMonitor monitor, PlugInContext context) throws Exception { } + @Override public void initialize(PlugInContext context) throws Exception { context.getFeatureInstaller().addMainMenuPlugin(this, new String[] { "Sextante" }, getName(), false, ICON, null); } + @Override public String getName() {// Giuseppe Aruta - PlugIn Internationalized // 2013_05_25// @@ -43,33 +45,37 @@ SextanteGUI.getGUIFactory().showHelpWindow(); } } - static WorkbenchFrame wFrame = JUMPWorkbench.getInstance().getFrame(); + + + // static WorkbenchFrame wFrame = JUMPWorkbench.getInstance().getFrame(); + + @Override public boolean execute(PlugInContext context) throws Exception { - // final SextanteHelpWindow window = new SextanteHelpWindow(); - // window.setExtendedState(window.getExtendedState() - // | JFrame.MAXIMIZED_BOTH); + // [Giuseppe Aruta 2018-14-08] Recativated old way to open Help window. see comment below + final SextanteHelpWindow window = new SextanteHelpWindow(); - // window.pack(); - // window.setAlwaysOnTop(true); - // window.setVisible(true); + window.pack(); + window.setAlwaysOnTop(true); + window.setVisible(true); + + // [Giuseppe Aruta 2017-12-12] open as OJ internal frame + // [Giuseppe Aruta 2018-14-08] Removed. This should be defined at + // Sextante-GUI class level + // final SextanteHelpFrame window = new SextanteHelpFrame(); + // JFrame frame = context.getWorkbenchFrame(); + // // for (JInternalFrame iFrame : wFrame.getInternalFrames()) { + // if (iFrame instanceof ToolboxFrame) { + // + // iFrame.toFront(); + // return false; + // + // } + // } - // SextanteGUI.getGUIFactory().showHelpWindow(); - //[Giuseppe Aruta 2017-12-12] open as OJ internal frame - final SextanteHelpFrame window = new SextanteHelpFrame(); - JFrame frame = context.getWorkbenchFrame(); - for (JInternalFrame iFrame : wFrame.getInternalFrames()) { - if (iFrame instanceof ToolboxFrame) { + // wFrame.addInternalFrame(window, true, true); - iFrame.toFront(); - return false; - - } - } - - wFrame.addInternalFrame(window, true, true); - + // return true; return true; - return true; } public boolean isEnabled() { Modified: plug-ins/SextantePlugIn/src/es/unex/sextante/openjump/extensions/SextanteToolboxPlugin.java =================================================================== --- plug-ins/SextantePlugIn/src/es/unex/sextante/openjump/extensions/SextanteToolboxPlugin.java 2018-04-08 13:39:52 UTC (rev 5754) +++ plug-ins/SextantePlugIn/src/es/unex/sextante/openjump/extensions/SextanteToolboxPlugin.java 2018-04-08 16:53:22 UTC (rev 5755) @@ -1,61 +1,203 @@ package es.unex.sextante.openjump.extensions; +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Enumeration; +import java.util.List; +import java.util.Set; +import java.util.TreeSet; +import java.util.zip.ZipEntry; +import java.util.zip.ZipFile; + import javax.swing.ImageIcon; -import javax.swing.JFrame; -import javax.swing.JInternalFrame; +import org.apache.log4j.Logger; +import org.saig.jump.lang.I18N; + import com.vividsolutions.jump.workbench.JUMPWorkbench; import com.vividsolutions.jump.workbench.plugin.PlugIn; import com.vividsolutions.jump.workbench.plugin.PlugInContext; import com.vividsolutions.jump.workbench.ui.WorkbenchFrame; +import es.unex.sextante.core.Sextante; +import es.unex.sextante.gui.core.IAlgorithmProvider; import es.unex.sextante.gui.core.SextanteGUI; -import es.unex.sextante.gui.toolbox.ToolboxFrame; +import es.unex.sextante.openjump.core.OpenJUMPOutputFactory; +import es.unex.sextante.openjump.gui.OpenJUMPGUIFactory; +import es.unex.sextante.openjump.gui.OpenJUMPInputFactory; +import es.unex.sextante.openjump.gui.OpenJUMPPostProcessTaskFactory; +//import es.unex.sextante.gui.toolbox.ToolboxFrame; import es.unex.sextante.openjump.language.I18NPlug; public class SextanteToolboxPlugin implements PlugIn { static WorkbenchFrame wFrame = JUMPWorkbench.getInstance().getFrame(); - public boolean execute(final PlugInContext context) throws Exception { - //[Giuseppe Aruta 2017-12-12] open as OJ internal frame - // Deactivated to further tests - // 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(); + @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 - return true; + // 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(); - public String getName() { + return true; - return I18NPlug - .getI18N("es.unex.sextante.kosmo.extensions.SextanteToolboxPlugin.Sextante-toolbox"); + } - } + @Override + public String getName() { - public void initialize(final PlugInContext context) throws Exception { + return I18NPlug + .getI18N("es.unex.sextante.kosmo.extensions.SextanteToolboxPlugin.Sextante-toolbox"); - context.getFeatureInstaller().addMainMenuPlugin(this, - new String[] { "Sextante" }, getName(), false, getIcon(), null); + } - } + public void initialize_old(final PlugInContext context) throws Exception { - public ImageIcon getIcon() { + context.getFeatureInstaller().addMainMenuPlugin(this, + new String[] { "Sextante" }, getName(), false, getIcon(), null); - return new ImageIcon(SextanteGUI.class.getClassLoader().getResource( - "images/module2.png")); + } - } + @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(I18N + .getMessage( + "es.unex.sextante.kosmo.extensions.SextanteToolboxPlugin.Help-files-placed-on-{0}", + new Object[] { getJarsFolder() + "/help" })); + + context.getFeatureInstaller().addMainMenuPlugin(this, + new String[] { "Sextante" }, getName(), false, getIcon(), null); + + } + + private String getJarsFolder() { + final String sPath = System.getProperty("user.dir") + .concat(File.separator).concat("lib").concat(File.separator) + .concat("ext").concat(File.separator).concat("sextante"); + LOGGER.info("Sextante jar folder: " + sPath); + return sPath; + + } + + // [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; + } + + public ImageIcon getIcon() { + return new ImageIcon(SextanteGUI.class.getClassLoader().getResource( + "images/module2.png")); + + } + + 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) { + } + } + 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("", e); + } finally { + if (zip != null) { + try { + zip.close(); + } catch (final IOException e) { + } + } + } + return algorithmProviders; + } + + private static final Logger LOGGER = Logger + .getLogger(SextanteToolboxPlugin.class); + } Modified: plug-ins/SextantePlugIn/src/es/unex/sextante/openjump/help/SextanteHelpFrame.java =================================================================== --- plug-ins/SextantePlugIn/src/es/unex/sextante/openjump/help/SextanteHelpFrame.java 2018-04-08 13:39:52 UTC (rev 5754) +++ plug-ins/SextantePlugIn/src/es/unex/sextante/openjump/help/SextanteHelpFrame.java 2018-04-08 16:53:22 UTC (rev 5755) @@ -58,17 +58,20 @@ import es.unex.sextante.gui.core.IAlgorithmProvider; import es.unex.sextante.gui.core.SextanteGUI; import es.unex.sextante.gui.grass.GrassAlgorithm; +import es.unex.sextante.gui.help.AlgorithmTreeCellRenderer; +import es.unex.sextante.gui.help.HelpIO; public class SextanteHelpFrame extends JInternalFrame { - private String sSave = I18N.get("deejump.plugin.SaveLegendPlugIn.Save"); - private String sMenu = I18N + private final String sSave = I18N + .get("deejump.plugin.SaveLegendPlugIn.Save"); + private final String sMenu = I18N .get("org.openjump.core.ui.plugin.additionalResults.AdditionalResultsPlugIn.Menu"); - private String sSaved = I18N + private final String sSaved = I18N .get("org.openjump.core.ui.plugin.raster.RasterImageLayerPropertiesPlugIn.file.saved"); - private String sClose = I18N + private final String sClose = I18N .get("ui.plugin.imagery.ImageLayerManagerDialog.Close"); - private String SCouldNotSave = I18N + private final String SCouldNotSave = I18N .get("org.openjump.core.ui.plugin.additionalResults.AdditionalResultsPlugIn.Could-not-save-selected-result"); private static String sName = Sextante.getText("Help"); private JSplitPane jSplitPane; @@ -82,9 +85,13 @@ private JPopupMenu popupMenuSave; private JMenuItem menuItemSave; private GeoAlgorithm m_Alg; - private JPanel southPanel = new JPanel(); - private JButton closeButton = new JButton(sClose); + private final JPanel southPanel = new JPanel(); + private final JButton closeButton = new JButton(sClose); + @Deprecated + /** + * Deprecated. The frame should be defined at Sextante-GUI.class level + */ public SextanteHelpFrame() { super(sName); @@ -102,8 +109,8 @@ try { { final BorderLayout thisLayout = new BorderLayout(); - this.setLayout(thisLayout); - this.setPreferredSize(new java.awt.Dimension(800, 500)); + setLayout(thisLayout); + setPreferredSize(new java.awt.Dimension(800, 500)); this.setSize(new java.awt.Dimension(800, 500)); { jSplitPane = new JSplitPane(); @@ -121,9 +128,9 @@ jTree.setSelectionPath(m_Path); if ((e.getButton() == MouseEvent.BUTTON3) && (m_Path != null)) { - DefaultMutableTreeNode node = (DefaultMutableTreeNode) m_Path + final DefaultMutableTreeNode node = (DefaultMutableTreeNode) m_Path .getLastPathComponent(); - Object ob = node.getUserObject(); + final Object ob = node.getUserObject(); if (ob instanceof GeoAlgorithm) { m_Alg = ((GeoAlgorithm) ob); showPopupMenu(e); @@ -450,7 +457,7 @@ protected void save(String urlStr) throws IOException { final JFileChooser fc = new GUIUtil.FileChooserWithOverwritePrompting(); - File filedir = new File((String) PersistentBlackboardPlugIn.get( + final File filedir = new File((String) PersistentBlackboardPlugIn.get( JUMPWorkbench.getInstance().getContext()).get( FILE_CHOOSER_DIRECTORY_KEY)); final File file; @@ -461,8 +468,8 @@ } else { fc.setCurrentDirectory(filedir); } - FileNameExtensionFilter filter = new FileNameExtensionFilter("HTML", - "html"); + final FileNameExtensionFilter filter = new FileNameExtensionFilter( + "HTML", "html"); fc.setFileFilter(filter); fc.addChoosableFileFilter(filter); final int returnVal = fc.showSaveDialog(this); @@ -472,11 +479,11 @@ try { file = new File(fc.getSelectedFile() + ".html"); LAST_DIR = file.getParent(); - URL url = new URL(urlStr); - BufferedInputStream bis = new BufferedInputStream( + final URL url = new URL(urlStr); + final BufferedInputStream bis = new BufferedInputStream( url.openStream()); - FileOutputStream fis = new FileOutputStream(file); - byte[] buffer = new byte[1024]; + final FileOutputStream fis = new FileOutputStream(file); + final byte[] buffer = new byte[1024]; int count = 0; while ((count = bis.read(buffer, 0, 1024)) != -1) { fis.write(buffer, 0, count); @@ -491,7 +498,7 @@ } public static void Logger(Class<?> plugin, Exception e) { - Logger LOG = Logger.getLogger(plugin); + final Logger LOG = Logger.getLogger(plugin); JUMPWorkbench .getInstance() .getFrame() Modified: plug-ins/SextantePlugIn/src/es/unex/sextante/openjump/toolbox/ToolboxFrame.java =================================================================== --- plug-ins/SextantePlugIn/src/es/unex/sextante/openjump/toolbox/ToolboxFrame.java 2018-04-08 13:39:52 UTC (rev 5754) +++ plug-ins/SextantePlugIn/src/es/unex/sextante/openjump/toolbox/ToolboxFrame.java 2018-04-08 16:53:22 UTC (rev 5755) @@ -1,4 +1,4 @@ -package es.unex.sextante.gui.toolbox; +package es.unex.sextante.openjump.toolbox; import java.awt.Frame; @@ -8,7 +8,13 @@ import javax.swing.JLayeredPane; import es.unex.sextante.core.Sextante; +import es.unex.sextante.gui.toolbox.IToolboxDialog; +import es.unex.sextante.gui.toolbox.ToolboxPanel; +@Deprecated +/** + * Deprecated. The frame should be defined at Sextante-GUI.class level + */ public class ToolboxFrame extends JInternalFrame implements IToolboxDialog { /** @@ -52,11 +58,11 @@ // } else { // } // [Giuseppe Aruta 2017-12-11] adopted internal Sextante - ImageIcon icon = new ImageIcon(getClass().getResource( + final ImageIcon icon = new ImageIcon(getClass().getResource( "sextante_toolbox2.gif")); m_Panel = new ToolboxPanel(this, null, icon); - this.setContentPane(m_Panel); + setContentPane(m_Panel); m_Panel.fillTreesWithAllAlgorithms(); ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Jump-pilot-devel mailing list Jump-pilot-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel