Revision: 5628
          http://sourceforge.net/p/jump-pilot/code/5628
Author:   ma15569
Date:     2017-12-12 17:21:44 +0000 (Tue, 12 Dec 2017)
Log Message:
-----------
Prepearing Sextante to the new OJ output framework. Integration of Sextante 
toolbox and help into OJ internalframe

Modified Paths:
--------------
    
plug-ins/SextantePlugIn/src/es/unex/sextante/openjump/extensions/SextanteExtension.java
    
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/gui/OpenJUMPPostProcessTask.java

Added Paths:
-----------
    plug-ins/SextantePlugIn/src/es/unex/sextante/openjump/help/
    
plug-ins/SextantePlugIn/src/es/unex/sextante/openjump/help/SextanteHelpFrame.java
    plug-ins/SextantePlugIn/src/es/unex/sextante/openjump/toolbox/
    
plug-ins/SextantePlugIn/src/es/unex/sextante/openjump/toolbox/ToolboxFrame.java
    
plug-ins/SextantePlugIn/src/es/unex/sextante/openjump/toolbox/sextante_toolbox2.gif

Modified: 
plug-ins/SextantePlugIn/src/es/unex/sextante/openjump/extensions/SextanteExtension.java
===================================================================
--- 
plug-ins/SextantePlugIn/src/es/unex/sextante/openjump/extensions/SextanteExtension.java
     2017-12-12 10:59:58 UTC (rev 5627)
+++ 
plug-ins/SextantePlugIn/src/es/unex/sextante/openjump/extensions/SextanteExtension.java
     2017-12-12 17:21:44 UTC (rev 5628)
@@ -107,7 +107,8 @@
     new SextanteModelerPlugin().initialize(context);
     new SextanteHistoryPlugin().initialize(context);
     new SextanteCommandLinePlugin().initialize(context);
-    new SextanteResultsPlugin().initialize(context);
+    //[Giuseppe Aruta 2017-12-12] deactivated as integrated (from OJ 1.12)into 
OpenJUMP
+    //new SextanteResultsPlugin().initialize(context);
     new SextanteDataExplorerPlugin().initialize(context);
     new SextantePickCoordinatesPlugIn().initialize(context);
     featureInstaller.addMenuSeparator(new String[] { "Sextante" });

Modified: 
plug-ins/SextantePlugIn/src/es/unex/sextante/openjump/extensions/SextanteHelpPlugIn.java
===================================================================
--- 
plug-ins/SextantePlugIn/src/es/unex/sextante/openjump/extensions/SextanteHelpPlugIn.java
    2017-12-12 10:59:58 UTC (rev 5627)
+++ 
plug-ins/SextantePlugIn/src/es/unex/sextante/openjump/extensions/SextanteHelpPlugIn.java
    2017-12-12 17:21:44 UTC (rev 5628)
@@ -1,14 +1,20 @@
 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;
 import com.vividsolutions.jump.workbench.plugin.PlugInContext;
 import com.vividsolutions.jump.workbench.plugin.ThreadedPlugIn;
+import com.vividsolutions.jump.workbench.ui.WorkbenchFrame;
 import com.vividsolutions.jump.workbench.ui.images.IconLoader;
 
 import es.unex.sextante.gui.core.SextanteGUI;
+import es.unex.sextante.gui.help.SextanteHelpFrame;
 import es.unex.sextante.gui.help.SextanteHelpWindow;
+import es.unex.sextante.gui.toolbox.ToolboxFrame;
 import es.unex.sextante.openjump.language.I18NPlug;
 
 public class SextanteHelpPlugIn implements ThreadedPlugIn {
@@ -37,19 +43,33 @@
             SextanteGUI.getGUIFactory().showHelpWindow();
         }
     }
-
+    static WorkbenchFrame wFrame = JUMPWorkbench.getInstance().getFrame();
     public boolean execute(PlugInContext context) throws Exception {
-        final SextanteHelpWindow window = new SextanteHelpWindow();
+   //     final SextanteHelpWindow window = new SextanteHelpWindow();
         // window.setExtendedState(window.getExtendedState()
         // | JFrame.MAXIMIZED_BOTH);
 
-        window.pack();
-        window.setAlwaysOnTop(true);
-        window.setVisible(true);
+  //      window.pack();
+  //      window.setAlwaysOnTop(true);
+ //      window.setVisible(true);
 
         // 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) {
 
+                iFrame.toFront();
+                return false;
+
+            }
+        }
+
+        wFrame.addInternalFrame(window, true, 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
 2017-12-12 10:59:58 UTC (rev 5627)
+++ 
plug-ins/SextantePlugIn/src/es/unex/sextante/openjump/extensions/SextanteToolboxPlugin.java
 2017-12-12 17:21:44 UTC (rev 5628)
@@ -1,19 +1,37 @@
 package es.unex.sextante.openjump.extensions;
 
 import javax.swing.ImageIcon;
+import javax.swing.JFrame;
+import javax.swing.JInternalFrame;
 
+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.gui.core.SextanteGUI;
+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
+      JFrame frame = context.getWorkbenchFrame();
+      for (JInternalFrame iFrame : wFrame.getInternalFrames()) {
+          if (iFrame instanceof ToolboxFrame) {
 
-    SextanteGUI.getGUIFactory().showToolBoxDialog();
+              iFrame.toFront();
+              return false;
 
+          }
+      }
+      ToolboxFrame tframe = new ToolboxFrame(frame);
+      wFrame.addInternalFrame(tframe, true, true);
+      SextanteGUI.getInputFactory().clearDataObjects();
+
+      // SextanteGUI.getGUIFactory().showToolBoxDialog();
+
     return true;
 
   }

Modified: 
plug-ins/SextantePlugIn/src/es/unex/sextante/openjump/gui/OpenJUMPPostProcessTask.java
===================================================================
--- 
plug-ins/SextantePlugIn/src/es/unex/sextante/openjump/gui/OpenJUMPPostProcessTask.java
      2017-12-12 10:59:58 UTC (rev 5627)
+++ 
plug-ins/SextantePlugIn/src/es/unex/sextante/openjump/gui/OpenJUMPPostProcessTask.java
      2017-12-12 17:21:44 UTC (rev 5628)
@@ -15,7 +15,8 @@
 import com.vividsolutions.jump.workbench.model.StandardCategoryNames;
 
 import es.unex.sextante.core.GeoAlgorithm;
-import es.unex.sextante.core.ObjectAndDescription;
+//import es.unex.sextante.core.ObjectAndDescription;
+import org.openjump.sextante.core.ObjectAndDescription;
 import es.unex.sextante.core.OutputObjectsSet;
 import es.unex.sextante.core.Sextante;
 import es.unex.sextante.dataObjects.IRasterLayer;
@@ -113,8 +114,15 @@
          else if (out instanceof OutputTable) {
             try {
                final JScrollPane jScrollPane = 
TableTools.getScrollableTablePanelFromITable((ITable) object);
-               AdditionalResults.addComponent(new 
ObjectAndDescription(sDescription, jScrollPane));
-               bShowAdditionalPanel = true;
+            // [Giuseppe Aruta 2017-12-11] moved output to OpenJUMP
+               // Internal Frame
+               // AdditionalResults.addComponent(new ObjectAndDescription(
+               // sDescription, jScrollPane));
+               // bShowAdditionalPanel = true;
+
+               org.openjump.sextante.gui.additionalResults.AdditionalResults
+                       .addComponentAndShow(new ObjectAndDescription(
+                               sDescription, jScrollPane));
             }
             catch (final Exception e) {
                Sextante.addErrorToLog(e);
@@ -131,12 +139,22 @@
             jScrollPane.setViewportView(jTextPane);
             
jScrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
             
jTextPane.setBorder(BorderFactory.createEtchedBorder(BevelBorder.LOWERED));
-            AdditionalResults.addComponent(new 
ObjectAndDescription(sDescription, jScrollPane));
-            bShowAdditionalPanel = true;
+            // [Giuseppe Aruta 2017-12-11] moved output to OpenJUMP Internal
+            // Frame
+            org.openjump.sextante.gui.additionalResults.AdditionalResults
+            .addComponentAndShow(new ObjectAndDescription(
+                    sDescription, jScrollPane));
+         //   AdditionalResults.addComponent(new 
ObjectAndDescription(sDescription, jScrollPane));
+         //   bShowAdditionalPanel = true;
          }
          else if (object instanceof Component) {
-            AdditionalResults.addComponent(new 
ObjectAndDescription(sDescription, object));
-            bShowAdditionalPanel = true;
+          // [Giuseppe Aruta 2017-12-11] moved output to OpenJUMP Internal
+             // Frame
+             org.openjump.sextante.gui.additionalResults.AdditionalResults
+             .addComponentAndShow(new ObjectAndDescription(
+                     sDescription, object));
+         //   AdditionalResults.addComponent(new 
ObjectAndDescription(sDescription, object));
+         //   bShowAdditionalPanel = true;
          }
          else if (out instanceof Output3DRasterLayer) {
             JOptionPane.showMessageDialog(SextanteGUI.getMainFrame(), 
Sextante.getText("3d_not_supported"),

Added: 
plug-ins/SextantePlugIn/src/es/unex/sextante/openjump/help/SextanteHelpFrame.java
===================================================================
--- 
plug-ins/SextantePlugIn/src/es/unex/sextante/openjump/help/SextanteHelpFrame.java
                           (rev 0)
+++ 
plug-ins/SextantePlugIn/src/es/unex/sextante/openjump/help/SextanteHelpFrame.java
   2017-12-12 17:21:44 UTC (rev 5628)
@@ -0,0 +1,519 @@
+package es.unex.sextante.gui.help;
+
+import java.awt.BorderLayout;
+import java.awt.Cursor;
+import java.awt.Dimension;
+import java.awt.FlowLayout;
+import java.awt.Rectangle;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.KeyEvent;
+import java.awt.event.KeyListener;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+import java.io.BufferedInputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.net.URL;
+import java.text.Collator;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Set;
+
+import javax.swing.JButton;
+import javax.swing.JEditorPane;
+import javax.swing.JFileChooser;
+import javax.swing.JInternalFrame;
+import javax.swing.JLayeredPane;
+import javax.swing.JMenuItem;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JPopupMenu;
+import javax.swing.JScrollPane;
+import javax.swing.JSplitPane;
+import javax.swing.JTree;
+import javax.swing.ScrollPaneConstants;
+import javax.swing.event.TreeSelectionEvent;
+import javax.swing.event.TreeSelectionListener;
+import javax.swing.tree.DefaultMutableTreeNode;
+import javax.swing.tree.DefaultTreeModel;
+import javax.swing.tree.TreePath;
+
+import org.apache.log4j.Logger;
+import org.openjump.core.ui.io.file.FileNameExtensionFilter;
+
+import com.vividsolutions.jump.I18N;
+import com.vividsolutions.jump.workbench.JUMPWorkbench;
+import 
com.vividsolutions.jump.workbench.datasource.SaveFileDataSourceQueryChooser;
+import com.vividsolutions.jump.workbench.ui.GUIUtil;
+import com.vividsolutions.jump.workbench.ui.plugin.PersistentBlackboardPlugIn;
+
+import es.unex.sextante.core.GeoAlgorithm;
+import es.unex.sextante.core.ObjectAndDescription;
+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.grass.GrassAlgorithm;
+
+public class SextanteHelpFrame extends JInternalFrame {
+
+    private String sSave = I18N.get("deejump.plugin.SaveLegendPlugIn.Save");
+    private String sMenu = I18N
+            
.get("org.openjump.core.ui.plugin.additionalResults.AdditionalResultsPlugIn.Menu");
+    private String sSaved = I18N
+            
.get("org.openjump.core.ui.plugin.raster.RasterImageLayerPropertiesPlugIn.file.saved");
+    private String sClose = I18N
+            .get("ui.plugin.imagery.ImageLayerManagerDialog.Close");
+    private 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;
+    private JTree jTree;
+    private JEditorPane jEditorPane;
+    private JScrollPane jScrollPane;
+    private JScrollPane jScrollPanePage;
+    private TreePath m_Path;
+    private JMenuItem menuItemEditHelp;
+    private JPopupMenu popupMenu;
+    private JPopupMenu popupMenuSave;
+    private JMenuItem menuItemSave;
+    private GeoAlgorithm m_Alg;
+    private JPanel southPanel = new JPanel();
+    private JButton closeButton = new JButton(sClose);
+
+    public SextanteHelpFrame() {
+
+        super(sName);
+        setResizable(true);
+        setClosable(true);
+        setIconifiable(true);
+        setMaximizable(true);
+        setLayer(JLayeredPane.MODAL_LAYER);
+        initGUI();
+
+    }
+
+    private void initGUI() {
+
+        try {
+            {
+                final BorderLayout thisLayout = new BorderLayout();
+                this.setLayout(thisLayout);
+                this.setPreferredSize(new java.awt.Dimension(800, 500));
+                this.setSize(new java.awt.Dimension(800, 500));
+                {
+                    jSplitPane = new JSplitPane();
+                    this.add(jSplitPane, BorderLayout.CENTER);
+                    this.add(southPanel, BorderLayout.SOUTH);
+                    {
+                        jTree = new JTree();
+                        jTree.setCellRenderer(new AlgorithmTreeCellRenderer());
+                        final MouseListener ml = new MouseAdapter() {
+                            @Override
+                            public void mousePressed(MouseEvent e) {
+                                m_Path = jTree.getPathForLocation(e.getX(),
+                                        e.getY());
+                                showHelp(m_Path);
+                                jTree.setSelectionPath(m_Path);
+                                if ((e.getButton() == MouseEvent.BUTTON3)
+                                        && (m_Path != null)) {
+                                    DefaultMutableTreeNode node = 
(DefaultMutableTreeNode) m_Path
+                                            .getLastPathComponent();
+                                    Object ob = node.getUserObject();
+                                    if (ob instanceof GeoAlgorithm) {
+                                        m_Alg = ((GeoAlgorithm) ob);
+                                        showPopupMenu(e);
+                                    } else {
+                                        // showPopupMenuSave(e);
+                                    }
+                                }
+                            }
+                        };
+                        jTree.addMouseListener(ml);
+                        jTree.addTreeSelectionListener(new 
TreeSelectionListener() {
+                            @Override
+                            public void valueChanged(final TreeSelectionEvent 
e) {
+                                m_Path = e.getPath();
+                                if (m_Path != null) {
+                                    showHelp(m_Path);
+                                }
+                                final DefaultMutableTreeNode node = 
(DefaultMutableTreeNode) m_Path
+                                        .getLastPathComponent();
+                                final Object ob = node.getUserObject();
+                                if (ob instanceof GeoAlgorithm) {
+                                    m_Alg = ((GeoAlgorithm) ob);
+                                }
+                            }
+                        });
+
+                        jTree.addKeyListener(new KeyListener() {
+                            @Override
+                            public void keyPressed(final KeyEvent e) {
+                            }
+
+                            @Override
+                            public void keyReleased(final KeyEvent e) {
+                            }
+
+                            @Override
+                            public void keyTyped(final KeyEvent e) {
+                                if (e.getKeyChar() == KeyEvent.VK_SPACE) {
+                                    final DefaultMutableTreeNode node = 
(DefaultMutableTreeNode) m_Path
+                                            .getLastPathComponent();
+                                    final Object ob = node.getUserObject();
+                                    if (ob instanceof GeoAlgorithm) {
+                                        showPopupMenu(e);
+                                    }
+                                }
+                            }
+                        });
+
+                        fillTree();
+
+                        jEditorPane = new JEditorPane();
+                        jEditorPane.setEditable(false);
+                        jEditorPane.getDocument().putProperty(
+                                "IgnoreCharsetDirective", Boolean.TRUE);
+                        jEditorPane.setContentType("text/html");
+                        jScrollPane = new JScrollPane(
+                                jTree,
+                                ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,
+                                
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
+                        jScrollPanePage = new JScrollPane(
+                                jEditorPane,
+                                ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,
+                                
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
+                        jScrollPane.setPreferredSize(new Dimension(300, 450));
+                        jScrollPane.setMinimumSize(new Dimension(300, 450));
+                    }
+                    {
+                        jSplitPane.add(jScrollPanePage, JSplitPane.RIGHT);
+                        jSplitPane.add(jScrollPane, JSplitPane.LEFT);
+                    }
+                }
+            }
+            popupMenu = new JPopupMenu("Menu");
+
+            menuItemEditHelp = new JMenuItem(Sextante.getText("Edit_help"));
+            menuItemEditHelp.addActionListener(new ActionListener() {
+                @Override
+                public void actionPerformed(final ActionEvent evt) {
+                    editHelp();
+                }
+            });
+            popupMenu.add(menuItemEditHelp);
+            southPanel.setLayout(new FlowLayout(FlowLayout.TRAILING));
+            // southPanel.add(saveButton);
+            closeButton.addActionListener(new ActionListener() {
+                @Override
+                public void actionPerformed(final ActionEvent evt) {
+
+                    try {
+                        dispose();
+                    } catch (final Exception e) {
+                    }
+
+                }
+            });
+            southPanel.add(closeButton);
+
+        } catch (final Exception e) {
+            Sextante.addErrorToLog(e);
+        }
+    }
+
+    protected void editHelp() {
+
+        SextanteGUI.getGUIFactory().showHelpEditionDialog(m_Alg);
+
+    }
+
+    protected void showPopupMenu(final MouseEvent e) {
+
+        boolean bCanEdit = true;
+        final ArrayList<IAlgorithmProvider> providers = SextanteGUI
+                .getAlgorithmProviders();
+        final String sName = Sextante.getAlgorithmProviderName(m_Alg);
+        for (int i = 0; i < providers.size(); i++) {
+            if (providers.get(i).getName().equals(sName)) {
+                bCanEdit = providers.get(i).canEditHelp();
+            }
+        }
+
+        if ((m_Alg != null) && bCanEdit) {
+            jTree.setSelectionPath(m_Path);
+            popupMenu.show(e.getComponent(), e.getX(), e.getY());
+        }
+
+    }
+
+    protected void showPopupMenuSave(final MouseEvent e) {
+        jTree.setSelectionPath(m_Path);
+
+        menuItemSave.setEnabled(true);
+        popupMenuSave.show(e.getComponent(), e.getX(), e.getY());
+
+    }
+
+    protected void showPopupMenu(final KeyEvent e) {
+
+        if ((m_Alg != null) && !(m_Alg instanceof GrassAlgorithm)) {
+            jTree.setSelectionPath(m_Path);
+            final Rectangle pathBounds = jTree.getPathBounds(m_Path);
+            popupMenu.show(e.getComponent(), pathBounds.x, pathBounds.y);
+        }
+
+    }
+
+    protected void showHelp(final TreePath path) {
+
+        if (path != null) {
+            try {
+                final DefaultMutableTreeNode node = (DefaultMutableTreeNode) 
path
+                        .getLastPathComponent();
+                final Object ob = node.getUserObject();
+                if (ob instanceof GeoAlgorithm) {
+                    final Object help = SextanteGUI
+                            .getAlgorithmHelp((GeoAlgorithm) ob);
+                    if (help instanceof String) {
+                        jEditorPane.setText((String) help);
+                    } else if (help instanceof URL) {
+                        jEditorPane.setPage((URL) help);
+                    }
+                } else if (ob instanceof ObjectAndDescription) {
+                    final ObjectAndDescription oad = (ObjectAndDescription) ob;
+                    final String sHtmlFile = (String) oad.getObject();
+                    try {
+                        final URL url = new URL("file:///" + sHtmlFile);
+                        jEditorPane.setPage(url);
+                    } catch (final Exception e) {
+                        // will show a blank page
+                    }
+                }
+                jEditorPane.setCaretPosition(0);
+            } catch (final Exception e) {
+                // Sextante.addErrorToLog(e);
+            }
+
+        }
+
+    }
+
+    public void fillTree() {
+
+        DefaultMutableTreeNode node;
+        final DefaultMutableTreeNode mainNode = new DefaultMutableTreeNode(
+                Sextante.getText("Help"));
+        final DefaultMutableTreeNode algsNode = new DefaultMutableTreeNode(
+                Sextante.getText("Algorithms"));
+        DefaultMutableTreeNode child;
+
+        final DefaultMutableTreeNode generalNode = new DefaultMutableTreeNode(
+                Sextante.getText("Basic_concepts"));
+        /*
+         * generalNode.add(new DefaultMutableTreeNode(new
+         * ObjectAndDescription(Sextante.getText("Introduction"),
+         * HelpIO.getHelpFile("intro"))));
+         */
+        generalNode
+                .add(new DefaultMutableTreeNode(new ObjectAndDescription(
+                        Sextante.getText("Introduction"), HelpIO
+                                .getHelpFile("intro"))));
+        generalNode.add(new DefaultMutableTreeNode(new ObjectAndDescription(
+                "Load data from OpenJUMP", HelpIO.getHelpFile("openjump"))));
+
+        generalNode.add(new DefaultMutableTreeNode(new ObjectAndDescription(
+                Sextante.getText("SEXTANTE_toolbox"), HelpIO
+                        .getHelpFile("toolbox"))));
+        generalNode.add(new DefaultMutableTreeNode(new ObjectAndDescription(
+                Sextante.getText("Batch_processing"), HelpIO
+                        .getHelpFile("batch"))));
+        generalNode.add(new DefaultMutableTreeNode(new ObjectAndDescription(
+                Sextante.getText("Models"), HelpIO.getHelpFile("modeler"))));
+        generalNode.add(new DefaultMutableTreeNode(new ObjectAndDescription(
+                Sextante.getText("Command_line"), HelpIO.getHelpFile("cmd"))));
+        generalNode.add(new DefaultMutableTreeNode(new ObjectAndDescription(
+                Sextante.getText("History"), HelpIO.getHelpFile("history"))));
+        generalNode.add(new DefaultMutableTreeNode(new ObjectAndDescription(
+                "Explore", HelpIO.getHelpFile("explorer"))));
+        generalNode.add(new DefaultMutableTreeNode(new ObjectAndDescription(
+                "Coordinates", HelpIO.getHelpFile("coordinates"))));
+        generalNode.add(new DefaultMutableTreeNode(new ObjectAndDescription(
+                Sextante.getText("ConfiguringProviders"), HelpIO
+                        .getHelpFile("providers"))));
+
+        generalNode.add(new DefaultMutableTreeNode(new ObjectAndDescription(
+                "About", HelpIO.getHelpFile("about"))));
+
+        mainNode.add(generalNode);
+        mainNode.add(algsNode);
+
+        setCursor(new Cursor(Cursor.WAIT_CURSOR));
+
+        final HashMap<String, HashMap<String, GeoAlgorithm>> algs = Sextante
+                .getAlgorithms();
+        final Set<String> groupKeys = algs.keySet();
+        final Iterator<String> groupIter = groupKeys.iterator();
+        while (groupIter.hasNext()) {
+            final HashMap<String, DefaultMutableTreeNode> baseGroups = new 
HashMap<String, DefaultMutableTreeNode>();
+            final String groupKey = groupIter.next();
+            final DefaultMutableTreeNode toolsNode = new 
DefaultMutableTreeNode(
+                    groupKey);
+            algsNode.add(toolsNode);
+            final HashMap<String, GeoAlgorithm> groupAlgs = algs.get(groupKey);
+            final Set keys = groupAlgs.keySet();
+            final Iterator iter = keys.iterator();
+            while (iter.hasNext()) {
+                final GeoAlgorithm alg = groupAlgs.get(iter.next());
+                child = new DefaultMutableTreeNode(alg);
+                node = baseGroups.get(alg.getGroup());
+                if (node == null) {
+                    node = new DefaultMutableTreeNode(alg.getGroup());
+                    baseGroups.put(alg.getGroup(), node);
+                    addNodeInSortedOrder(toolsNode, node);
+                }
+                addNodeInSortedOrder(node, child);
+            }
+
+        }
+        setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
+
+        jTree.setModel(new DefaultTreeModel(mainNode));
+
+    }
+
+    private void addNodeInSortedOrder(final DefaultMutableTreeNode parent,
+            final DefaultMutableTreeNode child) {
+
+        final int n = parent.getChildCount();
+        if (n == 0) {
+            parent.add(child);
+            return;
+        }
+
+        final Collator collator = Collator.getInstance();
+        collator.setStrength(Collator.PRIMARY);
+        DefaultMutableTreeNode node = null;
+        for (int i = 0; i < n; i++) {
+            node = (DefaultMutableTreeNode) parent.getChildAt(i);
+            try {
+                if (collator.compare(node.toString(), child.toString()) > 0) {
+                    parent.insert(child, i);
+                    return;
+                }
+            } catch (final Exception e) {
+            }
+        }
+        parent.add(child);
+
+    }
+
+    private DefaultMutableTreeNode findNode(final GeoAlgorithm alg) {
+
+        Object ob;
+        final String sName = alg.getName();
+        final DefaultTreeModel data = (DefaultTreeModel) jTree.getModel();
+        final DefaultMutableTreeNode root = (DefaultMutableTreeNode) data
+                .getRoot();
+        DefaultMutableTreeNode node = null;
+
+        // if (alg instanceof GrassAlgorithm) {//GRASS algorithms: need to 
check
+        // for siblings
+        // if (sName.contains("(")) {
+        // //We have a sibling algorithm: link to parent's node instead
+        // sName = sName.substring(0, sName.indexOf("(") - 1);
+        // }
+        // }
+
+        if (root != null) {
+            for (final Enumeration e = root.breadthFirstEnumeration(); e
+                    .hasMoreElements();) {
+                final DefaultMutableTreeNode current = 
(DefaultMutableTreeNode) e
+                        .nextElement();
+                ob = current.getUserObject();
+                if (ob instanceof GeoAlgorithm) {
+                    if (((GeoAlgorithm) ob).getName().equals(sName)) {
+                        node = current;
+                        break;
+                    }
+                }
+            }
+        }
+
+        return node;
+
+    }
+
+    protected void save(String urlStr) throws IOException {
+        final JFileChooser fc = new 
GUIUtil.FileChooserWithOverwritePrompting();
+        File filedir = new File((String) PersistentBlackboardPlugIn.get(
+                JUMPWorkbench.getInstance().getContext()).get(
+                FILE_CHOOSER_DIRECTORY_KEY));
+        final File file;
+        fc.setPreferredSize(new Dimension(FILE_BROWSER_WIDTH,
+                FILE_BROWSER_HEIGHT));
+        if (LAST_DIR != null) {
+            fc.setCurrentDirectory(new File(LAST_DIR));
+        } else {
+            fc.setCurrentDirectory(filedir);
+        }
+        FileNameExtensionFilter filter = new FileNameExtensionFilter("HTML",
+                "html");
+        fc.setFileFilter(filter);
+        fc.addChoosableFileFilter(filter);
+        final int returnVal = fc.showSaveDialog(this);
+        FILE_BROWSER_WIDTH = fc.getWidth();
+        FILE_BROWSER_HEIGHT = fc.getHeight();
+        if (returnVal == JFileChooser.APPROVE_OPTION) {
+            try {
+                file = new File(fc.getSelectedFile() + ".html");
+                LAST_DIR = file.getParent();
+                URL url = new URL(urlStr);
+                BufferedInputStream bis = new BufferedInputStream(
+                        url.openStream());
+                FileOutputStream fis = new FileOutputStream(file);
+                byte[] buffer = new byte[1024];
+                int count = 0;
+                while ((count = bis.read(buffer, 0, 1024)) != -1) {
+                    fis.write(buffer, 0, count);
+                }
+                fis.close();
+                bis.close();
+            } catch (final Exception e) {
+                notsaved();
+                Logger(this.getClass(), e);
+            }
+        }
+    }
+
+    public static void Logger(Class<?> plugin, Exception e) {
+        Logger LOG = Logger.getLogger(plugin);
+        JUMPWorkbench
+                .getInstance()
+                .getFrame()
+                .warnUser(
+                        plugin.getSimpleName() + " Exception: " + 
e.toString());
+        LOG.error(plugin.getName() + " Exception: ", e);
+    }
+
+    protected void saved(File file) {
+        JUMPWorkbench.getInstance().getFrame()
+                .setStatusMessage(sSaved + " :" + file.getAbsolutePath());
+    }
+
+    protected void notsaved() {
+        JOptionPane.showMessageDialog(null, SCouldNotSave, I18N.get(sName),
+                JOptionPane.WARNING_MESSAGE);
+    }
+
+    private static int FILE_BROWSER_WIDTH = 800;
+    private static int FILE_BROWSER_HEIGHT = 600;
+    private static String LAST_DIR = null;
+    private static final String FILE_CHOOSER_DIRECTORY_KEY = 
SaveFileDataSourceQueryChooser.class
+            .getName() + " - FILE CHOOSER DIRECTORY";
+
+}


Property changes on: 
plug-ins/SextantePlugIn/src/es/unex/sextante/openjump/help/SextanteHelpFrame.java
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: 
plug-ins/SextantePlugIn/src/es/unex/sextante/openjump/toolbox/ToolboxFrame.java
===================================================================
--- 
plug-ins/SextantePlugIn/src/es/unex/sextante/openjump/toolbox/ToolboxFrame.java 
                            (rev 0)
+++ 
plug-ins/SextantePlugIn/src/es/unex/sextante/openjump/toolbox/ToolboxFrame.java 
    2017-12-12 17:21:44 UTC (rev 5628)
@@ -0,0 +1,91 @@
+package es.unex.sextante.gui.toolbox;
+
+import java.awt.Frame;
+
+import javax.swing.ImageIcon;
+import javax.swing.JDialog;
+import javax.swing.JInternalFrame;
+import javax.swing.JLayeredPane;
+
+import es.unex.sextante.core.Sextante;
+
+public class ToolboxFrame extends JInternalFrame implements IToolboxDialog {
+
+    /**
+     * 
+     */
+    // [Giuseppe Aruta 2017-12-11] moodified class from
+    // es.unex.sextante.gui.toolbox.ToolboxDialog
+    // in order to open as an OpenJUMP internal frame
+    private static final long serialVersionUID = -6608836827062468343L;
+    private ToolboxPanel m_Panel;
+
+    /**
+     * Constructor
+     * 
+     * @param parent
+     *            the parent frame
+     */
+    public ToolboxFrame(final Frame parent) {
+
+        // super("SEXTANTE", true);
+        setTitle("SEXTANTE");
+        setResizable(true);
+        setClosable(true);
+        setIconifiable(true);
+        setMaximizable(true);
+
+        setSize(400, 600);
+        setLayer(JLayeredPane.MODAL_LAYER);
+        //
+        // this.setResizable(false);
+
+        initialize();
+        // this.setLocationRelativeTo(null);
+    }
+
+    public void initialize() {
+
+        // final URL res = getClass().getClassLoader().getResource(
+        // "images/sextante_toolbox.gif");
+        // if (res != null) {
+        // } else {
+        // }
+        // [Giuseppe Aruta 2017-12-11] adopted internal Sextante
+        ImageIcon icon = new ImageIcon(getClass().getResource(
+                "sextante_toolbox2.gif"));
+
+        m_Panel = new ToolboxPanel(this, null, icon);
+        this.setContentPane(m_Panel);
+
+        m_Panel.fillTreesWithAllAlgorithms();
+
+    }
+
+    /**
+     * Returns the toolbox panel contained in this dialog
+     * 
+     * @return the toolbox panel contained in this dialog
+     */
+    public ToolboxPanel getToolboxPanel() {
+
+        return m_Panel;
+
+    }
+
+    @Override
+    public void setAlgorithmsCount(final int iCount) {
+
+        // setTitle(Sextante.getText("Processing") + " - "
+        setTitle("SEXTANTE" + " - " + Sextante.getText("Toolbox") + " ("
+                + Integer.toString(iCount) + Sextante.getText(" Tools") + ")");
+
+    }
+
+    @Override
+    public JDialog getDialog() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+}


Property changes on: 
plug-ins/SextantePlugIn/src/es/unex/sextante/openjump/toolbox/ToolboxFrame.java
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: 
plug-ins/SextantePlugIn/src/es/unex/sextante/openjump/toolbox/sextante_toolbox2.gif
===================================================================
(Binary files differ)

Index: 
plug-ins/SextantePlugIn/src/es/unex/sextante/openjump/toolbox/sextante_toolbox2.gif
===================================================================
--- 
plug-ins/SextantePlugIn/src/es/unex/sextante/openjump/toolbox/sextante_toolbox2.gif
 2017-12-12 10:59:58 UTC (rev 5627)
+++ 
plug-ins/SextantePlugIn/src/es/unex/sextante/openjump/toolbox/sextante_toolbox2.gif
 2017-12-12 17:21:44 UTC (rev 5628)

Property changes on: 
plug-ins/SextantePlugIn/src/es/unex/sextante/openjump/toolbox/sextante_toolbox2.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property

------------------------------------------------------------------------------
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

Reply via email to