Changeset 25682 in osm for applications


Ignore:
Timestamp:
2011-03-23T23:13:50+01:00 (13 years ago)
Author:
zverik
Message:

nice design (relcontext plugin)

Location:
applications/editors/josm/plugins/relcontext
Files:
7 added
2 deleted
11 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/relcontext/src/relcontext/ChosenRelationComponent.java

    r25670 r25682  
    5757        if( tag != null )
    5858            sb.append("; ").append(tag);
     59        sb.append(" (").append(rel.getMembersCount()).append(')');
    5960
    6061        return sb.toString();
  • applications/editors/josm/plugins/relcontext/src/relcontext/RelContextDialog.java

    r25680 r25682  
    11package relcontext;
    22
     3import java.awt.Dimension;
     4import org.openstreetmap.josm.tools.ImageProvider;
    35import org.openstreetmap.josm.gui.DefaultNameFormatter;
    46import org.openstreetmap.josm.data.osm.NameFormatter;
    5 import java.awt.Component;
    67import javax.swing.event.ListSelectionEvent;
    7 import javax.swing.table.DefaultTableCellRenderer;
    88import javax.swing.table.TableColumnModel;
    99import javax.swing.table.DefaultTableModel;
     
    3737import org.openstreetmap.josm.tools.GBC;
    3838import org.openstreetmap.josm.command.ChangeCommand;
     39import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
    3940import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingComboBox;
    4041import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionListItem;
     
    6061                tr("Opens advanced relation/multipolygon editor panel"),
    6162                Shortcut.registerShortcut("view:relcontext", tr("Toggle: {0}", tr("Open Relation Editor")),
    62                 KeyEvent.VK_R, Shortcut.GROUP_LAYER, Shortcut.SHIFT_DEFAULT), 150);
     63                KeyEvent.VK_R, Shortcut.GROUP_LAYER, Shortcut.SHIFT_DEFAULT), 150, true);
     64
     65        // todo: shrink all panels to ~20 pixels
    6366
    6467        JPanel rcPanel = new JPanel(new BorderLayout());
     
    7881        // [^] roles [new role][V][Apply]
    7982        final JPanel rolePanel = new JPanel(new GridBagLayout());
    80         final JButton toggleRolePanelButtonTop = new JButton(new TogglePanelAction(rolePanel));
    81         final JButton toggleRolePanelButtonIn = new JButton(new TogglePanelAction(rolePanel));
    82         rolePanel.add(toggleRolePanelButtonIn, GBC.std());
     83        final JButton toggleRolePanelButtonTop = new JButton(new TogglePanelAction(rolePanel) {
     84            @Override
     85            protected void init() {
     86                putValue(Action.SMALL_ICON, ImageProvider.get("svpDown"));
     87                putValue(Action.SHORT_DESCRIPTION, tr("Show role panel"));
     88            }
     89        });
     90        final JButton toggleRolePanelButtonIn = new JButton(new TogglePanelAction(rolePanel) {
     91            @Override
     92            protected void init() {
     93                putValue(Action.SMALL_ICON, ImageProvider.get("svpUp"));
     94                putValue(Action.SHORT_DESCRIPTION, tr("Hide role panel"));
     95            }
     96        });
     97        rolePanel.add(sizeButton(toggleRolePanelButtonIn, 16, 20), GBC.std());
    8398        crRoleIndicator = new JLabel();
    8499        rolePanel.add(crRoleIndicator, GBC.std().insets(5, 0, 5, 0));
     
    86101        roleBox.setEditable(false);
    87102        rolePanel.add(roleBox, GBC.std().fill(GBC.HORIZONTAL));
    88         rolePanel.add(new JButton(new ApplyNewRoleAction()), GBC.std());
    89         rolePanel.add(new JButton(new EnterNewRoleAction()), GBC.eol());
     103        rolePanel.add(sizeButton(new JButton(new ApplyNewRoleAction()), 40, 20), GBC.std());
     104        rolePanel.add(sizeButton(new JButton(new EnterNewRoleAction()), 40, 20), GBC.eol());
    90105//        rolePanel.setVisible(false); // todo: take from preferences
    91106
    92107        // [±][X] relation U [AZ][Down][Edit]
    93         JPanel topLine = new JPanel(new BorderLayout());
    94         JPanel topLeftButtons = new JPanel(new FlowLayout(FlowLayout.LEFT));
    95         topLeftButtons.add(new JButton(new AddRemoveMemberAction(chosenRelation)));
    96         topLeftButtons.add(toggleRolePanelButtonTop);
    97         topLeftButtons.add(new JButton(new ClearChosenRelationAction(chosenRelation)));
    98         topLine.add(topLeftButtons, BorderLayout.WEST);
     108        JPanel topLine = new JPanel(new GridBagLayout());
     109        topLine.add(new JButton(new AddRemoveMemberAction(chosenRelation)), GBC.std());
     110        topLine.add(sizeButton(toggleRolePanelButtonTop, 16, 24), GBC.std());
     111        topLine.add(sizeButton(new JButton(new ClearChosenRelationAction(chosenRelation)), 32, 0), GBC.std());
    99112        final ChosenRelationComponent chosenRelationComponent = new ChosenRelationComponent(chosenRelation);
    100113        chosenRelationComponent.addMouseListener(new ChosenRelationMouseAdapter());
    101         topLine.add(chosenRelationComponent, BorderLayout.CENTER);
    102         JPanel topRightButtons = new JPanel(new FlowLayout(FlowLayout.RIGHT));
     114        topLine.add(chosenRelationComponent, GBC.std().fill().insets(5, 0, 5, 0));
    103115        final Action sortAndFixAction = new SortAndFixAction(chosenRelation);
    104116        final JButton sortAndFixButton = new JButton(sortAndFixAction);
    105         topRightButtons.add(sortAndFixButton);
     117        topLine.add(sortAndFixButton, GBC.std());
    106118        final Action downloadChosenRelationAction = new DownloadChosenRelationAction(chosenRelation);
    107119        final JButton downloadButton = new JButton(downloadChosenRelationAction);
    108         topRightButtons.add(downloadButton);
    109         topRightButtons.add(new JButton(new EditChosenRelationAction(chosenRelation)));
    110         topLine.add(topRightButtons, BorderLayout.EAST);
     120        topLine.add(downloadButton, GBC.std());
     121        topLine.add(new JButton(new EditChosenRelationAction(chosenRelation)), GBC.eol());
    111122
    112123        chosenRelationPanel.add(topLine, BorderLayout.CENTER);
     
    148159        bottomLine.add(Box.createHorizontalGlue(), GBC.std().fill());
    149160        bottomLine.add(new JButton(new FindRelationAction(chosenRelation)), GBC.eol());
    150         rcPanel.add(bottomLine, BorderLayout.SOUTH);
     161        rcPanel.add(sizeButton(bottomLine, 0, 24), BorderLayout.SOUTH);
    151162
    152163        add(rcPanel, BorderLayout.CENTER);
    153164
    154165        popupMenu = new ChosenRelationPopupMenu();
    155     }
    156 
    157     private void configureRelationList( final JList relationsList ) {
    158         relationsList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    159         relationsList.setCellRenderer(new OsmPrimitivRenderer() {
    160             @Override
    161             protected String getComponentToolTipText( OsmPrimitive value ) {
    162                 return null;
    163             }
    164         });
    165         relationsList.addMouseListener(new MouseAdapter() {
    166             @Override
    167             public void mouseClicked( MouseEvent e ) {
    168                 if( Main.main.getEditLayer() == null ) {
    169                     return;
    170                 }
    171                 chosenRelation.set((Relation)relationsList.getSelectedValue());
    172                 relationsList.clearSelection();
    173             }
    174         });
    175166    }
    176167
     
    198189    }
    199190
     191    private JComponent sizeButton( JComponent b, int width, int height ) {
     192        Dimension pref = b.getPreferredSize();
     193        b.setPreferredSize(new Dimension(width <= 0 ? pref.width : width, height <= 0 ? pref.height : height));
     194        return b;
     195    }
     196
    200197    @Override
    201198    public void hideNotify() {
     
    219216        if( chosenRelationPanel != null )
    220217            chosenRelationPanel.setVisible(newRelation != null);
    221         if( oldRelation != newRelation && Main.main.getCurrentDataSet() != null )
     218        if( Main.main.getCurrentDataSet() != null )
    222219            selectionChanged(Main.main.getCurrentDataSet().getSelected());
    223220        updateRoleIndicator();
     
    421418
    422419        public TogglePanelAction( JPanel panel ) {
    423             super("R");
     420            super();
    424421            this.component = panel;
    425         }
     422            init();
     423            if( getValue(Action.SMALL_ICON) == null )
     424                putValue(Action.NAME, "R");
     425        }
     426
     427        protected void init() {}
    426428
    427429        public void actionPerformed( ActionEvent e ) {
     
    451453    private class ApplyNewRoleAction extends AbstractAction {
    452454        public ApplyNewRoleAction() {
    453             super("OK");
     455            super(null, ImageProvider.get("apply"));
     456            putValue(Action.SHORT_DESCRIPTION, tr("Apply chosen role to selected relation members"));
    454457        }
    455458
     
    466469    private class EnterNewRoleAction extends AbstractAction {
    467470        public EnterNewRoleAction() {
    468             super("+");
     471            super();
     472            putValue(Action.NAME, "…");
     473//            putValue(SMALL_ICON, ImageProvider.get("dialogs/mappaint", "pencil"));
     474            putValue(SHORT_DESCRIPTION, tr("Enter new role for selected relation members"));
    469475        }
    470476
  • applications/editors/josm/plugins/relcontext/src/relcontext/actions/AddRemoveMemberAction.java

    r25669 r25682  
    55import static org.openstreetmap.josm.tools.I18n.tr;
    66import java.awt.event.ActionEvent;
    7 import javax.swing.Action;
    87import org.openstreetmap.josm.Main;
    98import org.openstreetmap.josm.actions.JosmAction;
     
    1110import org.openstreetmap.josm.data.osm.Relation;
    1211import org.openstreetmap.josm.data.osm.RelationMember;
     12import org.openstreetmap.josm.tools.ImageProvider;
    1313import relcontext.ChosenRelation;
    1414import relcontext.ChosenRelationListener;
     
    2626
    2727    public AddRemoveMemberAction( ChosenRelation rel ) {
    28         super("±", null, "Add/remove member from the chosen relation", null, false);
     28        super(null, "relcontext/addremove", tr("Add/remove members from the chosen relation"), null, false);
    2929        this.rel = rel;
    3030        rel.addChosenRelationListener(this);
     
    7979    protected void updateIcon() {
    8080        // todo: change icon based on selection
    81         String name = "";
     81        int state = 0; // 0=unknown, 1=add, 2=remove, 3=both
    8282        if( getCurrentDataSet() == null || getCurrentDataSet().getSelected() == null
    83                 || getCurrentDataSet().getSelected().size() == 0 || rel == null || rel.get() == null )
    84             name = "?";
     83                || getCurrentDataSet().getSelected().isEmpty() || rel == null || rel.get() == null )
     84            state = 0;
    8585        else {
    8686            Collection<OsmPrimitive> toAdd = new ArrayList<OsmPrimitive>(getCurrentDataSet().getSelected());
     
    8888            int selectedSize = toAdd.size();
    8989            if( selectedSize == 0 )
    90                 name = "?";
     90                state = 0;
    9191            else {
    9292                toAdd.removeAll(rel.get().getMemberPrimitives());
    9393                if( toAdd.isEmpty() )
    94                     name = "-";
     94                    state = 2;
    9595                else if( toAdd.size() < selectedSize )
    96                     name = "±";
     96                    state = 3;
    9797                else
    98                     name = "+";
     98                    state = 1;
    9999            }
    100100        }
    101         putValue(Action.NAME, name);
     101//        String name = state == 0 ? "?" : state == 1 ? "+" : state == 2 ? "-" : "±";
     102//        putValue(Action.NAME, name);
     103        if( state == 0 ) {
     104//            putValue(NAME, "?");
     105            putValue(SMALL_ICON, ImageProvider.get("relcontext", "addremove"));
     106        } else {
     107            String iconName = state == 1 ? "add" : state == 2 ? "remove" : "addremove";
     108            putValue(NAME, null);
     109            putValue(SMALL_ICON, ImageProvider.get("relcontext", iconName));
     110        }
    102111    }
    103112}
  • applications/editors/josm/plugins/relcontext/src/relcontext/actions/ClearChosenRelationAction.java

    r25667 r25682  
    33import java.awt.event.ActionEvent;
    44import javax.swing.AbstractAction;
     5import javax.swing.Action;
     6import static org.openstreetmap.josm.tools.I18n.tr;
    57import org.openstreetmap.josm.data.osm.Relation;
     8import org.openstreetmap.josm.tools.ImageProvider;
    69import relcontext.ChosenRelation;
    710import relcontext.ChosenRelationListener;
     
    1114
    1215    public ClearChosenRelationAction( ChosenRelation rel ) {
    13         super("X");
     16        super();
     17//        putValue(Action.NAME, "X");
     18        putValue(Action.SMALL_ICON, ImageProvider.get("relcontext", "clear"));
     19        putValue(Action.SHORT_DESCRIPTION, tr("Clear chosen relation"));
    1420        this.rel = rel;
    1521        rel.addChosenRelationListener(this);
  • applications/editors/josm/plugins/relcontext/src/relcontext/actions/CreateMultipolygonAction.java

    r25670 r25682  
    2929
    3030    public CreateMultipolygonAction( ChosenRelation chRel ) {
    31         super("Multi", null, "Create a multipolygon from selected objects", null, false);
     31        super("Multi", "data/multipolygon", tr("Create a multipolygon from selected objects"), null, false);
    3232        this.chRel = chRel;
    3333        updateEnabledState();
  • applications/editors/josm/plugins/relcontext/src/relcontext/actions/CreateRelationAction.java

    r25679 r25682  
    3535
    3636    public CreateRelationAction( ChosenRelation chRel ) {
    37         super("+", null, "Create a relation from selected objects", null, false);
     37        super(tr("New"), "data/relation", tr("Create a relation from selected objects"), null, false);
    3838        this.chRel = chRel;
    3939        updateEnabledState();
  • applications/editors/josm/plugins/relcontext/src/relcontext/actions/DownloadChosenRelationAction.java

    r25673 r25682  
    11package relcontext.actions;
    22
     3import static org.openstreetmap.josm.tools.I18n.tr;
    34import java.awt.event.ActionEvent;
    45import java.util.Collections;
     
    1213import org.openstreetmap.josm.gui.dialogs.relation.DownloadRelationMemberTask;
    1314import org.openstreetmap.josm.gui.dialogs.relation.DownloadRelationTask;
     15import org.openstreetmap.josm.tools.ImageProvider;
    1416import relcontext.ChosenRelation;
    1517import relcontext.ChosenRelationListener;
     
    2426
    2527    public DownloadChosenRelationAction( ChosenRelation rel ) {
    26         super("D");
     28        super();
     29//        putValue(NAME, "D");
     30        putValue(SMALL_ICON, ImageProvider.get("relcontext", "download"));
     31        putValue(SHORT_DESCRIPTION, tr("Download all incomplete members for chosen relation"));
    2732        this.rel = rel;
    2833        rel.addChosenRelationListener(this);
  • applications/editors/josm/plugins/relcontext/src/relcontext/actions/DownloadParentsAction.java

    r25679 r25682  
    3131        super(tr("Download all referrers"));
    3232        putValue(SMALL_ICON, ImageProvider.get("downloadreferrers"));
     33        putValue(SHORT_DESCRIPTION, tr("Download referrers for the relation and its members"));
    3334        this.rel = rel;
    3435        rel.addChosenRelationListener(this);
  • applications/editors/josm/plugins/relcontext/src/relcontext/actions/EditChosenRelationAction.java

    r25667 r25682  
    11package relcontext.actions;
    22
     3import static org.openstreetmap.josm.tools.I18n.tr;
    34import java.awt.event.ActionEvent;
    45import javax.swing.AbstractAction;
     
    67import org.openstreetmap.josm.data.osm.Relation;
    78import org.openstreetmap.josm.gui.dialogs.relation.RelationEditor;
     9import org.openstreetmap.josm.tools.ImageProvider;
    810import relcontext.ChosenRelation;
    911import relcontext.ChosenRelationListener;
     
    1820
    1921    public EditChosenRelationAction( ChosenRelation rel ) {
    20         super("E");
     22        super();
     23//        putValue(NAME, "E");
     24        putValue(SMALL_ICON, ImageProvider.get("dialogs/mappaint", "pencil"));
     25        putValue(SHORT_DESCRIPTION, tr("Open relation editor for chosen relation"));
    2126        this.rel = rel;
    2227        rel.addChosenRelationListener(this);
  • applications/editors/josm/plugins/relcontext/src/relcontext/actions/FindRelationAction.java

    r25677 r25682  
    2626
    2727    public FindRelationAction( ChosenRelation chRel ) {
    28         super("?", null, "Find a relation", null, false);
     28        super("Find", "relcontext/find", "Find a relation", null, false);
    2929        this.chRel = chRel;
    3030    }
  • applications/editors/josm/plugins/relcontext/src/relcontext/actions/SortAndFixAction.java

    r25671 r25682  
    44import java.util.*;
    55import javax.swing.AbstractAction;
     6import javax.swing.Action;
    67import static org.openstreetmap.josm.tools.I18n.tr;
    78import org.openstreetmap.josm.Main;
     
    1011import org.openstreetmap.josm.command.SequenceCommand;
    1112import org.openstreetmap.josm.data.osm.*;
     13import org.openstreetmap.josm.tools.ImageProvider;
    1214import relcontext.ChosenRelation;
    1315import relcontext.ChosenRelationListener;
     
    1719
    1820    public SortAndFixAction( ChosenRelation rel ) {
    19         super("AZ");
     21        super();
     22//        putValue(Action.NAME, "AZ");
     23        putValue(Action.SMALL_ICON, ImageProvider.get("data", "warning"));
     24        putValue(Action.SHORT_DESCRIPTION, tr("Sort members and fix their roles"));
    2025        this.rel = rel;
    2126        rel.addChosenRelationListener(this);
Note: See TracChangeset for help on using the changeset viewer.