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