Changeset 27252 in osm for applications/editors


Ignore:
Timestamp:
2011-12-17T00:27:38+01:00 (13 years ago)
Author:
kpastor
Message:

Implemented a print dialog with preview.

Location:
applications/editors/josm/plugins/print/src/org/openstreetmap/josm/plugins/print
Files:
2 added
3 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/print/src/org/openstreetmap/josm/plugins/print/PrintAction.java

    r27046 r27252  
    2828import java.awt.event.ActionEvent;
    2929import java.awt.event.KeyEvent;
    30 import java.awt.print.*;
    3130
    32 import javax.swing.JOptionPane;
     31import javax.swing.SwingUtilities;
    3332
    3433import org.openstreetmap.josm.Main;
     
    4039 * and takes care of reasonable temporary adjustments to the preferences.
    4140 */
    42 public class PrintAction extends JosmAction {
     41public class PrintAction extends JosmAction implements Runnable {
    4342   
    4443    /**
     
    5655
    5756    /**
    58      * Trigger the printing process.
     57     * Trigger the printing dialog.
    5958     *
    6059     * @param e not used.
    6160     */
    6261    public void actionPerformed(ActionEvent e) {
    63         PrinterJob job = PrinterJob.getPrinterJob();
    64         job.setPrintable(new PrintableMapView());
    65         if (job.printDialog()) {
    66             try {
    67                 PrintPlugin.adjustPrefs();
    68                 job.print();
    69             }
    70             catch (PrinterAbortException ex) {
    71                 String msg = ex.getLocalizedMessage();
    72                 if (msg.length() == 0) {
    73                     msg = tr("Printing has been cancelled.");
    74                 }
    75                 JOptionPane.showMessageDialog(Main.main.parent, msg,
    76                   tr("Printing stopped"),
    77                   JOptionPane.WARNING_MESSAGE);
    78             }
    79             catch (PrinterException ex) {
    80                 String msg = ex.getLocalizedMessage();
    81                 if (msg.length() == 0) {
    82                     msg = tr("Printing has failed.");
    83                 }
    84                 JOptionPane.showMessageDialog(Main.main.parent, msg,
    85                   tr("Printing stopped"),
    86                   JOptionPane.ERROR_MESSAGE);
    87             }
    88             finally {
    89                 PrintPlugin.restorePrefs();
    90             }
    91         }
     62        // Allow the JOSM GUI to be redrawn before modifying preferences
     63        SwingUtilities.invokeLater(this);
    9264    }
    9365   
     66    /**
     67     * Open the printing dialog
     68     *
     69     * This will temporarily modify the mappaint preferences.
     70     */
     71    public void run () {
     72        PrintPlugin.adjustPrefs();
     73        PrintDialog window = new PrintDialog(Main.main.parent);
     74        window.setVisible(true);
     75        PrintPlugin.restorePrefs();
     76    }
    9477}
  • applications/editors/josm/plugins/print/src/org/openstreetmap/josm/plugins/print/PrintPlugin.java

    r27046 r27252  
    2323
    2424package org.openstreetmap.josm.plugins.print;
     25
     26import java.awt.Toolkit;
    2527
    2628import javax.swing.JMenu;
     
    4749     * The default resolution
    4850     */
    49     public static final int DEF_RESOLUTION_DPI = 200;
     51    public static final int DEF_RESOLUTION_DPI = 100;
    5052
    5153    /**
     
    8688        Main.pref.putDefault(
    8789          "print.attribution", DEF_ATTRIBUTION);
     90        Main.pref.putDefault(
     91          "print.preview.enabled", new Boolean(false).toString());
    8892
    8993        restorePrefs(); // Recover after crash if neccesseary
     
    183187            restorePref("mappaint.node.virtual-size");
    184188            Main.pref.put("print.saved-prefs", false);
     189            //Main.main.map.mapView.repaint();
    185190        }
    186191    }
  • applications/editors/josm/plugins/print/src/org/openstreetmap/josm/plugins/print/PrintableMapView.java

    r27066 r27252  
    2727
    2828import java.awt.Color;
     29import java.awt.Dimension;
    2930import java.awt.Font;
    3031import java.awt.Graphics;
     
    5758public class PrintableMapView extends MapView implements Printable {
    5859   
    59     /**
    60      * Indicates that the instance has been initialized
    61      */
    62     protected boolean initialized;
    63    
    6460    /**
    6561     * The factor for scaling the printing graphics to the desired
     
    9389       
    9490        mapView = Main.main.map.mapView;
    95         initialized = false;
    9691    }
    9792
     
    108103        double heightZoomFactor = g2dFactor * mapView.getHeight() / pageFormat.getImageableHeight();
    109104        setSize((int)(pageFormat.getImageableWidth()/g2dFactor),(int)(pageFormat.getImageableHeight()/g2dFactor));
    110         zoomTo(mapView.getRealBounds());
    111     }
     105    }
     106   
     107    /**
     108     * Resizes this component.
     109     */
     110    @Override
     111    public void setSize(int width, int height) {
     112        Dimension dim = getSize();
     113        if (dim.width != width || dim.height != height) {
     114            super.setSize(width, height);
     115            zoomTo(mapView.getRealBounds());
     116        }
     117    }
     118           
     119    /**
     120     * Resizes this component.
     121     */
     122    @Override
     123    public void setSize(Dimension newSize) {
     124        Dimension dim = getSize();
     125        if (dim.width != newSize.width || dim.height != newSize.height) {
     126            super.setSize(newSize);
     127            zoomTo(mapView.getRealBounds());
     128        }
     129    }
     130           
    112131
    113132    /**
     
    129148                                                    PrinterException {
    130149        if (page > 0) { /* stop after first page */
    131             initialized = false;
    132150            return NO_SUCH_PAGE;
    133151        }
    134         else if (! initialized) {
    135             initialize(pageFormat);
    136             initialized = true;
    137         }
     152
     153        initialize(pageFormat);
    138154
    139155        Graphics2D g2d = (Graphics2D)g;
     
    324340            layers,
    325341            new Comparator<Layer>() {
     342                @Override
    326343                public int compare(Layer l2, Layer l1) { // l1 and l2 swapped!
    327344                    if (l1 instanceof OsmDataLayer && l2 instanceof OsmDataLayer) {
Note: See TracChangeset for help on using the changeset viewer.