Ignore:
Timestamp:
2010-09-15T18:53:09+02:00 (14 years ago)
Author:
stoecker
Message:

remove tabs

Location:
applications/editors/josm/plugins/multipoly/src/multipoly
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/multipoly/src/multipoly/MultipolyAction.java

    r19456 r23189  
    3030/**
    3131 * Create multipolygon from selected ways automatically.
    32  * 
     32 *
    3333 * New relation with type=multipolygon is created
    34  * 
     34 *
    3535 * If one or more of ways is already in relation with type=multipolygon or the
    3636 * way is not closed, then error is reported and no relation is created
    37  * 
     37 *
    3838 * The "inner" and "outer" roles are guessed automatically. First, bbox is
    3939 * calculated for each way. then the largest area is assumed to be outside and
     
    4545public class MultipolyAction extends JosmAction {
    4646
    47         public MultipolyAction() {
    48                 super(tr("Create multipolygon"), "multipoly_create",
    49                                 tr("Create multipolygon."), Shortcut.registerShortcut(
    50                                                 "tools:multipoly", tr("Tool: {0}",
    51                                                                 tr("Create multipolygon")), KeyEvent.VK_M,
    52                                                 Shortcut.GROUP_EDIT, Shortcut.SHIFT_DEFAULT), true);
    53         }
     47    public MultipolyAction() {
     48        super(tr("Create multipolygon"), "multipoly_create",
     49                tr("Create multipolygon."), Shortcut.registerShortcut(
     50                        "tools:multipoly", tr("Tool: {0}",
     51                                tr("Create multipolygon")), KeyEvent.VK_M,
     52                        Shortcut.GROUP_EDIT, Shortcut.SHIFT_DEFAULT), true);
     53    }
    5454
    55         /**
    56         * The action button has been clicked
    57          *
    58         * @param e
    59         *            Action Event
    60         */
    61         public void actionPerformed(ActionEvent e) {
     55    /**
     56    * The action button has been clicked
     57     *
     58    * @param e
     59    *            Action Event
     60    */
     61    public void actionPerformed(ActionEvent e) {
    6262
    63                 // Get all ways in some type=multipolygon relation
    64                 HashSet<OsmPrimitive> relationsInMulti = new HashSet<OsmPrimitive>();
    65                 for (Relation r : Main.main.getCurrentDataSet().getRelations()) {
    66                         if (!r.isUsable())
    67                                 continue;
    68                         if (r.get("type") != "multipolygon")
    69                                 continue;
    70                         for (RelationMember rm : r.getMembers()) {
    71                                 OsmPrimitive m = rm.getMember();
    72                                 if (m instanceof Way) {
    73                                         relationsInMulti.add(m);
    74                                 }
    75                         }
    76                 }
     63        // Get all ways in some type=multipolygon relation
     64        HashSet<OsmPrimitive> relationsInMulti = new HashSet<OsmPrimitive>();
     65        for (Relation r : Main.main.getCurrentDataSet().getRelations()) {
     66            if (!r.isUsable())
     67                continue;
     68            if (r.get("type") != "multipolygon")
     69                continue;
     70            for (RelationMember rm : r.getMembers()) {
     71                OsmPrimitive m = rm.getMember();
     72                if (m instanceof Way) {
     73                    relationsInMulti.add(m);
     74                }
     75            }
     76        }
    7777
    78                 // List of selected ways
    79                 List<Way> selectedWays = new ArrayList<Way>();
    80                 // Area of largest way (in square degrees)
    81                 double maxarea = 0;
    82                 // Which way is the largest one (outer)
    83                 Way maxWay = null;
     78        // List of selected ways
     79        List<Way> selectedWays = new ArrayList<Way>();
     80        // Area of largest way (in square degrees)
     81        double maxarea = 0;
     82        // Which way is the largest one (outer)
     83        Way maxWay = null;
    8484
    85                 // For every selected way
    86                 for (OsmPrimitive osm : Main.main.getCurrentDataSet().getSelected()) {
    87                         if (osm instanceof Way) {
    88                                 Way way = (Way) osm;
    89                                 // Check if way is already in another multipolygon
    90                                 if (relationsInMulti.contains(osm)) {
    91                                         JOptionPane
    92                                                         .showMessageDialog(
    93                                                                         Main.parent,
    94                                                                         tr("One of the selected ways is already part of another multipolygon."));
    95                                         return;
    96                                 }
    97                                 EastNorth first = null, last = null;
    98                                 // Boundingbox of way
    99                                 double minx = 9999, miny = 9999, maxx = -9999, maxy = -9999;
    100                                 for (Pair<Node, Node> seg : way.getNodePairs(false)) {
    101                                         if (first == null)
    102                                                 first = seg.a.getEastNorth();
    103                                         last = seg.b.getEastNorth();
    104                                         double x = seg.a.getEastNorth().east();
    105                                         double y = seg.a.getEastNorth().north();
    106                                         if (x < minx)
    107                                                 minx = x;
    108                                         if (y < miny)
    109                                                 miny = y;
    110                                         if (x > maxx)
    111                                                 maxx = x;
    112                                         if (y > maxy)
    113                                                 maxy = y;
    114                                 }
    115                                 // Check if first and last node are the same
    116                                 if (!first.equals(last)) {
    117                                         JOptionPane
    118                                                         .showMessageDialog(
    119                                                                         Main.parent,
    120                                                                         tr("Multipolygon must consist only of closed ways."));
    121                                         return;
    122                                 }
    123                                 // Determine area
    124                                 double area = (maxx - minx) * (maxy - miny);
    125                                 selectedWays.add(way);
    126                                 if (area > maxarea) {
    127                                         maxarea = area;
    128                                         maxWay = way;
    129                                 }
    130                         }
    131                 }
     85        // For every selected way
     86        for (OsmPrimitive osm : Main.main.getCurrentDataSet().getSelected()) {
     87            if (osm instanceof Way) {
     88                Way way = (Way) osm;
     89                // Check if way is already in another multipolygon
     90                if (relationsInMulti.contains(osm)) {
     91                    JOptionPane
     92                            .showMessageDialog(
     93                                    Main.parent,
     94                                    tr("One of the selected ways is already part of another multipolygon."));
     95                    return;
     96                }
     97                EastNorth first = null, last = null;
     98                // Boundingbox of way
     99                double minx = 9999, miny = 9999, maxx = -9999, maxy = -9999;
     100                for (Pair<Node, Node> seg : way.getNodePairs(false)) {
     101                    if (first == null)
     102                        first = seg.a.getEastNorth();
     103                    last = seg.b.getEastNorth();
     104                    double x = seg.a.getEastNorth().east();
     105                    double y = seg.a.getEastNorth().north();
     106                    if (x < minx)
     107                        minx = x;
     108                    if (y < miny)
     109                        miny = y;
     110                    if (x > maxx)
     111                        maxx = x;
     112                    if (y > maxy)
     113                        maxy = y;
     114                }
     115                // Check if first and last node are the same
     116                if (!first.equals(last)) {
     117                    JOptionPane
     118                            .showMessageDialog(
     119                                    Main.parent,
     120                                    tr("Multipolygon must consist only of closed ways."));
     121                    return;
     122                }
     123                // Determine area
     124                double area = (maxx - minx) * (maxy - miny);
     125                selectedWays.add(way);
     126                if (area > maxarea) {
     127                    maxarea = area;
     128                    maxWay = way;
     129                }
     130            }
     131        }
    132132
    133                 if (Main.map == null) {
    134                         JOptionPane.showMessageDialog(Main.parent, tr("No data loaded."));
    135                         return;
    136                 }
     133        if (Main.map == null) {
     134            JOptionPane.showMessageDialog(Main.parent, tr("No data loaded."));
     135            return;
     136        }
    137137
    138                 if (selectedWays.size() < 2) {
    139                         JOptionPane.showMessageDialog(Main.parent,
    140                                         tr("You must select at least two ways."));
    141                         return;
    142                 }
     138        if (selectedWays.size() < 2) {
     139            JOptionPane.showMessageDialog(Main.parent,
     140                    tr("You must select at least two ways."));
     141            return;
     142        }
    143143
    144                 Collection<Command> cmds = new LinkedList<Command>();
    145                 // Create new relation
    146                 Relation rel = new Relation();
    147                 rel.put("type", "multipolygon");
    148                 // Add ways to it
    149                 for (int i = 0; i < selectedWays.size(); i++) {
    150                         Way s = selectedWays.get(i);
    151                         String xrole = "inner";
    152                         if (s == maxWay)
    153                                 xrole = "outer";
    154                         RelationMember rm = new RelationMember(xrole, s);
    155                         rel.addMember(rm);
    156                 }
    157                 // Add relation
    158                 cmds.add(new AddCommand(rel));
    159                 // Commit
    160                 Main.main.undoRedo.add(new SequenceCommand(tr("Create multipolygon"),
    161                                 cmds));
    162                 Main.map.repaint();
    163         }
     144        Collection<Command> cmds = new LinkedList<Command>();
     145        // Create new relation
     146        Relation rel = new Relation();
     147        rel.put("type", "multipolygon");
     148        // Add ways to it
     149        for (int i = 0; i < selectedWays.size(); i++) {
     150            Way s = selectedWays.get(i);
     151            String xrole = "inner";
     152            if (s == maxWay)
     153                xrole = "outer";
     154            RelationMember rm = new RelationMember(xrole, s);
     155            rel.addMember(rm);
     156        }
     157        // Add relation
     158        cmds.add(new AddCommand(rel));
     159        // Commit
     160        Main.main.undoRedo.add(new SequenceCommand(tr("Create multipolygon"),
     161                cmds));
     162        Main.map.repaint();
     163    }
    164164
    165         /** Enable this action only if something is selected */
    166         @Override
    167         protected void updateEnabledState() {
    168                 if (getCurrentDataSet() == null) {
    169                         setEnabled(false);
    170                 } else {
    171                         updateEnabledState(getCurrentDataSet().getSelected());
    172                 }
    173         }
     165    /** Enable this action only if something is selected */
     166    @Override
     167    protected void updateEnabledState() {
     168        if (getCurrentDataSet() == null) {
     169            setEnabled(false);
     170        } else {
     171            updateEnabledState(getCurrentDataSet().getSelected());
     172        }
     173    }
    174174
    175         /** Enable this action only if something is selected */
    176         @Override
    177         protected void updateEnabledState(
    178                         Collection<? extends OsmPrimitive> selection) {
    179                 setEnabled(selection != null && !selection.isEmpty());
    180         }
     175    /** Enable this action only if something is selected */
     176    @Override
     177    protected void updateEnabledState(
     178            Collection<? extends OsmPrimitive> selection) {
     179        setEnabled(selection != null && !selection.isEmpty());
     180    }
    181181}
  • applications/editors/josm/plugins/multipoly/src/multipoly/MultipolyPlugin.java

    r19456 r23189  
    1515public class MultipolyPlugin extends Plugin {
    1616
    17         protected String name;
     17    protected String name;
    1818
    19         public MultipolyPlugin(PluginInformation info) {
    20                 super(info);
    21                 name = tr("Create multipolygon");
    22                 JMenu toolsMenu = null;
    23                 for (int i = 0; i < Main.main.menu.getMenuCount() && toolsMenu == null; i++) {
    24                         JMenu menu = Main.main.menu.getMenu(i);
    25                         String name = menu.getText();
    26                         if (name != null && name.equals(tr("Tools"))) {
    27                                 toolsMenu = menu;
    28                         }
    29                 }
     19    public MultipolyPlugin(PluginInformation info) {
     20        super(info);
     21        name = tr("Create multipolygon");
     22        JMenu toolsMenu = null;
     23        for (int i = 0; i < Main.main.menu.getMenuCount() && toolsMenu == null; i++) {
     24            JMenu menu = Main.main.menu.getMenu(i);
     25            String name = menu.getText();
     26            if (name != null && name.equals(tr("Tools"))) {
     27                toolsMenu = menu;
     28            }
     29        }
    3030
    31                 if (toolsMenu == null) {
    32                         toolsMenu = new JMenu(name);
    33                         toolsMenu.add(new JMenuItem(new MultipolyAction()));
    34                         Main.main.menu.add(toolsMenu, 2);
    35                 } else {
    36                         toolsMenu.addSeparator();
    37                         toolsMenu.add(new JMenuItem(new MultipolyAction()));
    38                 }
    39         }
     31        if (toolsMenu == null) {
     32            toolsMenu = new JMenu(name);
     33            toolsMenu.add(new JMenuItem(new MultipolyAction()));
     34            Main.main.menu.add(toolsMenu, 2);
     35        } else {
     36            toolsMenu.addSeparator();
     37            toolsMenu.add(new JMenuItem(new MultipolyAction()));
     38        }
     39    }
    4040}
Note: See TracChangeset for help on using the changeset viewer.