Ignore:
Timestamp:
2010-02-16T09:36:32+01:00 (14 years ago)
Author:
roland
Message:

Public Transport Plugin: added some standard features

File:
1 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/public_transport/src/public_transport/RoutePatternAction.java

    r20003 r20030  
    4646import org.openstreetmap.josm.Main;
    4747import org.openstreetmap.josm.actions.JosmAction;
     48import org.openstreetmap.josm.actions.mapmode.DeleteAction;
    4849import org.openstreetmap.josm.data.osm.DataSet;
    4950import org.openstreetmap.josm.data.osm.Node;
     
    486487  private static Vector< RelationMember > markedNodes = new Vector< RelationMember >();
    487488 
     489  private static Relation copy = null;
     490 
    488491  public RoutePatternAction() {
    489492    super(tr("Route patterns ..."), null,
     
    526529      layoutCons.gridx = 0;
    527530      layoutCons.gridy = 0;
     531      layoutCons.gridwidth = 3;
    528532      layoutCons.weightx = 0.0;
    529533      layoutCons.weighty = 0.0;
     
    542546      layoutCons.gridx = 0;
    543547      layoutCons.gridy = 1;
     548      layoutCons.gridwidth = 3;
    544549      layoutCons.weightx = 1.0;
    545550      layoutCons.weighty = 1.0;
     
    554559      layoutCons.gridx = 0;
    555560      layoutCons.gridy = 2;
     561      layoutCons.gridwidth = 1;
     562      layoutCons.gridheight = 2;
    556563      layoutCons.weightx = 1.0;
    557564      layoutCons.weighty = 0.0;
     
    560567      contentPane.add(bRefresh);
    561568       
     569      JButton bNew = new JButton("New");
     570      bNew.setActionCommand("routePattern.overviewNew");
     571      bNew.addActionListener(this);
     572       
     573      layoutCons.gridx = 1;
     574      layoutCons.gridy = 2;
     575      layoutCons.gridwidth = 1;
     576      layoutCons.gridheight = 1;
     577      layoutCons.weightx = 1.0;
     578      layoutCons.weighty = 0.0;
     579      layoutCons.fill = GridBagConstraints.BOTH;
     580      gridbag.setConstraints(bNew, layoutCons);
     581      contentPane.add(bNew);
     582       
     583      JButton bDelete = new JButton("Delete");
     584      bDelete.setActionCommand("routePattern.overviewDelete");
     585      bDelete.addActionListener(this);
     586       
     587      layoutCons.gridx = 1;
     588      layoutCons.gridy = 3;
     589      layoutCons.gridwidth = 1;
     590      layoutCons.gridheight = 1;
     591      layoutCons.weightx = 1.0;
     592      layoutCons.weighty = 0.0;
     593      layoutCons.fill = GridBagConstraints.BOTH;
     594      gridbag.setConstraints(bDelete, layoutCons);
     595      contentPane.add(bDelete);
     596     
     597      JButton bDuplicate = new JButton("Duplicate");
     598      bDuplicate.setActionCommand("routePattern.overviewDuplicate");
     599      bDuplicate.addActionListener(this);
     600       
     601      layoutCons.gridx = 2;
     602      layoutCons.gridy = 2;
     603      layoutCons.gridwidth = 1;
     604      layoutCons.gridheight = 1;
     605      layoutCons.weightx = 1.0;
     606      layoutCons.weighty = 0.0;
     607      layoutCons.fill = GridBagConstraints.BOTH;
     608      gridbag.setConstraints(bDuplicate, layoutCons);
     609      contentPane.add(bDuplicate);
     610       
     611      JButton bReflect = new JButton("Reflect");
     612      bReflect.setActionCommand("routePattern.overviewReflect");
     613      bReflect.addActionListener(this);
     614       
     615      layoutCons.gridx = 2;
     616      layoutCons.gridy = 3;
     617      layoutCons.gridwidth = 1;
     618      layoutCons.gridheight = 1;
     619      layoutCons.weightx = 1.0;
     620      layoutCons.weighty = 0.0;
     621      layoutCons.fill = GridBagConstraints.BOTH;
     622      gridbag.setConstraints(bReflect, layoutCons);
     623      contentPane.add(bReflect);
     624     
    562625      //Tags Tab
    563626      /*Container*/ contentPane = tabTags;
     
    810873      contentPane.add(bAdd);
    811874       
    812       JButton bDelete = new JButton("Delete");
     875      /*JButton*/ bDelete = new JButton("Delete");
    813876      bDelete.setActionCommand("routePattern.itineraryDelete");
    814877      bDelete.addActionListener(this);
     
    836899      contentPane.add(bSort);
    837900       
    838       JButton bReflect = new JButton("Reflect");
     901      /*JButton*/ bReflect = new JButton("Reflect");
    839902      bReflect.setActionCommand("routePattern.itineraryReflect");
    840903      bReflect.addActionListener(this);
     
    10611124    if ("routePattern.refresh".equals(event.getActionCommand()))
    10621125    {
     1126      refreshData();
     1127    }
     1128    else if ("routePattern.overviewNew".equals(event.getActionCommand()))
     1129    {
     1130      currentRoute = new Relation();
     1131      currentRoute.put("type", "route");
     1132      currentRoute.put("route", "bus");
     1133      mainDataSet.addPrimitive(currentRoute);
     1134     
     1135      refreshData();
     1136     
     1137      for (int i = 0; i < relsListModel.size(); ++i)
     1138      {
     1139        if (currentRoute == ((RouteReference)relsListModel.elementAt(i)).route)
     1140          relsList.setSelectedIndex(i);
     1141      }
     1142    }
     1143    else if ("routePattern.overviewDuplicate".equals(event.getActionCommand()))
     1144    {
     1145      currentRoute = new Relation(currentRoute, true);
     1146      currentRoute.put("type", "route");
     1147      currentRoute.put("route", "bus");
     1148      mainDataSet.addPrimitive(currentRoute);
     1149     
     1150      refreshData();
     1151       
     1152      for (int i = 0; i < relsListModel.size(); ++i)
     1153      {
     1154        if (currentRoute == ((RouteReference)relsListModel.elementAt(i)).route)
     1155          relsList.setSelectedIndex(i);
     1156      }
     1157    }
     1158    else if ("routePattern.overviewReflect".equals(event.getActionCommand()))
     1159    {
     1160      currentRoute.setModified(true);
     1161      String tag_from = currentRoute.get("from");
     1162      String tag_to = currentRoute.get("to");
     1163      currentRoute.put("from", tag_to);
     1164      currentRoute.put("to", tag_from);
     1165     
     1166      Vector< RelationMember > itemsToReflect = new Vector< RelationMember >();
     1167      Vector< RelationMember > otherItems = new Vector< RelationMember >();
     1168      int insPos = itineraryTable.getSelectedRow();
     1169     
     1170      for (int i = 0; i < currentRoute.getMembersCount(); ++i)
     1171      {
     1172        RelationMember item = currentRoute.getMember(i);
     1173       
     1174        if (item.isWay())
     1175        {
     1176          String role = item.getRole();
     1177          if ("backward".equals(role))
     1178            role = "forward";
     1179          else if ("forward".equals(role))
     1180            role = "backward";
     1181          else
     1182            role = "backward";
     1183         
     1184          itemsToReflect.add(new RelationMember(role, item.getWay()));
     1185        }
     1186        else if (item.isNode())
     1187          itemsToReflect.add(item);
     1188        else
     1189          otherItems.add(item);
     1190      }
     1191       
     1192      currentRoute.setMembers(null);
     1193      for (int i = itemsToReflect.size()-1; i >= 0; --i)
     1194        currentRoute.addMember(itemsToReflect.elementAt(i));
     1195      for (int i = 0; i < otherItems.size(); ++i)
     1196        currentRoute.addMember(otherItems.elementAt(i));
     1197     
     1198      refreshData();
     1199     
     1200      for (int i = 0; i < relsListModel.size(); ++i)
     1201      {
     1202        if (currentRoute == ((RouteReference)relsListModel.elementAt(i)).route)
     1203          relsList.setSelectedIndex(i);
     1204      }
     1205    }
     1206    else if ("routePattern.overviewDelete".equals(event.getActionCommand()))
     1207    {
     1208      DeleteAction.deleteRelation(Main.main.getEditLayer(), currentRoute);
     1209     
     1210      currentRoute = null;
     1211      tabbedPane.setEnabledAt(1, false);
     1212      tabbedPane.setEnabledAt(2, false);
     1213      tabbedPane.setEnabledAt(3, false);
     1214      tabbedPane.setEnabledAt(4, false);
     1215     
    10631216      refreshData();
    10641217    }
     
    17731926 
    17741927  private void refreshData() {
     1928    Relation copy = currentRoute;
    17751929    relsListModel.clear();
     1930    currentRoute = copy;
    17761931       
    17771932    DataSet mainDataSet = Main.main.getCurrentDataSet();
     
    17851940      {
    17861941        Relation currentRel = relIter.next();
    1787         String routeVal = currentRel.get("route");
    1788         if ("bus".equals(routeVal))
    1789           relRefs.add(new RouteReference(currentRel));
    1790         else if ("tram".equals(routeVal))
    1791           relRefs.add(new RouteReference(currentRel));
    1792         else if ("light_rail".equals(routeVal))
    1793           relRefs.add(new RouteReference(currentRel));
    1794         else if ("subway".equals(routeVal))
    1795           relRefs.add(new RouteReference(currentRel));
    1796         else if ("rail".equals(routeVal))
    1797           relRefs.add(new RouteReference(currentRel));
     1942        if (!currentRel.isDeleted())
     1943        {
     1944          String routeVal = currentRel.get("route");
     1945          if ("bus".equals(routeVal))
     1946            relRefs.add(new RouteReference(currentRel));
     1947          else if ("tram".equals(routeVal))
     1948            relRefs.add(new RouteReference(currentRel));
     1949          else if ("light_rail".equals(routeVal))
     1950            relRefs.add(new RouteReference(currentRel));
     1951          else if ("subway".equals(routeVal))
     1952            relRefs.add(new RouteReference(currentRel));
     1953          else if ("rail".equals(routeVal))
     1954            relRefs.add(new RouteReference(currentRel));
     1955        }
    17981956      }
    17991957     
    18001958      Collections.sort(relRefs);
    1801      
     1959
    18021960      Iterator< RouteReference > iter = relRefs.iterator();
    18031961      while (iter.hasNext())
Note: See TracChangeset for help on using the changeset viewer.