Ignore:
Timestamp:
2011-05-15T23:51:25+02:00 (13 years ago)
Author:
bastiK
Message:

PaintVisitor refactoring, includes hook for external MapRenderers (author: Gubaer)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/dialogs/MapPaintDialog.java

    r4072 r4087  
    1313import java.awt.Rectangle;
    1414import java.awt.event.ActionEvent;
    15 import java.awt.event.ActionListener;
    1615import java.awt.event.KeyEvent;
    1716import java.awt.event.MouseEvent;
     
    2827
    2928import javax.swing.AbstractAction;
    30 import javax.swing.DefaultButtonModel;
    3129import javax.swing.DefaultListSelectionModel;
    3230import javax.swing.JCheckBox;
     
    9997        JLabel wfLabel = new JLabel(tr("Wireframe View"), ImageProvider.get("dialogs/mappaint", "wireframe_small"), JLabel.HORIZONTAL);
    10098        wfLabel.setFont(wfLabel.getFont().deriveFont(Font.PLAIN));
    101 
    102         cbWireframe.setModel(new DefaultButtonModel() {
    103             @Override
    104             public void setSelected(boolean b) {
    105                 super.setSelected(b);
    106                 tblStyles.setEnabled(!b);
    107                 onoffAction.updateEnabledState();
    108                 upAction.updateEnabledState();
    109                 downAction.updateEnabledState();
    110             }
    111         });
    112         cbWireframe.addActionListener(new ActionListener() {
    113             public void actionPerformed(ActionEvent e) {
    114                 Main.main.menu.wireFrameToggleAction.actionPerformed(null);
    115             }
    116         });
     99        cbWireframe.setFont(cbWireframe.getFont().deriveFont(Font.PLAIN));
     100        cbWireframe.setAction(Main.main.menu.wireFrameToggleAction);
    117101        cbWireframe.setBorder(new EmptyBorder(new Insets(1,1,1,1)));
    118 
     102        cbWireframe.setText("");
    119103        tblStyles = new StylesTable(model);
    120104        tblStyles.setSelectionModel(selectionModel= new DefaultListSelectionModel());
     
    130114        tblStyles.setShowGrid(false);
    131115        tblStyles.setIntercellSpacing(new Dimension(0, 0));
     116        cbWireframe.addChangeListener(tblStyles);
    132117
    133118        JPanel p = new JPanel(new GridBagLayout());
     
    137122
    138123        pnl.add(new JScrollPane(p), BorderLayout.CENTER);
    139 
    140124        pnl.add(buildButtonRow(), BorderLayout.SOUTH);
    141 
    142125        add(pnl, BorderLayout.CENTER);
    143126    }
    144127
    145     protected static class StylesTable extends JTable {
     128    protected class StylesTable extends JTable implements ChangeListener{
    146129
    147130        public StylesTable(TableModel dm) {
     
    157140            rect.setLocation(rect.x - pt.x, rect.y - pt.y);
    158141            viewport.scrollRectToVisible(rect);
     142        }
     143
     144        @Override
     145        public void stateChanged(ChangeEvent e) {
     146            setEnabled(!cbWireframe.isSelected());
    159147        }
    160148    }
     
    170158        selectionModel.addListSelectionListener(upAction);
    171159        selectionModel.addListSelectionListener(downAction);
     160        cbWireframe.addChangeListener(onoffAction);
     161        cbWireframe.addChangeListener(upAction);
     162        cbWireframe.addChangeListener(downAction);
     163
    172164        p.add(new SideButton(onoffAction));
    173165        p.add(new SideButton(upAction));
     
    180172    @Override
    181173    public void showNotify() {
     174        cbWireframe.setAction(Main.main.menu.wireFrameToggleAction);
    182175        MapPaintStyles.addMapPaintSylesUpdateListener(model);
    183         Main.main.menu.wireFrameToggleAction.addButtonModel(cbWireframe.getModel());
    184176    }
    185177
    186178    @Override
    187179    public void hideNotify() {
    188         Main.main.menu.wireFrameToggleAction.removeButtonModel(cbWireframe.getModel());
     180        cbWireframe.setAction(null);
    189181        MapPaintStyles.removeMapPaintSylesUpdateListener(model);
    190182    }
     
    304296    }
    305297
    306     protected class OnOffAction extends AbstractAction implements ListSelectionListener {
     298    protected abstract class EventListeningAction extends AbstractAction implements ListSelectionListener, ChangeListener {
     299
     300        protected abstract void updateEnabledState();
     301
     302        @Override
     303        public void valueChanged(ListSelectionEvent e) {
     304            updateEnabledState();
     305        }
     306
     307        @Override
     308        public void stateChanged(ChangeEvent e) {
     309            updateEnabledState();
     310        }
     311    }
     312
     313    protected class OnOffAction extends EventListeningAction {
    307314        public OnOffAction() {
    308315            putValue(SHORT_DESCRIPTION, tr("Turn selected styles on or off"));
     
    311318        }
    312319
     320        @Override
    313321        protected void updateEnabledState() {
    314322            setEnabled(!cbWireframe.isSelected() && tblStyles.getSelectedRowCount() > 0);
    315         }
    316 
    317         @Override
    318         public void valueChanged(ListSelectionEvent e) {
    319             updateEnabledState();
    320323        }
    321324
     
    334337     * The action to move down the currently selected entries in the list.
    335338     */
    336     protected class MoveUpDownAction extends AbstractAction implements ListSelectionListener {
     339    protected class MoveUpDownAction extends EventListeningAction {
    337340
    338341        final int increment;
     
    345348        }
    346349
     350        @Override
    347351        public void updateEnabledState() {
    348352            int[] sel = tblStyles.getSelectedRows();
     
    360364            }
    361365            model.ensureSelectedIsVisible();
    362         }
    363 
    364         public void valueChanged(ListSelectionEvent e) {
    365             updateEnabledState();
    366366        }
    367367    }
     
    503503                    error = true;
    504504                } finally {
    505                     if (bis != null) {
    506                         try {
    507                             bis.close();
    508                         } catch (IOException e) {
    509                             e.printStackTrace();
    510                         }
    511                     }
    512                     if (bos != null) {
    513                         try {
    514                             bos.close();
    515                         } catch (IOException e) {
    516                             e.printStackTrace();
    517                         }
    518                     }
     505                    Utils.close(bis);
     506                    Utils.close(bos);
    519507                }
    520508            }
     
    648636                txtSource.append("<ERROR: failed to read file!>");
    649637            } finally {
    650                 try {
    651                     is.close();
    652                 } catch (IOException ex) {
    653                 }
     638                Utils.close(is);
    654639            }
    655640        }
Note: See TracChangeset for help on using the changeset viewer.