Ignore:
Timestamp:
2011-12-24T15:53:42+01:00 (13 years ago)
Author:
kpastor
Message:

Map information (attribution) can be multi-line

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

Legend:

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

    r27282 r27316  
    172172        final GBC std = GBC.std().insets(0,5,5,0);
    173173        std.fill = GBC.HORIZONTAL;
    174         final GBC twocolumns  = GBC.std().insets(0,5,5,0).span(2).fill(GBC.HORIZONTAL);
     174        final GBC twoColumns   = GBC.std().insets(0,5,5,0).span(2);
     175        twoColumns.fill = GBC.HORIZONTAL;
     176        final GBC threeColumns = GBC.std().insets(0,5,5,0).span(3);
     177        threeColumns.fill = GBC.HORIZONTAL;
    175178       
    176179        JLabel caption;
     
    178181        int row = 0;
    179182        caption = new JLabel(tr("Printer")+":");
    180         add(caption, std.grid(2, row));
     183        add(caption, twoColumns.grid(2, row));
    181184        printerField = new JTextField();
    182185        printerField.setEditable(false);
    183         add(printerField, std.grid(3, row));
     186        add(printerField, std.grid(GBC.RELATIVE, row));
    184187
    185188        row++;
    186189        caption = new JLabel(tr("Media")+":");
    187         add(caption, std.grid(2, row));
     190        add(caption, twoColumns.grid(2, row));
    188191        paperField = new JTextField();
    189192        paperField.setEditable(false);
    190         add(paperField, std.grid(3, row));
     193        add(paperField, std.grid(GBC.RELATIVE, row));
    191194
    192195        row++;
    193196        caption = new JLabel(tr("Orientation")+":");
    194         add(caption, std.grid(2, row));
     197        add(caption, twoColumns.grid(2, row));
    195198        orientationField = new JTextField();
    196199        orientationField.setEditable(false);
    197         add(orientationField, std.grid(3, row));
     200        add(orientationField, std.grid(GBC.RELATIVE, row));
    198201
    199202        row++;
     
    201204        printerButton.setActionCommand("printer-dialog");
    202205        printerButton.addActionListener(this);
    203         add(printerButton, twocolumns.grid(2, row));
     206        add(printerButton, threeColumns.grid(2, row));
    204207
    205208        row++;
     
    207210       
    208211        row++;
    209         caption = new JLabel(tr("Scale")+":   1 : ");
     212        caption = new JLabel(tr("Scale")+":");
    210213        add(caption, std.grid(2, row));
     214        caption = new JLabel(" 1 :");
     215        add(caption, std.grid(GBC.RELATIVE, row));
    211216        int mapScale = (int)Main.pref.getInteger("print.map-scale", PrintPlugin.DEF_MAP_SCALE);
    212217        mapView.setFixedMapScale(mapScale);
     
    230235            }
    231236        });
    232         add(scaleField, std.grid(3, row));
    233 
    234         row++;
    235         caption = new JLabel(tr("Resolution")+":   (dpi)");
     237        add(scaleField, std.grid(GBC.RELATIVE, row));
     238
     239        row++;
     240        caption = new JLabel(tr("Resolution")+":");
    236241        add(caption, std.grid(2, row));
     242        caption = new JLabel("ppi");
     243        add(caption, std.grid(GBC.RELATIVE, row));
    237244        resolutionModel = new SpinnerNumberModel(
    238245          (int)Main.pref.getInteger("print.resolution.dpi", PrintPlugin.DEF_RESOLUTION_DPI),
     
    255262            }
    256263        });
    257         add(resolutionField, std.grid(3, row));
    258        
    259         row++;
    260         caption = new JLabel(tr("Attribution")+":");
    261         add(caption, std.grid(2, row));
    262 
    263         row++;
    264         final JTextField attributionField = new JTextField();
    265         attributionField.setText(Main.pref.get("print.attribution", PrintPlugin.DEF_ATTRIBUTION));
    266         attributionField.getDocument().addDocumentListener(new DocumentListener() {
     264        add(resolutionField, std.grid(GBC.RELATIVE, row));
     265       
     266        row++;
     267        caption = new JLabel(tr("Map information")+":");
     268        add(caption, threeColumns.grid(2, row));
     269
     270        row++;
     271        final javax.swing.JTextArea attributionText = new javax.swing.JTextArea(Main.pref.get("print.attribution", PrintPlugin.DEF_ATTRIBUTION));
     272        attributionText.setRows(10);
     273        attributionText.setLineWrap(true);
     274        attributionText.setWrapStyleWord(true);
     275        attributionText.getDocument().addDocumentListener(new DocumentListener() {
    267276            public void insertUpdate(DocumentEvent evt) {
    268277                SwingUtilities.invokeLater(new Runnable() {
    269278                    public void run() {
    270                         Main.pref.put("print.attribution", attributionField.getText());
     279                        Main.pref.put("print.attribution", attributionText.getText());
    271280                        printPreview.repaint();
    272281                    }
     
    280289            }
    281290        });
    282         add(attributionField, twocolumns.grid(2, row));
     291        JScrollPane attributionPane = new JScrollPane(attributionText);
     292        add(attributionPane, GBC.std().insets(0,5,5,0).span(3).fill(GBC.BOTH).weight(0.0,1.0).grid(2, row));
    283293
    284294        row++;
     
    290300        previewCheckBox.setActionCommand("toggle-preview");
    291301        previewCheckBox.addActionListener(this);
    292         add(previewCheckBox, twocolumns.grid(2, row));
     302        add(previewCheckBox, threeColumns.grid(2, row));
    293303
    294304        row++;
     
    296306        zoomInButton.setActionCommand("zoom-in");
    297307        zoomInButton.addActionListener(this);
    298         add(zoomInButton, twocolumns.grid(2, row));
     308        add(zoomInButton, threeColumns.grid(2, row));
    299309
    300310        row++;
     
    302312        zoomOutButton.setActionCommand("zoom-out");
    303313        zoomOutButton.addActionListener(this);
    304         add(zoomOutButton, twocolumns.grid(2, row));
     314        add(zoomOutButton, threeColumns.grid(2, row));
    305315       
    306316        row++;
     
    308318        zoomToPageButton.setActionCommand("zoom-to-page");
    309319        zoomToPageButton.addActionListener(this);
    310         add(zoomToPageButton, twocolumns.grid(2, row));
     320        add(zoomToPageButton, threeColumns.grid(2, row));
    311321       
    312322        row++;
     
    314324        zoomToActualSize.setActionCommand("zoom-to-actual-size");
    315325        zoomToActualSize.addActionListener(this);
    316         add(zoomToActualSize, twocolumns.grid(2, row));
     326        add(zoomToActualSize, threeColumns.grid(2, row));
    317327       
    318328        printPreview = new PrintPreview();
  • applications/editors/josm/plugins/print/src/org/openstreetmap/josm/plugins/print/PrintableMapView.java

    r27313 r27316  
    340340    public void paintMapAttribution(Graphics2D g2d, PageFormat pageFormat) {
    341341        String text = Main.pref.get("print.attribution", PrintPlugin.DEF_ATTRIBUTION);
    342         if (text != null && text.length() > 0) {
    343             text += " ";
    344 
    345             Font attributionFont = new Font("Arial", Font.PLAIN, FONT_SIZE * 8 / 10);
    346             g2d.setFont(attributionFont);
    347             Rectangle2D bound = g2d.getFontMetrics().getStringBounds(text, g2d);
    348             int x = (int)((pageFormat.getImageableWidth() - bound.getWidth()));
    349             int y = FONT_SIZE * 3 / 2;
    350             paintText(g2d, text, x, y);
     342       
     343        if (text == null) {
     344            return;
     345        }
     346           
     347        Font attributionFont = new Font("Arial", Font.PLAIN, FONT_SIZE * 8 / 10);
     348        g2d.setFont(attributionFont);
     349
     350        text += "\n";
     351        int y = FONT_SIZE * 3 / 2;
     352        int from = 0;
     353        int to = text.indexOf("\n", from);
     354        while (to >= from) {
     355            String line = text.substring(from, to);
     356
     357            Rectangle2D bound = g2d.getFontMetrics().getStringBounds(line, g2d);
     358            int x = (int)((pageFormat.getImageableWidth() - bound.getWidth()) - FONT_SIZE/2);
     359           
     360            paintText(g2d, line, x, y);
     361
     362            y   += FONT_SIZE * 5 / 4;
     363            from = to + 1;
     364            to   = text.indexOf("\n", from);
    351365        }
    352366    }
Note: See TracChangeset for help on using the changeset viewer.