Changeset 4175 in josm


Ignore:
Timestamp:
Jun 26, 2011 4:56:36 PM (2 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.