Revision: 6325 http://sourceforge.net/p/jump-pilot/code/6325 Author: ma15569 Date: 2020-06-12 08:59:47 +0000 (Fri, 12 Jun 2020) Log Message: ----------- Moved all export file components to a new class
Modified Paths: -------------- core/trunk/src/org/openjump/sextante/gui/additionalResults/AdditionalResultsFrame.java Modified: core/trunk/src/org/openjump/sextante/gui/additionalResults/AdditionalResultsFrame.java =================================================================== --- core/trunk/src/org/openjump/sextante/gui/additionalResults/AdditionalResultsFrame.java 2020-06-12 08:58:52 UTC (rev 6324) +++ core/trunk/src/org/openjump/sextante/gui/additionalResults/AdditionalResultsFrame.java 2020-06-12 08:59:47 UTC (rev 6325) @@ -1,34 +1,20 @@ package org.openjump.sextante.gui.additionalResults; -import it.betastudio.adbtoolbox.libs.DxfExport; - import java.awt.BorderLayout; import java.awt.Component; -import java.awt.Cursor; import java.awt.Dimension; -import java.awt.Graphics2D; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; -import java.awt.image.BufferedImage; -import java.io.BufferedWriter; -import java.io.File; -import java.io.FileWriter; -import java.text.DecimalFormat; -import java.text.DecimalFormatSymbols; import java.util.ArrayList; import java.util.Enumeration; -import java.util.Locale; -import javax.imageio.ImageIO; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JDialog; -import javax.swing.JFileChooser; -import javax.swing.JLabel; import javax.swing.JLayeredPane; import javax.swing.JMenuItem; import javax.swing.JOptionPane; @@ -36,1007 +22,425 @@ import javax.swing.JPopupMenu; import javax.swing.JScrollPane; import javax.swing.JSplitPane; -import javax.swing.JTable; -import javax.swing.JTextArea; -import javax.swing.JTextPane; import javax.swing.JTree; import javax.swing.ScrollPaneConstants; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeModel; import javax.swing.tree.TreePath; -import javax.xml.namespace.QName; import org.apache.log4j.Logger; -import org.math.plot.PlotPanel; -import org.math.plot.plots.Plot; -import org.openjump.core.apitools.IOTools; -import org.openjump.core.ui.io.file.FileNameExtensionFilter; import org.openjump.core.ui.swing.DetachableInternalFrame; -import org.openjump.core.ui.util.LayerableUtil; import org.openjump.sextante.core.ObjectAndDescription; import com.vividsolutions.jump.I18N; -import com.vividsolutions.jump.feature.FeatureCollection; import com.vividsolutions.jump.workbench.JUMPWorkbench; -import com.vividsolutions.jump.workbench.WorkbenchContext; -import com.vividsolutions.jump.workbench.model.Task; -import com.vividsolutions.jump.workbench.ui.FeatureCollectionPanel; import com.vividsolutions.jump.workbench.ui.GUIUtil; -import com.vividsolutions.jump.workbench.ui.HTMLPanel; public class AdditionalResultsFrame extends DetachableInternalFrame { - /** - * Flexible generic frame for prompting the results in several objects. This - * frame is a refactoring of Sextante - * es.unex.sextante.gui.additionalResults.AdditionalResultsDialog from - * library SextanteGUI.jar. Methods to promping AdditionalResultsFrame are - * located to the class AdditionalResults - * - * @author Giuseppe Aruta [2017-12-12] - */ + /** + * Flexible generic frame for prompting the results in several objects. This + * frame is a refactoring of Sextante + * es.unex.sextante.gui.additionalResults.AdditionalResultsDialog from + * library SextanteGUI.jar. Methods to prompting AdditionalResultsFrame are + * located to the class AdditionalResults + * + * @author Giuseppe Aruta [2017-12-12] + */ - // Main components of a AdditionalResultsFrame + // Main components of a AdditionalResultsFrame - private final String name = I18N - .get("org.openjump.sextante.gui.additionalResults.AdditionalResultsPlugIn.Result-viewer"); - private final String sMenu = I18N - .get("org.openjump.sextante.gui.additionalResults.AdditionalResultsPlugIn.Menu"); - private final String sRemove = I18N - .get("org.openjump.sextante.gui.additionalResults.AdditionalResultsPlugIn.Remove"); - private final String sRename = I18N - .get("org.openjump.sextante.gui.additionalResults.AdditionalResultsPlugIn.Rename"); - private final String sSave = I18N - .get("deejump.plugin.SaveLegendPlugIn.Save"); - private final String sWriteName = I18N - .get("org.openjump.sextante.gui.additionalResults.AdditionalResultsPlugIn.Write-name"); - private final String sChangeName = I18N - .get("org.openjump.sextante.gui.additionalResults.AdditionalResultsPlugIn.Change-name"); - private final String sSaved = I18N - .get("org.openjump.core.ui.plugin.raster.RasterImageLayerPropertiesPlugIn.file.saved"); - private final String SCouldNotSave = I18N - .get("org.openjump.sextante.gui.additionalResults.AdditionalResultsPlugIn.Could-not-save-selected-result"); - private final String sProcessing = I18N - .get("org.openjump.sextante.gui.additionalResults.AdditionalResultsPlugIn.Processing"); - private final String sResult = I18N - .get("org.openjump.sextante.gui.additionalResults.AdditionalResultsPlugIn.Result"); - private final String SAVE = I18N - .get("deejump.plugin.SaveLegendPlugIn.Save"); - private final String CLOSE = I18N - .get("ui.plugin.imagery.ImageLayerManagerDialog.Close"); - public final static String HEIGHT = I18N - .get("org.openjump.core.ui.plugin.raster.ProfileGraphTool.values"); - public final static String WIDTH = I18N - .get("org.openjump.core.ui.plugin.raster.ProfileGraphTool.2d-distance"); + private final String name = I18N + .get("org.openjump.sextante.gui.additionalResults.AdditionalResultsPlugIn.Result-viewer"); + private final String sMenu = I18N + .get("org.openjump.sextante.gui.additionalResults.AdditionalResultsPlugIn.Menu"); + private final String sRemove = I18N + .get("org.openjump.sextante.gui.additionalResults.AdditionalResultsPlugIn.Remove"); + private final String sRename = I18N + .get("org.openjump.sextante.gui.additionalResults.AdditionalResultsPlugIn.Rename"); + private final String sSave = I18N + .get("deejump.plugin.SaveLegendPlugIn.Save"); + private final String sWriteName = I18N + .get("org.openjump.sextante.gui.additionalResults.AdditionalResultsPlugIn.Write-name"); + private final String sChangeName = I18N + .get("org.openjump.sextante.gui.additionalResults.AdditionalResultsPlugIn.Change-name"); + private final String sProcessing = I18N + .get("org.openjump.sextante.gui.additionalResults.AdditionalResultsPlugIn.Processing"); + private final String sResult = I18N + .get("org.openjump.sextante.gui.additionalResults.AdditionalResultsPlugIn.Result"); + private final String SAVE = I18N + .get("deejump.plugin.SaveLegendPlugIn.Save"); + private final String CLOSE = I18N + .get("ui.plugin.imagery.ImageLayerManagerDialog.Close"); + public final static String HEIGHT = I18N + .get("org.openjump.core.ui.plugin.raster.ProfileGraphTool.values"); + public final static String WIDTH = I18N + .get("org.openjump.core.ui.plugin.raster.ProfileGraphTool.2d-distance"); - private static final long serialVersionUID = 1L; - private JSplitPane jSplitPane; - private JTree jTree; - private TreePath m_Path; - private JScrollPane jScrollPane; - private JMenuItem menuItemSave; - private JPopupMenu popupMenu; - private JMenuItem menuItemRemove; - private JMenuItem menuItemRename; + private static final long serialVersionUID = 1L; + private JSplitPane jSplitPane; + private JTree jTree; + private TreePath m_Path; + private JScrollPane jScrollPane; + private JMenuItem menuItemSave; + private JPopupMenu popupMenu; + private JMenuItem menuItemRemove; + private JMenuItem menuItemRename; - public JSplitPane getSplitPanel() { - return jSplitPane; - } + public JSplitPane getSplitPanel() { + return jSplitPane; + } - // --da rimuovere - // final protected OKCancelApplyPanel okCancelApplyPanel = new - // OKCancelApplyPanel(); + // --da rimuovere + // final protected OKCancelApplyPanel okCancelApplyPanel = new + // OKCancelApplyPanel(); - public AdditionalResultsFrame(final ArrayList<?> components) { + public AdditionalResultsFrame(final ArrayList<?> components) { - initGUI(components); - setTitle(name); - setResizable(true); - setClosable(true); - setIconifiable(true); - setMaximizable(true); - setPreferredSize(new Dimension(900, 700)); - setSize(900, 700); - setLayer(JLayeredPane.MODAL_LAYER); - } + initGUI(components); + setTitle(name); + setResizable(true); + setClosable(true); + setIconifiable(true); + setMaximizable(true); + setPreferredSize(new Dimension(900, 700)); + setSize(900, 700); + setLayer(JLayeredPane.MODAL_LAYER); + } - public Icon getColorIcon() { - final ImageIcon icon = new ImageIcon(getClass().getResource( - "application_view.png")); - return GUIUtil.toSmallIcon(icon); - } + public Icon getColorIcon() { + final ImageIcon icon = new ImageIcon(getClass().getResource( + "application_view.png")); + return GUIUtil.toSmallIcon(icon); + } - private boolean initGUI(final ArrayList<?> components) { + private boolean initGUI(final ArrayList<?> components) { - final JPanel panel = new JPanel(); - final BorderLayout thisLayout = new BorderLayout(); - panel.setLayout(thisLayout); - setContentPane(panel); + final JPanel panel = new JPanel(); + final BorderLayout thisLayout = new BorderLayout(); + panel.setLayout(thisLayout); + setContentPane(panel); - if (components.size() == 0) { - return false; - } - try { - { - setPreferredSize(new Dimension(900, 450)); - this.setSize(new Dimension(900, 450)); - { - jSplitPane = new JSplitPane(); - jSplitPane.setDividerSize(9); - jSplitPane.setContinuousLayout(true); - jSplitPane.setOneTouchExpandable(true); - jSplitPane.setDividerLocation(200); - panel.add(jSplitPane, BorderLayout.CENTER); + if (components.size() == 0) { + return false; + } + try { + { + setPreferredSize(new Dimension(900, 450)); + this.setSize(new Dimension(900, 450)); + { + jSplitPane = new JSplitPane(); + jSplitPane.setDividerSize(9); + jSplitPane.setContinuousLayout(true); + jSplitPane.setOneTouchExpandable(true); + jSplitPane.setDividerLocation(200); + panel.add(jSplitPane, BorderLayout.CENTER); - panel.add(getOKSavePanel(), BorderLayout.SOUTH); + panel.add(getOKSavePanel(), BorderLayout.SOUTH); - { - jTree = new JTree(); - jTree.setCellRenderer(new AdditionalResultsTreeCellRenderer()); + { + jTree = new JTree(); + jTree.setCellRenderer(new AdditionalResultsTreeCellRenderer()); - final MouseListener ml = new MouseAdapter() { - @Override - public void mousePressed(MouseEvent e) { + final MouseListener ml = new MouseAdapter() { + @Override + public void mousePressed(MouseEvent e) { - m_Path = jTree.getPathForLocation(e.getX(), - e.getY()); - final DefaultMutableTreeNode node = (DefaultMutableTreeNode) m_Path - .getLastPathComponent(); - if (node.getUserObject() instanceof ObjectAndDescription) { - showComponent(); - if ((e.getButton() == MouseEvent.BUTTON3) - && (m_Path != null)) { + m_Path = jTree.getPathForLocation(e.getX(), + e.getY()); + final DefaultMutableTreeNode node = (DefaultMutableTreeNode) m_Path + .getLastPathComponent(); + if (node.getUserObject() instanceof ObjectAndDescription) { + showComponent(); + if ((e.getButton() == MouseEvent.BUTTON3) + && (m_Path != null)) { - showPopupMenu(e); - } - } - } - }; - jTree.addMouseListener(ml); + showPopupMenu(e); + } + } + } + }; + jTree.addMouseListener(ml); - fillTree(components); + fillTree(components); - if (components.size() > 0) { - final DefaultMutableTreeNode node = findNode((ObjectAndDescription) components - .get(components.size() - 1)); - final DefaultTreeModel model = (DefaultTreeModel) jTree - .getModel(); - final TreePath path = new TreePath( - model.getPathToRoot(node)); - jTree.setSelectionPath(path); - jTree.scrollPathToVisible(path); - m_Path = path; - showComponent(); - } - jScrollPane = new JScrollPane( - jTree, - ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS, - ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED); + if (components.size() > 0) { + final DefaultMutableTreeNode node = findNode((ObjectAndDescription) components + .get(components.size() - 1)); + final DefaultTreeModel model = (DefaultTreeModel) jTree + .getModel(); + final TreePath path = new TreePath( + model.getPathToRoot(node)); + jTree.setSelectionPath(path); + jTree.scrollPathToVisible(path); + m_Path = path; + showComponent(); + } + jScrollPane = new JScrollPane( + jTree, + ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS, + ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED); - jScrollPane.setPreferredSize(new Dimension(200, 450)); - // jScrollPane.setMinimumSize(new Dimension(200, 450)); - jScrollPane.setMaximumSize(new Dimension(200, 450)); - } - { - jSplitPane.add(jScrollPane, JSplitPane.LEFT); - } - } - } + jScrollPane.setPreferredSize(new Dimension(200, 450)); + // jScrollPane.setMinimumSize(new Dimension(200, 450)); + jScrollPane.setMaximumSize(new Dimension(200, 450)); + } + { + jSplitPane.add(jScrollPane, JSplitPane.LEFT); + } + } + } - popupMenu = new JPopupMenu(sMenu); - menuItemSave = new JMenuItem(sSave); - menuItemSave.addActionListener(new ActionListener() { - @Override - public void actionPerformed(final ActionEvent evt) { - if (m_Path != null) { - try { - final DefaultMutableTreeNode node = (DefaultMutableTreeNode) m_Path - .getLastPathComponent(); - if (node.getUserObject() instanceof ObjectAndDescription) { - save(); - } - } catch (final Exception e) { - } - } - } - }); - popupMenu.add(menuItemSave); - menuItemRemove = new JMenuItem(sRemove); - menuItemRemove.addActionListener(new ActionListener() { - @Override - public void actionPerformed(final ActionEvent evt) { - if (m_Path != null) { - try { - final DefaultMutableTreeNode node = (DefaultMutableTreeNode) m_Path - .getLastPathComponent(); - if (node.getUserObject() instanceof ObjectAndDescription) { - remove(); - } - } catch (final Exception e) { - } - } - ; - } - }); - popupMenu.add(menuItemRemove); - menuItemRename = new JMenuItem(sRename); - menuItemRename.addActionListener(new ActionListener() { - @Override - public void actionPerformed(final ActionEvent evt) { - if (m_Path != null) { - try { - final DefaultMutableTreeNode node = (DefaultMutableTreeNode) m_Path - .getLastPathComponent(); - if (node.getUserObject() instanceof ObjectAndDescription) { - rename(); - } - } catch (final Exception e) { - } - } - ; - } + popupMenu = new JPopupMenu(sMenu); + menuItemSave = new JMenuItem(sSave); + menuItemSave.addActionListener(new ActionListener() { + @Override + public void actionPerformed(final ActionEvent evt) { + if (m_Path != null) { + try { + final DefaultMutableTreeNode node = (DefaultMutableTreeNode) m_Path + .getLastPathComponent(); + if (node.getUserObject() instanceof ObjectAndDescription) { + AdditionalResultsIO.save(m_Path); + } + } catch (final Exception e) { + } + } + } + }); + popupMenu.add(menuItemSave); + menuItemRemove = new JMenuItem(sRemove); + menuItemRemove.addActionListener(new ActionListener() { + @Override + public void actionPerformed(final ActionEvent evt) { + if (m_Path != null) { + try { + final DefaultMutableTreeNode node = (DefaultMutableTreeNode) m_Path + .getLastPathComponent(); + if (node.getUserObject() instanceof ObjectAndDescription) { + remove(); + } + } catch (final Exception e) { + } + } + ; + } + }); + popupMenu.add(menuItemRemove); + menuItemRename = new JMenuItem(sRename); + menuItemRename.addActionListener(new ActionListener() { + @Override + public void actionPerformed(final ActionEvent evt) { + if (m_Path != null) { + try { + final DefaultMutableTreeNode node = (DefaultMutableTreeNode) m_Path + .getLastPathComponent(); + if (node.getUserObject() instanceof ObjectAndDescription) { + rename(); + } + } catch (final Exception e) { + } + } + ; + } - }); - popupMenu.add(menuItemRename); + }); + popupMenu.add(menuItemRename); - panel.updateUI(); - return true; - } catch (final Exception e) { - Logger(this.getClass(), e); - return false; - } + panel.updateUI(); + return true; + } catch (final Exception e) { + Logger(this.getClass(), e); + return false; + } - } + } - public Component getLeftPanel() { - return jSplitPane.getLeftComponent(); + public Component getLeftPanel() { + return jSplitPane.getLeftComponent(); - } + } - public Component getRightPanel() { - return jSplitPane.getRightComponent(); - } + public Component getRightPanel() { + return jSplitPane.getRightComponent(); + } - public JPopupMenu getPopupMen() { - return popupMenu; - } + public JPopupMenu getPopupMen() { + return popupMenu; + } - protected void showPopupMenu(final MouseEvent e) { - jTree.setSelectionPath(m_Path); + protected void showPopupMenu(final MouseEvent e) { + jTree.setSelectionPath(m_Path); - menuItemSave.setEnabled(true); - popupMenu.show(e.getComponent(), e.getX(), e.getY()); + menuItemSave.setEnabled(true); + popupMenu.show(e.getComponent(), e.getX(), e.getY()); - } + } - private void rename() { + private void rename() { - if (m_Path != null) { - try { - final DefaultMutableTreeNode node = (DefaultMutableTreeNode) m_Path - .getLastPathComponent(); - final ObjectAndDescription oad = (ObjectAndDescription) node - .getUserObject(); - final String sName = oad.getDescription(); - final JOptionPane pane = new JOptionPane(); - pane.setMessage(sWriteName); - pane.setMessageType(JOptionPane.QUESTION_MESSAGE); - pane.setWantsInput(true); - pane.setInitialSelectionValue(sName); - pane.setInputValue(sName); - final JDialog dlg = pane.createDialog(null, sChangeName); - dlg.setModal(true); - dlg.setVisible(true); - final String sNewName = pane.getInputValue().toString().trim(); + if (m_Path != null) { + try { + final DefaultMutableTreeNode node = (DefaultMutableTreeNode) m_Path + .getLastPathComponent(); + final ObjectAndDescription oad = (ObjectAndDescription) node + .getUserObject(); + final String sName = oad.getDescription(); + final JOptionPane pane = new JOptionPane(); + pane.setMessage(sWriteName); + pane.setMessageType(JOptionPane.QUESTION_MESSAGE); + pane.setWantsInput(true); + pane.setInitialSelectionValue(sName); + pane.setInputValue(sName); + final JDialog dlg = pane.createDialog(null, sChangeName); + dlg.setModal(true); + dlg.setVisible(true); + final String sNewName = pane.getInputValue().toString().trim(); - if ((sNewName != null) && (sNewName.length() != 0)) { - oad.setDescription(sNewName); - } - update(); - } catch (final Exception e) { - } - } + if ((sNewName != null) && (sNewName.length() != 0)) { + oad.setDescription(sNewName); + } + update(); + } catch (final Exception e) { + } + } - } + } - protected void remove() { - if (m_Path != null) { - try { - final DefaultMutableTreeNode node = (DefaultMutableTreeNode) m_Path - .getLastPathComponent(); - final ObjectAndDescription oad = (ObjectAndDescription) node - .getUserObject(); - AdditionalResults.removeComponent(oad); - update(); - } catch (final Exception e) { - } - } + protected void remove() { + if (m_Path != null) { + try { + final DefaultMutableTreeNode node = (DefaultMutableTreeNode) m_Path + .getLastPathComponent(); + final ObjectAndDescription oad = (ObjectAndDescription) node + .getUserObject(); + AdditionalResults.removeComponent(oad); + update(); + } catch (final Exception e) { + } + } - } + } - public void save() { + protected void showComponent() { + if (m_Path != null) { + try { + final DefaultMutableTreeNode node = (DefaultMutableTreeNode) m_Path + .getLastPathComponent(); + final ObjectAndDescription oad = (ObjectAndDescription) node + .getUserObject(); + final Component c = (Component) oad.getObject(); + c.setMinimumSize(new Dimension(300, 200)); + jSplitPane.setRightComponent(c); + } catch (final Exception e) { + Logger(this.getClass(), e); + } + } + } - FileNameExtensionFilter filter; + public void fillTree(final ArrayList<?> components) { + DefaultMutableTreeNode node; + final DefaultMutableTreeNode mainNode = new DefaultMutableTreeNode( + sProcessing); + final DefaultMutableTreeNode componentsNode = new DefaultMutableTreeNode( + sResult); - final File file; - if (m_Path != null) { - try { - final DefaultMutableTreeNode node = (DefaultMutableTreeNode) m_Path - .getLastPathComponent(); - final ObjectAndDescription oad = (ObjectAndDescription) node - .getUserObject(); - final Component c = (Component) oad.getObject(); - if (c instanceof FeatureCollectionPanel) { - final FeatureCollectionPanel panel = (FeatureCollectionPanel) c; - final FeatureCollection fcoll = panel - .getFeatureCollection(); - final FileNameExtensionFilter filter2 = new FileNameExtensionFilter( - "Comma-Separated Values (csv)", "csv"); - final FileNameExtensionFilter filter3 = new FileNameExtensionFilter( - "JUMP Markup Language (JML)", "jml"); - filter = new FileNameExtensionFilter( - "ESRI Shapefile (SHP)", "shp"); - final JFileChooser fc = new GUIUtil.FileChooserWithOverwritePrompting(); - if (!LayerableUtil.isMixedGeometryType(fcoll)) { - fc.setFileFilter(filter); - } - fc.setFileFilter(filter3); - fc.setFileFilter(filter2); - fc.addChoosableFileFilter(filter2); - final int returnVal = fc - .showSaveDialog(AdditionalResultsFrame.this); - if (returnVal == JFileChooser.APPROVE_OPTION) { - if (fc.getFileFilter().equals(filter3)) { - file = new File(fc.getSelectedFile() + ".jml"); - IOTools.saveJMLFile(fcoll, file.getAbsolutePath()); - saved(file); - } else if (fc.getFileFilter().equals(filter)) { - file = new File(fc.getSelectedFile() + ".shp"); - IOTools.saveShapefile(fcoll, file.getAbsolutePath()); - saved(file); - } else if (fc.getFileFilter().equals(filter2)) { - final JTable table = panel.getTable(); - file = new File(fc.getSelectedFile() + ".csv"); - IOTools.saveCSV(table, file.getAbsolutePath()); - saved(file); - } - } + for (int i = 0; i < components.size(); i++) { + node = new DefaultMutableTreeNode(components.get(i)); + componentsNode.add(node); + } + mainNode.add(componentsNode); + jTree.setModel(new DefaultTreeModel(mainNode)); + } - } else if (c instanceof JScrollPane) { - final JScrollPane pane = (JScrollPane) c; - final Component view = pane.getViewport().getView(); - if (view instanceof JTextPane || view instanceof JLabel - || view instanceof JTextArea) { - final JTextPane text = (JTextPane) pane.getViewport() - .getView(); - final JFileChooser fc = new GUIUtil.FileChooserWithOverwritePrompting( - "html"); - filter = new FileNameExtensionFilter("HTML", "html"); - fc.setFileFilter(filter); - fc.addChoosableFileFilter(filter); - final int returnVal = fc - .showSaveDialog(AdditionalResultsFrame.this); - fc.getWidth(); - fc.getHeight(); - if (returnVal == JFileChooser.APPROVE_OPTION) { - try { - file = new File(fc.getSelectedFile() + ".html"); - file.getParent(); - final FileWriter fileWriter = new FileWriter( - file); - final BufferedWriter bufferedWriter = new BufferedWriter( - fileWriter); - bufferedWriter.write(text.getText()); - bufferedWriter.close(); - saved(file); - } catch (final Exception e) { - notsaved(); - Logger(this.getClass(), e); - } - } + public void update() { + if (!initGUI(AdditionalResults.getComponents())) { + dispose(); + setVisible(false); + } + } - } else if (view instanceof JTable) { - final JTable table = (JTable) pane.getViewport() - .getView(); - filter = new FileNameExtensionFilter( - "Comma-Separated Values (csv)", "csv"); - final JFileChooser fc = new GUIUtil.FileChooserWithOverwritePrompting( - "csv"); - fc.setFileFilter(filter); - fc.addChoosableFileFilter(filter); - final int returnVal = fc - .showSaveDialog(AdditionalResultsFrame.this); - fc.getWidth(); - fc.getHeight(); - if (returnVal == JFileChooser.APPROVE_OPTION) { - file = new File(fc.getSelectedFile() + ".csv"); - IOTools.saveCSV(table, file.getAbsolutePath()); - } else if (returnVal == JFileChooser.CANCEL_OPTION) { - return; - } + private DefaultMutableTreeNode findNode(final ObjectAndDescription oad) { + Object ob; + final DefaultTreeModel data = (DefaultTreeModel) jTree.getModel(); + final DefaultMutableTreeNode root = (DefaultMutableTreeNode) data + .getRoot(); + DefaultMutableTreeNode node = null; + if (root != null) { + for (final Enumeration<?> e = root.breadthFirstEnumeration(); e + .hasMoreElements();) { + final DefaultMutableTreeNode current = (DefaultMutableTreeNode) e + .nextElement(); + ob = current.getUserObject(); + if (ob instanceof ObjectAndDescription) { + if (ob == oad) { + node = current; + break; + } + } + } + } + return node; + } - } + public static void Logger(Class<?> plugin, Exception e) { + final Logger LOG = Logger.getLogger(plugin); + JUMPWorkbench + .getInstance() + .getFrame() + .warnUser( + plugin.getSimpleName() + " Exception: " + e.toString()); + LOG.error(plugin.getName() + " Exception: ", e); + } - // [Giuseppe Aruta 2018-08-22] add generic save view to - // image of JPanel in a JScrollPane - else if (view instanceof JPanel) { - final JPanel panel = (JPanel) pane.getViewport() - .getView(); - final int w = panel.getWidth(); - final int h = panel.getHeight(); - final BufferedImage bi = new BufferedImage(w, h, - BufferedImage.TYPE_INT_RGB); - final Graphics2D g = bi.createGraphics(); - panel.paint(g); + protected JPanel getOKSavePanel() { + final JPanel okPanel = new JPanel(); + final JButton saveButton = new JButton(SAVE) { - filter = new FileNameExtensionFilter( - "Portable Network Graphics (png)", "png"); - final JFileChooser fc = new GUIUtil.FileChooserWithOverwritePrompting( - "png"); - fc.setFileFilter(filter); - fc.addChoosableFileFilter(filter); - final int returnVal = fc - .showSaveDialog(AdditionalResultsFrame.this); - fc.getWidth(); - fc.getHeight(); - if (returnVal == JFileChooser.APPROVE_OPTION) { - try { - file = new File(fc.getSelectedFile() + ".png"); - ImageIO.write(bi, "png", file); - saved(file); - } catch (final Exception e) { - notsaved(); - Logger(this.getClass(), e); - } - } - } + private static final long serialVersionUID = 1L; - } else if (c instanceof PlotPanel) { - final PlotPanel panel = (PlotPanel) c; - filter = new FileNameExtensionFilter( - "Portable Network Graphics (png)", "png"); - final FileNameExtensionFilter filter2 = new FileNameExtensionFilter( - "Drawing Interchange Format(dxf)", "dxf"); - final JFileChooser fc = new GUIUtil.FileChooserWithOverwritePrompting(); - if (oad.getDescription() - .contains( - I18N.get("org.openjump.core.ui.plugin.raster.ProfileGraphTool.Profile-Plot"))) { - fc.setFileFilter(filter2); - } - fc.setFileFilter(filter); - fc.addChoosableFileFilter(filter); - final int returnVal = fc - .showSaveDialog(AdditionalResultsFrame.this); - fc.getWidth(); - fc.getHeight(); - if (returnVal == JFileChooser.APPROVE_OPTION) { - if (fc.getFileFilter().equals(filter)) { - file = new File(fc.getSelectedFile() + ".png"); - file.getParent(); - panel.toGraphicFile(file); - saved(file); - } else if (fc.getFileFilter().equals(filter2)) { - file = new File(fc.getSelectedFile() + ".dxf"); - file.getParent(); - double[][] pointsOfProfile = null; - for (final Plot plot : panel.getPlots()) { - pointsOfProfile = plot.getData(); - } - setCursor(new Cursor(Cursor.WAIT_CURSOR)); - exportToDxf(file.getAbsolutePath(), pointsOfProfile); - setCursor(new Cursor(Cursor.DEFAULT_CURSOR)); - saved(file); - } - } + @Override + public Dimension getPreferredSize() { + return new Dimension(100, 25); + } + }; + final JButton closeButton = new JButton(CLOSE) { + private static final long serialVersionUID = 2L; - } else if (c instanceof JTable) { - final JTable table = (JTable) c; - filter = new FileNameExtensionFilter( - "Comma-Separated Values (csv)", "csv"); - final JFileChooser fc = new GUIUtil.FileChooserWithOverwritePrompting( - "csv"); - fc.setFileFilter(filter); - fc.addChoosableFileFilter(filter); - final int returnVal = fc - .showSaveDialog(AdditionalResultsFrame.this); - fc.getWidth(); - fc.getHeight(); - if (returnVal == JFileChooser.APPROVE_OPTION) { - file = new File(fc.getSelectedFile() + ".csv"); - IOTools.saveCSV(table, file.getAbsolutePath()); - } else if (returnVal == JFileChooser.CANCEL_OPTION) { - return; - } - } else if (c instanceof HTMLPanel) { - final HTMLPanel panel = (HTMLPanel) c; - final String text = panel.lastString(); - filter = new FileNameExtensionFilter("HTML", "html"); - final JFileChooser fc = new GUIUtil.FileChooserWithOverwritePrompting( - "html"); - fc.setFileFilter(filter); - fc.addChoosableFileFilter(filter); - final int returnVal = fc - .showSaveDialog(AdditionalResultsFrame.this); - fc.getWidth(); - fc.getHeight(); - if (returnVal == JFileChooser.APPROVE_OPTION) { - try { - file = new File(fc.getSelectedFile() + ".html"); - file.getParent(); - final FileWriter fileWriter = new FileWriter(file); - final BufferedWriter bufferedWriter = new BufferedWriter( - fileWriter); - bufferedWriter.write(text); - bufferedWriter.close(); - saved(file); - } catch (final Exception e) { - notsaved(); - Logger(this.getClass(), e); - } - } - } else if (c instanceof JPanel) { - final JPanel panel = (JPanel) c; - final int w = panel.getWidth(); - final int h = panel.getHeight(); - final BufferedImage bi = new BufferedImage(w, h, - BufferedImage.TYPE_INT_RGB); - final Graphics2D g = bi.createGraphics(); - panel.paint(g); - filter = new FileNameExtensionFilter( - "Portable Network Graphics (png)", "png"); - final JFileChooser fc = new GUIUtil.FileChooserWithOverwritePrompting( - "png"); - fc.setFileFilter(filter); - fc.addChoosableFileFilter(filter); - final int returnVal = fc - .showSaveDialog(AdditionalResultsFrame.this); - fc.getWidth(); - fc.getHeight(); - if (returnVal == JFileChooser.APPROVE_OPTION) { - try { - file = new File(fc.getSelectedFile() + ".png"); - ImageIO.write(bi, "png", file); - saved(file); - } catch (final Exception e) { - notsaved(); - Logger(this.getClass(), e); - } - } - } - } catch (final Exception e) { - Logger(this.getClass(), e); - } - } - } + @Override + public Dimension getPreferredSize() { + return new Dimension(100, 25); + } + }; - protected void saved(File file) { - JUMPWorkbench.getInstance().getFrame() - .setStatusMessage(sSaved + " :" + file.getAbsolutePath()); - } + saveButton.addActionListener(new java.awt.event.ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + AdditionalResultsIO.save(m_Path); + return; + } + }); + closeButton.addActionListener(new java.awt.event.ActionListener() { - protected void notsaved() { - JOptionPane.showMessageDialog(null, SCouldNotSave, I18N.get(name), - JOptionPane.WARNING_MESSAGE); - } + @Override + public void actionPerformed(ActionEvent e) { - protected void showComponent() { - if (m_Path != null) { - try { - final DefaultMutableTreeNode node = (DefaultMutableTreeNode) m_Path - .getLastPathComponent(); - final ObjectAndDescription oad = (ObjectAndDescription) node - .getUserObject(); - final Component c = (Component) oad.getObject(); - c.setMinimumSize(new Dimension(300, 200)); - jSplitPane.setRightComponent(c); - } catch (final Exception e) { - Logger(this.getClass(), e); - } - } - } + dispose(); - public void fillTree(final ArrayList<?> components) { - DefaultMutableTreeNode node; - final DefaultMutableTreeNode mainNode = new DefaultMutableTreeNode( - sProcessing); - final DefaultMutableTreeNode componentsNode = new DefaultMutableTreeNode( - sResult); + return; + } + }); + okPanel.add(saveButton, BorderLayout.WEST); + okPanel.add(closeButton, BorderLayout.EAST); + return okPanel; - for (int i = 0; i < components.size(); i++) { - node = new DefaultMutableTreeNode(components.get(i)); - componentsNode.add(node); - } - mainNode.add(componentsNode); - jTree.setModel(new DefaultTreeModel(mainNode)); - } + } - public void update() { - if (!initGUI(AdditionalResults.getComponents())) { - dispose(); - setVisible(false); - } - } - private DefaultMutableTreeNode findNode(final ObjectAndDescription oad) { - Object ob; - final DefaultTreeModel data = (DefaultTreeModel) jTree.getModel(); - final DefaultMutableTreeNode root = (DefaultMutableTreeNode) data - .getRoot(); - DefaultMutableTreeNode node = null; - if (root != null) { - for (final Enumeration<?> e = root.breadthFirstEnumeration(); e - .hasMoreElements();) { - final DefaultMutableTreeNode current = (DefaultMutableTreeNode) e - .nextElement(); - ob = current.getUserObject(); - if (ob instanceof ObjectAndDescription) { - if (ob == oad) { - node = current; - break; - } - } - } - } - return node; - } - public static void Logger(Class<?> plugin, Exception e) { - final Logger LOG = Logger.getLogger(plugin); - JUMPWorkbench - .getInstance() - .getFrame() - .warnUser( - plugin.getSimpleName() + " Exception: " + e.toString()); - LOG.error(plugin.getName() + " Exception: ", e); - } - protected JPanel getOKSavePanel() { - final JPanel okPanel = new JPanel(); - final JButton saveButton = new JButton(SAVE) { - private static final long serialVersionUID = 1L; + public static JUMPWorkbench workbench = JUMPWorkbench + .getInstance(); - @Override - public Dimension getPreferredSize() { - return new Dimension(100, 25); - } - }; - final JButton closeButton = new JButton(CLOSE) { - private static final long serialVersionUID = 2L; - - @Override - public Dimension getPreferredSize() { - return new Dimension(100, 25); - } - }; - - saveButton.addActionListener(new java.awt.event.ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - save(); - // frame.dispose(); - return; - } - }); - closeButton.addActionListener(new java.awt.event.ActionListener() { - - @Override - public void actionPerformed(ActionEvent e) { - - dispose(); - - return; - } - }); - okPanel.add(saveButton, BorderLayout.WEST); - okPanel.add(closeButton, BorderLayout.EAST); - return okPanel; - - } - - public static Integer round100(Integer b) { - return b - (b % 100); - } - - // [Giuseppe Aruta 2018-3-14] The following code derives from AdbToolbox - // Raster>Topography>Section code. - // see also class it.betastudio.adbtoolbox.libs.DxfExport - // [Giuseppe Aruta 2018-3-22] Enhenced dxf output - - public static void exportToDxf(String fileName, double[][] points) { - - try { - - double minX = Double.MAX_VALUE; - double maxX = -minX; - double minY = Double.MAX_VALUE; - double maxY = -minY; - - // Find max and min vals - for (final double[] point : points) { - if (point[0] < minX) { - minX = point[0]; - } - if (point[0] > maxX) { - maxX = point[0]; - } - if (point[1] < minY) { - minY = point[1]; - } - if (point[1] > maxY) { - maxY = point[1]; - } - } - final DecimalFormatSymbols dfs = new DecimalFormatSymbols( - Locale.ENGLISH); - DecimalFormat twoPlaces = null; - - final String twoPlacesS = "0.00"; - twoPlaces = new DecimalFormat(twoPlacesS, dfs); - - final int pointsCount = points.length; - - final int txtHight = 14; - final int txtHight2 = 22; - - // min elevation of the grid, 200m below the min elevation of the - // profile - final int b = ((int) minY - 99) / 100 * 100; - final double baseElev = b - 100; - - // max elevation of the grid, 200m above the max elevation of the - // profile - final int a = ((int) maxY + 99) / 100 * 100; - final double topElev = a + 200; - - final int sepSpacing = 10 * txtHight; - final String layNameProf = "PROFILE"; - final String baseSectionLayer = "BASE"; - final String partialValuesLayer = "PARTIAL_VALUES"; - final String gridLayer = "GRID"; - final String layNameText = "GRID_TEXT"; - - // Main points coords - final double sep1Y = baseElev - txtHight * 2; - final double sep2Y = sep1Y - sepSpacing; - final double sep3Y = topElev; - final double leg5Y = sep3Y + sepSpacing; - final double legX = minX - (txtHight * 30); - - final DxfExport dxfExp = new DxfExport(); - - // Write header - // -------------------------------------------------------- - dxfExp.writeHeader(legX, sep3Y, maxX, maxY); - - // Write tables - dxfExp.writeStartSec(); - dxfExp.writeTablesStart(); - - dxfExp.writeTableStart(); - dxfExp.writeVPort((maxX + legX) / 2, (maxY + sep3Y) / 2, 0, 0, 1, 1); - dxfExp.writeTableEnd(); - - dxfExp.writeTableStart(); - dxfExp.writeAppId(); - dxfExp.writeTableEnd(); - - dxfExp.writeTableStart(); - dxfExp.writeLayersStart(); - dxfExp.writeLayer(layNameProf, 5); - dxfExp.writeLayer(baseSectionLayer, 0); - dxfExp.writeLayer(partialValuesLayer, 8); - dxfExp.writeLayer(gridLayer, 9); - dxfExp.writeLayer(layNameText, 7); - dxfExp.writeTableEnd(); - - dxfExp.writeEndSec(); - - // Write section - dxfExp.writeStartSec(); - dxfExp.writeEntStart(); - dxfExp.writePolyline(layNameProf, points); - - // Write legend - - final Task selectedTask = workbenchContext.getTask(); - String unitsDistLabel = ""; - - if (selectedTask.getProperties().containsKey( - new QName(Task.PROJECT_UNIT_KEY))) { - unitsDistLabel = " [" - + selectedTask.getProperty( - new QName(Task.PROJECT_UNIT_KEY)).toString() - + "]"; - } else { - unitsDistLabel = ""; - } - - // Text of X axe - dxfExp.writeText(layNameText, 0, 0, 0, (maxX - minX) / 2, sep2Y, 0, - txtHight2, 0, 0, 2, WIDTH + unitsDistLabel); - - dxfExp.writeText(partialValuesLayer, 0, 0, 0, (maxX - minX) / 2, - leg5Y, 0, txtHight2, 0, 0, 2, HEIGHT + unitsDistLabel); - // Text of Y axe - dxfExp.writeText(layNameText, 0, 0, 0, minX - 200, - (topElev + baseElev) / 2, 0, txtHight2, 90, 0, 2, HEIGHT - + unitsDistLabel); - dxfExp.writeText(layNameText, 0, 0, 0, maxX + 200, - (topElev + baseElev) / 2, 0, txtHight2, 270, 0, 2, HEIGHT - + unitsDistLabel); - - // Write interpoints labels and ticks - double p1x = 0; - double p1y = 0; - double p2x = 0; - double p2y = 0; - double alPt1x = 0; - double alPt1y = 0; - double alPt2y = 0; - String labelText = null; - - int interPointsCount = 0; - // Count interpoints - double[] interStepD = null; - - interStepD = new double[1]; - // Define 100 meters for length/height steps - interStepD[0] = 100D; - interPointsCount = (int) ((maxX - minX) / interStepD[0]) + 2; - - // Prepare x positions - final double[] interPointsDists = new double[interPointsCount]; - final double[] interPointsElev = new double[interPointsCount]; - for (int ip = 0; ip < interPointsCount; ip++) { - - if (ip < interPointsCount - 1) { - interPointsDists[ip] = interStepD[0] * ip; - } else { - interPointsDists[ip] = maxX; - } - - } - - // Prepare points IDs - final int[] interPointsIds = new int[interPointsCount]; - int ipId = 0; - for (int p = 1; p < pointsCount; p++) { - if (points[p][0] >= interPointsDists[ipId]) { - if (Math.abs(points[p][0] - interPointsDists[ipId]) <= Math - .abs(interPointsDists[ipId] - points[p - 1][0])) { - interPointsIds[ipId] = p; - } else { - interPointsIds[ipId] = p - 1; - } - ipId++; - } - } - - // Boh - if (interPointsIds[interPointsCount - 1] == 0) { - interPointsIds[interPointsCount - 1] = pointsCount - 1; - } - - // Prepare y positions - ipId = 0; - for (int p = 1; p < pointsCount; p++) { - if (points[p][0] >= interPointsDists[ipId]) { - if (Math.abs(points[p][0] - interPointsDists[ipId]) <= Math - .abs(interPointsDists[ipId] - points[p - 1][0])) { - interPointsIds[ipId] = p; - } else { - interPointsIds[ipId] = p - 1; - } - - interPointsElev[ipId] = (interPointsDists[ipId] - points[p - 1][0]) - / (points[p][0] - points[p - 1][0]) - * (points[p][1] - points[p - 1][1]) - + points[p - 1][1]; - ipId++; - } - } - - for (int ip = 0; ip < interPointsCount; ip++) { // OKKIO - - if (baseElev + interPointsDists[ip] < topElev - || baseElev + interPointsDists[ip] == topElev) { - - // Grid - orizontal lines every 100 m - p1x = maxX; - p1y = interPointsDists[ip] + baseElev; - p2x = minX; - p2y = interPointsDists[ip] + baseElev; - dxfExp.writeLineType(gridLayer, "DOTTINY", p1x, p1y, p2x, - p2y); - - // Heights (Y) - text on right and left part of the profile - // every 100m - alPt1x = minX - 100;// sep1Y + txtHight; - final double alPt1ax = maxX + txtHight;// - alPt1y = interPointsDists[ip] + baseElev; - labelText = twoPlaces.format(interPointsDists[ip] - + baseElev); - dxfExp.writeText(layNameText, 0, 0, 0, alPt1x, alPt1y, 0, - txtHight, 0, 0, 2, labelText); - dxfExp.writeText(layNameText, 0, 0, 0, alPt1ax, alPt1y, 0, - txtHight, 0, 0, 2, labelText); - - // Heights (Y) - small tracks on right and left part of the - // profile - alPt1x = minX; - alPt1y = interPointsDists[ip] + baseElev; - final double alPt2x = minX - (txtHight / 2); - dxfExp.writeLine(baseSectionLayer, alPt1x, alPt1y, alPt2x, - alPt1y); - final double alPt2x2 = maxX + (txtHight / 2); - dxfExp.writeLine(baseSectionLayer, maxX, alPt1y, alPt2x2, - alPt1y); - - } - } - - for (int ip = 0; ip < interPointsCount; ip++) { // OKKIO - - // Grid - vertical lines every 100 m - p1x = interPointsDists[ip]; - p1y = topElev;// interPointsElev[ip]; - p2x = interPointsDists[ip]; - p2y = baseElev;// minY; - dxfExp.writeLineType(gridLayer, "DOTTINY", p1x, p1y, p2x, p2y); - - // Widths (X axe) - texts below the X line, every 100 m - alPt1x = interPointsDists[ip]; - alPt1y = sep1Y - 4 * txtHight; - labelText = twoPlaces.format(interPointsDists[ip]); - dxfExp.writeText(layNameText, 0, 0, 0, alPt1x, alPt1y, 0, - txtHight, 90, 0, 2, labelText); - - // Widths (X axe) - small tracks above the texts - alPt1x = interPointsDists[ip]; - alPt1y = baseElev; - alPt2y = baseElev - (txtHight / 2); - dxfExp.writeLine(baseSectionLayer, alPt1x, alPt1y, alPt1x, - alPt2y); - - // Partial heights - texts per every 100 width - alPt1x = interPointsDists[ip]; - alPt1y = sep3Y + txtHight; - labelText = twoPlaces.format(points[interPointsIds[ip]][1]); - dxfExp.writeText(partialValuesLayer, 0, 0, 0, alPt1x, alPt1y, - 0, txtHight, 90, 0, 2, labelText); - - // Partial heights - small tracks - alPt1y = sep3Y; - alPt2y = sep3Y + (txtHight / 2); - dxfExp.writeLine(partialValuesLayer, alPt1x, alPt1y, alPt1x, - alPt2y); - - } - - // Width - X line of the profile - dxfExp.writeLine(baseSectionLayer, minX, baseElev, maxX, baseElev); - // Height - Y lines of the profile - dxfExp.writeLine(baseSectionLayer, minX, baseElev, minX, topElev); - dxfExp.writeLine(baseSectionLayer, maxX, baseElev, maxX, topElev); - // Partial heights width line - dxfExp.writeLine(partialValuesLayer, minX, sep3Y, maxX, sep3Y); - // Finalize DXF - dxfExp.writeEnding(); - final int ret = dxfExp.exportDxf(fileName); - if (ret == 0) { - return; - } else { - return; - } - } catch (final Exception ex) { - workbenchContext.getWorkbench().getFrame() - .warnUser("Errore durante l'esportazione: "); - return; - } - } - - public static WorkbenchContext workbenchContext = JUMPWorkbench - .getInstance().getContext(); - } _______________________________________________ Jump-pilot-devel mailing list Jump-pilot-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel