Changeset 733 in josm for trunk/src/org


Ignore:
Timestamp:
2008-07-22T09:21:04+02:00 (16 years ago)
Author:
stoecker
Message:

improved relation handling, also closes #638

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

Legend:

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

    r693 r733  
    6868
    6969        private void openAsData(File file) throws SAXException, IOException, FileNotFoundException {
    70             String fn = file.getName();
    71             if (ExtensionFileFilter.filters[ExtensionFileFilter.OSM].acceptName(fn)) {
    72                 DataSet dataSet = OsmReader.parseDataSet(new FileInputStream(file), null, Main.pleaseWaitDlg);
    73                 OsmDataLayer layer = new OsmDataLayer(dataSet, file.getName(), file);
    74             Main.main.addLayer(layer);
    75             }
    76             else
    77                 JOptionPane.showMessageDialog(Main.parent, fn+": "+tr("Unknown file extension: {0}", fn.substring(file.getName().lastIndexOf('.')+1)));
    78     }
     70                String fn = file.getName();
     71                if (ExtensionFileFilter.filters[ExtensionFileFilter.OSM].acceptName(fn)) {
     72                        DataSet dataSet = OsmReader.parseDataSet(new FileInputStream(file), null, Main.pleaseWaitDlg);
     73                        OsmDataLayer layer = new OsmDataLayer(dataSet, file.getName(), file);
     74                        Main.main.addLayer(layer);
     75                        layer.fireDataChange();
     76                }
     77                else
     78                        JOptionPane.showMessageDialog(Main.parent, fn+": "+tr("Unknown file extension: {0}", fn.substring(file.getName().lastIndexOf('.')+1)));
     79        }
    7980
    8081        private void openFileAsGpx(File file) throws SAXException, IOException, FileNotFoundException {
  • trunk/src/org/openstreetmap/josm/actions/ReverseWayAction.java

    r729 r733  
    6161                Main.main.undoRedo.add(new SequenceCommand(tr("Reverse ways"), c));
    6262                if (propertiesUpdated)
    63                         Main.map.getPropertiesDialog().selectionChanged(Main.ds.getSelected());
     63                        Main.ds.fireSelectionChanged(Main.ds.getSelected());
    6464                Main.map.repaint();
    6565    }
  • trunk/src/org/openstreetmap/josm/data/ServerSidePreferences.java

    r627 r733  
    6666                        try {
    6767                                URL u = new URL(getPreferencesDir());
    68                                 System.out.println("uplaoding preferences to "+u);
     68                                System.out.println("uploading preferences to "+u);
    6969                                HttpURLConnection con = (HttpURLConnection)u.openConnection();
    7070                                con.addRequestProperty("Authorization", "Basic "+Base64.encode(get("osm-server.username")+":"+get("osm-server.password")));
  • trunk/src/org/openstreetmap/josm/gui/MapFrame.java

    r729 r733  
    6767        public final ButtonGroup toolGroup = new ButtonGroup();
    6868
    69         private PropertiesDialog propertiesDialog;
    70 
    7169        public MapFrame() {
    7270                setSize(400,400);
     
    9694
    9795                addToggleDialog(new LayerListDialog(this));
    98                 addToggleDialog(propertiesDialog = new PropertiesDialog(this));
     96                addToggleDialog(new PropertiesDialog(this));
    9997                addToggleDialog(new HistoryDialog());
    10098                addToggleDialog(new SelectionListDialog());
     
    189187                        panel.add(statusLine, BorderLayout.SOUTH);
    190188        }
    191 
    192         public final PropertiesDialog getPropertiesDialog() {
    193         return propertiesDialog;
    194     }
    195189}
  • trunk/src/org/openstreetmap/josm/gui/dialogs/PropertiesDialog.java

    r725 r733  
    4747import org.openstreetmap.josm.Main;
    4848import org.openstreetmap.josm.command.ChangePropertyCommand;
     49import org.openstreetmap.josm.command.ChangeCommand;
    4950import org.openstreetmap.josm.command.Command;
    5051import org.openstreetmap.josm.command.SequenceCommand;
     
    9697                @Override public void mouseClicked(MouseEvent e) {
    9798                        if (e.getClickCount() < 2)
    98                                 return;
    99        
    100                         if (e.getSource() == propertyTable)
     99                        {
     100                                if (e.getSource() == propertyTable)
     101                                        membershipTable.clearSelection();
     102                                else if (e.getSource() == membershipTable)
     103                                        propertyTable.clearSelection();
     104                        }
     105                        else if (e.getSource() == propertyTable)
    101106                        {
    102107                                int row = propertyTable.rowAtPoint(e.getPoint());
    103                                 if (row > -1) {
     108                                if (row > -1)
    104109                                        propertyEdit(row);
    105                                         return;
    106                         }
    107110                        } else if (e.getSource() == membershipTable) {
    108111                                int row = membershipTable.rowAtPoint(e.getPoint());
    109                                 if (row > -1) {
     112                                if (row > -1)
    110113                                        membershipEdit(row);
    111                                         return;
    112                                 }
    113                         }
    114                         add();
     114                        }
     115                        else
     116                        {
     117                                add();
     118                        }
    115119                }
    116120        }
     
    475479               
    476480                membershipData.setColumnIdentifiers(new String[]{tr("Member Of"),tr("Role")});
    477                 membershipTable.setRowSelectionAllowed(false);
     481                membershipTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    478482               
    479483                membershipTable.getColumnModel().getColumn(0).setCellRenderer(new DefaultTableCellRenderer() {
     
    506510                ActionListener buttonAction = new ActionListener(){
    507511                        public void actionPerformed(ActionEvent e) {
    508                                 int sel = propertyTable.getSelectedRow();
     512                                int row = membershipTable.getSelectedRow();
    509513                                if (e.getActionCommand().equals("Add"))
    510514                                        add();
    511                                 else if (e.getActionCommand().equals("Edit")) {
    512                                         if(propertyTable.getRowCount() == 1)
    513                                                 sel = 0;
    514                                         if (sel == -1)
    515                                                 JOptionPane.showMessageDialog(Main.parent, tr("Please select the row to edit."));
    516                                         else
    517                                                 propertyEdit(sel);
    518                                 } else if (e.getActionCommand().equals("Delete")) {
    519                                         if (sel == -1)
    520                                                 JOptionPane.showMessageDialog(Main.parent, tr("Please select the row to delete."));
    521                                         else
    522                                                 delete(sel);
     515                                else if(row >= 0)
     516                                {
     517                                        if (e.getActionCommand().equals("Edit"))
     518                                                membershipEdit(row);
     519                                        else if (e.getActionCommand().equals("Delete")) {
     520                                                Relation cur = (Relation)membershipData.getValueAt(row, 0);
     521                                                NameVisitor n = new NameVisitor();
     522                                                cur.visit(n);
     523                                                if(JOptionPane.showConfirmDialog(Main.parent, tr("Really delete selection from relation {0}?", n.name),
     524                                                tr("Change relation"), JOptionPane.YES_NO_OPTION) == JOptionPane.YES_NO_OPTION)
     525                                                {
     526                                                        Relation rel = new Relation(cur);
     527                                                        Collection<OsmPrimitive> sel = Main.ds.getSelected();
     528                                                        for (RelationMember rm : cur.members) {
     529                                                                for (OsmPrimitive osm : sel) {
     530                                                                        if (rm.member == osm)
     531                                                                        {
     532                                                                                RelationMember mem = new RelationMember();
     533                                                                                mem.role = rm.role;
     534                                                                                mem.member = rm.member;
     535                                                                                rel.members.remove(mem);
     536                                                                                break;
     537                                                                        }
     538                                                                }
     539                                                        }
     540                                                        Main.main.undoRedo.add(new ChangeCommand(cur, rel));
     541                                                        selectionChanged(sel); // update whole table
     542                                                }
     543                                               
     544                                        }
     545                                }
     546                                else
     547                                {
     548                                        int sel = propertyTable.getSelectedRow();
     549                                        if (e.getActionCommand().equals("Edit")) {
     550                                                if(propertyTable.getRowCount() == 1)
     551                                                        sel = 0;
     552                                                if (sel == -1)
     553                                                        JOptionPane.showMessageDialog(Main.parent, tr("Please select the row to edit."));
     554                                                else
     555                                                        propertyEdit(sel);
     556                                        } else if (e.getActionCommand().equals("Delete")) {
     557                                                if (sel == -1)
     558                                                        JOptionPane.showMessageDialog(Main.parent, tr("Please select the row to delete."));
     559                                                else
     560                                                        delete(sel);
     561                                        }
    523562                                }
    524563                        }
  • trunk/src/org/openstreetmap/josm/gui/dialogs/RelationEditor.java

    r674 r733  
    6565        private final Relation relation;
    6666        private final Relation clone;
     67        private JLabel status;
    6768       
    6869        /**
     
    137138                                                if (RelationEditor.this.relation == null) {
    138139                                                        Main.main.undoRedo.add(new AddCommand(clone));
     140                                                        Main.ds.fireSelectionChanged(Main.ds.getSelected());
    139141                                                } else if (!RelationEditor.this.relation.realEqual(clone, true)) {
    140142                                                        Main.main.undoRedo.add(new ChangeCommand(RelationEditor.this.relation, clone));
     143                                                        Main.ds.fireSelectionChanged(Main.ds.getSelected());
    141144                                                }
    142145                                        }
     
    150153                        "as well as the members. In addition to this we should have a smart editor that " +
    151154                        "detects the type of relationship and limits your choices in a sensible way.")+"</em></html>");
    152                
    153                 getContentPane().add(help, BorderLayout.NORTH);         
     155                getContentPane().add(help, BorderLayout.NORTH);
    154156                try { setAlwaysOnTop(true); } catch (SecurityException sx) {}
    155157               
     
    182184                // setting up the member table
    183185               
    184             memberData.setColumnIdentifiers(new String[]{tr("Role"),tr("Occupied By")});
     186                memberData.setColumnIdentifiers(new String[]{tr("Role"),tr("Occupied By")});
    185187                memberTable.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
    186188                memberTable.getColumnModel().getColumn(1).setCellRenderer(new OsmPrimitivRenderer());
     
    213215                bothTables.add(new JLabel(tr("Tags (empty value deletes tag)")), GBC.eol().fill(GBC.HORIZONTAL));
    214216                bothTables.add(new JScrollPane(propertyTable), GBC.eop().fill(GBC.BOTH));
    215                 bothTables.add(new JLabel(tr("Members")), GBC.eol().fill(GBC.HORIZONTAL));
     217                bothTables.add(status = new JLabel(tr("Members")), GBC.eol().fill(GBC.HORIZONTAL));
    216218                bothTables.add(new JScrollPane(memberTable), GBC.eol().fill(GBC.BOTH));
    217219               
     
    251253                        }
    252254                }));
    253         buttonPanel.add(createButton(marktr("Download Members"),"down", tr("Download all incomplete ways and nodes in relation"), KeyEvent.VK_L, new ActionListener() {
    254             public void actionPerformed(ActionEvent e) {
    255                 downloadRelationMembers();               
    256                 refreshTables();
    257             }           
    258         }));
    259        
    260        
     255                buttonPanel.add(createButton(marktr("Download Members"),"down", tr("Download all incomplete ways and nodes in relation"), KeyEvent.VK_L, new ActionListener() {
     256                        public void actionPerformed(ActionEvent e) {
     257                                downloadRelationMembers();
     258                                refreshTables();
     259                        }
     260                }));
     261
    261262                bothTables.add(buttonPanel, GBC.eop().fill(GBC.HORIZONTAL));
    262263
    263264                tabPane.add(bothTables, "Basic");
    264                
     265
    265266                refreshTables();
    266                
     267
    267268                setSize(new Dimension(600, 500));
    268269                setLocationRelativeTo(Main.parent);
     
    285286                        memberData.addRow(new Object[]{em.role, em.member});
    286287                }
     288                status.setText(tr("Members: {0}", clone.members.size()));
    287289        }
    288290       
  • trunk/src/org/openstreetmap/josm/gui/download/BookmarkSelection.java

    r627 r733  
    4242               
    4343                JPanel dlg = new JPanel(new GridBagLayout());
    44                 gui.tabpane.addTab("Bookmarks", dlg);
     44                gui.tabpane.addTab(tr("Bookmarks"), dlg);
    4545
    4646                bookmarks = new BookmarkList();
  • trunk/src/org/openstreetmap/josm/gui/download/BoundingBoxSelection.java

    r679 r733  
    133133                dlg.add(sizeCheck, GBC.eop().insets(10,0,5,20));
    134134
    135                 gui.tabpane.addTab("Bounding Box", dlg);
     135                gui.tabpane.addTab(tr("Bounding Box"), dlg);
    136136        }
    137137       
  • trunk/src/org/openstreetmap/josm/gui/download/WorldChooser.java

    r627 r733  
    9999                temp.add(this, BorderLayout.CENTER);
    100100                temp.add(new JLabel(tr("You can use the mouse or Ctrl+Arrow keys/./ to zoom and pan.")), BorderLayout.SOUTH);
    101                 gui.tabpane.add(temp, "Map");
    102                 new MapMover(this, temp);               
     101                gui.tabpane.add(temp, tr("Map"));
     102                new MapMover(this, temp);
    103103                SelectionEnded selListener = new SelectionEnded(){
    104104                        public void selectionEnded(Rectangle r, boolean alt, boolean shift, boolean ctrl) {
Note: See TracChangeset for help on using the changeset viewer.