public AddRouteAction() {
super("Add Route", ImageTools.createImageIcon("add.png"));
}
public void actionPerformed(ActionEvent e) {
RouteGroup selectedRouteGroup = (RouteGroup) (routeGroupList
.getSelectedValue());
if (selectedRouteGroup == null) {
JOptionPane.showMessageDialog(RoutesConfigurationDialog.this,
"Please select a route group", "Error",
JOptionPane.ERROR_MESSAGE);
return;
}
String newRouteName = JOptionPane.showInputDialog(
RoutesConfigurationDialog.this,
"Enter the name of the new Route", "Add Route",
JOptionPane.QUESTION_MESSAGE);
if (newRouteName == null || newRouteName.equals(""))
return;
int nextNumber = 0;
RoutePersistenceIface routePersistence = AdHocRailway.getInstance()
.getRoutePersistence();
if (Preferences.getInstance().getBooleanValue(
PreferencesKeys.USE_FIXED_TURNOUT_AND_ROUTE_GROUP_SIZES)) {
nextNumber = routePersistence
.getNextFreeRouteNumberOfGroup(selectedRouteGroup);
if (nextNumber == -1) {
JOptionPane.showMessageDialog(
RoutesConfigurationDialog.this,
"No more free numbers in this group", "Error",
JOptionPane.ERROR_MESSAGE);
return;
}
} else {
nextNumber = routePersistence.getNextFreeRouteNumber();
}
Route newRoute = new Route();
newRoute.setName(newRouteName);
newRoute.setNumber(nextNumber);
selectedRouteGroup.getRoutes().add(newRoute);
newRoute.setRouteGroup(selectedRouteGroup);
try {
routePersistence.addRoute(newRoute);
List<Route> routes = new ArrayList<Route>(
selectedRouteGroup.getRoutes());
routesModel.setList(routes);
} catch (RoutePersistenceException e1) {
ExceptionProcessor.getInstance().processException(e1);
}