Changeset 4175 in josm for trunk/src


Ignore:
Timestamp:
2011-06-26T16:56:36+02:00 (13 years ago)
Author:
bastiK
Message:

fixed #6506 - shortcut to switch rendering mode doesn't work (partial revert of [4087])

Location:
trunk/src/org/openstreetmap/josm
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/actions/WireframeToggleAction.java

    r4139 r4175  
    66import java.awt.event.ActionEvent;
    77import java.awt.event.KeyEvent;
     8import java.util.ArrayList;
     9import java.util.List;
     10
     11import javax.swing.ButtonModel;
    812
    913import org.openstreetmap.josm.Main;
     
    1418
    1519public class WireframeToggleAction extends JosmAction {
     20    private final List<ButtonModel> buttonModels = new ArrayList<ButtonModel>();
     21    //FIXME: replace with property Action.SELECTED_KEY when migrating to
     22    // Java 6
     23    private boolean selected;
    1624    public WireframeToggleAction() {
    1725        super(
     
    2028                tr("Enable/disable rendering the map as wireframe only"),
    2129                Shortcut.registerShortcut("menu:view:wireframe", tr("Toggle Wireframe view"),KeyEvent.VK_W, Shortcut.GROUP_MENU),
    22                 false /* register toolbar */
     30                true /* register shortcut */
    2331        );
    24         putValue("toolbar", "wireframe");
    25         Main.toolbar.register(this);
    26         putValue(SELECTED_KEY, MapRendererFactory.getInstance().isWireframeMapRendererActive());
     32        selected = MapRendererFactory.getInstance().isWireframeMapRendererActive();
     33        notifySelectedState();
    2734    }
    2835
    29     public void toggleSelectedState() {
    30         boolean selected = (Boolean)getValue(SELECTED_KEY);
     36    public void addButtonModel(ButtonModel model) {
     37        if (model != null && !buttonModels.contains(model)) {
     38            buttonModels.add(model);
     39            model.setSelected(selected);
     40        }
     41    }
    3142
    32         if (selected){
    33             MapRendererFactory.getInstance().activate(WireframeMapRenderer.class);
    34         } else {
    35             MapRendererFactory.getInstance().activate(StyledMapRenderer.class);
     43    public void removeButtonModel(ButtonModel model) {
     44        if (model != null && buttonModels.contains(model)) {
     45            buttonModels.remove(model);
    3646        }
     47    }
     48
     49    protected void notifySelectedState() {
     50        for (ButtonModel model: buttonModels) {
     51            if (model.isSelected() != selected) {
     52                model.setSelected(selected);
     53            }
     54        }
     55    }
     56
     57    protected void toggleSelectedState() {
     58        selected = !selected;
     59        //Main.pref.put("draw.wireframe", selected);
     60         if (selected){
     61         MapRendererFactory.getInstance().activate(WireframeMapRenderer.class);
     62                } else {
     63                    MapRendererFactory.getInstance().activate(StyledMapRenderer.class);
     64                }
     65       
     66        notifySelectedState();
    3767        if (Main.map != null) {
    3868            Main.map.mapView.repaint();
    3969        }
    4070    }
    41 
     71   
    4272    public void actionPerformed(ActionEvent e) {
    4373        toggleSelectedState();
     
    4676    @Override
    4777    protected void updateEnabledState() {
    48         setEnabled(Main.main.getEditLayer() != null);
     78        setEnabled(Main.map != null && Main.main.getEditLayer() != null);
     79    }
     80
     81    public boolean isSelected() {
     82        return selected;
    4983    }
    5084}
  • trunk/src/org/openstreetmap/josm/gui/MainMenu.java

    r4139 r4175  
    277277        viewMenu.add(wireframe);
    278278        wireframe.setAccelerator(wireFrameToggleAction.getShortcut().getKeyStroke());
     279        wireFrameToggleAction.addButtonModel(wireframe.getModel());
    279280
    280281        viewMenu.addSeparator();
  • trunk/src/org/openstreetmap/josm/gui/dialogs/MapPaintDialog.java

    r4087 r4175  
    1313import java.awt.Rectangle;
    1414import java.awt.event.ActionEvent;
     15import java.awt.event.ActionListener;
    1516import java.awt.event.KeyEvent;
    1617import java.awt.event.MouseEvent;
     
    2728
    2829import javax.swing.AbstractAction;
     30import javax.swing.DefaultButtonModel;
    2931import javax.swing.DefaultListSelectionModel;
    3032import javax.swing.JCheckBox;
     
    9799        JLabel wfLabel = new JLabel(tr("Wireframe View"), ImageProvider.get("dialogs/mappaint", "wireframe_small"), JLabel.HORIZONTAL);
    98100        wfLabel.setFont(wfLabel.getFont().deriveFont(Font.PLAIN));
    99         cbWireframe.setFont(cbWireframe.getFont().deriveFont(Font.PLAIN));
    100         cbWireframe.setAction(Main.main.menu.wireFrameToggleAction);
     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        });
    101117        cbWireframe.setBorder(new EmptyBorder(new Insets(1,1,1,1)));
    102         cbWireframe.setText("");
     118
    103119        tblStyles = new StylesTable(model);
    104120        tblStyles.setSelectionModel(selectionModel= new DefaultListSelectionModel());
     
    114130        tblStyles.setShowGrid(false);
    115131        tblStyles.setIntercellSpacing(new Dimension(0, 0));
    116         cbWireframe.addChangeListener(tblStyles);
    117132
    118133        JPanel p = new JPanel(new GridBagLayout());
     
    122137
    123138        pnl.add(new JScrollPane(p), BorderLayout.CENTER);
     139
    124140        pnl.add(buildButtonRow(), BorderLayout.SOUTH);
     141
    125142        add(pnl, BorderLayout.CENTER);
    126143    }
    127144
    128     protected class StylesTable extends JTable implements ChangeListener{
     145    protected static class StylesTable extends JTable {
    129146
    130147        public StylesTable(TableModel dm) {
     
    140157            rect.setLocation(rect.x - pt.x, rect.y - pt.y);
    141158            viewport.scrollRectToVisible(rect);
    142         }
    143 
    144         @Override
    145         public void stateChanged(ChangeEvent e) {
    146             setEnabled(!cbWireframe.isSelected());
    147159        }
    148160    }
     
    158170        selectionModel.addListSelectionListener(upAction);
    159171        selectionModel.addListSelectionListener(downAction);
    160         cbWireframe.addChangeListener(onoffAction);
    161         cbWireframe.addChangeListener(upAction);
    162         cbWireframe.addChangeListener(downAction);
    163 
    164172        p.add(new SideButton(onoffAction));
    165173        p.add(new SideButton(upAction));
     
    172180    @Override
    173181    public void showNotify() {
    174         cbWireframe.setAction(Main.main.menu.wireFrameToggleAction);
    175182        MapPaintStyles.addMapPaintSylesUpdateListener(model);
     183        Main.main.menu.wireFrameToggleAction.addButtonModel(cbWireframe.getModel());
    176184    }
    177185
    178186    @Override
    179187    public void hideNotify() {
    180         cbWireframe.setAction(null);
     188        Main.main.menu.wireFrameToggleAction.removeButtonModel(cbWireframe.getModel());
    181189        MapPaintStyles.removeMapPaintSylesUpdateListener(model);
    182190    }
     
    296304    }
    297305
    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 {
     306    protected class OnOffAction extends AbstractAction implements ListSelectionListener {
    314307        public OnOffAction() {
    315308            putValue(SHORT_DESCRIPTION, tr("Turn selected styles on or off"));
     
    318311        }
    319312
    320         @Override
    321313        protected void updateEnabledState() {
    322314            setEnabled(!cbWireframe.isSelected() && tblStyles.getSelectedRowCount() > 0);
     315        }
     316
     317        @Override
     318        public void valueChanged(ListSelectionEvent e) {
     319            updateEnabledState();
    323320        }
    324321
     
    337334     * The action to move down the currently selected entries in the list.
    338335     */
    339     protected class MoveUpDownAction extends EventListeningAction {
     336    protected class MoveUpDownAction extends AbstractAction implements ListSelectionListener {
    340337
    341338        final int increment;
     
    348345        }
    349346
    350         @Override
    351347        public void updateEnabledState() {
    352348            int[] sel = tblStyles.getSelectedRows();
     
    364360            }
    365361            model.ensureSelectedIsVisible();
     362        }
     363
     364        public void valueChanged(ListSelectionEvent e) {
     365            updateEnabledState();
    366366        }
    367367    }
Note: See TracChangeset for help on using the changeset viewer.